-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/12/09 11:52, Samuli Seppänen wrote:
>> FWIW using a good (rather than merely adequate) revision control
>> system makes it much easier to keep the very latest code
>> on-line and still perform regression tests, keep separate
>> code branches for feature development, and so forth.
>>   
> Any suggestion which VCS would do the best job?
> 

Then I'll throw in my burning piece of wood to fire ;-) ... Well,
discussing VCS'es is a really tricky thing, and sometimes can become
more a religious war than a technical war.  Especially VCS discussions
seems often to hit the nerve of emotions.  Just to make that clear, I do
not want to contribute to a "religious" war, but purely look at the
technical point of view.  But it is based on my experiences, and I
admit, I have not tried all solutions.  I have strong opinions, but I
don't mean to attack anyone with them.

My experiences is mostly based on CVS, SVN and git.  Even though, I have
barely touched Mercurial/hg.  And I'm not going to discuss CVS, as
that's not a good solution at all, IMHO.  In addition, it's centralised,
not distributed.

I've been following the Apache Qpid project somewhat for sometime
earlier.  At that time it was based on SVN, and to be honest, it was a
nightmare to work with.  To get the commit log, it took over 10-15
seconds or so.  To pull down the complete tree took over 30 minutes,
with a very decent connection (8Mbit++).  I believe the reason is that
it was over 65.000 commits in the tree.  Branching is also somewhat
cumbersome, even though it do work.

Then I've been working with the Linux kernel.  A git repository which is
getting close to 7-800MB (haven't checked in a while), it contains
several years of commit history (it goes back to the 2.6.13 kernel or
so, iirc).  And it takes milliseconds to look into the commit log.
Cloning the kernel is done in 10-15 minutes tops, on the same connection
as Qpid via SVN.  Everyone can create their own branches (in
milliseconds), and can easily provide patches suitable for mailing.  In
fact, you can send the patches via mail directly if you configure things
correctly.  You can use multiple remote repositories which you can
track, and you merge in the remote branches how you like yourself.

What that means:  Everyone will pull at least one public git tree, which
James "ownes".  Then James will have his "inner circle" with, f.ex.
three persons.  Each of these three persons have their own public git
trees, at least public to James.  These persons retrieve patches for
review either via mail, patch files or other remote trees.  They will
merge in changes into their own trees and publish their tree.  James
will then only need to pull these three trees and merge them, whichever
way James likes.  And when James is happy, he pushes his tree out.  Now,
the good thing - if this is done right, people who committed changes to
their own local trees, and git their trees pulled somehow by someone
else closer to James, they can pull James' tree and merge it, without
have no conflicts.  In fact, they might even find their commit ID's
staying the same (depending on how patch was merged in on the way to
James' tree).


And git *is* pretty *easy* to get started with /nowadays/ (it's many
years since it was difficult to use and more "kernel oriented").  Coming
from the world of CVS and SVN, it took me 2-3 hours to de-learn CVS/SVN
and 30 minutes to learn the basic git stuff.  And now, I can hardly
imagine anything else.  I even use it for non-source code stuff too now,
whenever I need to track some changes, and it takes me less than 10
seconds to get it ready for it (really!).

A very good resource for learning git, is a book called "Pro Git" ...
<http://progit.org/book/>.  A video of Linus explaining his thoughts
behind git, can be viewed here: <http://www.youtube.com/watch?v=4XpnKHJAok8>


But if SVN is preferred by OpenVPN, I'll most probably make use of
git-svn, which is a SVN client for git.  It at least speeds up things
for me, even though there are some awkward things with this, trying to
make git stuff out of SVN, as that's not always easy due to the very
different way of VCS designs ... but it do work somehow, and when the
cloning is done - it is very fast again.

So for me, git is among the greatest VCS' and, IMO, superior to SVN ...
and I would therefore recommend git.  But it's not the only solution.


kind regards,

David Sommerseth
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAksj3OAACgkQDC186MBRfrqZxQCePKq0pY08mFPO3P06iTBsNGiM
AT8An02285FHVtdgy8+hB/ey/yRk4/KL
=T/mx
-----END PGP SIGNATURE-----

Reply via email to