From 5cc155e367762b1aa3ee9d91961beeba15e49fed Mon Sep 17 00:00:00 2001 From: Rocco Rutte Date: Mon, 19 Mar 2007 09:27:37 +0000 Subject: [PATCH] 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 --- hg-fast-export.py | 13 ++----------- hg-reset.py | 26 ++++++++++++++++++-------- hg2git.py | 9 +++++++++ 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/hg-fast-export.py b/hg-fast-export.py index 6bd2e4c..91caf7d 100755 --- a/hg-fast-export.py +++ b/hg-fast-export.py @@ -4,7 +4,7 @@ # License: MIT 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) diff --git a/hg-reset.py b/hg-reset.py index 6b84a37..1b9acb4 100755 --- a/hg-reset.py +++ b/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) diff --git a/hg2git.py b/hg2git.py index 90014b5..1f631e7 100755 --- a/hg2git.py +++ b/hg2git.py @@ -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 -- 2.11.4.GIT