Mercurial > hg > mercurial-source
changeset 16514:363e808de349 stable
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.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Thu, 26 Apr 2012 02:41:20 +0900 |
parents | aa252059a98f |
children | 12dabc22de77 |
files | hgext/convert/cvs.py hgext/convert/darcs.py hgext/convert/hg.py hgext/convert/p4.py hgext/convert/subversion.py |
diffstat | 5 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/cvs.py +++ b/hgext/convert/cvs.py @@ -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 = {}
--- a/hgext/convert/darcs.py +++ b/hgext/convert/darcs.py @@ -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])
--- a/hgext/convert/hg.py +++ b/hgext/convert/hg.py @@ -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())
--- a/hgext/convert/p4.py +++ b/hgext/convert/p4.py @@ -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})