mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-15 01:11:30 +02:00
56 lines
1.3 KiB
Python
Executable File
56 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
from git import Git
|
|
|
|
g = Git(os.getcwd())
|
|
|
|
commitMsgs = {}
|
|
|
|
def getCommits(srcRef, dstRef):
|
|
commits = {}
|
|
|
|
commit = ''
|
|
changeId = ''
|
|
commitHash = ''
|
|
for line in g.log('--format=fuller', '%s..%s' % (srcRef, dstRef)).split('\n'):
|
|
if len(commit) > 0 and line.find('commit') == 0:
|
|
commits[changeId] = commitHash
|
|
commitMsgs[commitHash] = commit
|
|
commit = ''
|
|
size = 0
|
|
match = re.search(r'commit ([0-9a-f]+)', line)
|
|
if match:
|
|
commitHash = match.group(1)
|
|
else:
|
|
raise Exception('Bad commit hash in line:\n%s' % line)
|
|
elif line.find('Change-Id:') >= 0:
|
|
match = re.search(r'Change-Id: (I[0-9a-f]+)', line)
|
|
if match:
|
|
changeId = match.group(1)
|
|
else:
|
|
raise Exception('Bad Change-Id in line:\n%s' % line)
|
|
commit += line + '\n'
|
|
|
|
return commits
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
sourceRef, targetRef = sys.argv[1:3]
|
|
except ValueError:
|
|
print 'branch-compare <source ref> <target ref>'
|
|
|
|
targetCommits = getCommits(sourceRef, targetRef)
|
|
sourceCommits = getCommits(targetRef, sourceRef)
|
|
|
|
missingCommitsFromTarget = set(sourceCommits.keys()) - set(targetCommits.keys())
|
|
|
|
for id in missingCommitsFromTarget:
|
|
hash = sourceCommits[id]
|
|
print 'git cherry-pick', hash
|
|
print commitMsgs[hash]
|