[En-Nut-Discussion] Moving to Subversion

Harald Kipp harald.kipp at egnite.de
Mon Mar 2 11:53:57 CET 2009


Marti Raudsepp wrote:

> Here's a few more points that popped into my mind why I prefer hg:
> * With SVN, if you try to commit to a repository that has newer
> changes, you have to merge local changes with HEAD before you can
> actually commit. This always seemed backwards to me, and tends to
> confuse people who are new to SVN.

I remember a cry out when I was a project leader many years ago, forcing
my team to switch from SourceSafe to CVS: "Editing files without locking
them will end up in total anarchy!"

In reality these conflicts are quite rare with small teams and, if they
appear, are most often solved automatically by CVS/SVN.

While following some discussions of the Mozilla project, I had the
feeling that the way such conflicts are solved with Mercurial was the
most confusing part for most developers. Not even one of the Mercurial
developers was able to explain the procedure in a few words.

Why do we move away from CVS anyway? It is very robust and relatively
easy to use. Well, the reason is, that SVN is even more easy to handle.
There is no other reason than that. I'm the one who currently creates
the branches, which is natural for a project leader and release manager
in one person. If I remember correctly, I'm also the only one
maintaining the branches, which is strange. I hope that Subversion will
attract more developers to take care of branches. But even if not, being
able to refer to a specific SVN repository revision would make snapshots
dispensable.

Why do we have snapshots anyway? Many of our "clients" are no software
guys. They have a hard job in learning C and version control, patches,
SSH or bug trackers are total mysteries to them. At least half of the
patches from people without CVS write access are posted as email
attaches, sometimes containing the full source tree.

IMHO it is most important to get more people involved in contributing
actively. In that sense, I think that nothing can beat the idiot-proof
update-edit-commit procedure of SVN, specifically in case of conflicts.


> * Having commit and push as distinct steps means that there's a window
> of opportunity to correct last minute mistakes. 'hg rollback' is handy
> for undoing the latest commit.

According to Murphy, mistakes are discovered after the push. :-)

A minor argument against Mercurial is its inability to convert system
specific line endings. That may not be a big deal for most of us, but
will be a needless annoyance for newbies.

Harald







More information about the En-Nut-Discussion mailing list