[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