On 23/03/11 04:24, Rob Lanphier wrote:
> The most convincing general Subversion->DVCS argument I've read is here:
> http://hginit.com/00.html
> 
> This argument refers to Mercurial, but the same benefits apply to Git.

The article seems quite biased.

"Here’s the part where you’re just going to have to take my word for it.

"Mercurial is better than Subversion."

The tone is quite different to one of the first things I read about
Mercurial:

"Oops! Mercurial cut off your arm!

"Don't randomly try stuff to see if it'll magically fix it. Remember
what you stand to lose, and set down the chainsaw while you still have
one good arm."

https://developer.mozilla.org/en/Mercurial_basics

The main argument is that merging is easy so you can branch without
the slightest worry. I think this is an exaggeration. Interfaces
change, and when they change, developers change all the references to
those interfaces in the code which they can see in their working copy.
The greater the time difference in the branch points, the more likely
it is that your new code will stop working. As the branch point gap
grows, merging becomes more a task of understanding the interface
changes and rewriting the code, than just repeating the edits and
copying in the new code.

I'm not talking about the interfaces between core and extensions,
which are reasonably stable. I'm mainly talking mainly about the
interfaces which operate within and between core modules. These change
all the time. The problem of changing interfaces is most severe when
developers are working on different features within the same region of
core code.

Doing regular reintegration merges from trunk to development branches
doesn't help, it just means that you get the interface changes one at
a time, instead of in batches.

Having a short path to trunk means that the maximum amount of code is
visible to the developers who are doing the interface changes, so it
avoids the duplication of effort that occurs when branch maintainers
have to understand and account for every interface change that comes
through.

If we split up the extensions directory, each extension having its own
repository, then this will discourage developers from updating the
extensions in bulk. This affects both interface changes and general
code maintenance. I'm sure translatewiki.net can set up a script to do
the necessary 400 commits per day, but I'm not sure if every developer
who wants to fix unused variables or change a core/extension interface
will want to do the same.

I don't know enough about Git to know if these things are really an
argument against it. This is just a comment on the ideas in this thread.

-- Tim Starling


_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to