mirror of
https://github.com/frej/fast-export.git
synced 2026-01-22 14:12:04 +01:00
hg-reset.py: Print details for changed branches only
It doesn't make sense to suggest resetting branch HEADs to their current value. Signed-off-by: Rocco Rutte <pdmef@gmx.net>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
# License: MIT <http://www.opensource.org/licenses/mit-license.php>
|
||||
|
||||
from mercurial import repo,hg,cmdutil,util,ui,revlog,node
|
||||
from hg2git import setup_repo,fixup_user,get_branch,get_changeset,load_cache,save_cache
|
||||
from hg2git import setup_repo,fixup_user,get_branch,get_changeset,load_cache,save_cache,get_git_sha1
|
||||
from tempfile import mkstemp
|
||||
from optparse import OptionParser
|
||||
import re
|
||||
@@ -260,15 +260,6 @@ def load_authors(filename):
|
||||
return cache
|
||||
|
||||
def verify_heads(ui,repo,cache,force):
|
||||
def getsha1(branch):
|
||||
try:
|
||||
f=open(os.getenv('GIT_DIR','/dev/null')+'/refs/heads/'+branch)
|
||||
sha1=f.readlines()[0].split('\n')[0]
|
||||
f.close()
|
||||
return sha1
|
||||
except IOError:
|
||||
return None
|
||||
|
||||
branches=repo.branchtags()
|
||||
l=[(-repo.changelog.rev(n), n, t) for t, n in branches.items()]
|
||||
l.sort()
|
||||
@@ -276,7 +267,7 @@ def verify_heads(ui,repo,cache,force):
|
||||
# get list of hg's branches to verify, don't take all git has
|
||||
for _,_,b in l:
|
||||
b=get_branch(b)
|
||||
sha1=getsha1(b)
|
||||
sha1=get_git_sha1(b)
|
||||
c=cache.get(b)
|
||||
if sha1!=None and c!=None:
|
||||
sys.stderr.write('Verifying branch [%s]\n' % b)
|
||||
|
||||
26
hg-reset.py
26
hg-reset.py
@@ -4,7 +4,7 @@
|
||||
# License: GPLv2
|
||||
|
||||
from mercurial import repo,hg,cmdutil,util,ui,revlog,node
|
||||
from hg2git import setup_repo,load_cache,get_changeset
|
||||
from hg2git import setup_repo,load_cache,get_changeset,get_git_sha1
|
||||
from optparse import OptionParser
|
||||
import sys
|
||||
|
||||
@@ -37,14 +37,21 @@ def heads(ui,repo,start=None,stop=None,max=None):
|
||||
|
||||
def get_branches(ui,repo,heads_cache,marks_cache,max):
|
||||
h=heads(ui,repo,max=max)
|
||||
old=dict.fromkeys(heads_cache)
|
||||
r=[]
|
||||
stale=dict.fromkeys(heads_cache)
|
||||
changed=[]
|
||||
unchanged=[]
|
||||
for node,rev in h:
|
||||
_,_,user,(_,_),_,desc,branch,_=get_changeset(ui,repo,rev)
|
||||
del old[branch]
|
||||
r.append([branch,marks_cache.get(str(int(rev)+1)),rev,desc.split('\n')[0],user])
|
||||
r.sort()
|
||||
return old,r
|
||||
del stale[branch]
|
||||
git_sha1=get_git_sha1(branch)
|
||||
cache_sha1=marks_cache.get(str(int(rev)+1))
|
||||
if git_sha1!=None and git_sha1==cache_sha1:
|
||||
unchanged.append([branch,cache_sha1,rev,desc.split('\n')[0],user])
|
||||
else:
|
||||
changed.append([branch,cache_sha1,rev,desc.split('\n')[0],user])
|
||||
changed.sort()
|
||||
unchanged.sort()
|
||||
return stale,changed,unchanged
|
||||
|
||||
if __name__=='__main__':
|
||||
def bail(parser,opt):
|
||||
@@ -83,11 +90,14 @@ if __name__=='__main__':
|
||||
sys.exit(1)
|
||||
|
||||
ui,repo=setup_repo(options.repourl)
|
||||
stale,changed=get_branches(ui,repo,heads_cache,marks_cache,options.revision+1)
|
||||
stale,changed,unchanged=get_branches(ui,repo,heads_cache,marks_cache,options.revision+1)
|
||||
|
||||
print "Possibly stale branches:"
|
||||
map(lambda b: sys.stdout.write('\t%s\n' % b),stale.keys())
|
||||
|
||||
print "Unchanged branches:"
|
||||
map(lambda b: sys.stdout.write('\t%s (r%s)\n' % (b[0],b[2])),unchanged)
|
||||
|
||||
print "Reset branches in '%s' to:" % options.headsfile
|
||||
map(lambda b: sys.stdout.write('\t:%s %s\n\t\t(r%s: %s: %s)\n' % (b[0],b[1],b[2],b[4],b[3])),changed)
|
||||
|
||||
|
||||
@@ -76,3 +76,12 @@ def save_cache(filename,cache):
|
||||
f=open(filename,'w+')
|
||||
map(lambda x: f.write(':%s %s\n' % (str(x),str(cache.get(x)))),cache.keys())
|
||||
f.close()
|
||||
|
||||
def get_git_sha1(name,type='heads'):
|
||||
try:
|
||||
f=open(os.getenv('GIT_DIR','/dev/null')+'/refs/'+type+'/'+name)
|
||||
sha1=f.readlines()[0].split('\n')[0]
|
||||
f.close()
|
||||
return sha1
|
||||
except IOError:
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user