mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
Add simple script for finding most-recent-rev-before-N in a git-svn repo; useful
when bisecting multiple repos in sync. llvm-svn: 97150
This commit is contained in:
parent
30a910f458
commit
3009f309df
50
utils/git/find-rev
Executable file
50
utils/git/find-rev
Executable file
@ -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()
|
Loading…
Reference in New Issue
Block a user