--- a/mercurial/context.py Wed Jun 18 22:52:26 2008 +0200
+++ b/mercurial/context.py Wed Jun 18 22:52:26 2008 +0200
@@ -446,14 +446,26 @@
"""A workingctx object makes access to data related to
the current working directory convenient.
parents - a pair of parent nodeids, or None to use the dirstate.
+ date - any valid date string or (unixtime, offset), or None.
+ user - username string, or None.
extra - a dictionary of extra values, or None.
changes - a list of file lists as returned by localrepo.status()
or None to use the repository status.
"""
- def __init__(self, repo, parents=None, extra=None, changes=None):
+ def __init__(self, repo, parents=None, text="", user=None, date=None,
+ extra=None, changes=None):
self._repo = repo
self._rev = None
self._node = None
+ self._text = text
+ if date is not None:
+ self._date = util.parsedate(date)
+ else:
+ self._date = util.makedate()
+ if user:
+ self._user = user
+ else:
+ self._user = self._repo.ui.username()
if parents:
p1, p2 = parents
self._parents = [self._repo.changectx(p) for p in (p1, p2)]
@@ -518,9 +530,9 @@
def manifest(self): return self._manifest
- def user(self): return self._repo.ui.username()
- def date(self): return util.makedate()
- def description(self): return ""
+ def user(self): return self._user
+ def date(self): return self._date
+ def description(self): return self._text
def files(self):
f = self.modified() + self.added() + self.removed()
f.sort()
--- a/mercurial/localrepo.py Wed Jun 18 22:52:26 2008 +0200
+++ b/mercurial/localrepo.py Wed Jun 18 22:52:26 2008 +0200
@@ -491,8 +491,10 @@
def changectx(self, changeid=None):
return context.changectx(self, changeid)
- def workingctx(self, parents=None, extra=None, changes=None):
- return context.workingctx(self, parents, extra, changes)
+ def workingctx(self, parents=None, text="", user=None, date=None,
+ extra=None, changes=None):
+ return context.workingctx(self, parents, text, user, date, extra,
+ changes)
def parents(self, changeid=None):
'''
@@ -795,11 +797,13 @@
update_dirstate = (self.dirstate.parents()[0] == p1)
changes = [files, [], [], [], []]
- wctx = self.workingctx((p1, p2), extra, changes)
+ wctx = self.workingctx((p1, p2), text, user, date, extra, changes)
commit = wctx.modified() + wctx.added()
remove = wctx.removed()
extra = wctx.extra().copy()
branchname = extra['branch']
+ user = wctx.user()
+ text = wctx.description()
c1 = self.changelog.read(p1)
c2 = self.changelog.read(p2)
@@ -868,7 +872,6 @@
(new, removed))
# add changeset
- user = user or self.ui.username()
if (not empty_ok and not text) or force_editor:
edittext = []
if text:
@@ -901,7 +904,7 @@
text = '\n'.join(lines)
n = self.changelog.add(mn, changed + removed, text, trp, p1, p2,
- user, date, extra)
+ user, wctx.date(), extra)
self.hook('pretxncommit', throw=True, node=hex(n), parent1=xp1,
parent2=xp2)
tr.close()
--- a/tests/test-committer.out Wed Jun 18 22:52:26 2008 +0200
+++ b/tests/test-committer.out Wed Jun 18 22:52:26 2008 +0200
@@ -22,7 +22,5 @@
date: Mon Jan 12 13:46:40 1970 +0000
summary: commit-1
-transaction abort!
-rollback completed
abort: Please specify a username.
No username found, using user@host instead