-------- Obtained from http://sourceware.org/ml/libc-alpha/2009-05/msg00080.html on 2012-03-09 Description of the migration fronm CVS to git -------- From: Jim Meyering To: "GNU C. Library" Cc: Ulrich Drepper Date: Fri, 15 May 2009 11:26:08 +0200 Subject: git on with it! I think we're ready. Finally. To clone the latest, do this: git clone git://sources.redhat.com/git/glibc1.git or browse it via: http://sources.redhat.com/git/gitweb.cgi?p=glibc1.git;a=summary Some stats: commits on trunk: 16555 (down from 60k+ originally) As a sanity check after the grafting, I listed commits per branch: $ for b in $(git br -a|sed s/..//|sort|grep -v 'master'); do printf '%4d %s\n' $(git rev-list master..$b|wc -l) $b; done 207 fedora-2_3-branch 411 fedora-2_5-branch 554 fedora-branch 1525 glibc-2-1-branch 661 glibc-2-2-branch 1161 glibc-2_0_x 2 glibc-2_10-branch 303 glibc-2_3-branch 117 glibc-2_5-branch 6 glibc-2_6-branch 1 glibc-2_7-branch 0 glibc-2_8-branch 0 glibc-2_9-branch 883 sparc-2_0_x-branch 0 thomas-posix1996 Cloned the repo, and repeated in the clone. Same numbers, but remotes/origin/-prefixed refs, as expected. Frequency of commit "summary/subject" lines on master: $ git log --pretty=format:%s HEAD |sort|uniq -c|sort -nr 7407 Update. 72 *** empty log message *** 49 Fix typo. 39 Update 32 Update from translation team. 25 Regenerated: autoconf configure.in 17 Regenerated 16 . 13 typo 13 Regenerated. 12 Pretty printing. 11 Updated. 10 Fix typos. 10 .. ... I wish I'd seen the 7400 "Update" commits earlier. It wouldn't be hard to drop each and hoist the first line of the remainder (ignoring ChangeLog cruft, of course), but it seems too late for that, now. For the record, this is how I handled post-conversion clean-up and branch/tag renaming: # Remove conversion cruft. git for-each-ref --format='%(refname)' refs/original/ \ | xargs -n 1 git update-ref -d git reflog expire --expire=now --all git gc --prune=now # Rename all branches except master to have cvs/ prefix. for b in $(git br|sed s/..//|grep -v master); do git br -m "$b" "cvs/$b" done # Rename all tags to have cvs/ prefix. all_tags=$(git tag -l) for t in $(echo "$all_tags"); do git tag "cvs/$t" "$t" done git tag -d $(echo "$all_tags") git gc Resulting size of .git/: 77MiB I've pushed the result to glibc1.git. In preparation for the switch, I've copied what is in glibc.git (the old, incrementally-mirrored-from-cvs repo) into glibc2.git. I'll move it all into place (glibc.git) in the next few hours. Phew.