Git/Svn numbers

Hi!

Don't be afraid, just a few numbers. :slight_smile:

1. Updating/Getting the source:

svn update from revision 44014 to revision 44570 with
svn update:

real 0m11.464s
user 0m1.180s
sys 0m0.576s

svn checkout with
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm:

real 4m37.414s
user 0m5.756s
sys 0m2.592s

git clone the whole tree with
git clone http://repo.or.cz/r/llvm.git:

real 0m37.250s
user 0m15.097s
sys 0m0.500s

svn checkout clang with
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang:

real 1m34.013s
user 0m0.688s
sys 0m0.348s

git clone the whole clang tree with
git clone http://repo.or.cz/r/clang.git:

real 0m12.698s
user 0m4.832s
sys 0m0.104s

2. Repository size:

svn tree: 98 MB
git tree: 47 MB
Bare git repo: < 10 MB

I just got those numbers because I tried to get LLVM's complete
history with git-svn http://llvm.org/svn/llvm-project/llvm/trunk llvm,
which would last approximately 5 hours (I canceled it after a few minutes).

Then I found http://repo.or.cz/ with llvm and clang git trees.

So, to summarize:
Git clone is seven times faster than svn checkout for
the llvm and clang repositories.
Git repo size is half of svn repo size.

But it seems that there is no full history at repo.or.cz.

Peter

So, to summarize:
Git clone is seven times faster than svn checkout for
the llvm and clang repositories.
Git repo size is half of svn repo size.

Yeah, git is incredibly fast, even for huge project (like the
linux kernel).

For the way LLVM works, I can only see one drawback: it works
always atomically with a whole tree. An example: if you have one
git repository with directories a/ b/ c/ each with 2500 files,
then git can only clone/pull/checkout/push/whatever ALL three
directory with all 7500 files. With svn, you can opt to just get
a/, when you aren't interested in b/ and c/.

Today I stumbed over this blog:

http://blog.cryos.net/archives/167-Git,-SVN-and-Development.html

Here the author describes how he uses git to checkout an svn
repository, work then in git (making lots of little commits
there) and then use "git svn dcommit" to commit (from git!) back
into the svn repository.

Hi!

For the way LLVM works, I can only see one drawback: it works
always atomically with a whole tree. An example: if you have one
git repository with directories a/ b/ c/ each with 2500 files,
then git can only clone/pull/checkout/push/whatever ALL three
directory with all 7500 files. With svn, you can opt to just get
a/, when you aren't interested in b/ and c/.

There is something new in 1.5.3:
http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html

peter