X-Git-Url: http://xvm.mit.edu/gitweb/invirt/scripts/git-migration.git/blobdiff_plain/d79ec08f3fcc4078c41d571bfa2e91adec1c682c..3a8af3a406a188ac520cdfaa457bb853471b613b:/git-migrate?ds=sidebyside diff --git a/git-migrate b/git-migrate index f10a512..458d903 100755 --- a/git-migrate +++ b/git-migrate @@ -27,18 +27,36 @@ def clonePackage(base, pkg): # Some of these repos have a rev where everything was deleted # as a result of the move. We don't want that rev to exist. - p = subprocess.Popen(['git', 'ls-files'], + p = subprocess.Popen(['git', 'ls-tree', 'HEAD'], cwd='%s.git' % pkg, stdout=subprocess.PIPE) p.wait() if len(p.stdout.read()) == 0: - subprocess.check_call(['git', 'reset', 'HEAD^'], + subprocess.check_call(['git', 'reset', '--soft', 'HEAD^'], cwd='%s.git' % pkg) def cloneAllPackages(base): for pkg in open('package-list'): clonePackage(base, pkg.strip()) +def mergeHistory(old_pkg, new_pkg, n): + subprocess.check_call(['git', 'push', + '../%s.git' % new_pkg, + 'master:refs/heads/%s' % old_pkg], + cwd='%s.git' % old_pkg) + +def mergeHistories(): + merges = [] + for line in open('merges'): + line = line.strip() + if line == '' or line[0] == '#': + continue + + merges.append(line.split()) + + for merge in merges: + mergeHistory(*merge) + if __name__ == '__main__': try: base = sys.argv[1] @@ -46,3 +64,4 @@ if __name__ == '__main__': base = 'svn://invirt.mit.edu/trunk' cloneAllPackages(base) + mergeHistories()