[Adium-devl] Git

Ofri Wolfus ofri.wolfus at gmail.com
Mon Apr 30 17:55:46 UTC 2007


So I've been playing around with Git ( http://git.or.cz ) lately and  
decided to try converting the Adium repository to it. After a lot of  
troubles getting the needed python modules for git-svnimport (git  
itself compiles cleanly if you have expat installed), getting a local  
mirror of the svn repository (yay for svnsync!), and waiting ~12  
hours (yeah, I'm on a G4), I finally got a git repository of Adium :)  
That being said, I didn't tell git-svnimport to try and detect branch  
merges, which if works, will be awesome.

And now some numbers:
* The complete subversion repository (revision 19556) is 1.21GB and  
containing 19,557x2 files for storing all commits (in db/revs and dp/ 
revprops).
* A clean svn checkout of trunk is 242.9MB (revision 19557).
* The git repository (containing all current branches and tags) plus  
a checkout of trunk is 525.4MB, while the .git directory is 413.1MB  
(this is what we would put on the server if we used a central git  
repository) and containing 1 pack file of all revisions (or commits  
in git's terminology). This is after running git-gc --purne on the  
repository, of course (otherwise git stores each commit in its own  
file without delta compression). If you didn't know, running git-gc  
on a repository once in a while is necessary for keeping it small and  
clean, but this approach allows git to do much better job at delta  
compressing (as you can see).

For those of you who don't know, Git is a distributed version control  
system, started by Linus Torvalds, that is designed to be fast and  
scaleable. It tracks its content in a very interesting way(1) that  
adds it some unique characteristics (implicit rename tracking,  
merging from more than one branches and so on). It is being used by  
the linux kernel (not really surprising), one laptop per child, wine,  
X.Org, DBus and others.

Git is able to work over some dumb protocols like WebDav, or via its  
own dedicated server. The site says it can also operate directly over  
a CVS server and in the future it may also be able to work over SVN.

I'm in no way a git expert, and haven't yet done any "heavy work"  
with it (only converted the UITestingKit repo and made few commits),  
but I really think it's worth exploring even if not converting the  
subversion repository. Git comes with a git-svn utility that allows  
one to check out a subversion repo to git and commit back to it. Git  
also has a patch manager built on top of it called StGit ( http:// 
www.procode.org/stgit ), that looks like a great tool although I  
haven't tried it yet. Anyhow, Git should be useful even when working  
with Subversion, and unlike SVK it actually works (at least for me).

That being said, Git has some limitations like no windows support  
(not really related to Adium), it needs periodic manual object  
repacking, and is known not to be so user friendly. The repacking  
problem can be solved with a cron job or maybe even using some  
sophisticated commit hook, and personally I had no problems using git  
although like I said, I didn't do any heavy work with it. Git also  
lacks graphical tools, although AFAIK nobody on the team uses them.

- Ofri

1. http://article.gmane.org/gmane.comp.version-control.git/217

- - - - - - - - - - - - - - - - - - -
http://www.dpompa.com
- - - - - - - - - - - - - - - - - - -


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20070430/437a38f5/attachment-0001.html>


More information about the devel mailing list