Mailing List Archive
tlug.jp Mailing List tlug archive tlug Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]Re: [tlug] Darcs and the Lack of Haskell Programmers
- Date: Mon, 04 Aug 2008 14:22:59 +0900
- From: "Stephen J. Turnbull" <stephen@example.com>
- Subject: Re: [tlug] Darcs and the Lack of Haskell Programmers
- References: <20080730015628.GB27857@lucky.cynic.net> <878wvjdgk7.fsf@uwakimon.sk.tsukuba.ac.jp> <20080730113103.GE20935@lucky.cynic.net> <87wsj3atzl.fsf@uwakimon.sk.tsukuba.ac.jp> <20080731004528.GC15176@lucky.cynic.net> <87tze6psgd.fsf@uwakimon.sk.tsukuba.ac.jp> <20080801041725.GD27578@lucky.cynic.net> <87k5f1cdd8.fsf@uwakimon.sk.tsukuba.ac.jp> <4892DD0B.8060107@bebear.net> <87bq0cm64k.fsf@uwakimon.sk.tsukuba.ac.jp> <20080802072324.GF17959@lucky.cynic.net> <48966CF4.7020403@bebear.net>
Edward Middleton writes: > Curt Sampson wrote: > > We generally do what might be called "distributed integration": every > > developer, upon making a change, is responsible for making sure that > > that change is releasable, he needs to integrate it into whatever > > branches are going to have it in a release, do all testing necessary, > > and make sure that if we rolled those branches out into production right > > now, it's going to work. This is a pretty standard Extreme Programming > > practice; probably some other agile folks use it too. [[ ... ]] > > So they came up with the integration pumpkin: a stuffed toy pumpkin that > > you would take when you were integrating, that served as a global lock > > on this, as it were. > > > > I'd always wondered why they did this, until I started seriously using > > Darcs. It turns out that distributed revision control has an issue with > > this sort of thing: it distributes the repository, but centralizes the > > integration for any particular release branch. This works fine for > > something like Darcs or the Linux kernel, where one or a few people do > > all of the integration. But it doesn't work so well on my projects, > > where every developer is expected to make the release branch releasable > > with his changes, and any random team member might be doing the final > > changes to make an actual release version. First let me say that I have no idea what Curt is talking about here. I do not see why a dVCS would be worse for these purposes than svn, as long as releases are to be made from a public branch or branches. My personal experience is that Darcs sucks in a high-churn environment, especially if you have files that are stacks (GNU-style changelogs) or queues (diaries), which guarantee that you'll get lots of persistent conflicts. Darcs does manage to get rid of some spurious conflicts, but introduces others (specifically, you must use Darcs to generate and apply patches or you will run into spurious conflicts if you try to merge with a branch that did not use Darcs to apply that patch). Darcs is very slow and has a UI that frequently makes it quite easy to divide a set of changes into "coherent changesets", both of which makes it tempting to record patches late and infrequently. Darcs has a very sucky way of indicating merges (instead of the usual 3-way merge output of <<<<<<< mainline version 3.1 Ho Ho Ho Chi Minh / O-Bama's gonna win ======= Hilary's Billary willary sillyry. >>>>>>> mine it does vvvvvvv Ho Ho Ho Chi Minh / O-Bama's gonna win ======= Hilary's Billary willary sillyry. ^^^^^^^ gag retch puke -- and consider what happens if you haven't resolved the conflicts recently and get nested conflicts -- spew), and in general doesn't help you much with merges it can't avoid. Then there are other problems, see the thread I posted (which has gotten longer and tempers are starting to flare a bit). > Perhaps someone who is using git could clarify this, I was under the > impression that it could be used with the following workflow. > > Jack> git-clone .. > Jacks local repository <- remote repository Are those ".." supposed to be an ellipsis? I'm going to assume so, that you're just abbreviating the uninteresting arguments. > Jack> git-branch .. > Jacks working copy <- Jacks local repository This isn't necessary. The default behavior of git-clone checks out a working copy. Branch doesn't check out, anyway. > Jack> git-comit .. > Jacks working copy change -> Jacks local repository > > Jack> git-push .. > Jacks local repository -> remote repository So far so good. > If developers Jack and Jill were working on the same branch and pushed > the changes back to the remote repository then the first set of changes > would get committed and the second would throw and error like subversion. > > Jill> git-comit .. > jills working copy change -> Jill local repository > > Jack> git-commit .. > Jack working copy change -> Jack local repository > > Jill> git push .. > Jills local change-> remote repository > > Jack> git push .. > Jacks local repository -> remote repository > * push fails[1] Yep. Curt again: > > Now that I think about it, I'd say that the problem has nothing to do > > with [any of the reasons Steve gave]. > > I think it is probably more an issue of motivation. Was there a > satisfactory alternative when the darcs project was started? No, and there still isn't from the point of view of Darcs fans. Darcs is the only VCS that takes the idea of "changeset", rather than "revision", as primitive. GNU Arch sort of does, and of course most VCSes actually store their revisions as patches. But none of these are "taking patches seriously", rather they use patches as a method of compression. To "take patches seriously" means to have a theory of when two patches "mean the same thing". Only Darcs has this, but their theory is *majorly* broken.[1] AFAIK the first of the "modern" dVCSes was GNU Arch (2001-2). Monotone started a little later (2003). Darcs started in 2004, and git and Mercurial were both released in mid-July 2005. > Git seems to do most of the important tasks darcs does. Git is > looking like it will replace subversion for large public > repositories. Unfortunately, at the moment git has a pretty sucky UI, and Linus et amis have a pretty sucky attitude toward that problem. This doesn't bother me personally, git is my drug of choice, and maybe somebody (GitHub?) will pick up the ball and run with it for all the UI whiners out there. But both Mercurial and Bazaar have substantially slicker UIs (lots of Do What I Mean and even Do What I Didn't Know I Wanted). This makes them popular with a certain largish class of users, but probably substantially worse for building *Hub webapps.[2] Darcs shares the boat with them. Footnotes: [1] For the mathematically trained, it's based on group theory, with patches forming a group, which implies that a patch must have an inverse, and that the inverse inverse patch has to be the patch itself. However, consider a patch which adds a unique line. The inverse must delete that line. The inverse is not a valid patch by itself since the line doesn't exist! The hand-waving starts immediately.... It's not that this can't be fixed, but they don't really try. [2] My theory is that git was originally a few low-level C programs for manipulating a fast object database, with the UI built up from scripts. I think this heritage makes it likely that it is much better factored for the kind of abuse a server environment will dish out than the user-pandering programs like Darcs, Mercurial, and Bazaar.
- Follow-Ups:
- Re: [tlug] Darcs and the Lack of Haskell Programmers
- From: Dave Brown
- References:
- Re: [tlug] STM (was: Re: work times & accommodation @tokyo)
- From: Curt Sampson
- Re: [tlug] STM (was: Re: work times & accommodation @tokyo)
- From: Stephen J. Turnbull
- Re: [tlug] STM (was: Re: work times & accommodation @tokyo)
- From: Edward Middleton
- Re: [tlug] STM (was: Re: work times & accommodation @tokyo)
- From: Stephen J. Turnbull
- [tlug] Darcs and the Lack of Haskell Programmers
- From: Curt Sampson
- Re: [tlug] Darcs and the Lack of Haskell Programmers
- From: Edward Middleton
Home | Main Index | Thread Index
- Prev by Date: Re: [tlug] FTTH ISP recommendation
- Next by Date: Re: [tlug] FTTH ISP recommendation
- Previous by thread: Re: [tlug] Darcs and the Lack of Haskell Programmers
- Next by thread: Re: [tlug] Darcs and the Lack of Haskell Programmers
- Index(es):
Home Page Mailing List Linux and Japan TLUG Members Links