[Python-apps-team] Bug#531667: mercurial-common: git commands for hg convert are incorrect

Ron Gorodetzky ron at parktree.net
Wed Jun 3 07:10:36 UTC 2009


Package: mercurial-common
Version: 1.0.1-5.1
Severity: normal
Tags: patch


When trying to convert a git repository to a mercurial one on debian 
lenny the following error occurs.

$ hg convert -s git .
assuming destination .-hg
abort: cannot find required "git" tool

This is because the convert tool assumes dashed git command names (e.g. 
'git-rev-parse' instead of 'git rev-parse').  In lenny the git commands 
were reorganized so that the full git-cmd names were no longer in the 
default path and 'git cmd' must be used instead.

The fix seems relatively simple though.

-Ron

-- System Information:
Debian Release: 5.0.1
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.28.7-x200 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages mercurial-common depends on:
ii  python                        2.5.2-3    An interactive high-level object-o
ii  python-support                0.8.4      automated rebuilding support for P

Versions of packages mercurial-common recommends:
ii  mercurial                     1.0.1-5.1  Scalable distributed version contr

mercurial-common suggests no packages.

-- no debconf information
-------------- next part --------------
--- a/hgext/convert/git.py
+++ b/hgext/convert/git.py
@@ -32,20 +32,20 @@
         if not os.path.exists(path + "/objects"):
             raise NoRepo("%s does not look like a Git repo" % path)
 
-        checktool('git-rev-parse', 'git')
+        checktool('git', 'git')
 
         self.path = path
 
     def getheads(self):
         if not self.rev:
-            return self.gitcmd('git-rev-parse --branches').read().splitlines()
+            return self.gitcmd('git rev-parse --branches').read().splitlines()
         else:
-            fh = self.gitcmd("git-rev-parse --verify %s" % self.rev)
+            fh = self.gitcmd("git rev-parse --verify %s" % self.rev)
             return [fh.read()[:-1]]
 
     def catfile(self, rev, type):
         if rev == "0" * 40: raise IOError()
-        fh = self.gitcmd("git-cat-file %s %s" % (type, rev))
+        fh = self.gitcmd("git cat-file %s %s" % (type, rev))
         return fh.read()
 
     def getfile(self, name, rev):
@@ -56,7 +56,7 @@
 
     def getchanges(self, version):
         self.modecache = {}
-        fh = self.gitcmd("git-diff-tree --root -m -r %s" % version)
+        fh = self.gitcmd("git diff-tree --root -m -r %s" % version)
         changes = []
         seen = {}
         for l in fh:
@@ -109,7 +109,7 @@
 
     def gettags(self):
         tags = {}
-        fh = self.gitcmd('git-ls-remote --tags "%s"' % self.path)
+        fh = self.gitcmd('git ls-remote --tags "%s"' % self.path)
         prefix = 'refs/tags/'
         for line in fh:
             line = line.strip()
@@ -126,7 +126,7 @@
     def getchangedfiles(self, version, i):
         changes = []
         if i is None:
-            fh = self.gitcmd("git-diff-tree --root -m -r %s" % version)
+            fh = self.gitcmd("git diff-tree --root -m -r %s" % version)
             for l in fh:
                 if "\t" not in l:
                     continue
@@ -134,7 +134,7 @@
                 changes.append(f)
             fh.close()
         else:
-            fh = self.gitcmd('git-diff-tree --name-only --root -r %s "%s^%s" --'
+            fh = self.gitcmd('git diff-tree --name-only --root -r %s "%s^%s" --'
                              % (version, version, i+1))
             changes = [f.rstrip('\n') for f in fh]
             fh.close()


More information about the Python-apps-team mailing list