hg-reset.py: Print details for changed branches only
authorRocco Rutte <pdmef@gmx.net>
Mon, 19 Mar 2007 09:27:37 +0000 (09:27 +0000)
committerRocco Rutte <pdmef@gmx.net>
Mon, 19 Mar 2007 09:27:37 +0000 (09:27 +0000)
It doesn't make sense to suggest resetting branch HEADs to their current
value.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
hg-fast-export.py
hg-reset.py
hg2git.py

index 6bd2e4c..91caf7d 100755 (executable)
@@ -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)
index 6b84a37..1b9acb4 100755 (executable)
@@ -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)
 
index 90014b5..1f631e7 100755 (executable)
--- 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