summaryrefslogtreecommitdiff
path: root/utils/git
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-02-25 18:07:07 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-02-25 18:07:07 +0000
commit99fe6d92d36d1da638e53b8b8403a01b6f0ae9ae (patch)
tree66dbe541e2ecdb04a3997a3920193d7919261ebe /utils/git
parentd86d269f08ec9a00bbceccef7d11fc430a8af76e (diff)
Add simple script for finding most-recent-rev-before-N in a git-svn repo; useful
when bisecting multiple repos in sync. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97150 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/git')
-rwxr-xr-xutils/git/find-rev50
1 files changed, 50 insertions, 0 deletions
diff --git a/utils/git/find-rev b/utils/git/find-rev
new file mode 100755
index 00000000000..a6161db1898
--- /dev/null
+++ b/utils/git/find-rev
@@ -0,0 +1,50 @@
+#!/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()