+++ /dev/null
-#!/usr/bin/python
-
-import os, sys, subprocess
-
-def main():
- from optparse import OptionParser, OptionGroup
- parser = OptionParser("usage: %prog [options] <repo> <revision>")
- parser.add_option("", "--branch", dest="branch",
- help="Ref for the branch to search [%default]",
- action="store", default="git-svn")
- (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', opts.branch, '--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()