- Timestamp:
- Dec 24, 2008, 11:33:27 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/scripts/git-migration/git-migrate
r1892 r1893 5 5 import subprocess 6 6 import shutil 7 8 def tagBase(pkg): 9 p = subprocess.Popen(['git', 'tag', 10 '-l', 11 'base'], 12 cwd='%s.git' % pkg, 13 stdout=subprocess.PIPE) 14 p.wait() 15 if p.stdout.read().strip() != '': 16 return 17 18 p = subprocess.Popen(['git', 'rev-list', 19 '--reverse', 20 'master'], 21 cwd='%s.git' % pkg, 22 stdout=subprocess.PIPE) 23 p.wait() 24 base = p.stdout.read().split()[0] 25 26 subprocess.check_call(['git', 'tag', 27 'base', 28 base], 29 cwd='%s.git' % pkg) 7 30 8 31 def clonePackage(base, pkg): … … 35 58 subprocess.check_call(['git', 'reset', '--soft', 'HEAD^'], 36 59 cwd='%s.git' % pkg) 60 61 tagBase(pkg) 37 62 38 63 def cloneAllPackages(base): … … 41 66 42 67 def mergeHistory(old_pkg, new_pkg, n): 68 n = int(n) 69 43 70 subprocess.check_call(['git', 'push', 44 71 '../%s.git' % new_pkg, 45 72 'master:refs/heads/%s' % old_pkg], 46 73 cwd='%s.git' % old_pkg) 74 75 # Find the merge commit 76 if n == 0: 77 p = subprocess.Popen(['git', 'rev-parse', 78 'base'], 79 cwd='%s.git' % new_pkg, 80 stdout=subprocess.PIPE) 81 else: 82 p = subprocess.Popen(['git', 'rev-list', 83 '--reverse', 84 '--boundary', 85 '--skip=%s' % (n - 1), 86 'base..master'], 87 cwd='%s.git' % new_pkg, 88 stdout=subprocess.PIPE) 89 p.wait() 90 new_rev = p.stdout.read().split()[0].strip('-') 91 92 # Find any other parents of the merge commit 93 p = subprocess.Popen(['git', 'log', 94 '-1', 95 '--pretty=format:%P', 96 new_rev], 97 cwd='%s.git' % new_pkg, 98 stdout=subprocess.PIPE) 99 p.wait() 100 parents = p.stdout.read().split() 101 102 # Find the additional parent we're adding 103 p = subprocess.Popen(['git', 'rev-parse', 104 old_pkg], 105 cwd='%s.git' % new_pkg, 106 stdout=subprocess.PIPE) 107 p.wait() 108 parents.append(p.stdout.read().strip()) 109 110 # Write out the grafts file 111 f = open('%s.git/info/grafts' % new_pkg, 'a') 112 print >>f, '%s %s' % (new_rev, ' '.join(parents)) 113 f.close() 114 115 # Run filter-branch 116 subprocess.call(['git', 'filter-branch', 117 '--tag-name-filter', 'cat', 118 '--', 119 '--all'], 120 cwd='%s.git' % new_pkg) 47 121 48 122 def mergeHistories():
Note: See TracChangeset
for help on using the changeset viewer.