Re: Savannah has Mercurial!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Andrew John Hughes wrote:
> 2008/6/6 Andrew Haley <aph@xxxxxxxxxx>:
>> Mark Wielaard wrote:
>>> Hi Andrew,
>>>
>>> On Fri, 2008-06-06 at 03:37 +0100, Andrew John Hughes wrote:
>>>> I just noticed this announcement when submitting the news announcement
>>>> for 0.97.2.
>>> Thanks for doing 0.97.2. I see Michael Koch already pushed it into
>>> Debian!
>>>
>>>> What do people think to the idea of switching?  Maybe post 0.98?
>> Mercurial is a disaster as far as I can see.  It doesn't seem to be
>> possible to work locally and merge back into the trunk without having
>> to do a complex and error-prone three-way merge, and several times
>> I've got into a state that it was impossible to recover from, even
>> with the help of the best Mercurial experts we have at RH.  The only
>> way people work successfully is to merge from trunk, check in, and
>> then push their changes immediately to the master repo before someone
>> else does any updates to the same files.  If you don't get in fast
>> enough, merge time.  This approach doesn't scale at all.

> Yes, I recall reading your discussion of this on IRC.
>
> I think CVS has similar issues, if not worse, if you try to work in
> this way.  Of course, doing so is pretty infeasible because even
> generating a diff requires server access.

CVS is ancient and FUBAR.

> This and branch management are probably the biggest flaws for me;
> file/directory versioning is also another issue, but I fall prey to
> it less often.  I do agree that Mercurial seems to be incredibly
> unintelligent when it comes to merges though - I presume it has it's
> own system rather than using patch.

Patch often seems to be the only way to save the situation.

> When Classpath had the same level of commits as IcedTea, we used to
> be more prone to these sort of mid-air collisions.  I can remember
> the days of working on a patch, updating the repository when
> finished, testing with all the new changes that would have happened,
> then committing and failing because the ChangeLog had changed again
> in the interim.
>
> I don't think any VCS is perfect, and most buckle under heavy
> commits to a single repository.  Distributed ones like Mercurial are
> a lot more flexible in allowing offline working and different
> development models, which I think is advantageous.

But the problem is that, while Mercurial may support a lot of exciting and
novel development models, it doesn't support the most simple and basic
models in any reasonable way.

I admit that I have not the slightest interest in offline working; I never
do that, and I have no intention of starting.

> I've been using it a lot just to maintain my own material between
> multiple machines. It's useful to me in this respect just for
> recording what I've done and for syncing between locations.  This is
> more feasible largely because Mercurial trees are so much easier to
> create and make available.  SSH (and optionally HTTP) access is all
> you really need.
>
> I assume most of your experience comes from working with IcedTea and
> Mercurial, where I think the project structure itself doesn't help.

This is what's known as Poisoning The Well: "Your experience is
specific to Project XX and therefore not generally applicable, whereas
my experience is."  I'm not buying it: I've spent plenty of time
trying to do really simple things with Mercurial; a VCS firstly needs
to do the simple things well before the novel things become
interesting.

> There are a relatively small number of files which increases the
> possibility of collision (e.g. nearly all the commits will be to
> Makefile.am, configure.ac and/or one of the patches).  I found in
> doing the IcedTea6->IcedTea merge that having the autogenerated
> files from autoconf/automake in there didn't help either, as you'd
> never want to merge them manually and the newly generated version
> would differ depending on the version of the autotools it was
> generated on.
>
> By comparison, Classpath should have a much lower hit rate, with
> fewer developers and a much larger codebase, so I'm more hopeful
> there.  That said, I think running a Mercurial tree in parallel with
> CVS for some time would be the best option, if feasible.  If we do
> think switching would be a major disaster, we can then abandon it
> altogether or consider a simpler move to e.g. SVN.

SVN seems to be a better *basic* VCS in every way.  Maybe Mercurial
does have its wonderful tools for doing exotic things.

Andrew.


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux