[llvm-commits] [llvm] r97150 - in /llvm/trunk/utils/git: ./ find-rev

Daniel Dunbar daniel at zuster.org
Thu Feb 25 10:07:07 PST 2010


Author: ddunbar
Date: Thu Feb 25 12:07:07 2010
New Revision: 97150

URL: http://llvm.org/viewvc/llvm-project?rev=97150&view=rev
Log:
Add simple script for finding most-recent-rev-before-N in a git-svn repo; useful
when bisecting multiple repos in sync.

Added:
    llvm/trunk/utils/git/
    llvm/trunk/utils/git/find-rev   (with props)

Added: llvm/trunk/utils/git/find-rev
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/git/find-rev?rev=97150&view=auto
==============================================================================
--- llvm/trunk/utils/git/find-rev (added)
+++ llvm/trunk/utils/git/find-rev Thu Feb 25 12:07:07 2010
@@ -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()

Propchange: llvm/trunk/utils/git/find-rev
------------------------------------------------------------------------------
    svn:executable = *





More information about the llvm-commits mailing list