Mercurial > public > mercurial-scm > hg
diff mercurial/changelog.py @ 14379:bd23d5f28bbb stable
changelog: convert user and desc from local encoding early
Failing to do so makes it impossible to use the memctx API to create a
changeset with a commit message or username outside of the current
encoding.encoding setting.
author | Martin Geisler <mg@aragost.com> |
---|---|
date | Thu, 19 May 2011 18:09:25 +0200 |
parents | 41d0ed2c79df |
children | 10546bb7d201 |
line wrap: on
line diff
--- a/mercurial/changelog.py Wed May 18 15:13:26 2011 +0200 +++ b/mercurial/changelog.py Thu May 19 18:09:25 2011 +0200 @@ -199,6 +199,11 @@ def add(self, manifest, files, desc, transaction, p1, p2, user, date=None, extra=None): + # Convert to UTF-8 encoded bytestrings as the very first + # thing: calling any method on a localstr object will turn it + # into a str object and the cached UTF-8 string is thus lost. + user, desc = encoding.fromlocal(user), encoding.fromlocal(desc) + user = user.strip() # An empty username or a username with a "\n" will make the # revision text contain two "\n\n" sequences -> corrupt @@ -212,8 +217,6 @@ # strip trailing whitespace and leading and trailing empty lines desc = '\n'.join([l.rstrip() for l in desc.splitlines()]).strip('\n') - user, desc = encoding.fromlocal(user), encoding.fromlocal(desc) - if date: parseddate = "%d %d" % util.parsedate(date) else: