Mercurial > hg
changeset 7242:d1dff8c492dd
convert: fix non-ASCII filenames retrieval from git sources (issue 1360)
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 26 Oct 2008 13:23:02 +0100 |
parents | c1dc903dc7b6 |
children | 2fef3051ebb3 b965605dfb2e |
files | hgext/convert/git.py |
diffstat | 1 files changed, 17 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/git.py Thu Oct 23 14:05:11 2008 +0200 +++ b/hgext/convert/git.py Sun Oct 26 13:23:02 2008 +0100 @@ -56,22 +56,26 @@ def getchanges(self, version): self.modecache = {} - fh = self.gitcmd("git diff-tree --root -m -r %s" % version) + fh = self.gitcmd("git diff-tree -z --root -m -r %s" % version) changes = [] seen = {} - for l in fh: - if "\t" not in l: - continue - m, f = l[:-1].split("\t") - if f in seen: + entry = None + for l in fh.read().split('\x00'): + if not entry: + if not l.startswith(':'): + continue + entry = l continue - seen[f] = 1 - m = m.split() - h = m[3] - p = (m[1] == "100755") - s = (m[1] == "120000") - self.modecache[(f, h)] = (p and "x") or (s and "l") or "" - changes.append((f, h)) + f = l + if f not in seen: + seen[f] = 1 + entry = entry.split() + h = entry[3] + p = (entry[1] == "100755") + s = (entry[1] == "120000") + self.modecache[(f, h)] = (p and "x") or (s and "l") or "" + changes.append((f, h)) + entry = None return (changes, {}) def getcommit(self, version):