forked from OSchip/llvm-project
51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
|
#!/usr/bin/python
|
||
|
|
||
|
import os, sys, subprocess
|
||
|
|
||
|
def main():
|
||
|
from optparse import OptionParser, OptionGroup
|
||
|
parser = OptionParser("usage: %prog [options] <repo> <revision>")
|
||
|
parser.add_option("", "--dump-section-data", dest="dumpSectionData",
|
||
|
help="Dump the contents of sections",
|
||
|
action="store_true", default=False)
|
||
|
(opts, args) = parser.parse_args()
|
||
|
|
||
|
if len(args) != 2:
|
||
|
parser.error("invalid number of arguments")
|
||
|
|
||
|
repo,rev = args
|
||
|
|
||
|
try:
|
||
|
rev = int(rev)
|
||
|
except:
|
||
|
parser.error("invalid revision argument (not an integer)")
|
||
|
|
||
|
os.chdir(repo)
|
||
|
p = subprocess.Popen(['git', 'rev-list', 'git-svn', '--pretty'],
|
||
|
stdout=subprocess.PIPE)
|
||
|
|
||
|
bestRev = bestCommit = None
|
||
|
lastCommit = None
|
||
|
for ln in p.stdout:
|
||
|
if ln.startswith('commit '):
|
||
|
lastCommit = ln.split(' ',2)[1]
|
||
|
elif ln.startswith(' git-svn-id: '):
|
||
|
_,repo,_ = ln.strip().split(' ')
|
||
|
_,lrev = repo.rsplit('@',1)
|
||
|
lrev = int(lrev)
|
||
|
if lrev<=rev:
|
||
|
if bestRev is None or lrev>bestRev:
|
||
|
assert lastCommit
|
||
|
bestCommit = lastCommit
|
||
|
bestRev = lrev
|
||
|
if lrev == rev:
|
||
|
break
|
||
|
|
||
|
if bestCommit is not None:
|
||
|
print bestCommit
|
||
|
sys.exit(0)
|
||
|
sys.exit(1)
|
||
|
|
||
|
if __name__=='__main__':
|
||
|
main()
|