X-Git-Url: http://xvm.mit.edu/gitweb/invirt/scripts/git-migration.git/blobdiff_plain/43c6c3d1d9ae3039203808aefd8411592bab9cc0..69cf1ffbbfe6eed9b8a21fff248916c1eab15d18:/git-migrate diff --git a/git-migrate b/git-migrate index 053c9a9..daea0d1 100755 --- a/git-migrate +++ b/git-migrate @@ -1,5 +1,6 @@ #!/usr/bin/python +import glob import os import sys import subprocess @@ -61,6 +62,20 @@ def clonePackage(base, pkg): subprocess.check_call(['git', 'reset', '--soft', 'HEAD^'], cwd='%s.git' % pkg) + # Early in the project's history, there were a bunch of double + # directory trees - i.e. the source was actually in + # trunk/packages/$package/$package. Correct for that + cwd = os.getcwd() + os.environ['PACKAGE'] = pkg + p = subprocess.check_call(['git', 'filter-branch', + '--commit-filter', '%s "$@"' % os.path.join(cwd, 'filter-subdirs'), + '--tag-name-filter', 'cat', + '--', + '--all'], + cwd='%s.git' % pkg) + + shutil.rmtree('%s.git/refs/original' % pkg, True) + tagBase(pkg) def cloneAllPackages(base): @@ -143,6 +158,14 @@ def mergeHistories(): for merge in merges: shutil.rmtree('%s.git' % merge[0]) +def cleanupRepos(): + for pkg in glob.glob('*.git'): + subprocess.check_call(['git', 'tag', '-d', 'base'], + cwd='%s' % pkg) + + subprocess.check_call(['git', 'gc'], + cwd='%s' % pkg) + if __name__ == '__main__': try: base = sys.argv[1] @@ -151,3 +174,4 @@ if __name__ == '__main__': cloneAllPackages(base) mergeHistories() + cleanupRepos()