comparison hgfastimport/hgimport.py @ 37:513449a88de2

Handle non-ASCII input correctly (assuming UTF-8 encoding). - fastimport library now returns filenames as byte strings, so leave them be - re-encode commit message as UTF-8 - monkeypatch mercurial.encoding to assume UTF-8 for everything
author Greg Ward <greg-hg@gerg.ca>
date Fri, 08 May 2009 11:03:16 -0400
parents 08e2157aaa9a
children 177a133519bc
comparison
equal deleted inserted replaced
36:0e4e40caea58 37:513449a88de2
136 # fallback to committer (committer is required, author is 136 # fallback to committer (committer is required, author is
137 # optional) 137 # optional)
138 userinfo = cmd.author or cmd.committer 138 userinfo = cmd.author or cmd.committer
139 user = "%s <%s>" % (userinfo[0], userinfo[1]) 139 user = "%s <%s>" % (userinfo[0], userinfo[1])
140 140
141 # XXX is this the right way to specify filename encoding?!? 141 # Blech: have to monkeypatch mercurial.encoding to ensure that
142 files = [f.encode("utf-8") for f in commit_handler.filelist()] 142 # everything under rawcommit() assumes the same encoding,
143 # regardless of current locale.
144 from mercurial import encoding
145 encoding.encoding = "UTF-8"
146
147 files = commit_handler.filelist()
148 assert type(cmd.message) is unicode
149 text = cmd.message.encode("utf-8") # XXX cmd.message is unicode
143 date = self.convert_date(userinfo) 150 date = self.convert_date(userinfo)
144 node = self.repo.rawcommit( 151 node = self.repo.rawcommit(
145 files=files, text=cmd.message, user=user, date=date) 152 files=files, text=text, user=user, date=date)
146 rev = self.repo.changelog.rev(node) 153 rev = self.repo.changelog.rev(node)
147 if cmd.mark is not None: 154 if cmd.mark is not None:
148 self.mark_map[":" + cmd.mark] = rev 155 self.mark_map[":" + cmd.mark] = rev
149 self.branch_map[cmd.ref] = rev 156 self.branch_map[cmd.ref] = rev
150 self.ui.write("Done commit of rev %d\n" % rev) 157 self.ui.write("Done commit of rev %d\n" % rev)