# HG changeset patch # User FUJIWARA Katsunori # Date 1335375680 -32400 # Node ID 363e808de3496653d93690718149329467d2f078 # Parent aa252059a98f8282e9016e0c4d44e71291a49de5 i18n: use locale insensitive format for datetimes as intermediate representation (issue3398) on some non "en" locale environments, "hg convert" is aborted, because "util.parsedate()" fails. it fails in "memctx.__init__()" called by "putcommit()" of "convert". in "hg convert", datetimes gotten from source repository are usually formatted by "util.datestr()" with default format "%a %b %d %H:%M:%S %Y %1%2". but on some environments, "%a" and "%b" may cause locale sensitive string, and such string may cause parse error in "util.parsedate()". this path uses "%Y-%m-%d %H:%M:%S %1%2" as intermediate representation format for datetimes, because it consists only of locale insensitive elements. datetimes in above format are only used for passing them from conversion logic to memctx object, so it doesn't have to be formatted by locale sensitive one. this patch just avoids locale sensitivity problem of "datestr()" and "parsedate()" combintion. diff -r aa252059a98f -r 363e808de349 hgext/convert/cvs.py --- a/hgext/convert/cvs.py Tue Apr 24 14:34:54 2012 +0200 +++ b/hgext/convert/cvs.py Thu Apr 26 02:41:20 2012 +0900 @@ -70,7 +70,7 @@ cs.author = self.recode(cs.author) self.lastbranch[cs.branch] = id cs.comment = self.recode(cs.comment) - date = util.datestr(cs.date) + date = util.datestr(cs.date, '%Y-%m-%d %H:%M:%S %1%2') self.tags.update(dict.fromkeys(cs.tags, id)) files = {} diff -r aa252059a98f -r 363e808de349 hgext/convert/darcs.py --- a/hgext/convert/darcs.py Tue Apr 24 14:34:54 2012 +0200 +++ b/hgext/convert/darcs.py Thu Apr 26 02:41:20 2012 +0900 @@ -139,7 +139,7 @@ # etree can return unicode objects for name, comment, and author, # so recode() is used to ensure str objects are emitted. return commit(author=self.recode(elt.get('author')), - date=util.datestr(date), + date=util.datestr(date, '%Y-%m-%d %H:%M:%S %1%2'), desc=self.recode(desc).strip(), parents=self.parents[rev]) diff -r aa252059a98f -r 363e808de349 hgext/convert/hg.py --- a/hgext/convert/hg.py Tue Apr 24 14:34:54 2012 +0200 +++ b/hgext/convert/hg.py Thu Apr 26 02:41:20 2012 +0900 @@ -342,7 +342,8 @@ crev = rev else: crev = None - return commit(author=ctx.user(), date=util.datestr(ctx.date()), + return commit(author=ctx.user(), + date=util.datestr(ctx.date(), '%Y-%m-%d %H:%M:%S %1%2'), desc=ctx.description(), rev=crev, parents=parents, branch=ctx.branch(), extra=ctx.extra(), sortkey=ctx.rev()) diff -r aa252059a98f -r 363e808de349 hgext/convert/p4.py --- a/hgext/convert/p4.py Tue Apr 24 14:34:54 2012 +0200 +++ b/hgext/convert/p4.py Thu Apr 26 02:41:20 2012 +0900 @@ -119,7 +119,8 @@ parents = [] date = (int(d["time"]), 0) # timezone not set - c = commit(author=self.recode(d["user"]), date=util.datestr(date), + c = commit(author=self.recode(d["user"]), + date=util.datestr(date, '%Y-%m-%d %H:%M:%S %1%2'), parents=parents, desc=desc, branch='', extra={"p4": change}) diff -r aa252059a98f -r 363e808de349 hgext/convert/subversion.py --- a/hgext/convert/subversion.py Tue Apr 24 14:34:54 2012 +0200 +++ b/hgext/convert/subversion.py Thu Apr 26 02:41:20 2012 +0900 @@ -805,7 +805,7 @@ branch = None cset = commit(author=author, - date=util.datestr(date), + date=util.datestr(date, '%Y-%m-%d %H:%M:%S %1%2'), desc=log, parents=parents, branch=branch,