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:
Rocco Rutte
2007-03-19 09:27:37 +00:00
parent 8b0fca64da
commit 5cc155e367
3 changed files with 29 additions and 19 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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