Mercurial > hg > hg-fastimport
diff hgfastimport/hgimport.py @ 66:ae32828c68d7
Merge in Jelmer Vernooij's switch to python-fastimport over pyfastimport.
Better to use his maintained library than my dusty old forgotten one.
Incidentally, this merge deliberately leaves out efc96910ddf2 and
descendants: that change broke the tests.
| author | Greg Ward <greg@gerg.ca> |
|---|---|
| date | Sun, 26 Jul 2015 14:32:32 -0400 |
| parents | c82b6a84884f 76bd0ea8add3 |
| children | 47bc97e1c46f |
line wrap: on
line diff
--- a/hgfastimport/hgimport.py Sun Jul 26 14:09:40 2015 -0400 +++ b/hgfastimport/hgimport.py Sun Jul 26 14:32:32 2015 -0400 @@ -22,6 +22,8 @@ import os import shutil +import stat +import sys from hgext.convert import common, hg as converthg @@ -123,9 +125,20 @@ def _parse(self): if self.parsed: return - processor.parseMany(self.sources, parser.ImportParser, self.processor) + for source in self.sources: + if source == "-": + infile = sys.stdin + else: + infile = open(source, 'rb') + try: + p = parser.ImportParser(infile) + self.processor.process(p.iter_commands) + finally: + if infile is not sys.stdin: + infile.close() self.parsed = True + class HgImportProcessor(processor.ImportProcessor): tagprefix = "refs/tags/" @@ -311,8 +324,7 @@ else: user = "%s <%s>" % (userinfo[0], userinfo[1]) - assert type(cmd.message) is unicode - text = cmd.message.encode("utf-8") + text = cmd.message date = self.convert_date(userinfo) parents = filter(None, [first_parent, second_parent]) @@ -408,12 +420,12 @@ fileid = (self.command.id, blobid) self.modified.append((filecmd.path, fileid)) - if filecmd.mode.endswith("644"): # normal file + if stat.S_ISLNK(filecmd.mode): # link + mode = 'l' + elif filecmd.mode & 0111: # executable + mode = 'x' + elif stat.S_ISREG(filecmd.mode): # regular file mode = '' - elif filecmd.mode.endswith("755"): # executable - mode = 'x' - elif filecmd.mode == "120000": # symlink - mode = 'l' else: raise RuntimeError("mode %r unsupported" % filecmd.mode)
