changeset 1957:295010327271

merge with crew
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Wed, 15 Mar 2006 07:10:04 +0100
parents 16750010813d (diff) 2f500a4b6e99 (current diff)
children f92cf4a8cedd
files
diffstat 86 files changed, 889 insertions(+), 519 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/hgk.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/contrib/hgk.py	Wed Mar 15 07:10:04 2006 +0100
@@ -134,10 +134,10 @@
     if lines[-1].startswith('committer:'):
         committer = lines[-1].split(': ')[1].rstrip()
     else:
-        committer = "%s %s %s" % (changes[1], date, date_ar[1])
+        committer = changes[1]
 
     print "author %s %s %s" % (changes[1], date, date_ar[1])
-    print "committer %s" % (committer)
+    print "committer %s %s %s" % (committer, date, date_ar[1])
     print ""
     if prefix != "":
         print "%s%s" % (prefix, changes[4].replace('\n', nlprefix).strip())
--- a/doc/hg.1.txt	Wed Mar 15 06:39:04 2006 +0100
+++ b/doc/hg.1.txt	Wed Mar 15 07:10:04 2006 +0100
@@ -146,6 +146,16 @@
 
     (deprecated, use .hgrc)
 
+HGRCPATH::
+    A list of files or directories to search for hgrc files.  Item
+    separator is ":" on Unix, ";" on Windows.  If HGRCPATH is not set,
+    platform default search path is used.  If empty, only .hg/hgrc of
+    current repository is read.
+
+    For each element in path, if a directory, all entries in directory
+    ending with ".rc" are added to path.  Else, element itself is
+    added to path.
+
 HGUSER::
     This is the string used for the author of a commit.
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/bundlerepo.py	Wed Mar 15 07:10:04 2006 +0100
@@ -0,0 +1,208 @@
+"""
+bundlerepo.py - repository class for viewing uncompressed bundles
+
+This provides a read-only repository interface to bundles as if
+they were part of the actual repository.
+
+Copyright 2006 Benoit Boissinot <benoit.boissinot@ens-lyon.org>
+
+This software may be used and distributed according to the terms
+of the GNU General Public License, incorporated herein by reference.
+"""
+
+from node import *
+from i18n import gettext as _
+from demandload import demandload
+demandload(globals(), "util os struct")
+
+import localrepo, changelog, manifest, filelog, revlog
+
+def getchunk(source):
+    """get a chunk from a group"""
+    d = source.read(4)
+    if not d:
+        return ""
+    l = struct.unpack(">l", d)[0]
+    if l <= 4:
+        return ""
+    d = source.read(l - 4)
+    if len(d) < l - 4:
+        raise util.Abort(_("premature EOF reading chunk"
+                           " (got %d bytes, expected %d)")
+                          % (len(d), l - 4))
+    return d
+
+class bundlerevlog(revlog.revlog):
+    def __init__(self, opener, indexfile, datafile, bundlefile,
+                 linkmapper=None):
+        # How it works:
+        # to retrieve a revision, we need to know the offset of
+        # the revision in the bundlefile (an opened file).
+        #
+        # We store this offset in the index (start), to differentiate a
+        # rev in the bundle and from a rev in the revlog, we check
+        # len(index[r]). If the tuple is bigger than 7, it is a bundle
+        # (it is bigger since we store the node to which the delta is)
+        #
+        revlog.revlog.__init__(self, opener, indexfile, datafile)
+        self.bundlefile = bundlefile
+        def genchunk():
+            while 1:
+                pos = bundlefile.tell()
+                chunk = getchunk(bundlefile)
+                if not chunk:
+                    break
+                yield chunk, pos + 4 # XXX struct.calcsize(">l") == 4
+        n = self.count()
+        prev = None
+        for chunk, start in genchunk():
+            size = len(chunk)
+            if size < 80:
+                raise util.Abort("invalid changegroup")
+            start += 80
+            size -= 80
+            node, p1, p2, cs = struct.unpack("20s20s20s20s", chunk[:80])
+            if node in self.nodemap:
+                prev = node
+                continue
+            for p in (p1, p2):
+                if not p in self.nodemap:
+                    raise RevlogError(_("unknown parent %s") % short(p1))
+            if linkmapper is None:
+                link = n
+            else:
+                link = linkmapper(cs)
+
+            if not prev:
+                prev = p1
+            # start, size, base is not used, link, p1, p2, delta ref
+            e = (start, size, None, link, p1, p2, node, prev)
+            self.index.append(e)
+            self.nodemap[node] = n
+            prev = node
+            n += 1
+
+    def bundle(self, rev):
+        """is rev from the bundle"""
+        if rev < 0:
+            return False
+        return len(self.index[rev]) > 7
+    def bundlebase(self, rev): return self.index[rev][7]
+    def chunk(self, rev):
+        # Warning: in case of bundle, the diff is against bundlebase,
+        # not against rev - 1
+        # XXX: could use some caching
+        if not self.bundle(rev):
+            return revlog.revlog.chunk(self, rev)
+        self.bundlefile.seek(self.start(rev))
+        return self.bundlefile.read(self.length(rev))
+
+    def revdiff(self, rev1, rev2):
+        """return or calculate a delta between two revisions"""
+        if self.bundle(rev1) and self.bundle(rev2):
+            # hot path for bundle
+            revb = self.rev(self.bundlebase(rev2))
+            if revb == rev1:
+                return self.chunk(rev2)
+        elif not self.bundle(rev1) and not self.bundle(rev2):
+            return revlog.revlog.chunk(self, rev1, rev2)
+
+        return self.diff(self.revision(self.node(rev1)),
+                         self.revision(self.node(rev2)))
+
+    def revision(self, node):
+        """return an uncompressed revision of a given"""
+        if node == nullid: return ""
+
+        text = None
+        chain = []
+        iter_node = node
+        rev = self.rev(iter_node)
+        # reconstruct the revision if it is from a changegroup
+        while self.bundle(rev):
+            if self.cache and self.cache[0] == iter_node:
+                text = self.cache[2]
+                break
+            chain.append(rev)
+            iter_node = self.bundlebase(rev)
+            rev = self.rev(iter_node)
+        if text is None:
+            text = revlog.revlog.revision(self, iter_node)
+
+        while chain:
+            delta = self.chunk(chain.pop())
+            text = self.patches(text, [delta])
+
+        p1, p2 = self.parents(node)
+        if node != revlog.hash(text, p1, p2):
+            raise RevlogError(_("integrity check failed on %s:%d")
+                          % (self.datafile, self.rev(node)))
+
+        self.cache = (node, rev, text)
+        return text
+
+    def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
+        raise NotImplementedError
+    def addgroup(self, revs, linkmapper, transaction, unique=0):
+        raise NotImplementedError
+    def strip(self, rev, minlink):
+        raise NotImplementedError
+    def checksize(self):
+        raise NotImplementedError
+
+class bundlechangelog(bundlerevlog, changelog.changelog):
+    def __init__(self, opener, bundlefile):
+        changelog.changelog.__init__(self, opener)
+        bundlerevlog.__init__(self, opener, "00changelog.i", "00changelog.d",
+                              bundlefile)
+
+class bundlemanifest(bundlerevlog, manifest.manifest):
+    def __init__(self, opener, bundlefile, linkmapper):
+        manifest.manifest.__init__(self, opener)
+        bundlerevlog.__init__(self, opener, self.indexfile, self.datafile,
+                              bundlefile, linkmapper)
+
+class bundlefilelog(bundlerevlog, filelog.filelog):
+    def __init__(self, opener, path, bundlefile, linkmapper):
+        filelog.filelog.__init__(self, opener, path)
+        bundlerevlog.__init__(self, opener, self.indexfile, self.datafile,
+                              bundlefile, linkmapper)
+
+class bundlerepository(localrepo.localrepository):
+    def __init__(self, ui, path, bundlename):
+        localrepo.localrepository.__init__(self, ui, path)
+        f = open(bundlename, "rb")
+        s = os.fstat(f.fileno())
+        self.bundlefile = f
+        header = self.bundlefile.read(4)
+        if header == "HG10":
+            raise util.Abort(_("%s: compressed bundle not supported")
+                             % bundlename)
+        elif header != "HG11":
+            raise util.Abort(_("%s: not a Mercurial bundle file") % bundlename)
+        self.changelog = bundlechangelog(self.opener, self.bundlefile)
+        self.manifest = bundlemanifest(self.opener, self.bundlefile,
+                                       self.changelog.rev)
+        # dict with the mapping 'filename' -> position in the bundle
+        self.bundlefilespos = {}
+        while 1:
+                f = getchunk(self.bundlefile)
+                if not f:
+                    break
+                self.bundlefilespos[f] = self.bundlefile.tell()
+                while getchunk(self.bundlefile):
+                    pass
+
+    def dev(self):
+        return -1
+
+    def file(self, f):
+        if f[0] == '/':
+            f = f[1:]
+        if f in self.bundlefilespos:
+            self.bundlefile.seek(self.bundlefilespos[f])
+            return bundlefilelog(self.opener, f, self.bundlefile,
+                                 self.changelog.rev)
+        else:
+            return filelog.filelog(self.opener, f)
+
--- a/mercurial/commands.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/mercurial/commands.py	Wed Mar 15 07:10:04 2006 +0100
@@ -9,9 +9,9 @@
 from node import *
 from i18n import gettext as _
 demandload(globals(), "os re sys signal shutil imp urllib pdb")
-demandload(globals(), "fancyopts ui hg util lock revlog templater")
-demandload(globals(), "fnmatch hgweb mdiff random signal time traceback")
-demandload(globals(), "errno socket version struct atexit sets bz2")
+demandload(globals(), "fancyopts ui hg util lock revlog templater bundlerepo")
+demandload(globals(), "fnmatch hgweb mdiff random signal tempfile time")
+demandload(globals(), "traceback errno socket version struct atexit sets bz2")
 
 class UnknownCommand(Exception):
     """Exception raised if command is not in the command table."""
@@ -274,6 +274,32 @@
                               pathname),
                 mode)
 
+def write_bundle(cg, filename, compress=True, fh=None):
+    if fh is None:
+        fh = open(filename, "wb")
+
+    class nocompress(object):
+        def compress(self, x):
+            return x
+        def flush(self):
+            return ""
+    try:
+        if compress:
+            fh.write("HG10")
+            z = bz2.BZ2Compressor(9)
+        else:
+            fh.write("HG11")
+            z = nocompress()
+        while 1:
+            chunk = cg.read(4096)
+            if not chunk:
+                break
+            fh.write(z.compress(chunk))
+        fh.write(z.flush())
+    except:
+        os.unlink(filename)
+        raise
+
 def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always,
            changes=None, text=False, opts={}):
     if not node1:
@@ -413,8 +439,12 @@
             def one(v, tag=name):
                 try:
                     vargs.update(v)
-                except ValueError:
-                    vargs.update([(name, v)])
+                except (AttributeError, ValueError):
+                    try:
+                        for a, b in v:
+                            vargs[a] = b
+                    except ValueError:
+                        vargs[name] = v
                 return self.t(tag, **vargs)
             lastname = 'last_' + name
             if lastname in self.t:
@@ -441,8 +471,8 @@
         if self.ui.debugflag:
             def showmanifest(**args):
                 args = args.copy()
-                args.update(rev=self.repo.manifest.rev(changes[0]),
-                            node=hex(changes[0]))
+                args.update(dict(rev=self.repo.manifest.rev(changes[0]),
+                                 node=hex(changes[0])))
                 yield self.t('manifest', **args)
         else:
             showmanifest = ''
@@ -830,24 +860,11 @@
     Unlike import/export, this exactly preserves all changeset
     contents including permissions, rename data, and revision history.
     """
-    f = open(fname, "wb")
     dest = ui.expandpath(dest)
     other = hg.repository(ui, dest)
     o = repo.findoutgoing(other)
     cg = repo.changegroup(o, 'bundle')
-
-    try:
-        f.write("HG10")
-        z = bz2.BZ2Compressor(9)
-        while 1:
-            chunk = cg.read(4096)
-            if not chunk:
-                break
-            f.write(z.compress(chunk))
-        f.write(z.flush())
-    except:
-        os.unlink(fname)
-        raise
+    write_bundle(cg, fname)
 
 def cat(ui, repo, file1, *pats, **opts):
     """output the latest or given revisions of files
@@ -1744,16 +1761,36 @@
     pull repo. These are the changesets that would be pulled if a pull
     was requested.
 
-    Currently only local repositories are supported.
+    For remote repository, using --bundle avoids downloading the changesets
+    twice if the incoming is followed by a pull.
     """
     source = ui.expandpath(source)
     other = hg.repository(ui, source)
-    if not other.local():
-        raise util.Abort(_("incoming doesn't work for remote repositories yet"))
-    o = repo.findincoming(other)
-    if not o:
+    incoming = repo.findincoming(other)
+    if not incoming:
         return
-    o = other.changelog.nodesbetween(o)[0]
+
+    cleanup = None
+    if not other.local() or opts["bundle"]:
+        # create an uncompressed bundle
+        if not opts["bundle"]:
+            # create a temporary bundle
+            fd, fname = tempfile.mkstemp(suffix=".hg",
+                                         prefix="tmp-hg-incoming")
+            f = os.fdopen(fd, "wb")
+            cleanup = fname
+        else:
+            fname = opts["bundle"]
+            f = open(fname, "wb")
+
+        cg = other.changegroup(incoming, "incoming")
+        write_bundle(cg, fname, compress=other.local(), fh=f)
+        f.close()
+        if not other.local():
+            # use a bundlerepo
+            other = bundlerepo.bundlerepository(ui, repo.root, fname)
+
+    o = other.changelog.nodesbetween(incoming)[0]
     if opts['newest_first']:
         o.reverse()
     displayer = show_changeset(ui, other, opts)
@@ -1767,6 +1804,9 @@
             dodiff(ui, ui, other, prev, n)
             ui.write("\n")
 
+    if cleanup:
+        os.unlink(cleanup)
+
 def init(ui, dest="."):
     """create a new repository in the given directory
 
@@ -2492,16 +2532,20 @@
     """
     f = urllib.urlopen(fname)
 
-    if f.read(4) != "HG10":
+    header = f.read(4)
+    if header == "HG10":
+        def generator(f):
+            zd = bz2.BZ2Decompressor()
+            for chunk in f:
+                yield zd.decompress(chunk)
+    elif header == "HG11":
+        def generator(f):
+            for chunk in f:
+                yield chunk
+    else:
         raise util.Abort(_("%s: not a Mercurial bundle file") % fname)
-
-    def bzgenerator(f):
-        zd = bz2.BZ2Decompressor()
-        for chunk in f:
-            yield zd.decompress(chunk)
-
-    bzgen = bzgenerator(util.filechunkiter(f, 4096))
-    if repo.addchangegroup(util.chunkbuffer(bzgen)):
+    gen = generator(util.filechunkiter(f, 4096))
+    if repo.addchangegroup(util.chunkbuffer(gen)):
         return 1
 
     if opts['update']:
@@ -2715,9 +2759,10 @@
          [('M', 'no-merges', None, _('do not show merges')),
           ('', 'style', '', _('display using template map file')),
           ('n', 'newest-first', None, _('show newest record first')),
+          ('', 'bundle', '', _('file to store the bundles into')),
           ('p', 'patch', None, _('show patch')),
           ('', 'template', '', _('display with template'))],
-         _('hg incoming [-p] [-n] [-M] [SOURCE]')),
+         _('hg incoming [-p] [-n] [-M] [--bundle FILENAME] [SOURCE]')),
     "^init": (init, [], _('hg init [DEST]')),
     "locate":
         (locate,
--- a/mercurial/hg.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/mercurial/hg.py	Wed Mar 15 07:10:04 2006 +0100
@@ -8,7 +8,7 @@
 from node import *
 from repo import *
 from demandload import *
-demandload(globals(), "localrepo httprepo sshrepo statichttprepo")
+demandload(globals(), "localrepo bundlerepo httprepo sshrepo statichttprepo")
 
 def repository(ui, path=None, create=0):
     if path:
@@ -24,5 +24,13 @@
                 ui, path.replace("old-http://", "http://"))
         if path.startswith("ssh://"):
             return sshrepo.sshrepository(ui, path)
+        if path.startswith("bundle://"):
+            path = path[9:]
+            s = path.split("+", 1)
+            if  len(s) == 1:
+                repopath, bundlename = "", s[0]
+            else:
+                repopath, bundlename = s
+            return bundlerepo.bundlerepository(ui, repopath, bundlename)
 
     return localrepo.localrepository(ui, path, create)
--- a/mercurial/localrepo.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/mercurial/localrepo.py	Wed Mar 15 07:10:04 2006 +0100
@@ -166,7 +166,7 @@
         if self.encodepats == None:
             l = []
             for pat, cmd in self.ui.configitems("encode"):
-                mf = util.matcher("", "/", [pat], [], [])[1]
+                mf = util.matcher(self.root, "", [pat], [], [])[1]
                 l.append((mf, cmd))
             self.encodepats = l
 
@@ -184,7 +184,7 @@
         if self.decodepats == None:
             l = []
             for pat, cmd in self.ui.configitems("decode"):
-                mf = util.matcher("", "/", [pat], [], [])[1]
+                mf = util.matcher(self.root, "", [pat], [], [])[1]
                 l.append((mf, cmd))
             self.decodepats = l
 
@@ -1634,6 +1634,7 @@
                     self.dirstate.update([f], 'n')
 
         # merge the tricky bits
+        failedmerge = []
         files = merge.keys()
         files.sort()
         xp1 = hex(p1)
@@ -1644,6 +1645,7 @@
             ret = self.merge3(f, my, other, xp1, xp2)
             if ret:
                 err = True
+                failedmerge.append(f)
             util.set_exec(self.wjoin(f), flag)
             if moddirstate:
                 if branch_merge:
@@ -1677,6 +1679,16 @@
 
         if moddirstate:
             self.dirstate.setparents(p1, p2)
+
+        stat = ((len(get), _("updated")),
+                (len(merge) - len(failedmerge), _("merged")),
+                (len(remove), _("removed")),
+                (len(failedmerge), _("unresolved")))
+        note = ", ".join([_("%d files %s") % s for s in stat])
+        self.ui.note("%s\n" % note)
+        if moddirstate and branch_merge:
+            self.ui.note(_("(branch merge, don't forget to commit)\n"))
+
         return err
 
     def merge3(self, fn, my, other, p1, p2):
--- a/mercurial/revlog.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/mercurial/revlog.py	Wed Mar 15 07:10:04 2006 +0100
@@ -254,10 +254,14 @@
         if node == nullid: return (nullid, nullid)
         return self.index[self.rev(node)][4:6]
 
-    def start(self, rev): return self.index[rev][0]
-    def length(self, rev): return self.index[rev][1]
+    def start(self, rev): return (rev < 0) and -1 or self.index[rev][0]
+    def length(self, rev):
+        if rev < 0:
+            return 0
+        else:
+            return self.index[rev][1]
     def end(self, rev): return self.start(rev) + self.length(rev)
-    def base(self, rev): return self.index[rev][2]
+    def base(self, rev): return (rev < 0) and rev or self.index[rev][2]
 
     def reachable(self, rev, stop=None):
         reachable = {}
@@ -528,12 +532,17 @@
     def delta(self, node):
         """return or calculate a delta between a node and its predecessor"""
         r = self.rev(node)
-        b = self.base(r)
-        if r == b:
-            return self.diff(self.revision(self.node(r - 1)),
-                             self.revision(node))
+        return self.revdiff(r - 1, r)
+
+    def revdiff(self, rev1, rev2):
+        """return or calculate a delta between two revisions"""
+        b1 = self.base(rev1)
+        b2 = self.base(rev2)
+        if b1 == b2 and rev1 + 1 == rev2:
+            return self.chunk(rev2)
         else:
-            return self.chunk(r)
+            return self.diff(self.revision(self.node(rev1)),
+                             self.revision(self.node(rev2)))
 
     def revision(self, node):
         """return an uncompressed revision of a given"""
@@ -556,7 +565,7 @@
         for r in xrange(base + 1, rev + 1):
             bins.append(self.chunk(r))
 
-        text = mdiff.patches(text, bins)
+        text = self.patches(text, bins)
 
         p1, p2 = self.parents(node)
         if node != hash(text, p1, p2):
@@ -709,20 +718,12 @@
         # build deltas
         for d in xrange(0, len(revs) - 1):
             a, b = revs[d], revs[d + 1]
-            na = self.node(a)
             nb = self.node(b)
 
             if infocollect is not None:
                 infocollect(nb)
 
-            # do we need to construct a new delta?
-            if a + 1 != b or self.base(b) == b:
-                ta = self.revision(na)
-                tb = self.revision(nb)
-                d = self.diff(ta, tb)
-            else:
-                d = self.chunk(b)
-
+            d = self.revdiff(a, b)
             p = self.parents(nb)
             meta = nb + p[0] + p[1] + lookup(nb)
             l = struct.pack(">l", len(meta) + len(d) + 4)
--- a/mercurial/ui.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/mercurial/ui.py	Wed Mar 15 07:10:04 2006 +0100
@@ -18,7 +18,7 @@
             # this is the parent of all ui children
             self.parentui = None
             self.cdata = ConfigParser.SafeConfigParser()
-            self.readconfig(util.rcpath)
+            self.readconfig(util.rcpath())
 
             self.quiet = self.configbool("ui", "quiet")
             self.verbose = self.configbool("ui", "verbose")
@@ -60,7 +60,7 @@
         if root is None:
             root = os.path.expanduser('~')
         for name, path in self.configitems("paths"):
-            if path.find("://") == -1 and not os.path.isabs(path):
+            if path and path.find("://") == -1 and not os.path.isabs(path):
                 self.cdata.set("paths", name, os.path.join(root, path))
 
     def setconfig(self, section, name, val):
--- a/mercurial/util.py	Wed Mar 15 06:39:04 2006 +0100
+++ b/mercurial/util.py	Wed Mar 15 07:10:04 2006 +0100
@@ -506,17 +506,18 @@
 
     sys.stdout = winstdout(sys.stdout)
 
-    try:
-        import win32api, win32process
-        filename = win32process.GetModuleFileNameEx(win32api.GetCurrentProcess(), 0)
-        systemrc = os.path.join(os.path.dirname(filename), 'mercurial.ini')
+    def os_rcpath():
+        '''return default os-specific hgrc search path'''
+        try:
+            import win32api, win32process
+            proc = win32api.GetCurrentProcess()
+            filename = win32process.GetModuleFileNameEx(proc, 0)
+            systemrc = os.path.join(os.path.dirname(filename), 'mercurial.ini')
+        except ImportError:
+            systemrc = r'c:\mercurial\mercurial.ini'
 
-    except ImportError:
-        systemrc = r'c:\mercurial\mercurial.ini'
-        pass
-
-    rcpath = (systemrc,
-              os.path.join(os.path.expanduser('~'), 'mercurial.ini'))
+        return [systemrc,
+                os.path.join(os.path.expanduser('~'), 'mercurial.ini')]
 
     def parse_patch_output(output_line):
         """parses the output produced by patch and returns the file name"""
@@ -591,12 +592,17 @@
                         if f.endswith(".rc")])
         except OSError, inst: pass
         return rcs
-    rcpath = []
-    if len(sys.argv) > 0:
-        rcpath.extend(rcfiles(os.path.dirname(sys.argv[0]) + '/../etc/mercurial'))
-    rcpath.extend(rcfiles('/etc/mercurial'))
-    rcpath.append(os.path.expanduser('~/.hgrc'))
-    rcpath = [os.path.normpath(f) for f in rcpath]
+
+    def os_rcpath():
+        '''return default os-specific hgrc search path'''
+        path = []
+        if len(sys.argv) > 0:
+            path.extend(rcfiles(os.path.dirname(sys.argv[0]) +
+                                  '/../etc/mercurial'))
+        path.extend(rcfiles('/etc/mercurial'))
+        path.append(os.path.expanduser('~/.hgrc'))
+        path = [os.path.normpath(f) for f in path]
+        return path
 
     def parse_patch_output(output_line):
         """parses the output produced by patch and returns the file name"""
@@ -768,3 +774,27 @@
                 yield root
                 dirs[:] = []
                 break
+
+_rcpath = None
+
+def rcpath():
+    '''return hgrc search path. if env var HGRCPATH is set, use it.
+    for each item in path, if directory, use files ending in .rc,
+    else use item.
+    make HGRCPATH empty to only look in .hg/hgrc of current repo.
+    if no HGRCPATH, use default os-specific path.'''
+    global _rcpath
+    if _rcpath is None:
+        if 'HGRCPATH' in os.environ:
+            _rcpath = []
+            for p in os.environ['HGRCPATH'].split(os.pathsep):
+                if not p: continue
+                if os.path.isdir(p):
+                    for f in os.listdir(p):
+                        if f.endswith('.rc'):
+                            _rcpath.append(os.path.join(p, f))
+                else:
+                    _rcpath.append(p)
+        else:
+            _rcpath = os_rcpath()
+    return _rcpath
--- a/tests/README	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/README	Wed Mar 15 07:10:04 2006 +0100
@@ -24,7 +24,7 @@
 - changeset hashes will change based on user and date which make
   things like hg history output change
 
-  use commit -m "test" -u test -d "0 0"
+  use commit -m "test" -u test -d "1000000 0"
 
 - diff will show the current time
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/md5sum.py	Wed Mar 15 07:10:04 2006 +0100
@@ -0,0 +1,32 @@
+#! /usr/bin/env python
+#
+# Based on python's Tools/scripts/md5sum.py
+#
+# This software may be used and distributed according to the terms
+# of the PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2, which is
+# GPL-compatible.
+
+import sys
+import os
+import md5
+
+for filename in sys.argv[1:]:
+    try:
+        fp = open(filename, 'rb')
+    except IOError, msg:
+        sys.stderr.write('%s: Can\'t open: %s\n' % (filename, msg))
+        sys.exit(1)
+    
+    m = md5.new()
+    try:
+        while 1:
+            data = fp.read(8192)
+            if not data:
+                break
+            m.update(data)
+    except IOError, msg:
+        sys.stderr.write('%s: I/O error: %s\n' % (filename, msg))
+        sys.exit(1)
+    sys.stdout.write('%s  %s\n' % (m.hexdigest(), filename))
+
+sys.exit(0)
--- a/tests/run-tests	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/run-tests	Wed Mar 15 07:10:04 2006 +0100
@@ -18,6 +18,16 @@
 HGEDITOR=true; export HGEDITOR
 HGMERGE=true; export HGMERGE
 HGUSER="test"; export HGUSER
+HGRCPATH=""; export HGRCPATH
+
+if [ `echo -n HG` == "-n HG" ]
+then
+    ECHO_N=echo
+    NNL="\c"
+else
+    ECHO_N="echo -n"
+    NNL=
+fi
 
 umask 022
 
@@ -40,6 +50,7 @@
 }
 
 TESTDIR="$PWD"
+export TESTDIR
 INST="$HGTMP/install"
 PYTHONDIR="$INST/lib/python"
 cd ..
@@ -109,7 +120,7 @@
 
 # list of prerequisite programs
 # stuff from coreutils (cat, rm, etc) are not tested
-prereqs="python merge diff grep unzip md5sum gunzip sed"
+prereqs="python merge diff grep unzip gunzip bunzip2 sed"
 missing=''
 for pre in $prereqs ; do
     if type $pre > /dev/null 2>&1 ; then
@@ -134,7 +145,7 @@
 fi
 
 for f in $TESTS ; do
-    echo -n "."
+    $ECHO_N ".${NNL}"
     run_one $f || failed=`expr $failed + 1`
     tests=`expr $tests + 1`
 done
--- a/tests/test-addremove	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-addremove	Wed Mar 15 07:10:04 2006 +0100
@@ -5,8 +5,8 @@
 mkdir dir
 touch foo dir/bar
 hg -v addremove
-hg -v commit -m "add 1" -d "0 0"
+hg -v commit -m "add 1" -d "1000000 0"
 cd dir/
 touch ../foo_2 bar_2
 hg -v addremove
-hg -v commit -m "add 2" -d "0 0"
+hg -v commit -m "add 2" -d "1000000 0"
--- a/tests/test-archive	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-archive	Wed Mar 15 07:10:04 2006 +0100
@@ -29,9 +29,10 @@
                     % (node, archive))
 sys.stdout.write(f.read())
 EOF
-http_proxy= python getarchive.py "$TIP" gz | tar tzf - | sed "s/$QTIP/TIP/"
-http_proxy= python getarchive.py "$TIP" bz2 | tar tjf - | sed "s/$QTIP/TIP/"
+http_proxy= python getarchive.py "$TIP" gz | gunzip -dc - | tar tf - | sed "s/$QTIP/TIP/"
+http_proxy= python getarchive.py "$TIP" bz2 | bunzip2 -dc - | tar tf - | sed "s/$QTIP/TIP/"
 http_proxy= python getarchive.py "$TIP" zip > archive.zip
 unzip -t archive.zip | sed "s/$QTIP/TIP/"
 
 kill `cat hg.pid`
+sleep 1 # wait for server to scream and die
--- a/tests/test-backwards-remove	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-backwards-remove	Wed Mar 15 07:10:04 2006 +0100
@@ -2,11 +2,11 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 ls
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 hg co 0
 # B should disappear
 ls
--- a/tests/test-bad-pull	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-bad-pull	Wed Mar 15 07:10:04 2006 +0100
@@ -19,7 +19,7 @@
 
 python dumb.py 2>/dev/null &
 
-hg clone http://localhost:20059/foo copy2
+http_proxy= hg clone http://localhost:20059/foo copy2
 echo $?
 
 kill $!
--- a/tests/test-basic	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-basic	Wed Mar 15 07:10:04 2006 +0100
@@ -5,7 +5,7 @@
 hg init
 echo a > a
 hg add a
-hg commit -m test -d "0 0"
+hg commit -m test -d "1000000 0"
 hg history
 hg manifest
 hg cat a
--- a/tests/test-basic.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-basic.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,7 +1,7 @@
-changeset:   0:acb14030fe0a
+changeset:   0:0acdaf898367
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a
--- a/tests/test-cat	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-cat	Wed Mar 15 07:10:04 2006 +0100
@@ -5,12 +5,12 @@
 hg init
 echo 0 > a
 echo 0 > b
-hg ci -A -m m -d "0 0"
+hg ci -A -m m -d "1000000 0"
 hg rm a
 hg cat a
 sleep 1 # make sure mtime is changed
 echo 1 > b
-hg ci -m m -d "0 0"
+hg ci -m m -d "1000000 0"
 echo 2 > b
 hg cat -r 0 a
 hg cat -r 0 b
--- a/tests/test-cat.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-cat.out	Wed Mar 15 07:10:04 2006 +0100
@@ -3,5 +3,5 @@
 0
 0
 0
-a: No such file in rev 7040230c159c
+a: No such file in rev 03f6b0774996
 1
--- a/tests/test-clone	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-clone	Wed Mar 15 07:10:04 2006 +0100
@@ -16,7 +16,7 @@
 # No update
 hg clone -U . ../c
 cd ../c
-cat a
+cat a 2>/dev/null || echo "a not present"
 hg verify
 
 # Default destination
--- a/tests/test-clone.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-clone.out	Wed Mar 15 07:10:04 2006 +0100
@@ -4,7 +4,7 @@
 crosschecking files in changesets and manifests
 checking files
 1 files, 1 changesets, 1 total revisions
-cat: a: No such file or directory
+a not present
 checking changesets
 checking manifests
 crosschecking files in changesets and manifests
--- a/tests/test-command-template	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-command-template	Wed Mar 15 07:10:04 2006 +0100
@@ -6,17 +6,17 @@
 hg add a
 echo line 1 > b
 echo line 2 >> b
-hg commit -l b -d '1111111111 0' -u 'User Name <user@hostname>'
+hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
 hg add b
 echo other 1 > c
 echo other 2 >> c
 echo >> c
 echo other 3 >> c
-hg commit -l c -d '1123456789 0' -u 'A. N. Other <other@place>'
+hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
 hg add c
-hg commit -m 'no person' -d '1134567890 0' -u 'other@place'
+hg commit -m 'no person' -d '1200000 0' -u 'other@place'
 echo c >> c
-hg commit -m 'no user, no domain' -d '1144567890 0' -u 'person'
+hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
 
 # make sure user/global hgrc does not affect tests
 echo '[ui]' > .hg/hgrc
--- a/tests/test-command-template.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-command-template.out	Wed Mar 15 07:10:04 2006 +0100
@@ -6,40 +6,40 @@
 43a46
 > files:       
 # compact style works
-3[tip]   2bacb094274c   2006-04-09 07:31 +0000   person
+3[tip]   8c7f028fbabf   1970-01-16 01:06 +0000   person
   no user, no domain
 
-2   cdc488b3baa4   2005-12-14 13:44 +0000   other
+2   259081bc29d1   1970-01-14 21:20 +0000   other
   no person
 
-1   55b647117689   2005-08-07 23:19 +0000   other
+1   1c37ba774509   1970-01-13 17:33 +0000   other
   other 1
 
-0   debcd367d974   2005-03-18 01:58 +0000   user
+0   6eb5362d59ec   1970-01-12 13:46 +0000   user
   line 1
 
-3[tip]   2bacb094274c   2006-04-09 07:31 +0000   person
+3[tip]   8c7f028fbabf   1970-01-16 01:06 +0000   person
   no user, no domain
 
-2   cdc488b3baa4   2005-12-14 13:44 +0000   other
+2   259081bc29d1   1970-01-14 21:20 +0000   other
   no person
 
-1   55b647117689   2005-08-07 23:19 +0000   other
+1   1c37ba774509   1970-01-13 17:33 +0000   other
   other 1
 
-0   debcd367d974   2005-03-18 01:58 +0000   user
+0   6eb5362d59ec   1970-01-12 13:46 +0000   user
   line 1
 
-3[tip]:2,-1   2bacb094274c   2006-04-09 07:31 +0000   person
+3[tip]:2,-1   8c7f028fbabf   1970-01-16 01:06 +0000   person
   no user, no domain
 
-2:1,-1   cdc488b3baa4   2005-12-14 13:44 +0000   other
+2:1,-1   259081bc29d1   1970-01-14 21:20 +0000   other
   no person
 
-1:0,-1   55b647117689   2005-08-07 23:19 +0000   other
+1:0,-1   1c37ba774509   1970-01-13 17:33 +0000   other
   other 1
 
-0:-1,-1   debcd367d974   2005-03-18 01:58 +0000   user
+0:-1,-1   6eb5362d59ec   1970-01-12 13:46 +0000   user
   line 1
 
 # error if style not readable
@@ -85,18 +85,18 @@
 branches--debug: 
 branches--debug: 
 branches--debug: 
-date: 1144567890.00
-date: 1134567890.00
-date: 1123456789.00
-date: 1111111111.00
-date--verbose: 1144567890.00
-date--verbose: 1134567890.00
-date--verbose: 1123456789.00
-date--verbose: 1111111111.00
-date--debug: 1144567890.00
-date--debug: 1134567890.00
-date--debug: 1123456789.00
-date--debug: 1111111111.00
+date: 1300000.00
+date: 1200000.00
+date: 1100000.00
+date: 1000000.00
+date--verbose: 1300000.00
+date--verbose: 1200000.00
+date--verbose: 1100000.00
+date--verbose: 1000000.00
+date--debug: 1300000.00
+date--debug: 1200000.00
+date--debug: 1100000.00
+date--debug: 1000000.00
 desc: no user, no domain
 desc: no person
 desc: other 1
@@ -175,18 +175,18 @@
 manifest--debug: 2:6e0e82995c35
 manifest--debug: 1:4e8d705b1e53
 manifest--debug: 0:a0c8bcbbb45c
-node: 2bacb094274c6ad120b419cab77a39e51b69cbaa
-node: cdc488b3baa4a2cf316d4d85a3a1f17c5e1695d8
-node: 55b64711768911f37c6d244b12785623aa64e7c3
-node: debcd367d97455db85bba7b583b14b166172de25
-node--verbose: 2bacb094274c6ad120b419cab77a39e51b69cbaa
-node--verbose: cdc488b3baa4a2cf316d4d85a3a1f17c5e1695d8
-node--verbose: 55b64711768911f37c6d244b12785623aa64e7c3
-node--verbose: debcd367d97455db85bba7b583b14b166172de25
-node--debug: 2bacb094274c6ad120b419cab77a39e51b69cbaa
-node--debug: cdc488b3baa4a2cf316d4d85a3a1f17c5e1695d8
-node--debug: 55b64711768911f37c6d244b12785623aa64e7c3
-node--debug: debcd367d97455db85bba7b583b14b166172de25
+node: 8c7f028fbabf93fde80ef788885370b36abeff33
+node: 259081bc29d176c6ae17af5dd01a3440b3288c97
+node: 1c37ba7745099d0f206b3a663abcfe127b037433
+node: 6eb5362d59ec784e4431d3e140c8cc6e1b77ce82
+node--verbose: 8c7f028fbabf93fde80ef788885370b36abeff33
+node--verbose: 259081bc29d176c6ae17af5dd01a3440b3288c97
+node--verbose: 1c37ba7745099d0f206b3a663abcfe127b037433
+node--verbose: 6eb5362d59ec784e4431d3e140c8cc6e1b77ce82
+node--debug: 8c7f028fbabf93fde80ef788885370b36abeff33
+node--debug: 259081bc29d176c6ae17af5dd01a3440b3288c97
+node--debug: 1c37ba7745099d0f206b3a663abcfe127b037433
+node--debug: 6eb5362d59ec784e4431d3e140c8cc6e1b77ce82
 parents: 
 parents: 
 parents: 
@@ -195,9 +195,9 @@
 parents--verbose: 
 parents--verbose: 
 parents--verbose: 
-parents--debug: 2:cdc488b3baa4 -1:000000000000 
-parents--debug: 1:55b647117689 -1:000000000000 
-parents--debug: 0:debcd367d974 -1:000000000000 
+parents--debug: 2:259081bc29d1 -1:000000000000 
+parents--debug: 1:1c37ba774509 -1:000000000000 
+parents--debug: 0:6eb5362d59ec -1:000000000000 
 parents--debug: -1:000000000000 -1:000000000000 
 rev: 3
 rev: 2
@@ -236,26 +236,26 @@
 other
 other
 user
-Sun Apr  9 07:31:30 2006 +0000
-Wed Dec 14 13:44:50 2005 +0000
-Sun Aug  7 23:19:49 2005 +0000
-Fri Mar 18 01:58:31 2005 +0000
-2006-04-09 07:31 +0000
-2005-12-14 13:44 +0000
-2005-08-07 23:19 +0000
-2005-03-18 01:58 +0000
-Sun, 09 Apr 2006 07:31:30 +0000
-Wed, 14 Dec 2005 13:44:50 +0000
-Sun, 07 Aug 2005 23:19:49 +0000
-Fri, 18 Mar 2005 01:58:31 +0000
+Fri Jan 16 01:06:40 1970 +0000
+Wed Jan 14 21:20:00 1970 +0000
+Tue Jan 13 17:33:20 1970 +0000
+Mon Jan 12 13:46:40 1970 +0000
+1970-01-16 01:06 +0000
+1970-01-14 21:20 +0000
+1970-01-13 17:33 +0000
+1970-01-12 13:46 +0000
+Fri, 16 Jan 1970 01:06:40 +0000
+Wed, 14 Jan 1970 21:20:00 +0000
+Tue, 13 Jan 1970 17:33:20 +0000
+Mon, 12 Jan 1970 13:46:40 +0000
 no user, no domain
 no person
 other 1
 line 1
-2bacb094274c
-cdc488b3baa4
-55b647117689
-debcd367d974
+8c7f028fbabf
+259081bc29d1
+1c37ba774509
+6eb5362d59ec
 # error on syntax
 abort: t:3: unmatched quotes
 # done
--- a/tests/test-commit	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-commit	Wed Mar 15 07:10:04 2006 +0100
@@ -15,5 +15,5 @@
 echo bar > bar
 hg add bar
 rm bar
-hg commit -d "0 0" -m commit-8 2>&1 | sed -e "s:/.*\(/test/.*\):...\1:"
+hg commit -d "1000000 0" -m commit-8 2>&1 | sed -e "s:/.*\(/test/.*\):...\1:"
 exit 0
--- a/tests/test-conflict	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-conflict	Wed Mar 15 07:10:04 2006 +0100
@@ -3,14 +3,14 @@
 hg init
 echo "nothing" > a
 hg add a
-hg commit -m ancestor -d "0 0"
+hg commit -m ancestor -d "1000000 0"
 echo "something" > a
-hg commit -m branch1 -d "0 0"
+hg commit -m branch1 -d "1000000 0"
 hg co 0
 echo "something else" > a
-hg commit -m branch2 -d "0 0"
+hg commit -m branch2 -d "1000000 0"
 HGMERGE=merge; export HGMERGE
 hg up -m 1
 hg id
-grep -Ev ">>>|<<<" a
+egrep -v ">>>|<<<" a
 hg status
--- a/tests/test-conflict.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-conflict.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,7 +1,7 @@
 merge: warning: conflicts during merge
 merging a
 merging a failed!
-32e80765d7fe+75234512624c+ tip
+e7fe8eb3e180+0d24b7662d3e+ tip
 something else
 =======
 something
--- a/tests/test-confused-revert	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-confused-revert	Wed Mar 15 07:10:04 2006 +0100
@@ -3,7 +3,7 @@
 hg init
 echo foo > a
 hg add a
-hg commit -m "1" -d "0 0"
+hg commit -m "1" -d "1000000 0"
 
 echo bar > b
 hg add b
@@ -22,11 +22,11 @@
 
 hg co -C 0
 echo foo-a > a
-hg commit -m "2a" -d "0 0"
+hg commit -m "2a" -d "1000000 0"
 
 hg co -C 0
 echo foo-b > a
-hg commit -m "2b" -d "0 0"
+hg commit -m "2b" -d "1000000 0"
 
 HGMERGE=true hg update -m 1
 
--- a/tests/test-copy	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-copy	Wed Mar 15 07:10:04 2006 +0100
@@ -3,11 +3,11 @@
 hg init
 echo a > a
 hg add a
-hg commit -m "1" -d "0 0"
+hg commit -m "1" -d "1000000 0"
 hg status
 hg copy a b
 hg status
-hg --debug commit -m "2" -d "0 0"
+hg --debug commit -m "2" -d "1000000 0"
 echo "we should see two history entries"
 hg history -v
 echo "we should see one log entry for a"
@@ -20,11 +20,11 @@
 hg debugindex .hg/data/b.i
 
 echo "this should show the rename information in the metadata"
-hg debugdata .hg/data/b.d 0 | head -n 3 | tail -n 2
+hg debugdata .hg/data/b.d 0 | head -3 | tail -2
 
-md5sum .hg/data/b.d
+$TESTDIR/md5sum.py .hg/data/b.d
 hg cat b > bsum
-md5sum bsum
+$TESTDIR/md5sum.py bsum
 hg cat a > asum
-md5sum asum
+$TESTDIR/md5sum.py asum
 hg verify
--- a/tests/test-copy.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-copy.out	Wed Mar 15 07:10:04 2006 +0100
@@ -2,37 +2,37 @@
 b
  b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
 we should see two history entries
-changeset:   1:3b5b84850bbed12e8ff8c1b87b32dc93c59ae6d8
+changeset:   1:386a3cc01532710ca78aed9a54fa2f459c04f29c
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 files:       b
 description:
 2
 
 
-changeset:   0:c19d34741b0a4ced8e4ba74bb834597d5193851e
+changeset:   0:33aaa84a386bd609094aeb21a97c09436c482ef1
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 files:       a
 description:
 1
 
 
 we should see one log entry for a
-changeset:   0:c19d34741b0a
+changeset:   0:33aaa84a386b
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
 this should show a revision linked to changeset 0
    rev    offset  length   base linkrev nodeid       p1           p2
      0         0       3      0       0 b789fdd96dc2 000000000000 000000000000
 we should see one log entry for b
-changeset:   1:3b5b84850bbe
+changeset:   1:386a3cc01532
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
 this should show a revision linked to changeset 1
--- a/tests/test-diffdir	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-diffdir	Wed Mar 15 07:10:04 2006 +0100
@@ -3,7 +3,7 @@
 hg init
 touch a
 hg add a
-hg ci -m "a" -d "0 0"
+hg ci -m "a" -d "1000000 0"
 
 echo 123 > b
 hg add b
--- a/tests/test-diffdir.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-diffdir.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,19 +1,19 @@
-diff -r 3903775176ed b
+diff -r acd8075edac9 b
 --- /dev/null
 +++ b/b
 @@ -0,0 +1,1 @@
 +123
-diff -r 3903775176ed b
+diff -r acd8075edac9 b
 --- /dev/null
 +++ b/b
 @@ -0,0 +1,1 @@
 +123
-diff -r 3903775176ed a
+diff -r acd8075edac9 a
 --- a/a
 +++ b/a
 @@ -0,0 +1,1 @@
 +foo
-diff -r 3903775176ed b
+diff -r acd8075edac9 b
 --- /dev/null
 +++ b/b
 @@ -0,0 +1,1 @@
--- a/tests/test-empty-dir	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-empty-dir	Wed Mar 15 07:10:04 2006 +0100
@@ -3,14 +3,14 @@
 hg init
 echo 123 > a
 hg add a
-hg commit -m "first" -d "0 0" a
+hg commit -m "first" -d "1000000 0" a
 mkdir sub
 echo 321 > sub/b
 hg add sub/b
-hg commit -m "second" -d "0 0" sub/b
+hg commit -m "second" -d "1000000 0" sub/b
 cat sub/b
 hg co 0
-cat sub/b
-ls sub
+cat sub/b 2>/dev/null || echo "sub/b not present"
+ls sub 2>/dev/null || echo "sub not present"
 
 true
--- a/tests/test-empty-dir.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-empty-dir.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,3 +1,3 @@
 321
-cat: sub/b: No such file or directory
-ls: sub: No such file or directory
+sub/b not present
+sub not present
--- a/tests/test-encode	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-encode	Wed Mar 15 07:10:04 2006 +0100
@@ -13,7 +13,7 @@
 
 echo "this is a test" | gzip > a.gz
 hg add a.gz
-hg ci -m "test" -d "0 0"
+hg ci -m "test" -d "1000000 0"
 echo %% no changes
 hg status
 touch a.gz
--- a/tests/test-excessive-merge	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-excessive-merge	Wed Mar 15 07:10:04 2006 +0100
@@ -6,24 +6,24 @@
 echo foo > b
 hg add a b
 
-hg ci -m "test" -d "0 0"
+hg ci -m "test" -d "1000000 0"
 
 echo blah > a
 
-hg ci -m "branch a" -d "0 0"
+hg ci -m "branch a" -d "1000000 0"
 
 hg co 0
 
 echo blah > b
 
-hg ci -m "branch b" -d "0 0"
+hg ci -m "branch b" -d "1000000 0"
 HGMERGE=true hg up -m 1
 
-hg ci -m "merge b/a -> blah" -d "0 0"
+hg ci -m "merge b/a -> blah" -d "1000000 0"
 
 hg co 1
 HGMERGE=true hg up -m 2
-hg ci -m "merge a/b -> blah" -d "0 0"
+hg ci -m "merge a/b -> blah" -d "1000000 0"
 
 hg log
 hg debugindex .hg/00changelog.i
--- a/tests/test-excessive-merge.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-excessive-merge.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,40 +1,40 @@
-changeset:   4:2ee31f665a86
+changeset:   4:f6c172c6198c
 tag:         tip
-parent:      1:96155394af80
-parent:      2:92cc4c306b19
+parent:      1:448a8c5e42f1
+parent:      2:7c5dc2e857f2
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     merge a/b -> blah
 
-changeset:   3:e16a66a37edd
-parent:      2:92cc4c306b19
-parent:      1:96155394af80
+changeset:   3:13d875a22764
+parent:      2:7c5dc2e857f2
+parent:      1:448a8c5e42f1
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     merge b/a -> blah
 
-changeset:   2:92cc4c306b19
-parent:      0:5e0375449e74
+changeset:   2:7c5dc2e857f2
+parent:      0:dc1751ec2e9d
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     branch b
 
-changeset:   1:96155394af80
+changeset:   1:448a8c5e42f1
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     branch a
 
-changeset:   0:5e0375449e74
+changeset:   0:dc1751ec2e9d
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
    rev    offset  length   base linkrev nodeid       p1           p2
-     0         0      60      0       0 5e0375449e74 000000000000 000000000000
-     1        60      62      1       1 96155394af80 5e0375449e74 000000000000
-     2       122      62      2       2 92cc4c306b19 5e0375449e74 000000000000
-     3       184      69      3       3 e16a66a37edd 92cc4c306b19 96155394af80
-     4       253      29      3       4 2ee31f665a86 96155394af80 92cc4c306b19
+     0         0      64      0       0 dc1751ec2e9d 000000000000 000000000000
+     1        64      68      1       1 448a8c5e42f1 dc1751ec2e9d 000000000000
+     2       132      68      2       2 7c5dc2e857f2 dc1751ec2e9d 000000000000
+     3       200      75      3       3 13d875a22764 7c5dc2e857f2 448a8c5e42f1
+     4       275      29      3       4 f6c172c6198c 448a8c5e42f1 7c5dc2e857f2
 
 1
 79d7492df40aa0fa093ec4209be78043c181f094 644 a
--- a/tests/test-filebranch	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-filebranch	Wed Mar 15 07:10:04 2006 +0100
@@ -17,7 +17,7 @@
 echo 1 > baz
 echo 1 > quux
 hg add foo bar baz quux
-hg commit -m "base" -d "0 0"
+hg commit -m "base" -d "1000000 0"
 
 cd ..
 hg clone a b
@@ -26,7 +26,7 @@
 cd a
 echo 2a > foo
 echo 2a > bar
-hg commit -m "branch a" -d "0 0"
+hg commit -m "branch a" -d "1000000 0"
 
 echo creating branch b
 
@@ -34,7 +34,7 @@
 cd b
 echo 2b > foo
 echo 2b > baz
-hg commit -m "branch b" -d "0 0"
+hg commit -m "branch b" -d "1000000 0"
 
 echo "we shouldn't have anything but n state here"
 hg debugstate | cut -b 1-16,35-
@@ -50,7 +50,7 @@
 echo "we shouldn't have anything but foo in merge state here"
 hg debugstate | cut -b 1-16,35- | grep "^m"
 
-hg ci -m "merge" -d "0 0"
+hg ci -m "merge" -d "1000000 0"
 
 echo "main: we should have a merge here"
 hg debugindex .hg/00changelog.i
--- a/tests/test-filebranch.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-filebranch.out	Wed Mar 15 07:10:04 2006 +0100
@@ -19,21 +19,23 @@
 getting bar
 merging foo
 resolving foo
+1 files updated, 1 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
 we shouldn't have anything but foo in merge state here
 m 644          3 foo
 main: we should have a merge here
    rev    offset  length   base linkrev nodeid       p1           p2
-     0         0      73      0       0 cdca01651b96 000000000000 000000000000
-     1        73      68      1       1 f6718a9cb7f3 cdca01651b96 000000000000
-     2       141      68      2       2 bdd988058d16 cdca01651b96 000000000000
-     3       209      66      3       3 d8a521142a3c f6718a9cb7f3 bdd988058d16
+     0         0      77      0       0 c36078bec30d 000000000000 000000000000
+     1        77      73      1       1 182b283965f1 c36078bec30d 000000000000
+     2       150      71      2       2 a6aef98656b7 c36078bec30d 000000000000
+     3       221      72      3       3 0c2cc6fc80e2 182b283965f1 a6aef98656b7
 log should show foo and quux changed
-changeset:   3:d8a521142a3c02186ee6c7254738a7e6427ed4c8
+changeset:   3:0c2cc6fc80e2d4ee289bb658dbbe9ad932380fe9
 tag:         tip
-parent:      1:f6718a9cb7f31f1a92d27bd6544c71617d6d4e4f
-parent:      2:bdd988058d16e2d7392958eace7b64817e44a54e
+parent:      1:182b283965f1069c0112784e30e7755ad1c0dd52
+parent:      2:a6aef98656b71154cae9d87408abe6d0218c8045
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 files:       foo quux
 description:
 merge
--- a/tests/test-flags	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-flags	Wed Mar 15 07:10:04 2006 +0100
@@ -7,7 +7,7 @@
 hg init
 touch a b
 hg add a b
-hg ci -m "added a b" -d "0 0"
+hg ci -m "added a b" -d "1000000 0"
 
 cd ..
 mkdir test2
@@ -17,11 +17,11 @@
 hg pull ../test1
 hg co
 chmod +x a
-hg ci -m "chmod +x a" -d "0 0"
+hg ci -m "chmod +x a" -d "1000000 0"
 
 cd ../test1
 echo 123 >>a
-hg ci -m "a updated" -d "0 0"
+hg ci -m "a updated" -d "1000000 0"
 
 hg pull ../test2
 hg heads
@@ -30,5 +30,5 @@
 hg -v co -m
 
 ls -l ../test[12]/a > foo
-cut -b 0-10 < foo
+cut -b 1-10 < foo
 
--- a/tests/test-flags.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-flags.out	Wed Mar 15 07:10:04 2006 +0100
@@ -12,37 +12,39 @@
 adding file changes
 added 1 changesets with 1 changes to 1 files (+1 heads)
 (run 'hg update' to get a working copy)
-changeset:   2:3ef543305655
+changeset:   2:b833d578451e
 tag:         tip
-parent:      0:22a449e20da5
+parent:      0:4536b1c2ca69
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     chmod +x a
 
-changeset:   1:c6ecefc45368
+changeset:   1:a187cb361a5a
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     a updated
 
-changeset:   2:3ef543305655
+changeset:   2:b833d578451e
 tag:         tip
-parent:      0:22a449e20da5
+parent:      0:4536b1c2ca69
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     chmod +x a
 
-changeset:   1:c6ecefc45368
+changeset:   1:a187cb361a5a
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     a updated
 
-changeset:   0:22a449e20da5
+changeset:   0:4536b1c2ca69
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     added a b
 
 resolving manifests
 merging a
 resolving a
+0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
 -rwxr-x---
 -rwxr-x---
--- a/tests/test-hook	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-hook	Wed Mar 15 07:10:04 2006 +0100
@@ -10,7 +10,7 @@
 echo 'pretxncommit = echo pretxncommit hook: n=$HG_NODE p1=$HG_PARENT1 p2=$HG_PARENT2; hg -q tip' >> .hg/hgrc
 echo a > a
 hg add a
-hg commit -m a -d "0 0"
+hg commit -m a -d "1000000 0"
 
 hg clone . ../b
 cd ../b
--- a/tests/test-hook.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-hook.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,28 +1,28 @@
 precommit hook: p1=0000000000000000000000000000000000000000 p2=
-pretxncommit hook: n=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p1=0000000000000000000000000000000000000000 p2=
-0:cb9a9f314b8b
-commit hook: n=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p1=0000000000000000000000000000000000000000 p2=
+pretxncommit hook: n=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p1=0000000000000000000000000000000000000000 p2=
+0:29b62aeb769f
+commit hook: n=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p1=0000000000000000000000000000000000000000 p2=
 commit hook b
-precommit hook: p1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p2=
-pretxncommit hook: n=ab228980c14deea8b9555d91c9581127383e40fd p1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p2=
-1:ab228980c14d
-commit hook: n=ab228980c14deea8b9555d91c9581127383e40fd p1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p2=
+precommit hook: p1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p2=
+pretxncommit hook: n=b702efe9688826e3a91283852b328b84dbf37bc2 p1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p2=
+1:b702efe96888
+commit hook: n=b702efe9688826e3a91283852b328b84dbf37bc2 p1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p2=
 commit hook b
-precommit hook: p1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p2=
-pretxncommit hook: n=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 p1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p2=
-2:ee9deb46ab31
-commit hook: n=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 p1=cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b p2=
+precommit hook: p1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p2=
+pretxncommit hook: n=1324a5531bac09b329c3845d35ae6a7526874edb p1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p2=
+2:1324a5531bac
+commit hook: n=1324a5531bac09b329c3845d35ae6a7526874edb p1=29b62aeb769fdf78d8d9c5f28b017f76d7ef824b p2=
 commit hook b
-precommit hook: p1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 p2=ab228980c14deea8b9555d91c9581127383e40fd
-pretxncommit hook: n=07f3376c1e655977439df2a814e3cc14b27abac2 p1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 p2=ab228980c14deea8b9555d91c9581127383e40fd
-3:07f3376c1e65
-commit hook: n=07f3376c1e655977439df2a814e3cc14b27abac2 p1=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2 p2=ab228980c14deea8b9555d91c9581127383e40fd
+precommit hook: p1=1324a5531bac09b329c3845d35ae6a7526874edb p2=b702efe9688826e3a91283852b328b84dbf37bc2
+pretxncommit hook: n=4c52fb2e402287dd5dc052090682536c8406c321 p1=1324a5531bac09b329c3845d35ae6a7526874edb p2=b702efe9688826e3a91283852b328b84dbf37bc2
+3:4c52fb2e4022
+commit hook: n=4c52fb2e402287dd5dc052090682536c8406c321 p1=1324a5531bac09b329c3845d35ae6a7526874edb p2=b702efe9688826e3a91283852b328b84dbf37bc2
 commit hook b
 prechangegroup hook
-changegroup hook: n=ab228980c14deea8b9555d91c9581127383e40fd
-incoming hook: n=ab228980c14deea8b9555d91c9581127383e40fd
-incoming hook: n=ee9deb46ab31e4cc3310f3cf0c3d668e4d8fffc2
-incoming hook: n=07f3376c1e655977439df2a814e3cc14b27abac2
+changegroup hook: n=b702efe9688826e3a91283852b328b84dbf37bc2
+incoming hook: n=b702efe9688826e3a91283852b328b84dbf37bc2
+incoming hook: n=1324a5531bac09b329c3845d35ae6a7526874edb
+incoming hook: n=4c52fb2e402287dd5dc052090682536c8406c321
 pulling from ../a
 searching for changes
 adding changesets
@@ -30,40 +30,40 @@
 adding file changes
 added 3 changesets with 2 changes to 2 files
 (run 'hg update' to get a working copy)
-pretag hook: t=a n=07f3376c1e655977439df2a814e3cc14b27abac2 l=0
-precommit hook: p1=07f3376c1e655977439df2a814e3cc14b27abac2 p2=
-pretxncommit hook: n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 p1=07f3376c1e655977439df2a814e3cc14b27abac2 p2=
-4:3cd2c6a5a36c
-commit hook: n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 p1=07f3376c1e655977439df2a814e3cc14b27abac2 p2=
+pretag hook: t=a n=4c52fb2e402287dd5dc052090682536c8406c321 l=0
+precommit hook: p1=4c52fb2e402287dd5dc052090682536c8406c321 p2=
+pretxncommit hook: n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 p1=4c52fb2e402287dd5dc052090682536c8406c321 p2=
+4:4f92e785b90a
+commit hook: n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 p1=4c52fb2e402287dd5dc052090682536c8406c321 p2=
 commit hook b
-tag hook: t=a n=07f3376c1e655977439df2a814e3cc14b27abac2 l=0
-pretag hook: t=la n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 l=1
-tag hook: t=la n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 l=1
-pretag hook: t=fa n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 l=0
+tag hook: t=a n=4c52fb2e402287dd5dc052090682536c8406c321 l=0
+pretag hook: t=la n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 l=1
+tag hook: t=la n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 l=1
+pretag hook: t=fa n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 l=0
 pretag.forbid hook
 abort: pretag.forbid hook exited with status 1
-pretag hook: t=fla n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 l=1
+pretag hook: t=fla n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 l=1
 pretag.forbid hook
 abort: pretag.forbid hook exited with status 1
-4:3cd2c6a5a36c
-precommit hook: p1=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 p2=
-pretxncommit hook: n=469a61fe67d64df9a5023e4c2b8a0b85c61e9b69 p1=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 p2=
-5:469a61fe67d6
-pretxncommit.forbid hook: tip=5:469a61fe67d6
+4:4f92e785b90a
+precommit hook: p1=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 p2=
+pretxncommit hook: n=7792358308a2026661cea44f9d47c072813004cb p1=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 p2=
+5:7792358308a2
+pretxncommit.forbid hook: tip=5:7792358308a2
 abort: pretxncommit.forbid hook exited with status 1
 transaction abort!
 rollback completed
-4:3cd2c6a5a36c
-precommit hook: p1=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 p2=
+4:4f92e785b90a
+precommit hook: p1=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 p2=
 precommit.forbid hook
 abort: precommit.forbid hook exited with status 1
-4:3cd2c6a5a36c
-3:07f3376c1e65
+4:4f92e785b90a
+3:4c52fb2e4022
 prechangegroup.forbid hook
 pulling from ../a
 searching for changes
 abort: prechangegroup.forbid hook exited with status 1
-pretxnchangegroup.forbid hook: tip=4:3cd2c6a5a36c
+pretxnchangegroup.forbid hook: tip=4:4f92e785b90a
 pulling from ../a
 searching for changes
 adding changesets
@@ -73,9 +73,9 @@
 abort: pretxnchangegroup.forbid hook exited with status 1
 transaction abort!
 rollback completed
-3:07f3376c1e65
+3:4c52fb2e4022
 preoutgoing hook: s=pull
-outgoing hook: n=3cd2c6a5a36c5908aad3bc0d717c29873a05dfc2 s=pull
+outgoing hook: n=4f92e785b90ae8995dfe156e39dd4fbc3b346a24 s=pull
 pulling from ../a
 searching for changes
 adding changesets
--- a/tests/test-locate	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-locate	Wed Mar 15 07:10:04 2006 +0100
@@ -5,13 +5,13 @@
 hg init
 echo 0 > a
 echo 0 > b
-hg ci -A -m m -d "0 0"
+hg ci -A -m m -d "1000000 0"
 touch nottracked
 hg locate a
 hg locate NONEXISTENT
 hg locate
 hg rm a
-hg ci -m m -d "0 0"
+hg ci -m m -d "1000000 0"
 hg locate a
 hg locate NONEXISTENT
 hg locate
--- a/tests/test-locate.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-locate.out	Wed Mar 15 07:10:04 2006 +0100
@@ -8,6 +8,6 @@
 NONEXISTENT: No such file or directory
 b
 a
-NONEXISTENT: No such file in rev 9e1684505872
+NONEXISTENT: No such file in rev 14467d15ef43
 a
 b
--- a/tests/test-merge-revert	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge-revert	Wed Mar 15 07:10:04 2006 +0100
@@ -6,9 +6,9 @@
 echo "added file1" > file1
 echo "added file2" > file2
 hg add file1 file2
-hg commit -m "added file1 and file2" -d "0 0" -u user
+hg commit -m "added file1 and file2" -d "1000000 0" -u user
 echo "changed file1" >> file1
-hg commit -m "changed file1" -d "0 0" -u user
+hg commit -m "changed file1" -d "1000000 0" -u user
 hg -q log
 hg id
 hg update -C 0
--- a/tests/test-merge-revert.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge-revert.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,12 +1,12 @@
-1:3aa14bbc23d9
-0:8633637036c1
-3aa14bbc23d9 tip
-8633637036c1
-8633637036c1+
-8633637036c1
-3aa14bbc23d9 tip
+1:016807e6fdaf
+0:eb43f19ff115
+016807e6fdaf tip
+eb43f19ff115
+eb43f19ff115+
+eb43f19ff115
+016807e6fdaf tip
 merging file1
-3aa14bbc23d9 tip
-3aa14bbc23d9 tip
-3aa14bbc23d9 tip
-3aa14bbc23d9 tip
+016807e6fdaf tip
+016807e6fdaf tip
+016807e6fdaf tip
+016807e6fdaf tip
--- a/tests/test-merge-revert2	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge-revert2	Wed Mar 15 07:10:04 2006 +0100
@@ -7,9 +7,9 @@
 echo "another line of text" >> file1
 echo "added file2" > file2
 hg add file1 file2
-hg commit -m "added file1 and file2" -d "0 0" -u user
+hg commit -m "added file1 and file2" -d "1000000 0" -u user
 echo "changed file1" >> file1
-hg commit -m "changed file1" -d "0 0" -u user
+hg commit -m "changed file1" -d "1000000 0" -u user
 hg -q log
 hg id
 hg update -C 0
--- a/tests/test-merge-revert2.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge-revert2.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,14 +1,14 @@
-1:f4d7a8c73d23
-0:232e179b3f29
-f4d7a8c73d23 tip
-232e179b3f29
-232e179b3f29+
-232e179b3f29
-f4d7a8c73d23 tip
+1:f248da0d4c3e
+0:9eca13a34789
+f248da0d4c3e tip
+9eca13a34789
+9eca13a34789+
+9eca13a34789
+f248da0d4c3e tip
 merge: warning: conflicts during merge
 merging file1
 merging file1 failed!
-diff -r f4d7a8c73d23 file1
+diff -r f248da0d4c3e file1
 --- a/file1
 +++ b/file1
 @@ -1,3 +1,7 @@ added file1
@@ -20,7 +20,7 @@
  changed file1
 +>>>>>>>
 M file1
-f4d7a8c73d23+ tip
-f4d7a8c73d23 tip
-f4d7a8c73d23 tip
-f4d7a8c73d23 tip
+f248da0d4c3e+ tip
+f248da0d4c3e tip
+f248da0d4c3e tip
+f248da0d4c3e tip
--- a/tests/test-merge1	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge1	Wed Mar 15 07:10:04 2006 +0100
@@ -11,15 +11,15 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 
 hg update 0
 echo This is file c1 > c
 hg add c
-hg commit -m "commit #2" -d "0 0"
+hg commit -m "commit #2" -d "1000000 0"
 echo This is file b1 > b
 echo %% no merges expected
 env HGMERGE=../merge hg update -m 1
@@ -30,15 +30,15 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 
 hg update 0
 echo This is file c1 > c
 hg add c
-hg commit -m "commit #2" -d "0 0"
+hg commit -m "commit #2" -d "1000000 0"
 echo This is file b2 > b
 echo %% merge should fail
 env HGMERGE=../merge hg update -m 1
@@ -52,16 +52,16 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 echo This is file b22 > b
-hg commit -m "commit #2" -d "0 0"
+hg commit -m "commit #2" -d "1000000 0"
 hg update 1
 echo This is file c1 > c
 hg add c
-hg commit -m "commit #3" -d "0 0"
+hg commit -m "commit #3" -d "1000000 0"
 
 echo 'Contents of b should be "this is file b1"'
 cat b
@@ -78,16 +78,16 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 echo This is file b22 > b
-hg commit -m "commit #2" -d "0 0"
+hg commit -m "commit #2" -d "1000000 0"
 hg update 1
 echo This is file c1 > c
 hg add c
-hg commit -m "commit #3" -d "0 0"
+hg commit -m "commit #3" -d "1000000 0"
 echo This is file b33 > b
 echo %% merge of b should fail
 env HGMERGE=../merge hg update -m 2
--- a/tests/test-merge2	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge2	Wed Mar 15 07:10:04 2006 +0100
@@ -5,15 +5,15 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 rm b
 hg update 0
 echo This is file b2 > b
 hg add b
-hg commit -m "commit #2" -d "0 0"
+hg commit -m "commit #2" -d "1000000 0"
 cd ..; /bin/rm -rf t
 
 mkdir t
@@ -21,14 +21,14 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 rm b
 hg update 0
 echo This is file b2 > b
-hg commit -A -m "commit #2" -d "0 0"
+hg commit -A -m "commit #2" -d "1000000 0"
 cd ..; /bin/rm -rf t
 
 mkdir t
@@ -36,13 +36,13 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 rm b
 hg remove b
 hg update 0
 echo This is file b2 > b
-hg commit -A -m "commit #2" -d "0 0"
+hg commit -A -m "commit #2" -d "1000000 0"
 cd ..; /bin/rm -rf t
--- a/tests/test-merge3	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge3	Wed Mar 15 07:10:04 2006 +0100
@@ -3,8 +3,8 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 touch b
 hg add b
 rm b
-hg commit -A -m"comment #1" -d "0 0"
+hg commit -A -m"comment #1" -d "1000000 0"
--- a/tests/test-merge4	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge4	Wed Mar 15 07:10:04 2006 +0100
@@ -3,15 +3,15 @@
 hg init
 echo This is file a1 > a
 hg add a
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b1 > b
 hg add b
-hg commit -m "commit #1" -d "0 0"
+hg commit -m "commit #1" -d "1000000 0"
 hg update 0
 echo This is file c1 > c
 hg add c
-hg commit -m "commit #2" -d "0 0"
+hg commit -m "commit #2" -d "1000000 0"
 hg update -m 1
 rm b
 echo This is file c22 > c
-hg commit -m "commit #3" -d "0 0"
+hg commit -m "commit #3" -d "1000000 0"
--- a/tests/test-merge5	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge5	Wed Mar 15 07:10:04 2006 +0100
@@ -6,12 +6,12 @@
 echo This is file a1 > a
 echo This is file b1 > b
 hg add a b
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 echo This is file b22 > b
-hg commit -m"comment #1" -d "0 0"
+hg commit -m"comment #1" -d "1000000 0"
 hg update 0
 rm b
-hg commit -A -m"comment #2" -d "0 0"
+hg commit -A -m"comment #2" -d "1000000 0"
 # in theory, we shouldn't need the "yes k" below, but it prevents
 # this test from hanging when "hg update" erroneously prompts the
 # user for "keep or delete"
--- a/tests/test-merge6	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge6	Wed Mar 15 07:10:04 2006 +0100
@@ -13,7 +13,7 @@
 echo This is file foo1 > foo
 echo This is file bar1 > bar
 hg add foo bar
-hg commit -m "commit text" -d "0 0"
+hg commit -m "commit text" -d "1000000 0"
 
 cd ..
 hg clone A1 B1
@@ -21,11 +21,11 @@
 cd A1
 rm bar
 hg remove bar
-hg commit -m "commit test" -d "0 0"
+hg commit -m "commit test" -d "1000000 0"
 
 cd ../B1
 echo This is file foo22 > foo
-hg commit -m "commit test" -d "0 0"
+hg commit -m "commit test" -d "1000000 0"
 
 cd ..
 hg clone A1 A2
@@ -34,13 +34,13 @@
 cd A1
 hg pull ../B1
 hg update -m
-hg commit -m "commit test" -d "0 0"
+hg commit -m "commit test" -d "1000000 0"
 echo bar should remain deleted.
 hg manifest
 
 cd ../B2
 hg pull ../A2
 hg update -m
-hg commit -m "commit test" -d "0 0"
+hg commit -m "commit test" -d "1000000 0"
 echo bar should remain deleted.
 hg manifest
--- a/tests/test-merge7	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge7	Wed Mar 15 07:10:04 2006 +0100
@@ -9,7 +9,7 @@
 3
 EOF
 hg add test.txt
-hg commit -m "Initial" -d "0 0"
+hg commit -m "Initial" -d "1000000 0"
 
 # clone
 cd ..
@@ -22,7 +22,7 @@
 two
 three
 EOF
-hg commit -m "Numbers as words" -d "0 0"
+hg commit -m "Numbers as words" -d "1000000 0"
 
 # change test-b
 cd ../test-b
@@ -31,7 +31,7 @@
 2.5
 3
 EOF
-hg commit -m "2 -> 2.5" -d "0 0"
+hg commit -m "2 -> 2.5" -d "1000000 0"
 
 # now pull and merge from test-a
 hg pull ../test-a
@@ -43,7 +43,7 @@
 three
 EOF
 rm -f *.orig
-hg commit -m "Merge 1" -d "0 0"
+hg commit -m "Merge 1" -d "1000000 0"
 
 # change test-a again
 cd ../test-a
@@ -52,7 +52,7 @@
 two-point-one
 three
 EOF
-hg commit -m "two -> two-point-one" -d "0 0"
+hg commit -m "two -> two-point-one" -d "1000000 0"
 
 # pull and merge from test-a again
 cd ../test-b
--- a/tests/test-merge7.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-merge7.out	Wed Mar 15 07:10:04 2006 +0100
@@ -24,6 +24,8 @@
 resolving test.txt
 file test.txt: my fc3148072371 other d40249267ae3 ancestor 8fe46a3eb557
 merging test.txt failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+(branch merge, don't forget to commit)
 one
 <<<<<<<
 two-point-five
@@ -37,33 +39,33 @@
      2        16      15      2       2 8fe46a3eb557 01365c4cca56 000000000000
      3        31      27      2       3 fc3148072371 7b013192566a 8fe46a3eb557
      4        58      25      4       4 d40249267ae3 8fe46a3eb557 000000000000
-changeset:   4:40d11a4173a8
+changeset:   4:a070d41e8360
 tag:         tip
-parent:      2:96b70246a118
+parent:      2:faaea63e63a9
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     two -> two-point-one
 
-changeset:   3:50c3a7e29886
-parent:      1:d1e159716d41
-parent:      2:96b70246a118
+changeset:   3:451c744aabcc
+parent:      1:e409be6afcc0
+parent:      2:faaea63e63a9
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Merge 1
 
-changeset:   2:96b70246a118
-parent:      0:b1832b9d912a
+changeset:   2:faaea63e63a9
+parent:      0:095c92b91f1a
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Numbers as words
 
-changeset:   1:d1e159716d41
+changeset:   1:e409be6afcc0
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2 -> 2.5
 
-changeset:   0:b1832b9d912a
+changeset:   0:095c92b91f1a
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Initial
 
--- a/tests/test-permissions	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-permissions	Wed Mar 15 07:10:04 2006 +0100
@@ -3,7 +3,7 @@
 hg init
 echo foo > a
 hg add a
-hg commit -m "1" -d "0 0"
+hg commit -m "1" -d "1000000 0"
 hg verify
 chmod -r .hg/data/a.d
 hg verify 2>/dev/null || echo verify failed
@@ -11,5 +11,5 @@
 hg verify 2>/dev/null || echo verify failed
 chmod -w .hg/data/a.d
 echo barber > a
-hg commit -m "2" -d "0 0" 2>/dev/null || echo commit failed
+hg commit -m "2" -d "1000000 0" 2>/dev/null || echo commit failed
 
--- a/tests/test-pull	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-pull	Wed Mar 15 07:10:04 2006 +0100
@@ -10,7 +10,7 @@
 hg serve -p 20059 -d --pid-file=hg.pid
 cd ..
 
-hg clone http://localhost:20059/ copy
+http_proxy= hg clone http://localhost:20059/ copy
 cd copy
 hg verify
 hg co
--- a/tests/test-pull-permission	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-pull-permission	Wed Mar 15 07:10:04 2006 +0100
@@ -5,7 +5,7 @@
 hg init
 echo foo > b
 hg add b
-hg ci -m "b" -d "0 0"
+hg ci -m "b" -d "1000000 0"
 
 chmod -w .hg
 
--- a/tests/test-push-warn	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-push-warn	Wed Mar 15 07:10:04 2006 +0100
@@ -5,7 +5,7 @@
 hg init
 echo foo > t1
 hg add t1
-hg commit -m "1" -d "0 0"
+hg commit -m "1" -d "1000000 0"
 
 cd ..
 hg clone a b
@@ -13,16 +13,16 @@
 cd a
 echo foo > t2
 hg add t2
-hg commit -m "2" -d "0 0"
+hg commit -m "2" -d "1000000 0"
 
 cd ../b
 echo foo > t3
 hg add t3
-hg commit -m "3" -d "0 0"
+hg commit -m "3" -d "1000000 0"
 
 hg push ../a
 hg pull ../a
 hg push ../a
 hg up -m
-hg commit -m "4" -d "0 0"
+hg commit -m "4" -d "1000000 0"
 hg push ../a
--- a/tests/test-rawcommit1	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-rawcommit1	Wed Mar 15 07:10:04 2006 +0100
@@ -2,32 +2,32 @@
 hg --debug init
 echo this is a1 > a
 hg add a
-hg commit -m0 -d "0 0"
+hg commit -m0 -d "1000000 0"
 echo this is b1 > b
 hg add b
-hg commit -m1 -d "0 0"
+hg commit -m1 -d "1000000 0"
 hg manifest 1
 echo this is c1 > c
-hg rawcommit -p 1 -d "0 0" -m2 c
+hg rawcommit -p 1 -d "1000000 0" -m2 c
 hg manifest 2
 hg parents
 rm b
-hg rawcommit -p 2 -d "0 0" -m3 b
+hg rawcommit -p 2 -d "1000000 0" -m3 b
 hg manifest 3
 hg parents
 echo this is a22 > a
-hg rawcommit -p 3 -d "0 0" -m4 a
+hg rawcommit -p 3 -d "1000000 0" -m4 a
 hg manifest 4
 hg parents
 echo this is c22 > c
-hg rawcommit -p 1 -d "0 0" -m5 c
+hg rawcommit -p 1 -d "1000000 0" -m5 c
 hg manifest 5
 hg parents
 # merge, but no files changed
-hg rawcommit -p 4 -p 5 -d "0 0" -m6
+hg rawcommit -p 4 -p 5 -d "1000000 0" -m6
 hg manifest 6
 hg parents
 # no changes what-so-ever
-hg rawcommit -p 6 -d "0 0" -m7
+hg rawcommit -p 6 -d "1000000 0" -m7
 hg manifest 7
 hg parents
--- a/tests/test-rawcommit1.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-rawcommit1.out	Wed Mar 15 07:10:04 2006 +0100
@@ -4,56 +4,56 @@
 05f9e54f4c9b86b09099803d8b49a50edcb4eaab 644 a
 54837d97f2932a8194e69745a280a2c11e61ff9c 644 b
 76d5e637cbec1bcc04a5a3fa4bcc7d13f6847c00 644 c
-changeset:   2:9f827976dae4
+changeset:   2:e110db3db549
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
 (the rawcommit command is deprecated)
 05f9e54f4c9b86b09099803d8b49a50edcb4eaab 644 a
 76d5e637cbec1bcc04a5a3fa4bcc7d13f6847c00 644 c
-changeset:   3:142428fbbcc5
+changeset:   3:0f9843914735
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     3
 
 (the rawcommit command is deprecated)
 d6e3c4976c13feb1728cd3ac851abaf7256a5c23 644 a
 76d5e637cbec1bcc04a5a3fa4bcc7d13f6847c00 644 c
-changeset:   4:4d450f9aa680
+changeset:   4:909a3d1d3ee1
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     4
 
 (the rawcommit command is deprecated)
 05f9e54f4c9b86b09099803d8b49a50edcb4eaab 644 a
 54837d97f2932a8194e69745a280a2c11e61ff9c 644 b
 3570202ceac2b52517df64ebd0a062cb0d8fe33a 644 c
-changeset:   4:4d450f9aa680
+changeset:   4:909a3d1d3ee1
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     4
 
 (the rawcommit command is deprecated)
 d6e3c4976c13feb1728cd3ac851abaf7256a5c23 644 a
 76d5e637cbec1bcc04a5a3fa4bcc7d13f6847c00 644 c
-changeset:   6:b4b8b9afa8cc
+changeset:   6:725fdd0728db
 tag:         tip
-parent:      4:4d450f9aa680
-parent:      5:a7925a42d0df
+parent:      4:909a3d1d3ee1
+parent:      5:f56d4c64ab98
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     6
 
 (the rawcommit command is deprecated)
 d6e3c4976c13feb1728cd3ac851abaf7256a5c23 644 a
 76d5e637cbec1bcc04a5a3fa4bcc7d13f6847c00 644 c
-changeset:   7:f84d0b1b024e
+changeset:   7:2c11b55105cb
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     7
 
--- a/tests/test-remove	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-remove	Wed Mar 15 07:10:04 2006 +0100
@@ -4,14 +4,14 @@
 cd a
 echo a > foo
 hg add foo
-hg commit -m 1 -d "0 0"
+hg commit -m 1 -d "1000000 0"
 rm foo
 hg remove foo
-hg commit -m 2 -d "0 0"
-hg export 0
-hg export 1
-hg log -p -r 0
-hg log -p -r 1
+hg commit -m 2 -d "1000000 0"
+hg export 0 | sed -e "s/Thu Jan 01/Thu Jan  1/"
+hg export 1 | sed -e "s/Thu Jan 01/Thu Jan  1/"
+hg log -p -r 0 | sed -e "s/Thu Jan 01/Thu Jan  1/"
+hg log -p -r 1 | sed -e "s/Thu Jan 01/Thu Jan  1/"
 
 cd ..
 hg clone a b
--- a/tests/test-remove.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-remove.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,45 +1,45 @@
 # HG changeset patch
 # User test
-# Node ID b51ca55c20354097ca299529d18b5cd356976ba2
+# Node ID 8ba83d44753d6259db5ce6524974dd1174e90f47
 # Parent  0000000000000000000000000000000000000000
 1
 
-diff -r 000000000000 -r b51ca55c2035 foo
+diff -r 000000000000 -r 8ba83d44753d foo
 --- /dev/null	Thu Jan  1 00:00:00 1970 +0000
-+++ b/foo	Thu Jan  1 00:00:00 1970 +0000
++++ b/foo	Mon Jan 12 13:46:40 1970 +0000
 @@ -0,0 +1,1 @@
 +a
 # HG changeset patch
 # User test
-# Node ID 451c12a24e5a7336921b8d93e280837d7c2b4fc1
-# Parent  b51ca55c20354097ca299529d18b5cd356976ba2
+# Node ID a1fce69c50d97881c5c014ab23f580f720c78678
+# Parent  8ba83d44753d6259db5ce6524974dd1174e90f47
 2
 
-diff -r b51ca55c2035 -r 451c12a24e5a foo
---- a/foo	Thu Jan  1 00:00:00 1970 +0000
+diff -r 8ba83d44753d -r a1fce69c50d9 foo
+--- a/foo	Mon Jan 12 13:46:40 1970 +0000
 +++ /dev/null	Thu Jan  1 00:00:00 1970 +0000
 @@ -1,1 +0,0 @@
 -a
-changeset:   0:b51ca55c2035
+changeset:   0:8ba83d44753d
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
-diff -r 000000000000 -r b51ca55c2035 foo
+diff -r 000000000000 -r 8ba83d44753d foo
 --- /dev/null	Thu Jan  1 00:00:00 1970 +0000
-+++ b/foo	Thu Jan  1 00:00:00 1970 +0000
++++ b/foo	Mon Jan 12 13:46:40 1970 +0000
 @@ -0,0 +1,1 @@
 +a
 
 
-changeset:   1:451c12a24e5a
+changeset:   1:a1fce69c50d9
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
-diff -r b51ca55c2035 -r 451c12a24e5a foo
---- a/foo	Thu Jan  1 00:00:00 1970 +0000
+diff -r 8ba83d44753d -r a1fce69c50d9 foo
+--- a/foo	Mon Jan 12 13:46:40 1970 +0000
 +++ /dev/null	Thu Jan  1 00:00:00 1970 +0000
 @@ -1,1 +0,0 @@
 -a
--- a/tests/test-rename	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-rename	Wed Mar 15 07:10:04 2006 +0100
@@ -8,7 +8,7 @@
 echo d1/b > d1/b
 echo d2/b > d2/b
 hg add d1/a d1/b d1/ba d1/d11/a1 d2/b
-hg commit -m "1" -d "0 0"
+hg commit -m "1" -d "1000000 0"
 
 echo "# rename a single file"
 hg rename d1/d11/a1 d2/c
--- a/tests/test-revert	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-revert	Wed Mar 15 07:10:04 2006 +0100
@@ -4,7 +4,7 @@
 echo 123 > a
 echo 123 > c
 hg add a c
-hg commit -m "first" -d "0 0" a c
+hg commit -m "first" -d "1000000 0" a c
 echo 123 > b
 echo %% should show b unknown
 hg status
--- a/tests/test-revert-unknown	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-revert-unknown	Wed Mar 15 07:10:04 2006 +0100
@@ -5,11 +5,11 @@
 
 touch a
 hg add a
-hg ci -m "1" -d "0 0"
+hg ci -m "1" -d "1000000 0"
 
 touch b
 hg add b
-hg ci -m "2" -d "0 0"
+hg ci -m "2" -d "1000000 0"
 
 echo %% Should show unknown
 hg status
--- a/tests/test-ssh	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-ssh	Wed Mar 15 07:10:04 2006 +0100
@@ -26,7 +26,7 @@
 hg init remote
 cd remote
 echo this > foo
-hg ci -A -m "init" -d "0 0" foo
+hg ci -A -m "init" -d "1000000 0" foo
 
 cd ..
 
@@ -43,7 +43,7 @@
 
 echo "# local change"
 echo bleah > foo
-hg ci -m "add" -d "0 0"
+hg ci -m "add" -d "1000000 0"
 
 echo "# updating rc"
 echo "default-push = ssh://user@dummy/remote" >> .hg/hgrc
--- a/tests/test-ssh.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-ssh.out	Wed Mar 15 07:10:04 2006 +0100
@@ -20,10 +20,10 @@
 # updating rc
 # find outgoing
 searching for changes
-changeset:   1:536411b157b4
+changeset:   1:c54836a570be
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     add
 
 # push
@@ -34,10 +34,10 @@
 remote: adding file changes
 remote: added 1 changesets with 1 changes to 1 files
 # check remote tip
-changeset:   1:536411b157b4
+changeset:   1:c54836a570be
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     add
 
 checking changesets
--- a/tests/test-static-http	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-static-http	Wed Mar 15 07:10:04 2006 +0100
@@ -26,7 +26,7 @@
 hg init
 echo foo > bar
 hg add bar
-hg commit -m"test" -d"0 0"
+hg commit -m"test" -d "1000000 0"
 hg tip
 
 cd ..
--- a/tests/test-static-http.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-static-http.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,10 +1,10 @@
 abort: Connection refused
 255
 ls: copy: No such file or directory
-changeset:   0:61c9426e69fe
+changeset:   0:53e17d176ae6
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
 requesting all changes
--- a/tests/test-status	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-status	Wed Mar 15 07:10:04 2006 +0100
@@ -22,7 +22,7 @@
 cd repo2
 touch modified removed deleted ignored
 echo "ignored" > .hgignore
-hg ci -A -m 'initial checkin' -d "0 0"
+hg ci -A -m 'initial checkin' -d "1000000 0"
 sleep 1 # make sure mtime is changed
 touch modified added unknown ignored
 hg add added
--- a/tests/test-tag	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-tag	Wed Mar 15 07:10:04 2006 +0100
@@ -3,18 +3,18 @@
 hg init
 echo a > a
 hg add a
-hg commit -m "test" -d "0 0"
+hg commit -m "test" -d "1000000 0"
 hg history
-hg tag -d "0 0" "bleah"
+hg tag -d "1000000 0" "bleah"
 hg history
 
 echo foo >> .hgtags
-hg tag -d "0 0" "bleah2" || echo "failed"
-hg tag -d "0 0" -r 0 "bleah2" 1 || echo "failed"
+hg tag -d "1000000 0" "bleah2" || echo "failed"
+hg tag -d "1000000 0" -r 0 "bleah2" 1 || echo "failed"
 
 hg revert .hgtags
-hg tag -d "0 0" -r 0 "bleah0"
-hg tag -l -d "0 0" "bleah1" 1
+hg tag -d "1000000 0" -r 0 "bleah0"
+hg tag -l -d "1000000 0" "bleah1" 1
 
 cat .hgtags
 cat .hg/localtags
--- a/tests/test-tag.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-tag.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,19 +1,19 @@
-changeset:   0:acb14030fe0a
+changeset:   0:0acdaf898367
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
-changeset:   1:863197ef0378
+changeset:   1:c5c60883086f
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
-summary:     Added tag bleah for changeset acb14030fe0a21b60322c440ad2d20cf7685a376
+date:        Mon Jan 12 13:46:40 1970 +0000
+summary:     Added tag bleah for changeset 0acdaf8983679e0aac16e811534eb49d7ee1f2b4
 
-changeset:   0:acb14030fe0a
+changeset:   0:0acdaf898367
 tag:         bleah
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
 abort: working copy of .hgtags is changed (please commit .hgtags manually)
@@ -22,8 +22,8 @@
 abort: use only one form to specify the revision
 failed
 use of 'hg tag NAME [REV]' is deprecated, please use 'hg tag [-r REV] NAME' instead
-acb14030fe0a21b60322c440ad2d20cf7685a376 bleah
-acb14030fe0a21b60322c440ad2d20cf7685a376 bleah0
-863197ef03781c4fc00276d83eb66c4cb9cd91df bleah1
+0acdaf8983679e0aac16e811534eb49d7ee1f2b4 bleah
+0acdaf8983679e0aac16e811534eb49d7ee1f2b4 bleah0
+c5c60883086f5526bd3e36814b94a73a4e75e172 bleah1
 abort: '\n' cannot be used in a tag name
 abort: ':' cannot be used in a tag name
--- a/tests/test-tags	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-tags	Wed Mar 15 07:10:04 2006 +0100
@@ -6,14 +6,14 @@
 hg id
 echo a > a
 hg add a
-hg commit -m "test" -d "0 0"
+hg commit -m "test" -d "1000000 0"
 hg co
 hg identify
 T=`hg tip -v | head -n 1 | cut -d : -f 3`
 echo "$T first" > .hgtags
 cat .hgtags
 hg add .hgtags
-hg commit -m "add tags" -d "0 0"
+hg commit -m "add tags" -d "1000000 0"
 hg tags
 hg identify
 echo bb > a
@@ -25,7 +25,7 @@
 hg status
 echo 1 > b
 hg add b
-hg commit -m "branch" -d "0 0"
+hg commit -m "branch" -d "1000000 0"
 hg id
 hg co -m 1
 hg id
--- a/tests/test-tags.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-tags.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,14 +1,14 @@
 unknown
-acb14030fe0a tip
-acb14030fe0a21b60322c440ad2d20cf7685a376 first
-tip                                1:b9154636be938d3d431e75a7c906504a079bfe07
-first                              0:acb14030fe0a21b60322c440ad2d20cf7685a376
-b9154636be93 tip
+0acdaf898367 tip
+0acdaf8983679e0aac16e811534eb49d7ee1f2b4 first
+tip                                1:8a3ca90d111dc784e6575d373105be12570e8776
+first                              0:0acdaf8983679e0aac16e811534eb49d7ee1f2b4
+8a3ca90d111d tip
 M a
-b9154636be93+ tip
-acb14030fe0a+ first
-acb14030fe0a21b60322c440ad2d20cf7685a376+ first
+8a3ca90d111d+ tip
+0acdaf898367+ first
+0acdaf8983679e0aac16e811534eb49d7ee1f2b4+ first
 M a
-c8edf04160c7 tip
-c8edf04160c7+b9154636be93+ tip
+8216907a933d tip
+8216907a933d+8a3ca90d111d+ tip
 M .hgtags
--- a/tests/test-undo	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-undo	Wed Mar 15 07:10:04 2006 +0100
@@ -5,7 +5,7 @@
 hg init
 echo a > a
 hg add a
-hg commit -m "test" -d "0 0"
+hg commit -m "test" -d "1000000 0"
 hg verify
 hg parents
 hg status
--- a/tests/test-undo.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-undo.out	Wed Mar 15 07:10:04 2006 +0100
@@ -3,10 +3,10 @@
 crosschecking files in changesets and manifests
 checking files
 1 files, 1 changesets, 1 total revisions
-changeset:   0:acb14030fe0a
+changeset:   0:0acdaf898367
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
 rolling back last transaction
--- a/tests/test-unrelated-pull	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-unrelated-pull	Wed Mar 15 07:10:04 2006 +0100
@@ -5,7 +5,7 @@
 hg init
 echo 123 > a
 hg add a
-hg commit -m "a" -u a -d "0 0"
+hg commit -m "a" -u a -d "1000000 0"
 
 cd ..
 mkdir b
@@ -13,7 +13,7 @@
 hg init
 echo 321 > b
 hg add b
-hg commit -m "b" -u b -d "0 0"
+hg commit -m "b" -u b -d "1000000 0"
 
 hg pull ../a
 hg heads
--- a/tests/test-unrelated-pull.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-unrelated-pull.out	Wed Mar 15 07:10:04 2006 +0100
@@ -6,14 +6,14 @@
 adding file changes
 added 1 changesets with 1 changes to 1 files (+1 heads)
 (run 'hg update' to get a working copy)
-changeset:   1:9a79c33a9db3
+changeset:   1:bdcee5d51fa6
 tag:         tip
 user:        a
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     a
 
-changeset:   0:01f8062b2de5
+changeset:   0:f155ba1aa5ba
 user:        b
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     b
 
--- a/tests/test-up-local-change	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-up-local-change	Wed Mar 15 07:10:04 2006 +0100
@@ -6,7 +6,7 @@
 hg init
 echo a > a
 hg addremove
-hg commit -m "1" -d "0 0"
+hg commit -m "1" -d "1000000 0"
 
 hg clone . ../r2
 cd ../r2
@@ -19,7 +19,7 @@
 echo b > b
 echo a2 > a
 hg addremove
-hg commit -m "2" -d "0 0"
+hg commit -m "2" -d "1000000 0"
 
 cd ../r2
 hg -q pull ../r1
@@ -43,7 +43,7 @@
 echo b2 > b
 echo a3 > a
 hg addremove
-hg commit -m "3" -d "0 0"
+hg commit -m "3" -d "1000000 0"
 
 cd ../r2
 hg -q pull ../r1
--- a/tests/test-up-local-change.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-up-local-change.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,5 +1,5 @@
 adding a
-diff -r c19d34741b0a a
+diff -r 33aaa84a386b a
 --- a/a
 +++ b/a
 @@ -1,1 +1,1 @@ a
@@ -7,9 +7,9 @@
 +abc
 adding b
 M a
-changeset:   0:c19d34741b0a
+changeset:   0:33aaa84a386b
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
 resolving manifests
@@ -21,10 +21,11 @@
 merging a
 resolving a
 file a: my b789fdd96dc2 other d730145abbf9 ancestor b789fdd96dc2
-changeset:   1:1e71731e6fbb
+1 files updated, 1 files merged, 0 files removed, 0 files unresolved
+changeset:   1:802f095af299
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
 resolving manifests
@@ -32,16 +33,17 @@
  ancestor a0c8bcbbb45c local 1165e8bd193e remote a0c8bcbbb45c
 remote deleted b
 removing b
-changeset:   0:c19d34741b0a
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+changeset:   0:33aaa84a386b
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
 abort: there is nothing to merge, just use 'hg update'
 failed
-changeset:   0:c19d34741b0a
+changeset:   0:33aaa84a386b
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     1
 
 resolving manifests
@@ -53,30 +55,31 @@
 merging a
 resolving a
 file a: my b789fdd96dc2 other d730145abbf9 ancestor b789fdd96dc2
-changeset:   1:1e71731e6fbb
+1 files updated, 1 files merged, 0 files removed, 0 files unresolved
+changeset:   1:802f095af299
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
-changeset:   1:1e71731e6fbb5b35fae293120dea6964371c13c6
+changeset:   1:802f095af299cde27a85b2f056aef3829870956c
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 files:       a b
 description:
 2
 
 
-changeset:   0:c19d34741b0a4ced8e4ba74bb834597d5193851e
+changeset:   0:33aaa84a386bd609094aeb21a97c09436c482ef1
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 files:       a
 description:
 1
 
 
-diff -r 1e71731e6fbb a
+diff -r 802f095af299 a
 --- a/a
 +++ b/a
 @@ -1,1 +1,1 @@ a2
@@ -84,9 +87,9 @@
 +abc
 adding b
 M a
-changeset:   1:1e71731e6fbb
+changeset:   1:802f095af299
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
 resolving manifests
@@ -113,19 +116,21 @@
 merging b
 resolving b
 file b: my 1e88685f5dde other 61de8c7723ca ancestor 000000000000
-changeset:   1:1e71731e6fbb
+0 files updated, 2 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+changeset:   1:802f095af299
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     2
 
-changeset:   2:83c51d0caff4
+changeset:   2:030602aee63d
 tag:         tip
-parent:      0:c19d34741b0a
+parent:      0:33aaa84a386b
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     3
 
-diff -r 1e71731e6fbb a
+diff -r 802f095af299 a
 --- a/a
 +++ b/a
 @@ -1,1 +1,1 @@ a2
--- a/tests/test-update-reverse	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-update-reverse	Wed Mar 15 07:10:04 2006 +0100
@@ -3,11 +3,11 @@
 hg init
 touch a
 hg add a
-hg commit -m "Added a" -d "0 0"
+hg commit -m "Added a" -d "1000000 0"
 
 touch main
 hg add main
-hg commit -m "Added main" -d "0 0"
+hg commit -m "Added main" -d "1000000 0"
 hg checkout 0
 
 echo Main should be gone
@@ -15,10 +15,10 @@
 
 touch side1
 hg add side1
-hg commit -m "Added side1" -d "0 0"
+hg commit -m "Added side1" -d "1000000 0"
 touch side2
 hg add side2
-hg commit -m "Added side2" -d "0 0"
+hg commit -m "Added side2" -d "1000000 0"
 
 hg log
 
--- a/tests/test-update-reverse.out	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-update-reverse.out	Wed Mar 15 07:10:04 2006 +0100
@@ -1,37 +1,37 @@
 Main should be gone
 a
-changeset:   3:91ebc10ed028
+changeset:   3:ded32b0db104
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Added side2
 
-changeset:   2:b932d7dbb1e1
-parent:      0:c2eda428b523
+changeset:   2:92a816cea698
+parent:      0:537353581d3d
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Added side1
 
-changeset:   1:71a760306caf
+changeset:   1:221226fb2bd8
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Added main
 
-changeset:   0:c2eda428b523
+changeset:   0:537353581d3d
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Added a
 
 Should have two heads, side2 and main
-changeset:   3:91ebc10ed028
+changeset:   3:ded32b0db104
 tag:         tip
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Added side2
 
-changeset:   1:71a760306caf
+changeset:   1:221226fb2bd8
 user:        test
-date:        Thu Jan  1 00:00:00 1970 +0000
+date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     Added main
 
 Should show a side1 side2
@@ -47,6 +47,7 @@
 getting main
 removing side1
 removing side2
+1 files updated, 0 files merged, 2 files removed, 0 files unresolved
 Should only show a main
 a
 main
--- a/tests/test-walk	Wed Mar 15 06:39:04 2006 +0100
+++ b/tests/test-walk	Wed Mar 15 07:10:04 2006 +0100
@@ -17,7 +17,7 @@
 echo fiddlehead > fiddlehead
 echo glob:glob > glob:glob
 hg addremove
-hg commit -m "commit #0" -d "0 0"
+hg commit -m "commit #0" -d "1000000 0"
 hg debugwalk
 cd mammals
 hg debugwalk .