# HG changeset patch # User Matt Mackall # Date 1321389186 21600 # Node ID 25ea33fe7e5cb4f14dd919f50fbdbee376b6bf78 # Parent 1eefa4451c56c92e58d030fe13a955d509c8459f# Parent 6eff984d8e76811f1ce129a424236abf0afaa191 merge with stable diff -r 6eff984d8e76 -r 25ea33fe7e5c contrib/check-code.py --- a/contrib/check-code.py Tue Nov 15 14:25:11 2011 -0600 +++ b/contrib/check-code.py Tue Nov 15 14:33:06 2011 -0600 @@ -131,7 +131,8 @@ (r'[^\n]\Z', "no trailing newline"), (r'(\S[ \t]+|^[ \t]+)\n', "trailing whitespace"), # (r'^\s+[^_ \n][^_. \n]+_[^_\n]+\s*=', "don't use underbars in identifiers"), -# (r'\w*[a-z][A-Z]\w*\s*=', "don't use camelcase in identifiers"), + (r'^\s+(self\.)?[A-za-z][a-z0-9]+[A-Z]\w* = ', + "don't use camelcase in identifiers"), (r'^\s*(if|while|def|class|except|try)\s[^[\n]*:\s*[^\\n]#\s]+', "linebreak after :"), (r'class\s[^( \n]+:', "old-style class, use class foo(object)"), diff -r 6eff984d8e76 -r 25ea33fe7e5c hgext/convert/darcs.py --- a/hgext/convert/darcs.py Tue Nov 15 14:25:11 2011 -0600 +++ b/hgext/convert/darcs.py Tue Nov 15 14:33:06 2011 -0600 @@ -24,7 +24,7 @@ try: from elementtree.ElementTree import ElementTree, XMLParser except ImportError: - ElementTree = None + pass class darcs_source(converter_source, commandline): def __init__(self, ui, path, rev=None): @@ -42,7 +42,7 @@ raise util.Abort(_('darcs version 2.1 or newer needed (found %r)') % version) - if ElementTree is None: + if "ElementTree" not in globals(): raise util.Abort(_("Python ElementTree module is not available")) self.path = os.path.realpath(path) diff -r 6eff984d8e76 -r 25ea33fe7e5c hgext/mq.py --- a/hgext/mq.py Tue Nov 15 14:25:11 2011 -0600 +++ b/hgext/mq.py Tue Nov 15 14:33:06 2011 -0600 @@ -2915,6 +2915,9 @@ return 0 revs = scmutil.revrange(repo, revrange) + if repo['.'].rev() in revs and repo[None].files(): + ui.warn(_('warning: uncommitted changes in the working directory\n')) + q.finish(repo, revs) q.savedirty() return 0 diff -r 6eff984d8e76 -r 25ea33fe7e5c hgext/rebase.py --- a/hgext/rebase.py Tue Nov 15 14:25:11 2011 -0600 +++ b/hgext/rebase.py Tue Nov 15 14:33:06 2011 -0600 @@ -185,21 +185,19 @@ dest = repo[destf] if revf: - revgen = repo.set('%lr', revf) + rebaseset = repo.revs('%lr', revf) elif srcf: - revgen = repo.set('(%r)::', srcf) + rebaseset = repo.revs('(%r)::', srcf) else: base = basef or '.' - revgen = repo.set('(children(ancestor(%r, %d)) and ::(%r))::', - base, dest, base) - - rebaseset = [c.rev() for c in revgen] + rebaseset = repo.revs('(children(ancestor(%r, %d)) & ::%r)::', + base, dest, base) if not rebaseset: repo.ui.debug('base is ancestor of destination') result = None - elif not keepf and list(repo.set('first(children(%ld) - %ld)', - rebaseset, rebaseset)): + elif not keepf and list(repo.revs('first(children(%ld) - %ld)', + rebaseset, rebaseset)): raise util.Abort( _("can't remove original changesets with" " unrebased descendants"), @@ -589,8 +587,7 @@ # rebase on ancestor, force detach detach = True if detach: - detachset = [c.rev() for c in repo.set('::%d - ::%d - %d', - root, commonbase, root)] + detachset = repo.revs('::%d - ::%d - %d', root, commonbase, root) repo.ui.debug('rebase onto %d starting from %d\n' % (dest, root)) state = dict.fromkeys(rebaseset, nullrev) diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/cmdutil.py --- a/mercurial/cmdutil.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/cmdutil.py Tue Nov 15 14:33:06 2011 -0600 @@ -1165,15 +1165,19 @@ if ui.verbose or not exact: ui.status(_('adding %s\n') % match.rel(join(f))) - if listsubrepos: - for subpath in wctx.substate: - sub = wctx.sub(subpath) - try: - submatch = matchmod.narrowmatcher(subpath, match) + for subpath in wctx.substate: + sub = wctx.sub(subpath) + try: + submatch = matchmod.narrowmatcher(subpath, match) + if listsubrepos: bad.extend(sub.add(ui, submatch, dryrun, prefix)) - except error.LookupError: - ui.status(_("skipping missing subrepository: %s\n") - % join(subpath)) + else: + for f in sub.walk(submatch): + if submatch.exact(f): + bad.extend(sub.add(ui, submatch, dryrun, prefix)) + except error.LookupError: + ui.status(_("skipping missing subrepository: %s\n") + % join(subpath)) if not dryrun: rejected = wctx.add(names, prefix) diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/commands.py --- a/mercurial/commands.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/commands.py Tue Nov 15 14:33:06 2011 -0600 @@ -13,6 +13,7 @@ import patch, help, url, encoding, templatekw, discovery import archival, changegroup, cmdutil, hbisect import sshserver, hgweb, hgweb.server, commandserver +import match as matchmod import merge as mergemod import minirst, revset, fileset import dagparser, context, simplemerge @@ -2189,7 +2190,7 @@ if ent[1] & 020000: mode = 'lnk' else: - mode = '%3o' % (ent[1] & 0777) + mode = '%3o' % (ent[1] & 0777 & ~util.umask) ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_)) for f in repo.dirstate.copies(): ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f)) @@ -2432,23 +2433,45 @@ if not pats: raise util.Abort(_('no files specified')) - m = scmutil.match(repo[None], pats, opts) + wctx = repo[None] + m = scmutil.match(wctx, pats, opts) s = repo.status(match=m, clean=True) forget = sorted(s[0] + s[1] + s[3] + s[6]) + subforget = {} errs = 0 + for subpath in wctx.substate: + sub = wctx.sub(subpath) + try: + submatch = matchmod.narrowmatcher(subpath, m) + for fsub in sub.walk(submatch): + if submatch.exact(fsub): + subforget[os.path.join(subpath, fsub)] = (fsub, sub) + except error.LookupError: + ui.status(_("skipping missing subrepository: %s\n") % subpath) + for f in m.files(): if f not in repo.dirstate and not os.path.isdir(m.rel(f)): - if os.path.exists(m.rel(f)): - ui.warn(_('not removing %s: file is already untracked\n') - % m.rel(f)) - errs = 1 + if f not in subforget: + if os.path.exists(m.rel(f)): + ui.warn(_('not removing %s: file is already untracked\n') + % m.rel(f)) + errs = 1 for f in forget: if ui.verbose or not m.exact(f): ui.status(_('removing %s\n') % m.rel(f)) - repo[None].forget(forget) + if ui.verbose: + for f in sorted(subforget.keys()): + ui.status(_('removing %s\n') % m.rel(f)) + + wctx.forget(forget) + + for f in sorted(subforget.keys()): + fsub, sub = subforget[f] + sub.forget([fsub]) + return errs @command( @@ -2534,16 +2557,16 @@ revs = scmutil.revrange(repo, revs) # check for merges - for ctx in repo.set('%ld and merge()', revs): - ui.warn(_('skipping ungraftable merge revision %s\n') % ctx.rev()) - revs.remove(ctx.rev()) + for rev in repo.revs('%ld and merge()', revs): + ui.warn(_('skipping ungraftable merge revision %s\n') % rev) + revs.remove(rev) if not revs: return -1 # check for ancestors of dest branch - for ctx in repo.set('::. and %ld', revs): - ui.warn(_('skipping ancestor revision %s\n') % ctx.rev()) - revs.remove(ctx.rev()) + for rev in repo.revs('::. and %ld', revs): + ui.warn(_('skipping ancestor revision %s\n') % rev) + revs.remove(rev) if not revs: return -1 @@ -3705,14 +3728,14 @@ [('f', 'follow', None, _('follow changeset history, or file history across copies and renames')), ('', 'follow-first', None, - _('only follow the first parent of merge changesets')), + _('only follow the first parent of merge changesets (DEPRECATED)')), ('d', 'date', '', _('show revisions matching date spec'), _('DATE')), ('C', 'copies', None, _('show copied files')), ('k', 'keyword', [], _('do case-insensitive search for a given text'), _('TEXT')), ('r', 'rev', [], _('show the specified revision or range'), _('REV')), ('', 'removed', None, _('include revisions where files were removed')), - ('m', 'only-merges', None, _('show only merges')), + ('m', 'only-merges', None, _('show only merges (DEPRECATED)')), ('u', 'user', [], _('revisions committed by user'), _('USER')), ('', 'only-branch', [], _('show only changesets within the given named branch (DEPRECATED)'), @@ -3721,7 +3744,7 @@ _('show changesets within the given named branch'), _('BRANCH')), ('P', 'prune', [], _('do not display revision or any of its ancestors'), _('REV')), - ('', 'hidden', False, _('show hidden changesets')), + ('', 'hidden', False, _('show hidden changesets (DEPRECATED)')), ] + logopts + walkopts, _('[OPTION]... [FILE]')) def log(ui, repo, *pats, **opts): diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/context.py --- a/mercurial/context.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/context.py Tue Nov 15 14:33:06 2011 -0600 @@ -117,6 +117,13 @@ return self._repo.nodetags(self._node) def bookmarks(self): return self._repo.nodebookmarks(self._node) + def phase(self): + if self._rev == -1: + return 0 + if self._rev >= len(self._repo._phaserev): + # outdated cache + del self._repo._phaserev + return self._repo._phaserev[self._rev] def hidden(self): return self._rev in self._repo.changelog.hiddenrevs diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/discovery.py --- a/mercurial/discovery.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/discovery.py Tue Nov 15 14:33:06 2011 -0600 @@ -67,14 +67,18 @@ on circumstances: If we are not going to push anything, return a tuple (None, - outgoing) where outgoing is 0 if there are no outgoing + outgoing, common) where outgoing is 0 if there are no outgoing changesets and 1 if there are, but we refuse to push them - (e.g. would create new remote heads). + (e.g. would create new remote heads). The third element "common" + is the list of heads of the common set between local and remote. - Otherwise, return a tuple (changegroup, remoteheads), where - changegroup is a readable file-like object whose read() returns - successive changegroup chunks ready to be sent over the wire and - remoteheads is the list of remote heads.''' + Otherwise, return a tuple (changegroup, remoteheads, futureheads), + where changegroup is a readable file-like object whose read() + returns successive changegroup chunks ready to be sent over the + wire, remoteheads is the list of remote heads and futureheads is + the list of heads of the common set between local and remote to + be after push completion. + ''' commoninc = findcommonincoming(repo, remote, force=force) common, revs = findcommonoutgoing(repo, remote, onlyheads=revs, commoninc=commoninc, force=force) @@ -85,7 +89,7 @@ if not outg: repo.ui.status(_("no changes found\n")) - return None, 1 + return None, 1, common if not force and remoteheads != [nullid]: if remote.capable('branchmap'): @@ -189,4 +193,10 @@ cg = repo._changegroup(outg, 'push') else: cg = repo.getbundle('push', heads=revs, common=common) - return cg, remoteheads + # no need to compute outg ancestor. All node in outg have either: + # - parents in outg + # - parents in common + # - nullid parent + rset = repo.set('heads(%ln + %ln)', common, outg) + futureheads = [ctx.node() for ctx in rset] + return cg, remoteheads, futureheads diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/dispatch.py --- a/mercurial/dispatch.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/dispatch.py Tue Nov 15 14:33:06 2011 -0600 @@ -24,7 +24,7 @@ def run(): "run the command in sys.argv" - sys.exit(dispatch(request(sys.argv[1:]))) + sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255) def dispatch(req): "run the command specified in req.args" diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/hbisect.py --- a/mercurial/hbisect.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/hbisect.py Tue Nov 15 14:33:06 2011 -0600 @@ -179,7 +179,7 @@ # that's because the bisection can go either way range = '( bisect(bad)::bisect(good) | bisect(good)::bisect(bad) )' - _t = [c.rev() for c in repo.set('bisect(good)::bisect(bad)')] + _t = repo.revs('bisect(good)::bisect(bad)') # The sets of topologically good or bad csets if len(_t) == 0: # Goods are topologically after bads @@ -206,22 +206,21 @@ ignored = '( ( (%s) | (%s) ) - (%s) )' % (iba, iga, range) if status == 'range': - return [c.rev() for c in repo.set(range)] + return repo.revs(range) elif status == 'pruned': - return [c.rev() for c in repo.set(pruned)] + return repo.revs(pruned) elif status == 'untested': - return [c.rev() for c in repo.set(untested)] + return repo.revs(untested) elif status == 'ignored': - return [c.rev() for c in repo.set(ignored)] + return repo.revs(ignored) elif status == "goods": - return [c.rev() for c in repo.set(goods)] + return repo.revs(goods) elif status == "bads": - return [c.rev() for c in repo.set(bads)] - + return repo.revs(bads) else: raise error.ParseError(_('invalid bisect state')) -def label(repo, node, short=False): +def label(repo, node): rev = repo.changelog.rev(node) # Try explicit sets diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/help/subrepos.txt --- a/mercurial/help/subrepos.txt Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/help/subrepos.txt Tue Nov 15 14:33:06 2011 -0600 @@ -73,8 +73,10 @@ ----------------------------------- :add: add does not recurse in subrepos unless -S/--subrepos is - specified. Git and Subversion subrepositories are currently - silently ignored. + specified. However, if you specify the full path of a file in a + subrepo, it will be added even without -S/--subrepos specified. + Git and Subversion subrepositories are currently silently + ignored. :archive: archive does not recurse in subrepositories unless -S/--subrepos is specified. @@ -93,6 +95,9 @@ elements. Git and Subversion subrepositories are currently silently ignored. +:forget: forget currently only handles exact file matches in subrepos. + Git and Subversion subrepositories are currently silently ignored. + :incoming: incoming does not recurse in subrepos unless -S/--subrepos is specified. Git and Subversion subrepositories are currently silently ignored. diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/localrepo.py Tue Nov 15 14:33:06 2011 -0600 @@ -8,7 +8,7 @@ from node import bin, hex, nullid, nullrev, short from i18n import _ import repo, changegroup, subrepo, discovery, pushkey -import changelog, dirstate, filelog, manifest, context, bookmarks +import changelog, dirstate, filelog, manifest, context, bookmarks, phases import lock, transaction, store, encoding import scmutil, util, extensions, hook, error, revset import match as matchmod @@ -36,6 +36,7 @@ self.wopener = scmutil.opener(self.root) self.baseui = baseui self.ui = baseui.copy() + self._dirtyphases = False try: self.ui.readconfig(self.join("hgrc"), self.root) @@ -170,6 +171,25 @@ def _writebookmarks(self, marks): bookmarks.write(self) + @filecache('phaseroots') + def _phaseroots(self): + self._dirtyphases = False + phaseroots = phases.readroots(self) + phases.filterunknown(self, phaseroots) + return phaseroots + + @propertycache + def _phaserev(self): + cache = [0] * len(self) + for phase in phases.trackedphases: + roots = map(self.changelog.rev, self._phaseroots[phase]) + if roots: + for rev in roots: + cache[rev] = phase + for rev in self.changelog.descendants(*roots): + cache[rev] = phase + return cache + @filecache('00changelog.i', True) def changelog(self): c = changelog.changelog(self.sopener) @@ -220,15 +240,18 @@ for i in xrange(len(self)): yield i + def revs(self, expr, *args): + '''Return a list of revisions matching the given revset''' + expr = revset.formatspec(expr, *args) + m = revset.match(None, expr) + return [r for r in m(self, range(len(self)))] + def set(self, expr, *args): ''' Yield a context for each matching revision, after doing arg replacement via revset.formatspec ''' - - expr = revset.formatspec(expr, *args) - m = revset.match(None, expr) - for r in m(self, range(len(self))): + for r in self.revs(expr, *args): yield self[r] def url(self): @@ -737,10 +760,16 @@ util.copyfile(bkname, self.join('journal.bookmarks')) else: self.opener.write('journal.bookmarks', '') + phasesname = self.sjoin('phaseroots') + if os.path.exists(phasesname): + util.copyfile(phasesname, self.sjoin('journal.phaseroots')) + else: + self.sopener.write('journal.phaseroots', '') return (self.sjoin('journal'), self.join('journal.dirstate'), self.join('journal.branch'), self.join('journal.desc'), - self.join('journal.bookmarks')) + self.join('journal.bookmarks'), + self.sjoin('journal.phaseroots')) def recover(self): lock = self.lock() @@ -805,6 +834,9 @@ if os.path.exists(self.join('undo.bookmarks')): util.rename(self.join('undo.bookmarks'), self.join('bookmarks')) + if os.path.exists(self.sjoin('undo.phaseroots')): + util.rename(self.sjoin('undo.phaseroots'), + self.sjoin('phaseroots')) self.invalidate() parentgone = (parents[0] not in self.changelog.nodemap or @@ -891,6 +923,8 @@ def unlock(): self.store.write() + if self._dirtyphases: + phases.writeroots(self) for k, ce in self._filecache.items(): if k == 'dirstate': continue @@ -1209,6 +1243,8 @@ self.hook('pretxncommit', throw=True, node=hex(n), parent1=xp1, parent2=xp2, pending=p) self.changelog.finalize(trp) + # ensure the new commit is 1-phase + phases.retractboundary(self, 1, [n]) tr.close() if self._branchcache: @@ -1484,6 +1520,7 @@ cg = remote.changegroupsubset(fetch, heads, 'pull') result = self.addchangegroup(cg, 'pull', remote.url(), lock=lock) + phases.advanceboundary(self, 0, common) finally: lock.release() @@ -1518,24 +1555,32 @@ if not unbundle: lock = remote.lock() try: - cg, remote_heads = discovery.prepush(self, remote, force, revs, - newbranch) - ret = remote_heads - if cg is not None: - if unbundle: - # local repo finds heads on server, finds out what - # revs it must push. once revs transferred, if server - # finds it has different heads (someone else won - # commit/push race), server aborts. - if force: - remote_heads = ['force'] - # ssh: return remote's addchangegroup() - # http: return remote's addchangegroup() or 0 for error - ret = remote.unbundle(cg, remote_heads, 'push') - else: - # we return an integer indicating remote head count change - ret = remote.addchangegroup(cg, 'push', self.url(), - lock=lock) + # get local lock as we might write phase data + locallock = self.lock() + try: + cg, remote_heads, fut = discovery.prepush(self, remote, force, + revs, newbranch) + ret = remote_heads + if cg is not None: + if unbundle: + # local repo finds heads on server, finds out what + # revs it must push. once revs transferred, if server + # finds it has different heads (someone else won + # commit/push race), server aborts. + if force: + remote_heads = ['force'] + # ssh: return remote's addchangegroup() + # http: return remote's addchangegroup() or 0 for error + ret = remote.unbundle(cg, remote_heads, 'push') + else: + # we return an integer indicating remote head count change + ret = remote.addchangegroup(cg, 'push', self.url(), + lock=lock) + # if we don't push, the common data is already useful + # everything exchange is public for now + phases.advanceboundary(self, 0, fut) + finally: + locallock.release() finally: if lock is not None: lock.release() @@ -1942,6 +1987,9 @@ node=hex(cl.node(clstart)), source=srctype, url=url, pending=p) + added = [cl.node(r) for r in xrange(clstart, clend)] + if srctype != 'strip': + phases.advanceboundary(self, 0, added) # make changelog see real files again cl.finalize(trp) @@ -1958,9 +2006,8 @@ self.hook("changegroup", node=hex(cl.node(clstart)), source=srctype, url=url) - for i in xrange(clstart, clend): - self.hook("incoming", node=hex(cl.node(i)), - source=srctype, url=url) + for n in added: + self.hook("incoming", node=hex(n), source=srctype, url=url) # never return 0 here: if dh < 0: diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/mdiff.py --- a/mercurial/mdiff.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/mdiff.py Tue Nov 15 14:33:06 2011 -0600 @@ -100,6 +100,9 @@ return "" epoch = util.datestr((0, 0)) + fn1 = util.pconvert(fn1) + fn2 = util.pconvert(fn2) + if not opts.text and (util.binary(a) or util.binary(b)): if a and b and len(a) == len(b) and a == b: return "" diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/phases.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/phases.py Tue Nov 15 14:33:06 2011 -0600 @@ -0,0 +1,102 @@ +# Mercurial phases support code +# +# Copyright 2011 Pierre-Yves David +# Logilab SA +# Augie Fackler +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. + +import errno +from node import nullid, bin, hex, short +from i18n import _ + +allphases = range(2) +trackedphases = allphases[1:] + +def readroots(repo): + """Read phase roots from disk""" + roots = [set() for i in allphases] + roots[0].add(nullid) + try: + f = repo.sopener('phaseroots') + try: + for line in f: + phase, nh = line.strip().split() + roots[int(phase)].add(bin(nh)) + finally: + f.close() + except IOError, inst: + if inst.errno != errno.ENOENT: + raise + return roots + +def writeroots(repo): + """Write phase roots from disk""" + f = repo.sopener('phaseroots', 'w', atomictemp=True) + try: + for phase, roots in enumerate(repo._phaseroots): + for h in roots: + f.write('%i %s\n' % (phase, hex(h))) + repo._dirtyphases = False + finally: + f.close() + +def filterunknown(repo, phaseroots=None): + """remove unknown nodes from the phase boundary + + no data is lost as unknown node only old data for their descentants + """ + if phaseroots is None: + phaseroots = repo._phaseroots + for phase, nodes in enumerate(phaseroots): + missing = [node for node in nodes if node not in repo] + if missing: + for mnode in missing: + msg = _('Removing unknown node %(n)s from %(p)i-phase boundary') + repo.ui.debug(msg, {'n': short(mnode), 'p': phase}) + nodes.symmetric_difference_update(missing) + repo._dirtyphases = True + +def advanceboundary(repo, targetphase, nodes): + """Add nodes to a phase changing other nodes phases if necessary. + + This function move boundary *forward* this means that all nodes are set + in the target phase or kept in a *lower* phase. + + Simplify boundary to contains phase roots only.""" + for phase in xrange(targetphase + 1, len(allphases)): + # filter nodes that are not in a compatible phase already + # XXX rev phase cache might have been invalidated by a previous loop + # XXX we need to be smarter here + nodes = [n for n in nodes if repo[n].phase() >= phase] + if not nodes: + break # no roots to move anymore + roots = repo._phaseroots[phase] + olds = roots.copy() + ctxs = list(repo.set('roots((%ln::) - (%ln::%ln))', olds, olds, nodes)) + roots.clear() + roots.update(ctx.node() for ctx in ctxs) + if olds != roots: + # invalidate cache (we probably could be smarter here + if '_phaserev' in vars(repo): + del repo._phaserev + repo._dirtyphases = True + +def retractboundary(repo, targetphase, nodes): + """Set nodes back to a phase changing other nodes phases if necessary. + + This function move boundary *backward* this means that all nodes are set + in the target phase or kept in a *higher* phase. + + Simplify boundary to contains phase roots only.""" + currentroots = repo._phaseroots[targetphase] + newroots = [n for n in nodes if repo[n].phase() < targetphase] + if newroots: + currentroots.update(newroots) + ctxs = repo.set('roots(%ln::)', currentroots) + currentroots.intersection_update(ctx.node() for ctx in ctxs) + if '_phaserev' in vars(repo): + del repo._phaserev + repo._dirtyphases = True + diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/repair.py --- a/mercurial/repair.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/repair.py Tue Nov 15 14:33:06 2011 -0600 @@ -6,7 +6,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -from mercurial import changegroup, bookmarks +from mercurial import changegroup, bookmarks, phases from mercurial.node import short from mercurial.i18n import _ import os @@ -145,7 +145,9 @@ for m in updatebm: bm[m] = repo['.'].node() bookmarks.write(repo) - + # remove potential unknown phase + # XXX using to_strip data would be faster + phases.filterunknown(repo) except: if backupfile: ui.warn(_("strip failed, full bundle stored in '%s'\n") diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/scmutil.py --- a/mercurial/scmutil.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/scmutil.py Tue Nov 15 14:33:06 2011 -0600 @@ -98,7 +98,7 @@ if p in lparts[1:]: pos = lparts.index(p) base = os.path.join(*parts[:pos]) - raise util.Abort(_('path %r is inside nested repo %r') + raise util.Abort(_("path '%s' is inside nested repo %r") % (path, base)) parts.pop() @@ -123,7 +123,7 @@ elif (stat.S_ISDIR(st.st_mode) and os.path.isdir(os.path.join(curpath, '.hg'))): if not self.callback or not self.callback(curpath): - raise util.Abort(_('path %r is inside nested repo %r') % + raise util.Abort(_("path '%s' is inside nested repo %r") % (path, prefix)) prefixes.append(prefix) parts.pop() diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/subrepo.py --- a/mercurial/subrepo.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/subrepo.py Tue Nov 15 14:33:06 2011 -0600 @@ -353,6 +353,15 @@ unit=_('files'), total=total) ui.progress(_('archiving (%s)') % relpath, None) + def walk(self, match): + ''' + walk recursively through the directory tree, finding all files + matched by the match function + ''' + pass + + def forget(self, files): + pass class hgsubrepo(abstractsubrepo): def __init__(self, ctx, path, state): @@ -543,6 +552,13 @@ ctx = self._repo[rev] return ctx.flags(name) + def walk(self, match): + ctx = self._repo[None] + return ctx.walk(match) + + def forget(self, files): + ctx = self._repo[None] + ctx.forget(files) class svnsubrepo(abstractsubrepo): def __init__(self, ctx, path, state): diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/templatekw.py --- a/mercurial/templatekw.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/templatekw.py Tue Nov 15 14:33:06 2011 -0600 @@ -275,6 +275,10 @@ """ return ctx.hex() +def showphase(repo, ctx, templ, **args): + """:rev: Integer. The changeset phase.""" + return ctx.phase() + def showrev(repo, ctx, templ, **args): """:rev: Integer. The repository-local changeset revision number.""" return ctx.rev() @@ -312,6 +316,7 @@ 'latesttagdistance': showlatesttagdistance, 'manifest': showmanifest, 'node': shownode, + 'phase': showphase, 'rev': showrev, 'tags': showtags, } diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/util.py --- a/mercurial/util.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/util.py Tue Nov 15 14:33:06 2011 -0600 @@ -1497,7 +1497,7 @@ """ _safechars = "!~*'()+" - _safepchars = "/!~*'()+" + _safepchars = "/!~*'()+:" _matchscheme = re.compile(r'^[a-zA-Z0-9+.\-]+:').match def __init__(self, path, parsequery=True, parsefragment=True): @@ -1609,8 +1609,8 @@ Examples: - >>> str(url('http://user:pw@host:80/?foo#bar')) - 'http://user:pw@host:80/?foo#bar' + >>> str(url('http://user:pw@host:80/c:/bob?fo:oo#ba:ar')) + 'http://user:pw@host:80/c:/bob?fo:oo#ba:ar' >>> str(url('http://user:pw@host:80/?foo=bar&baz=42')) 'http://user:pw@host:80/?foo=bar&baz=42' >>> str(url('http://user:pw@host:80/?foo=bar%3dbaz')) diff -r 6eff984d8e76 -r 25ea33fe7e5c mercurial/windows.py --- a/mercurial/windows.py Tue Nov 15 14:25:11 2011 -0600 +++ b/mercurial/windows.py Tue Nov 15 14:33:06 2011 -0600 @@ -26,7 +26,7 @@ unlink = win32.unlink nulldev = 'NUL:' -umask = 002 +umask = 0022 # wrap osutil.posixfile to provide friendlier exceptions def posixfile(name, mode='r', buffering=-1): diff -r 6eff984d8e76 -r 25ea33fe7e5c setup.py --- a/setup.py Tue Nov 15 14:25:11 2011 -0600 +++ b/setup.py Tue Nov 15 14:33:06 2011 -0600 @@ -186,6 +186,12 @@ except ImportError: version = 'unknown' +class hgbuild(build): + # Insert hgbuildmo first so that files in mercurial/locale/ are found + # when build_py is run next. + sub_commands = [('build_mo', None), + ] + build.sub_commands + class hgbuildmo(build): description = "build translations (.mo files)" @@ -217,13 +223,18 @@ self.make_file([pofile], mobuildfile, spawn, (cmd,)) -# Insert hgbuildmo first so that files in mercurial/locale/ are found -# when build_py is run next. -build.sub_commands.insert(0, ('build_mo', None)) +class hgdist(Distribution): + pure = 0 -Distribution.pure = 0 -Distribution.global_options.append(('pure', None, "use pure (slow) Python " - "code instead of C extensions")) + global_options = Distribution.global_options + \ + [('pure', None, "use pure (slow) Python " + "code instead of C extensions"), + ] + + def has_ext_modules(self): + # self.ext_modules is emptied in hgbuildpy.finalize_options which is + # too late for some cases + return not self.pure and Distribution.has_ext_modules(self) class hgbuildext(build_ext): @@ -335,7 +346,8 @@ fp.write(data) fp.close() -cmdclass = {'build_mo': hgbuildmo, +cmdclass = {'build': hgbuild, + 'build_mo': hgbuildmo, 'build_ext': hgbuildext, 'build_py': hgbuildpy, 'build_hgextindex': buildhgextindex, @@ -435,6 +447,7 @@ data_files=datafiles, package_data=packagedata, cmdclass=cmdclass, + distclass=hgdist, options=dict(py2exe=dict(packages=['hgext', 'email']), bdist_mpkg=dict(zipdist=True, license='COPYING', diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/heredoctest.py --- a/tests/heredoctest.py Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/heredoctest.py Tue Nov 15 14:33:06 2011 -0600 @@ -1,16 +1,19 @@ -import doctest, tempfile, os, sys - -if __name__ == "__main__": - if 'TERM' in os.environ: - del os.environ['TERM'] - - fd, name = tempfile.mkstemp(suffix='hg-tst') +import sys - try: - os.write(fd, sys.stdin.read()) - os.close(fd) - failures, _ = doctest.testfile(name, module_relative=False) - if failures: - sys.exit(1) - finally: - os.remove(name) +globalvars = {} +localvars = {} +lines = sys.stdin.readlines() +while lines: + l = lines.pop(0) + if l.startswith('SALT'): + print l[:-1] + elif l.startswith('>>> '): + snippet = l[4:] + while lines and lines[0].startswith('... '): + l = lines.pop(0) + snippet += "\n" + l[4:] + c = compile(snippet, '', 'single') + try: + exec c in globalvars, localvars + except Exception, inst: + print repr(inst) diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/hghave --- a/tests/hghave Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/hghave Tue Nov 15 14:33:06 2011 -0600 @@ -161,7 +161,7 @@ return matchoutput('p4 -V', r'Rev\. P4/') and matchoutput('p4d -V', r'Rev\. P4D/') def has_symlink(): - return hasattr(os, "symlink") + return hasattr(os, "symlink") # FIXME: should also check file system and os def has_tla(): return matchoutput('tla --version 2>&1', r'The GNU Arch Revision') @@ -209,6 +209,15 @@ except ImportError: return False +def has_windows(): + return os.name == 'nt' + +def has_system_sh(): + return os.name != 'nt' + +def has_serve(): + return os.name != 'nt' # gross approximation + checks = { "baz": (has_baz, "GNU Arch baz client"), "bzr": (has_bzr, "Canonical's Bazaar client"), @@ -231,14 +240,17 @@ "p4": (has_p4, "Perforce server and client"), "pyflakes": (has_pyflakes, "Pyflakes python linter"), "pygments": (has_pygments, "Pygments source highlighting library"), + "serve": (has_serve, "platform and python can manage 'hg serve -d'"), "ssl": (has_ssl, "python >= 2.6 ssl module and python OpenSSL"), "svn": (has_svn, "subversion client and admin tools"), "svn13": (has_svn13, "subversion client and admin tools >= 1.3"), "svn15": (has_svn15, "subversion client and admin tools >= 1.5"), "svn-bindings": (has_svn_bindings, "subversion python bindings"), "symlink": (has_symlink, "symbolic links"), + "system-sh": (has_system_sh, "system() uses sh"), "tla": (has_tla, "GNU Arch tla client"), "unix-permissions": (has_unix_permissions, "unix-style permissions"), + "windows": (has_windows, "Windows"), } def list_features(): diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/run-tests.py --- a/tests/run-tests.py Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/run-tests.py Tue Nov 15 14:33:06 2011 -0600 @@ -87,7 +87,7 @@ SKIPPED_STATUS = 80 SKIPPED_PREFIX = 'skipped: ' FAILED_PREFIX = 'hghave check failed: ' -PYTHON = sys.executable +PYTHON = sys.executable.replace('\\', '/') IMPL_PATH = 'PYTHONPATH' if 'java' in sys.platform: IMPL_PATH = 'JYTHONPATH' @@ -521,43 +521,103 @@ def stringescape(s): return escapesub(escapef, s) -def transformtst(lines): - inblock = False - for l in lines: - if inblock: - if l.startswith(' $ ') or not l.startswith(' '): - inblock = False - yield ' > EOF\n' - yield l - else: - yield ' > ' + l[2:] +def rematch(el, l): + try: + # ensure that the regex matches to the end of the string + return re.match(el + r'\Z', l) + except re.error: + # el is an invalid regex + return False + +def globmatch(el, l): + # The only supported special characters are * and ? plus / which also + # matches \ on windows. Escaping of these caracters is supported. + i, n = 0, len(el) + res = '' + while i < n: + c = el[i] + i += 1 + if c == '\\' and el[i] in '*?\\/': + res += el[i - 1:i + 1] + i += 1 + elif c == '*': + res += '.*' + elif c == '?': + res += '.' + elif c == '/' and os.name == 'nt': + res += '[/\\\\]' else: - if l.startswith(' >>> '): - inblock = True - yield ' $ %s -m heredoctest < ' + l[2:] - else: - yield l - if inblock: - yield ' > EOF\n' + res += re.escape(c) + return rematch(res, l) + +def linematch(el, l): + if el == l: # perfect match (fast) + return True + if (el and + (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', l) or + el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', l) or + el.endswith(" (esc)\n") and + (el[:-7].decode('string-escape') + '\n' == l or + el[:-7].decode('string-escape').replace('\r', '') + + '\n' == l and os.name == 'nt'))): + return True + return False def tsttest(test, wd, options, replacements): - t = open(test) - out = [] - script = [] + # We generate a shell script which outputs unique markers to line + # up script results with our source. These markers include input + # line number and the last return code salt = "SALT" + str(time.time()) + def addsalt(line, inpython): + if inpython: + script.append('%s %d 0\n' % (salt, line)) + else: + script.append('echo %s %s $?\n' % (salt, line)) - pos = prepos = -1 + # After we run the shell script, we re-unify the script output + # with non-active parts of the source, with synchronization by our + # SALT line number markers. The after table contains the + # non-active components, ordered by line number after = {} + pos = prepos = -1 + + # Expected shellscript output expected = {} - for n, l in enumerate(transformtst(t)): + + # We keep track of whether or not we're in a Python block so we + # can generate the surrounding doctest magic + inpython = False + + f = open(test) + t = f.readlines() + f.close() + + script = [] + for n, l in enumerate(t): if not l.endswith('\n'): l += '\n' - if l.startswith(' $ '): # commands + if l.startswith(' >>> '): # python inlines after.setdefault(pos, []).append(l) prepos = pos pos = n - script.append('echo %s %s $?\n' % (salt, n)) + if not inpython: + # we've just entered a Python block, add the header + inpython = True + addsalt(prepos, False) # make sure we report the exit code + script.append('%s -m heredoctest < '): # continuations after.setdefault(prepos, []).append(l) @@ -566,21 +626,24 @@ # queue up a list of expected results expected.setdefault(pos, []).append(l[2:]) else: + if inpython: + script.append("EOF\n") + inpython = False # non-command/result - queue up for merged output after.setdefault(pos, []).append(l) - t.close() + if inpython: + script.append("EOF\n") + addsalt(n + 1, False) - script.append('echo %s %s $?\n' % (salt, n + 1)) - + # Write out the script and execute it fd, name = tempfile.mkstemp(suffix='hg-tst') - try: for l in script: os.write(fd, l) os.close(fd) - cmd = '"%s" "%s"' % (options.shell, name) + cmd = '%s "%s"' % (options.shell, name) vlog("# Running", cmd) exitcode, output = run(cmd, wd, options, replacements) # do not merge output if skipped, return hghave message instead @@ -590,32 +653,7 @@ finally: os.remove(name) - def rematch(el, l): - try: - # ensure that the regex matches to the end of the string - return re.match(el + r'\Z', l) - except re.error: - # el is an invalid regex - return False - - def globmatch(el, l): - # The only supported special characters are * and ?. Escaping is - # supported. - i, n = 0, len(el) - res = '' - while i < n: - c = el[i] - i += 1 - if c == '\\' and el[i] in '*?\\': - res += el[i - 1:i + 1] - i += 1 - elif c == '*': - res += '.*' - elif c == '?': - res += '.' - else: - res += re.escape(c) - return rematch(res, l) + # Merge the script output back into a unified test pos = -1 postout = [] @@ -627,20 +665,16 @@ if lout: if lcmd: + # output block had no trailing newline, clean up lout += ' (no-eol)\n' + # find the expected output at the current position el = None if pos in expected and expected[pos]: el = expected[pos].pop(0) - if el == lout: # perfect match (fast) - postout.append(" " + lout) - elif (el and - (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', lout) or - el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', lout) - or el.endswith(" (esc)\n") and - el.decode('string-escape') == l)): - postout.append(" " + el) # fallback regex/glob/esc match + if linematch(el, lout): + postout.append(" " + el) else: if needescape(lout): lout = stringescape(lout.rstrip('\n')) + " (esc)\n" @@ -652,6 +686,7 @@ if ret != 0: postout.append(" [%s]\n" % ret) if pos in after: + # merge in non-active test bits postout += after.pop(pos) pos = int(lcmd.split()[0]) @@ -832,15 +867,26 @@ # Make a tmp subdirectory to work in testtmp = os.environ["TESTTMP"] = os.environ["HOME"] = \ - os.path.join(HGTMP, os.path.basename(test)) + os.path.join(HGTMP, os.path.basename(test)).replace('\\', '/') - os.mkdir(testtmp) - ret, out = runner(testpath, testtmp, options, [ - (re.escape(testtmp), '$TESTTMP'), + replacements = [ (r':%s\b' % options.port, ':$HGPORT'), (r':%s\b' % (options.port + 1), ':$HGPORT1'), (r':%s\b' % (options.port + 2), ':$HGPORT2'), - ]) + ] + if os.name == 'nt': + replacements.append((r'\r\n', '\n')) + replacements.append( + (''.join(c.isalpha() and '[%s%s]' % (c.lower(), c.upper()) or + c in '/\\' and r'[/\\]' or + c.isdigit() and c or + '\\' + c + for c in testtmp), '$TESTTMP')) + else: + replacements.append((re.escape(testtmp), '$TESTTMP')) + + os.mkdir(testtmp) + ret, out = runner(testpath, testtmp, options, replacements) vlog("# Ret was:", ret) mark = '.' @@ -853,7 +899,7 @@ refout = None # to match "out is None" elif os.path.exists(ref): f = open(ref, "r") - refout = list(transformtst(splitnewlines(f.read()))) + refout = list(splitnewlines(f.read())) f.close() else: refout = [] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-add.t --- a/tests/test-add.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-add.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" no-windows || exit 80 + $ hg init a $ cd a $ echo a > a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-addremove-similar.t --- a/tests/test-addremove-similar.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-addremove-similar.t Tue Nov 15 14:33:06 2011 -0600 @@ -81,7 +81,7 @@ $ hg addremove -s80 removing d/a adding d/b - recording removal of d/a as rename to d/b (100% similar) + recording removal of d/a as rename to d/b (100% similar) (glob) $ hg debugstate r 0 0 1970-01-01 00:00:00 d/a a 0 -1 unset d/b @@ -91,10 +91,10 @@ no copies found here (since the target isn't in d $ hg addremove -s80 d - removing d/b + removing d/b (glob) copies here $ hg addremove -s80 adding c - recording removal of d/a as rename to c (100% similar) + recording removal of d/a as rename to c (100% similar) (glob) diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-addremove.t --- a/tests/test-addremove.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-addremove.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" no-windows || exit 80 + $ hg init rep $ cd rep $ mkdir dir diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-alias.t --- a/tests/test-alias.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-alias.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" system-sh || exit 80 + $ HGFOO=BAR; export HGFOO $ cat >> $HGRCPATH < [extensions] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-archive.t --- a/tests/test-archive.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-archive.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + $ hg init test $ cd test $ echo foo>foo diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-audit-path.t --- a/tests/test-audit-path.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-audit-path.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,9 +1,11 @@ + $ "$TESTDIR/hghave" symlink || exit 80 + $ hg init should fail $ hg add .hg/00changelog.i - abort: path contains illegal component: .hg/00changelog.i + abort: path contains illegal component: .hg/00changelog.i (glob) [255] $ mkdir a @@ -16,7 +18,7 @@ should fail $ hg add b/b - abort: path 'b/b' traverses symbolic link 'b' + abort: path 'b/b' traverses symbolic link 'b' (glob) [255] should succeed @@ -26,7 +28,7 @@ should still fail - maybe $ hg add b/b - abort: path 'b/b' traverses symbolic link 'b' + abort: path 'b/b' traverses symbolic link 'b' (glob) [255] unbundle tampered bundle diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-bad-pull.t --- a/tests/test-bad-pull.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-bad-pull.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + $ hg clone http://localhost:$HGPORT/ copy abort: error: Connection refused [255] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-bisect3.t --- a/tests/test-bisect3.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-bisect3.t Tue Nov 15 14:33:06 2011 -0600 @@ -14,15 +14,15 @@ $ hg add a $ hg ci -u test -d '0 0' -m '0' $ echo '1' >a - $ hg ci -u test -d '0 1' -m '1' + $ hg ci -u test -d '1 0' -m '1' branch 2-3 $ echo '2' >b $ hg add b - $ hg ci -u test -d '0 2' -m '2' + $ hg ci -u test -d '2 0' -m '2' $ echo '3' >b - $ hg ci -u test -d '0 3' -m '3' + $ hg ci -u test -d '3 0' -m '3' branch 4-8 @@ -30,30 +30,30 @@ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo '4' >c $ hg add c - $ hg ci -u test -d '0 4' -m '4' + $ hg ci -u test -d '4 0' -m '4' created new head $ echo '5' >c - $ hg ci -u test -d '0 5' -m '5' + $ hg ci -u test -d '5 0' -m '5' $ echo '6' >c - $ hg ci -u test -d '0 6' -m '6' + $ hg ci -u test -d '6 0' -m '6' $ echo '7' >c - $ hg ci -u test -d '0 7' -m '7' + $ hg ci -u test -d '7 0' -m '7' $ echo '8' >c - $ hg ci -u test -d '0 8' -m '8' + $ hg ci -u test -d '8 0' -m '8' merge $ hg merge -r 3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) - $ hg ci -u test -d '0 9' -m '9=8+3' + $ hg ci -u test -d '9 0' -m '9=8+3' $ echo '10' >a - $ hg ci -u test -d '0 10' -m '10' + $ hg ci -u test -d '10 0' -m '10' $ echo '11' >a - $ hg ci -u test -d '0 11' -m '11' + $ hg ci -u test -d '11 0' -m '11' $ echo '12' >a - $ hg ci -u test -d '0 12' -m '12' + $ hg ci -u test -d '12 0' -m '12' unrelated branch @@ -61,10 +61,10 @@ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo '13' >d $ hg add d - $ hg ci -u test -d '0 13' -m '13' + $ hg ci -u test -d '13 0' -m '13' created new head $ echo '14' >d - $ hg ci -u test -d '0 14' -m '14' + $ hg ci -u test -d '14 0' -m '14' mark changesets @@ -72,140 +72,140 @@ $ hg bisect --good 4 $ hg bisect --good 6 $ hg bisect --bad 12 - Testing changeset 9:8bcbdb072033 (6 changesets remaining, ~2 tests) + Testing changeset 9:2197c557e14c (6 changesets remaining, ~2 tests) 1 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg bisect --bad 10 - Testing changeset 8:3cd112f87d77 (4 changesets remaining, ~2 tests) + Testing changeset 8:e74a86251f58 (4 changesets remaining, ~2 tests) 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg bisect --skip 7 - Testing changeset 8:3cd112f87d77 (4 changesets remaining, ~2 tests) + Testing changeset 8:e74a86251f58 (4 changesets remaining, ~2 tests) 0 files updated, 0 files merged, 0 files removed, 0 files unresolved test template $ hg log --template '{rev}:{node|short} {bisect}\n' - 14:cecd84203acc - 13:86f7c8cdb6df - 12:a76089b5f47c bad - 11:5c3eb122d29c bad (implicit) - 10:b097cef2be03 bad - 9:8bcbdb072033 untested - 8:3cd112f87d77 untested - 7:577e237a73bd skipped - 6:e597fa2707c5 good - 5:b9cea37a76bc good (implicit) - 4:da6b357259d7 good - 3:e7f031aee8ca ignored - 2:b1ad1b6bcc5c ignored - 1:37f42ae8b45e good (implicit) + 14:cbf2f3105bbf + 13:e07efca37c43 + 12:98c6b56349c0 bad + 11:03f491376e63 bad (implicit) + 10:c012b15e2409 bad + 9:2197c557e14c untested + 8:e74a86251f58 untested + 7:a5f87041c899 skipped + 6:7d997bedcd8d good + 5:2dd1875f1028 good (implicit) + 4:2a1daef14cd4 good + 3:8417d459b90c ignored + 2:e1355ee1f23e ignored + 1:ce7c85e06a9f good (implicit) 0:b4e73ffab476 good (implicit) $ hg log --template '{bisect|shortbisect} {rev}:{node|short}\n' - 14:cecd84203acc - 13:86f7c8cdb6df - B 12:a76089b5f47c - B 11:5c3eb122d29c - B 10:b097cef2be03 - U 9:8bcbdb072033 - U 8:3cd112f87d77 - S 7:577e237a73bd - G 6:e597fa2707c5 - G 5:b9cea37a76bc - G 4:da6b357259d7 - I 3:e7f031aee8ca - I 2:b1ad1b6bcc5c - G 1:37f42ae8b45e + 14:cbf2f3105bbf + 13:e07efca37c43 + B 12:98c6b56349c0 + B 11:03f491376e63 + B 10:c012b15e2409 + U 9:2197c557e14c + U 8:e74a86251f58 + S 7:a5f87041c899 + G 6:7d997bedcd8d + G 5:2dd1875f1028 + G 4:2a1daef14cd4 + I 3:8417d459b90c + I 2:e1355ee1f23e + G 1:ce7c85e06a9f G 0:b4e73ffab476 test style $ hg log --style bisect - changeset: 14:cecd84203acc + changeset: 14:cbf2f3105bbf bisect: tag: tip user: test - date: Wed Dec 31 23:59:46 1969 -0000 + date: Thu Jan 01 00:00:14 1970 +0000 summary: 14 - changeset: 13:86f7c8cdb6df + changeset: 13:e07efca37c43 bisect: - parent: 3:e7f031aee8ca + parent: 3:8417d459b90c user: test - date: Wed Dec 31 23:59:47 1969 -0000 + date: Thu Jan 01 00:00:13 1970 +0000 summary: 13 - changeset: 12:a76089b5f47c + changeset: 12:98c6b56349c0 bisect: bad user: test - date: Wed Dec 31 23:59:48 1969 -0000 + date: Thu Jan 01 00:00:12 1970 +0000 summary: 12 - changeset: 11:5c3eb122d29c + changeset: 11:03f491376e63 bisect: bad (implicit) user: test - date: Wed Dec 31 23:59:49 1969 -0000 + date: Thu Jan 01 00:00:11 1970 +0000 summary: 11 - changeset: 10:b097cef2be03 + changeset: 10:c012b15e2409 bisect: bad user: test - date: Wed Dec 31 23:59:50 1969 -0000 + date: Thu Jan 01 00:00:10 1970 +0000 summary: 10 - changeset: 9:8bcbdb072033 + changeset: 9:2197c557e14c bisect: untested - parent: 8:3cd112f87d77 - parent: 3:e7f031aee8ca + parent: 8:e74a86251f58 + parent: 3:8417d459b90c user: test - date: Wed Dec 31 23:59:51 1969 -0000 + date: Thu Jan 01 00:00:09 1970 +0000 summary: 9=8+3 - changeset: 8:3cd112f87d77 + changeset: 8:e74a86251f58 bisect: untested user: test - date: Wed Dec 31 23:59:52 1969 -0000 + date: Thu Jan 01 00:00:08 1970 +0000 summary: 8 - changeset: 7:577e237a73bd + changeset: 7:a5f87041c899 bisect: skipped user: test - date: Wed Dec 31 23:59:53 1969 -0000 + date: Thu Jan 01 00:00:07 1970 +0000 summary: 7 - changeset: 6:e597fa2707c5 + changeset: 6:7d997bedcd8d bisect: good user: test - date: Wed Dec 31 23:59:54 1969 -0000 + date: Thu Jan 01 00:00:06 1970 +0000 summary: 6 - changeset: 5:b9cea37a76bc + changeset: 5:2dd1875f1028 bisect: good (implicit) user: test - date: Wed Dec 31 23:59:55 1969 -0000 + date: Thu Jan 01 00:00:05 1970 +0000 summary: 5 - changeset: 4:da6b357259d7 + changeset: 4:2a1daef14cd4 bisect: good - parent: 1:37f42ae8b45e + parent: 1:ce7c85e06a9f user: test - date: Wed Dec 31 23:59:56 1969 -0000 + date: Thu Jan 01 00:00:04 1970 +0000 summary: 4 - changeset: 3:e7f031aee8ca + changeset: 3:8417d459b90c bisect: ignored user: test - date: Wed Dec 31 23:59:57 1969 -0000 + date: Thu Jan 01 00:00:03 1970 +0000 summary: 3 - changeset: 2:b1ad1b6bcc5c + changeset: 2:e1355ee1f23e bisect: ignored user: test - date: Wed Dec 31 23:59:58 1969 -0000 + date: Thu Jan 01 00:00:02 1970 +0000 summary: 2 - changeset: 1:37f42ae8b45e + changeset: 1:ce7c85e06a9f bisect: good (implicit) user: test - date: Wed Dec 31 23:59:59 1969 -0000 + date: Thu Jan 01 00:00:01 1970 +0000 summary: 1 changeset: 0:b4e73ffab476 @@ -215,18 +215,18 @@ summary: 0 $ hg log --quiet --style bisect - 14:cecd84203acc - 13:86f7c8cdb6df - B 12:a76089b5f47c - B 11:5c3eb122d29c - B 10:b097cef2be03 - U 9:8bcbdb072033 - U 8:3cd112f87d77 - S 7:577e237a73bd - G 6:e597fa2707c5 - G 5:b9cea37a76bc - G 4:da6b357259d7 - I 3:e7f031aee8ca - I 2:b1ad1b6bcc5c - G 1:37f42ae8b45e + 14:cbf2f3105bbf + 13:e07efca37c43 + B 12:98c6b56349c0 + B 11:03f491376e63 + B 10:c012b15e2409 + U 9:2197c557e14c + U 8:e74a86251f58 + S 7:a5f87041c899 + G 6:7d997bedcd8d + G 5:2dd1875f1028 + G 4:2a1daef14cd4 + I 3:8417d459b90c + I 2:e1355ee1f23e + G 1:ce7c85e06a9f G 0:b4e73ffab476 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-bookmarks-pushpull.t --- a/tests/test-bookmarks-pushpull.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-bookmarks-pushpull.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + initialize $ hg init a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-clone-failure.t --- a/tests/test-clone-failure.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-clone-failure.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 + No local source $ hg clone a b diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-clone-pull-corruption.t --- a/tests/test-clone-pull-corruption.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-clone-pull-corruption.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" system-sh || exit 80 + Corrupt an hg repo with a pull started during an aborted commit Create two repos, so that one of them can pull from the other one. diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-command-template.t --- a/tests/test-command-template.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-command-template.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 + $ hg init a $ cd a $ echo a > a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-commit.t --- a/tests/test-commit.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-commit.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink || exit 80 + commit date test $ hg init test @@ -43,7 +45,7 @@ $ mkdir dir $ echo boo > dir/file $ hg add - adding dir/file + adding dir/file (glob) $ hg -v commit -m commit-9 dir dir/file committed changeset 2:d2a76177cb42 @@ -113,8 +115,8 @@ $ mkdir bar $ echo bar > bar/bar $ hg add - adding bar/bar - adding foo/foo + adding bar/bar (glob) + adding foo/foo (glob) $ hg ci -m commit-subdir-1 foo $ hg ci -m commit-subdir-2 bar diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-contrib.t --- a/tests/test-contrib.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-contrib.t Tue Nov 15 14:33:06 2011 -0600 @@ -107,7 +107,7 @@ Test shrink-revlog: $ cd repo-a $ hg --config extensions.shrink=$CONTRIBDIR/shrink-revlog.py shrink - shrinking $TESTTMP/repo-a/.hg/store/00manifest.i + shrinking $TESTTMP/repo-a/.hg/store/00manifest.i (glob) reading revs sorting revs writing revs @@ -115,8 +115,8 @@ new file size: 324 bytes ( 0.0 MiB) shrinkage: 0.0% (1.0x) note: old revlog saved in: - $TESTTMP/repo-a/.hg/store/00manifest.i.old - $TESTTMP/repo-a/.hg/store/00manifest.d.old + $TESTTMP/repo-a/.hg/store/00manifest.i.old (glob) + $TESTTMP/repo-a/.hg/store/00manifest.d.old (glob) (You can delete those files when you are satisfied that your repository is still sane. Running 'hg verify' is strongly recommended.) $ hg verify diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-convert-authormap.t --- a/tests/test-convert-authormap.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-convert-authormap.t Tue Nov 15 14:33:06 2011 -0600 @@ -27,7 +27,7 @@ sorting... converting... 0 foo - Writing author map file $TESTTMP/new/.hg/authormap + Writing author map file $TESTTMP/new/.hg/authormap (glob) $ cat new/.hg/authormap user name=Long User Name $ hg -Rnew log @@ -44,7 +44,7 @@ $ hg init new $ mv authormap.txt new/.hg/authormap $ hg convert orig new - Ignoring bad line in author map file $TESTTMP/new/.hg/authormap: this line is ignored + Ignoring bad line in author map file $TESTTMP/new/.hg/authormap: this line is ignored (glob) scanning source... sorting... converting... diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-convert-bzr.t --- a/tests/test-convert-bzr.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-convert-bzr.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" symlink execbit || exit 80 $ . "$TESTDIR/bzr-definitions" diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-convert-hg-source.t --- a/tests/test-convert-hg-source.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-convert-hg-source.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" execbit || exit 80 $ cat >> $HGRCPATH < [extensions] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-convert-svn-sink.t --- a/tests/test-convert-svn-sink.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-convert-svn-sink.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,5 +1,4 @@ - - $ "$TESTDIR/hghave" svn13 no-outer-repo || exit 80 + $ "$TESTDIR/hghave" svn13 no-outer-repo symlink execbit || exit 80 $ fixpath() > { diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-convert-tla.t --- a/tests/test-convert-tla.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-convert-tla.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,5 +1,5 @@ - $ "$TESTDIR/hghave" tla || exit 80 + $ "$TESTDIR/hghave" tla symlink || exit 80 $ tla my-id "mercurial " $ echo "[extensions]" >> $HGRCPATH $ echo "convert=" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-convert.t --- a/tests/test-convert.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-convert.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 $ cat >> $HGRCPATH < [extensions] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-default-push.t --- a/tests/test-default-push.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-default-push.t Tue Nov 15 14:33:06 2011 -0600 @@ -18,7 +18,7 @@ Push should push to 'default' when 'default-push' not set: $ hg --cwd b push - pushing to $TESTTMP/a + pushing to $TESTTMP/a (glob) searching for changes adding changesets adding manifests @@ -29,7 +29,7 @@ $ echo 'default-push = ../c' >> b/.hg/hgrc $ hg --cwd b push - pushing to $TESTTMP/c + pushing to $TESTTMP/c (glob) searching for changes adding changesets adding manifests diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-diff-color.t --- a/tests/test-diff-color.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-diff-color.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + Setup $ echo "[color]" >> $HGRCPATH @@ -74,7 +76,7 @@ record - $ chmod 0755 a + $ chmod +x a $ hg record --color=always -m moda a < y > y diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-diff-upgrade.t --- a/tests/test-diff-upgrade.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-diff-upgrade.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" execbit || exit 80 $ echo "[extensions]" >> $HGRCPATH $ echo "autodiff=$TESTDIR/autodiff.py" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-dirstate.t --- a/tests/test-dirstate.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-dirstate.t Tue Nov 15 14:33:06 2011 -0600 @@ -11,9 +11,9 @@ adding a/b/c/d/y adding a/b/c/d/z $ hg mv a z - moving a/b/c/d/x to z/b/c/d/x - moving a/b/c/d/y to z/b/c/d/y - moving a/b/c/d/z to z/b/c/d/z + moving a/b/c/d/x to z/b/c/d/x (glob) + moving a/b/c/d/y to z/b/c/d/y (glob) + moving a/b/c/d/z to z/b/c/d/z (glob) $ cd .. Issue1790: dirstate entry locked into unset if file mtime is set into diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-eol.t --- a/tests/test-eol.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-eol.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 + Test EOL extension $ cat >> $HGRCPATH <> $HGRCPATH $ echo "extdiff=" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-extension.t --- a/tests/test-extension.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-extension.t Tue Nov 15 14:33:06 2011 -0600 @@ -473,7 +473,7 @@ > cmdtable = None > EOF $ hg --config extensions.path=./path.py help foo > /dev/null - warning: error finding commands in $TESTTMP/hgext/forest.py + warning: error finding commands in $TESTTMP/hgext/forest.py (glob) hg: unknown command 'foo' - warning: error finding commands in $TESTTMP/hgext/forest.py + warning: error finding commands in $TESTTMP/hgext/forest.py (glob) [255] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-fetch.t --- a/tests/test-fetch.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-fetch.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + $ echo "[extensions]" >> $HGRCPATH $ echo "fetch=" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-flags.t --- a/tests/test-flags.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-flags.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + $ umask 027 $ hg init test1 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-fncache.t --- a/tests/test-fncache.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-fncache.t Tue Nov 15 14:33:06 2011 -0600 @@ -14,7 +14,7 @@ $ mkdir a.i $ echo "some other text" > a.i/b $ hg add - adding a.i/b + adding a.i/b (glob) $ hg ci -m second $ cat .hg/store/fncache | sort data/a.i @@ -25,7 +25,7 @@ $ mkdir a.i.hg $ echo "yet another text" > a.i.hg/c $ hg add - adding a.i.hg/c + adding a.i.hg/c (glob) $ hg ci -m third $ cat .hg/store/fncache | sort data/a.i @@ -74,12 +74,14 @@ .hg/data/tst.d.hg/foo.i .hg/dirstate .hg/last-message.txt + .hg/phaseroots .hg/requires .hg/undo .hg/undo.bookmarks .hg/undo.branch .hg/undo.desc .hg/undo.dirstate + .hg/undo.phaseroots $ cd .. Non fncache repo: @@ -102,7 +104,9 @@ .hg/store/data .hg/store/data/tst.d.hg .hg/store/data/tst.d.hg/_foo.i + .hg/store/phaseroots .hg/store/undo + .hg/store/undo.phaseroots .hg/undo.bookmarks .hg/undo.branch .hg/undo.desc diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-getbundle.t --- a/tests/test-getbundle.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-getbundle.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 = Test the getbundle() protocol function = diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-git-export.t --- a/tests/test-git-export.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-git-export.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + $ hg init $ echo start > start $ hg ci -Amstart diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hardlinks.t --- a/tests/test-hardlinks.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hardlinks.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" no-windows || exit 80 + $ cat > nlinks.py < import os, sys > for f in sorted(sys.stdin.readlines()): @@ -45,7 +47,9 @@ 1 r1/.hg/store/data/d1/f2.i 1 r1/.hg/store/data/f1.i 1 r1/.hg/store/fncache + 1 r1/.hg/store/phaseroots 1 r1/.hg/store/undo + 1 r1/.hg/store/undo.phaseroots Create hardlinked clone r2: @@ -73,7 +77,9 @@ 2 r1/.hg/store/data/d1/f2.i 2 r1/.hg/store/data/f1.i 2 r1/.hg/store/fncache + 1 r1/.hg/store/phaseroots 1 r1/.hg/store/undo + 1 r1/.hg/store/undo.phaseroots $ nlinksdir r2/.hg/store 2 r2/.hg/store/00changelog.i @@ -91,6 +97,7 @@ 1 r3/.hg/store/data/f1.i 1 r3/.hg/store/fncache 1 r3/.hg/store/undo + 1 r3/.hg/store/undo.phaseroots Create a non-inlined filelog in r3: @@ -110,7 +117,9 @@ 1 r3/.hg/store/data/d1/f2.i 1 r3/.hg/store/data/f1.i 1 r3/.hg/store/fncache + 1 r3/.hg/store/phaseroots 1 r3/.hg/store/undo + 1 r3/.hg/store/undo.phaseroots Push to repo r1 should break up most hardlinks in r2: @@ -193,7 +202,9 @@ 2 r4/.hg/store/data/d1/f2.i 2 r4/.hg/store/data/f1.i 2 r4/.hg/store/fncache + 2 r4/.hg/store/phaseroots 2 r4/.hg/store/undo + 2 r4/.hg/store/undo.phaseroots 2 r4/.hg/undo.bookmarks 2 r4/.hg/undo.branch 2 r4/.hg/undo.desc @@ -222,7 +233,9 @@ 2 r4/.hg/store/data/d1/f2.i 2 r4/.hg/store/data/f1.i 2 r4/.hg/store/fncache + 2 r4/.hg/store/phaseroots 2 r4/.hg/store/undo + 2 r4/.hg/store/undo.phaseroots 2 r4/.hg/undo.bookmarks 2 r4/.hg/undo.branch 2 r4/.hg/undo.desc diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgignore.t --- a/tests/test-hgignore.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgignore.t Tue Nov 15 14:33:06 2011 -0600 @@ -44,7 +44,7 @@ $ echo "*.o" > .hgignore $ hg status - abort: $TESTTMP/.hgignore: invalid pattern (relre): *.o + abort: $TESTTMP/.hgignore: invalid pattern (relre): *.o (glob) [255] $ echo ".*\.o" > .hgignore @@ -88,7 +88,7 @@ $ echo "syntax: invalid" > .hgignore $ hg status - $TESTTMP/.hgignore: ignoring invalid syntax 'invalid' + $TESTTMP/.hgignore: ignoring invalid syntax 'invalid' (glob) A dir/b.o ? .hgignore ? a.c diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgrc.t --- a/tests/test-hgrc.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgrc.t Tue Nov 15 14:33:06 2011 -0600 @@ -26,12 +26,12 @@ $ cd foobar $ cat .hg/hgrc [paths] - default = $TESTTMP/foo%bar + default = $TESTTMP/foo%bar (glob) $ hg paths - default = $TESTTMP/foo%bar + default = $TESTTMP/foo%bar (glob) $ hg showconfig - bundle.mainreporoot=$TESTTMP/foobar - paths.default=$TESTTMP/foo%bar + bundle.mainreporoot=$TESTTMP/foobar (glob) + paths.default=$TESTTMP/foo%bar (glob) $ cd .. issue1829: wrong indentation diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-commands.t --- a/tests/test-hgweb-commands.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-commands.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + An attempt at more fully testing the hgweb web interface. The following things are tested elsewhere and are therefore omitted: - archive, tested in test-archive diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-descend-empties.t --- a/tests/test-hgweb-descend-empties.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-descend-empties.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Test chains of near empty directories, terminating 3 different ways: - a1: file at level 4 (deepest) - b1: two dirs at level 3 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-diffs.t --- a/tests/test-hgweb-diffs.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-diffs.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve execbit || exit 80 + setting up repo $ hg init test @@ -10,7 +12,7 @@ change permissions for git diffs - $ chmod 755 a + $ chmod +x a $ hg ci -Amb set up hgweb diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-empty.t --- a/tests/test-hgweb-empty.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-empty.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Some tests for hgweb in an empty repository $ hg init test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-filelog.t --- a/tests/test-hgweb-filelog.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-filelog.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hg init test $ cd test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-raw.t --- a/tests/test-hgweb-raw.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-raw.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Test raw style of hgweb $ hg init test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb-removed.t --- a/tests/test-hgweb-removed.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb-removed.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + setting up repo $ hg init test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgweb.t --- a/tests/test-hgweb.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgweb.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Some tests for hgweb. Tests static files, plain files and different 404's. $ hg init test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgwebdir.t --- a/tests/test-hgwebdir.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgwebdir.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Tests some basic hgwebdir functionality. Tests setting up paths and collection, different forms of 404s and the subdirectory support. diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hgwebdirsym.t --- a/tests/test-hgwebdirsym.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hgwebdirsym.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,6 +1,6 @@ Tests whether or not hgwebdir properly handles various symlink topologies. - $ "$TESTDIR/hghave" symlink || exit 80 + $ "$TESTDIR/hghave" serve symlink || exit 80 $ hg init a $ echo a > a/a $ hg --cwd a ci -Ama -d'1 0' diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-highlight.t --- a/tests/test-highlight.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-highlight.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,5 +1,5 @@ - $ "$TESTDIR/hghave" pygments || exit 80 + $ "$TESTDIR/hghave" pygments serve || exit 80 $ cat <> $HGRCPATH > [extensions] > highlight = diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hook.t --- a/tests/test-hook.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hook.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" system-sh || exit 80 + commit hooks can see env vars $ hg init a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-http-branchmap.t --- a/tests/test-http-branchmap.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-http-branchmap.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hgserve() { > hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -E errors.log -v $@ diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-http-clone-r.t --- a/tests/test-http-clone-r.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-http-clone-r.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + creating 'remote $ hg init remote diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-http-proxy.t --- a/tests/test-http-proxy.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-http-proxy.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hg init a $ cd a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-http.t --- a/tests/test-http.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-http.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hg init test $ cd test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-https.t --- a/tests/test-https.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-https.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,6 +1,6 @@ Proper https client requires the built-in ssl from Python 2.6. - $ "$TESTDIR/hghave" ssl || exit 80 + $ "$TESTDIR/hghave" serve ssl || exit 80 Certificates created with: printf '.\n.\n.\n.\n.\nlocalhost\nhg@localhost\n' | \ diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-hup.t --- a/tests/test-hup.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-hup.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,6 +1,6 @@ Test hangup signal in the middle of transaction - $ "$TESTDIR/hghave" fifo || exit 80 + $ "$TESTDIR/hghave" serve fifo || exit 80 $ hg init $ mkfifo p $ hg serve --stdio < p & @@ -17,4 +17,4 @@ rollback completed killed! $ echo .hg/* .hg/store/* - .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a + .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a .hg/store/journal.phaseroots diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-identify.t --- a/tests/test-identify.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-identify.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,4 +1,4 @@ - $ "$TESTDIR/hghave" no-outer-repo || exit 80 + $ "$TESTDIR/hghave" no-outer-repo serve || exit 80 no repo diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-import-bypass.t --- a/tests/test-import-bypass.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-import-bypass.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink execbit || exit 80 + $ echo "[extensions]" >> $HGRCPATH $ echo "purge=" >> $HGRCPATH $ echo "graphlog=" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-import-git.t --- a/tests/test-import-git.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-import-git.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" symlink || exit 80 $ hg init diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-incoming-outgoing.t --- a/tests/test-incoming-outgoing.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-incoming-outgoing.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + $ hg init test $ cd test $ for i in 0 1 2 3 4 5 6 7 8; do diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-inherit-mode.t --- a/tests/test-inherit-mode.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-inherit-mode.t Tue Nov 15 14:33:06 2011 -0600 @@ -76,7 +76,9 @@ 00660 ./.hg/store/data/dir/bar.i 00660 ./.hg/store/data/foo.i 00660 ./.hg/store/fncache + 00660 ./.hg/store/phaseroots 00660 ./.hg/store/undo + 00660 ./.hg/store/undo.phaseroots 00660 ./.hg/undo.bookmarks 00660 ./.hg/undo.branch 00660 ./.hg/undo.desc @@ -118,6 +120,7 @@ 00660 ../push/.hg/store/data/foo.i 00660 ../push/.hg/store/fncache 00660 ../push/.hg/store/undo + 00660 ../push/.hg/store/undo.phaseroots 00660 ../push/.hg/undo.bookmarks 00660 ../push/.hg/undo.branch 00660 ../push/.hg/undo.desc diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-init.t --- a/tests/test-init.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-init.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" no-windows || exit 80 + This test tries to exercise the ssh functionality with a dummy script $ checknewrepo() diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-install.t --- a/tests/test-install.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-install.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,8 +1,8 @@ hg debuginstall $ hg debuginstall Checking encoding (ascii)... - Checking installed modules (*/mercurial)... (glob) - Checking templates (*/mercurial/templates)... (glob) + Checking installed modules (*mercurial)... (glob) + Checking templates (*mercurial?templates)... (glob) Checking commit editor... Checking username... No problems detected @@ -10,8 +10,8 @@ hg debuginstall with no username $ HGUSER= hg debuginstall Checking encoding (ascii)... - Checking installed modules (*/mercurial)... (glob) - Checking templates (*/mercurial/templates)... (glob) + Checking installed modules (*mercurial)... (glob) + Checking templates (*mercurial?templates)... (glob) Checking commit editor... Checking username... no username supplied (see "hg help config") diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-interhg.t --- a/tests/test-interhg.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-interhg.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + $ hg init test $ cd test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-issue1089.t --- a/tests/test-issue1089.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-issue1089.t Tue Nov 15 14:33:06 2011 -0600 @@ -7,7 +7,7 @@ adding a/b $ hg rm a - removing a/b + removing a/b (glob) $ hg ci -m m a $ mkdir a b @@ -16,7 +16,7 @@ adding a/b $ hg rm a - removing a/b + removing a/b (glob) $ cd b Relative delete: diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-issue1502.t --- a/tests/test-issue1502.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-issue1502.t Tue Nov 15 14:33:06 2011 -0600 @@ -13,7 +13,7 @@ $ echo "bar" > foo1/a && hg -R foo1 commit -m "edit a in foo1" $ echo "hi" > foo/a && hg -R foo commit -m "edited a foo" $ hg -R foo1 pull -u - pulling from $TESTTMP/foo + pulling from $TESTTMP/foo (glob) searching for changes adding changesets adding manifests @@ -29,7 +29,7 @@ $ echo "there" >> foo/a && hg -R foo commit -m "edited a again" $ hg -R foo1 pull - pulling from $TESTTMP/foo + pulling from $TESTTMP/foo (glob) searching for changes adding changesets adding manifests diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-issue1802.t --- a/tests/test-issue1802.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-issue1802.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + Create extension that can disable exec checks: $ cat > noexec.py < a $ hg ci -Am0 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-keyword.t --- a/tests/test-keyword.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-keyword.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80 + $ cat <> $HGRCPATH > [extensions] > keyword = @@ -208,7 +210,7 @@ Message-Id: (glob) To: Test - changeset a2392c293916 in $TESTTMP/Test + changeset a2392c293916 in $TESTTMP/Test (glob) details: $TESTTMP/Test?cmd=changeset;node=a2392c293916 description: addsym @@ -231,7 +233,7 @@ Message-Id: (glob) To: Test - changeset ef63ca68695b in $TESTTMP/Test + changeset ef63ca68695b in $TESTTMP/Test (glob) details: $TESTTMP/Test?cmd=changeset;node=ef63ca68695b description: absym @@ -797,7 +799,7 @@ > default = ../Test > EOF $ hg incoming - comparing with $TESTTMP/Test + comparing with $TESTTMP/Test (glob) searching for changes changeset: 2:bb948857c743 tag: tip diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-known.t --- a/tests/test-known.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-known.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 = Test the known() protocol function = diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-largefiles.t --- a/tests/test-largefiles.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-largefiles.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80 + $ cat >> $HGRCPATH < [extensions] > largefiles= @@ -183,8 +185,8 @@ $ echo large6 > sub2/large6 $ echo large7 > sub2/large7 $ hg add --large sub2 - adding sub2/large6 as a largefile - adding sub2/large7 as a largefile + adding sub2/large6 as a largefile (glob) + adding sub2/large7 as a largefile (glob) $ hg st M large3 A large5 @@ -348,7 +350,7 @@ added 1 changesets with 2 changes to 2 files (+1 heads) getting changed largefiles 1 largefiles updated, 0 removed - saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg + saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob) nothing to rebase $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 9:598410d3eb9a modify normal file largefile in repo d @@ -383,7 +385,7 @@ $ hg rebase getting changed largefiles 1 largefiles updated, 0 removed - saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg + saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg (glob) $ hg log changeset: 9:598410d3eb9a tag: tip @@ -553,8 +555,8 @@ # XXX we don't really want to report that we're reverting the standin; # that's just an implementation detail. But I don't see an obvious fix. ;-( $ hg revert sub - reverting .hglf/sub/large4 - reverting sub/normal4 + reverting .hglf/sub/large4 (glob) + reverting sub/normal4 (glob) $ hg status M normal3 A sub2/large8 @@ -566,8 +568,8 @@ $ cat sub/large4 large4-modified $ hg revert -a --no-backup - undeleting .hglf/sub2/large6 - forgetting .hglf/sub2/large8 + undeleting .hglf/sub2/large6 (glob) + forgetting .hglf/sub2/large8 (glob) reverting normal3 $ hg status ? sub/large4.orig @@ -581,11 +583,11 @@ revert some files to an older revision $ hg revert --no-backup -r 8 sub2 - reverting .hglf/sub2/large6 + reverting .hglf/sub2/large6 (glob) $ cat sub2/large6 large6 $ hg revert --no-backup sub2 - reverting .hglf/sub2/large6 + reverting .hglf/sub2/large6 (glob) $ hg status "verify --large" actually verifies largefiles diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-lfconvert.t --- a/tests/test-lfconvert.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-lfconvert.t Tue Nov 15 14:33:06 2011 -0600 @@ -83,7 +83,7 @@ $ hg commit -q -m"remove large, normal3" $ hg merge merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat - warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. + warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob) merging stuff/maybelarge.dat failed! merging sub/normal2 and stuff/normal2 to stuff/normal2 0 files updated, 1 files merged, 0 files removed, 1 files unresolved @@ -170,7 +170,7 @@ $ hg share -q -U bigfile-repo shared $ printf 'bogus' > shared/.hg/sharedpath $ hg lfconvert shared foo - abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! + abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! (glob) [255] $ hg lfconvert bigfile-repo largefiles-repo initializing destination largefiles-repo diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-locate.t --- a/tests/test-locate.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-locate.t Tue Nov 15 14:33:06 2011 -0600 @@ -88,33 +88,33 @@ $ rm -r t $ hg locate 't/**' - t/b - t/e.h - t/x + t/b (glob) + t/e.h (glob) + t/x (glob) $ mkdir otherdir $ cd otherdir $ hg locate b - ../b - ../t/b + ../b (glob) + ../t/b (glob) $ hg locate '*.h' - ../t.h - ../t/e.h + ../t.h (glob) + ../t/e.h (glob) $ hg locate path:t/x - ../t/x + ../t/x (glob) $ hg locate 're:.*\.h$' - ../t.h - ../t/e.h + ../t.h (glob) + ../t/e.h (glob) $ hg locate -r 0 b - ../b - ../t/b + ../b (glob) + ../t/b (glob) $ hg locate -r 0 '*.h' - ../t.h - ../t/e.h + ../t.h (glob) + ../t/e.h (glob) $ hg locate -r 0 path:t/x - ../t/x + ../t/x (glob) $ hg locate -r 0 're:.*\.h$' - ../t.h - ../t/e.h + ../t.h (glob) + ../t/e.h (glob) diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-lock-badness.t --- a/tests/test-lock-badness.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-lock-badness.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 + $ hg init a $ echo a > a/a $ hg -R a ci -A -m a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-log.t --- a/tests/test-log.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-log.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + $ hg init a $ cd a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-manifest.t --- a/tests/test-manifest.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-manifest.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink || exit 80 + Source bundle was generated with the following script: # hg init diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-merge-symlinks.t --- a/tests/test-merge-symlinks.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-merge-symlinks.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" symlink || exit 80 $ cat > echo.py < #!/usr/bin/env python diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-merge-types.t --- a/tests/test-merge-types.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-merge-types.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink execbit || exit 80 + $ hg init $ echo a > a diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mq-merge.t --- a/tests/test-mq-merge.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mq-merge.t Tue Nov 15 14:33:06 2011 -0600 @@ -56,7 +56,7 @@ Save the patch queue so we can merge it later: $ hg qsave -c -e - copy $TESTTMP/t/.hg/patches to $TESTTMP/t/.hg/patches.1 + copy $TESTTMP/t/.hg/patches to $TESTTMP/t/.hg/patches.1 (glob) $ checkundo Update b and commit in an "update" changeset: @@ -76,7 +76,7 @@ b $ hg qpush -a -m - merging with queue at: $TESTTMP/t/.hg/patches.1 + merging with queue at: $TESTTMP/t/.hg/patches.1 (glob) applying rm_a now at: rm_a @@ -115,14 +115,14 @@ Create the reference queue: $ hg qsave -c -e -n refqueue - copy $TESTTMP/t2/.hg/patches to $TESTTMP/t2/.hg/refqueue + copy $TESTTMP/t2/.hg/patches to $TESTTMP/t2/.hg/refqueue (glob) $ hg up -C 1 1 files updated, 0 files merged, 1 files removed, 0 files unresolved Merge: $ HGMERGE=internal:other hg qpush -a -m -n refqueue - merging with queue at: $TESTTMP/t2/.hg/refqueue + merging with queue at: $TESTTMP/t2/.hg/refqueue (glob) applying patcha patching file a Hunk #1 FAILED at 0 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mq-qclone-http.t --- a/tests/test-mq-qclone-http.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mq-qclone-http.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ echo "[extensions]" >> $HGRCPATH $ echo "mq=" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mq-qdelete.t --- a/tests/test-mq-qdelete.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mq-qdelete.t Tue Nov 15 14:33:06 2011 -0600 @@ -188,7 +188,9 @@ $ echo > .hg/patches/series # remove 4.diff and 5.diff from series to confuse mq $ echo hup >> base $ hg qnew -f -d '1 0' -m 6 6.diff + $ echo pup > base $ hg qfinish -a + warning: uncommitted changes in the working directory revision 2b1c98802260 refers to unknown patches: 5.diff revision 33a6861311c0 refers to unknown patches: 4.diff diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mq-qimport.t --- a/tests/test-mq-qimport.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mq-qimport.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ cat > writelines.py < import sys diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mq-safety.t --- a/tests/test-mq-safety.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mq-safety.t Tue Nov 15 14:33:06 2011 -0600 @@ -39,7 +39,7 @@ abort: popping would remove a revision not managed by this patch queue [255] $ hg qpop -n patches - using patch queue: $TESTTMP/repo/.hg/patches + using patch queue: $TESTTMP/repo/.hg/patches (glob) abort: popping would remove a revision not managed by this patch queue [255] $ hg qrefresh diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mq.t --- a/tests/test-mq.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mq.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + $ checkundo() > { > if [ -f .hg/store/undo ]; then @@ -135,7 +137,7 @@ guards $ cat .hg/patches/series $ hg qinit -c - abort: repository $TESTTMP/d/.hg/patches already exists! + abort: repository $TESTTMP/d/.hg/patches already exists! (glob) [255] $ cd .. @@ -154,8 +156,8 @@ $ echo status >> .hg/patches/.hgignore $ echo bleh >> .hg/patches/.hgignore $ hg qinit -c - adding .hg/patches/A - adding .hg/patches/B + adding .hg/patches/A (glob) + adding .hg/patches/B (glob) $ hg -R .hg/patches status A .hgignore A A @@ -1191,7 +1193,7 @@ $ cd qclonesource $ hg qinit -c - adding .hg/patches/patch1 + adding .hg/patches/patch1 (glob) $ hg qci -m checkpoint $ qlog main repo: diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-mv-cp-st-diff.t --- a/tests/test-mv-cp-st-diff.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-mv-cp-st-diff.t Tue Nov 15 14:33:06 2011 -0600 @@ -1138,7 +1138,7 @@ updating to branch default 3 files updated, 0 files merged, 0 files removed, 0 files unresolved created new head - moving x/x to y/x + moving x/x to y/x (glob) ** directory move ** ** hg mv x y / add y/x x1 / add y/x x2 - working to parent: diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-nested-repo.t --- a/tests/test-nested-repo.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-nested-repo.t Tue Nov 15 14:33:06 2011 -0600 @@ -11,16 +11,16 @@ Should fail: $ hg st b/x - abort: path 'b/x' is inside nested repo 'b' + abort: path 'b/x' is inside nested repo 'b' (glob) [255] $ hg add b/x - abort: path 'b/x' is inside nested repo 'b' + abort: path 'b/x' is inside nested repo 'b' (glob) [255] Should fail: $ hg add b b/x - abort: path 'b/x' is inside nested repo 'b' + abort: path 'b/x' is inside nested repo 'b' (glob) [255] $ hg st @@ -34,7 +34,7 @@ Should fail: $ hg mv a b - abort: path 'b/a' is inside nested repo 'b' + abort: path 'b/a' is inside nested repo 'b' (glob) [255] $ hg st diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-notify-changegroup.t --- a/tests/test-notify-changegroup.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-notify-changegroup.t Tue Nov 15 14:33:06 2011 -0600 @@ -56,11 +56,11 @@ Message-Id: <*> (glob) To: baz, foo@bar - changeset cb9a9f314b8b in $TESTTMP/a + changeset cb9a9f314b8b in $TESTTMP/a (glob) details: $TESTTMP/a?cmd=changeset;node=cb9a9f314b8b summary: a - changeset ba677d0156c1 in $TESTTMP/a + changeset ba677d0156c1 in $TESTTMP/a (glob) details: $TESTTMP/a?cmd=changeset;node=ba677d0156c1 summary: b @@ -107,11 +107,11 @@ Message-Id: <*> (glob) To: baz, foo@bar - changeset cb9a9f314b8b in $TESTTMP/a + changeset cb9a9f314b8b in $TESTTMP/a (glob) details: $TESTTMP/a?cmd=changeset;node=cb9a9f314b8b summary: a - changeset ba677d0156c1 in $TESTTMP/a + changeset ba677d0156c1 in $TESTTMP/a (glob) details: $TESTTMP/a?cmd=changeset;node=ba677d0156c1 summary: b diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-notify.t --- a/tests/test-notify.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-notify.t Tue Nov 15 14:33:06 2011 -0600 @@ -173,7 +173,7 @@ Message-Id: <*> (glob) To: baz, foo@bar - changeset 0647d048b600 in $TESTTMP/b + changeset 0647d048b600 in $TESTTMP/b (glob) details: $TESTTMP/b?cmd=changeset;node=0647d048b600 description: b diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-paths.t --- a/tests/test-paths.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-paths.t Tue Nov 15 14:33:06 2011 -0600 @@ -7,29 +7,29 @@ $ echo 'dupe = ../b' >> .hg/hgrc $ echo 'expand = $SOMETHING/bar' >> .hg/hgrc $ hg in dupe - comparing with $TESTTMP/b + comparing with $TESTTMP/b (glob) no changes found [1] $ cd .. $ hg -R a in dupe - comparing with $TESTTMP/b + comparing with $TESTTMP/b (glob) no changes found [1] $ cd a $ hg paths - dupe = $TESTTMP/b - expand = $TESTTMP/a/$SOMETHING/bar + dupe = $TESTTMP/b (glob) + expand = $TESTTMP/a/$SOMETHING/bar (glob) $ SOMETHING=foo hg paths - dupe = $TESTTMP/b - expand = $TESTTMP/a/foo/bar + dupe = $TESTTMP/b (glob) + expand = $TESTTMP/a/foo/bar (glob) $ SOMETHING=/foo hg paths - dupe = $TESTTMP/b + dupe = $TESTTMP/b (glob) expand = /foo/bar $ hg paths -q dupe expand $ hg paths dupe - $TESTTMP/b + $TESTTMP/b (glob) $ hg paths -q dupe $ hg paths unknown not found! diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-permissions.t --- a/tests/test-permissions.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-permissions.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 + $ hg init t $ cd t diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-phases-exchange.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-phases-exchange.t Tue Nov 15 14:33:06 2011 -0600 @@ -0,0 +1,112 @@ + $ cat >> $HGRCPATH < [extensions] + > graphlog= + > EOF + $ alias hgph='hg log --template "{rev} {phase} {desc}\n"' + + $ mkcommit() { + > echo "$1" > "$1" + > hg add "$1" + > hg ci -m "$1" + > } + + $ hg init alpha + $ cd alpha + $ mkcommit a-A + $ mkcommit a-B + $ mkcommit a-C + $ mkcommit a-D + $ hgph + 3 1 a-D + 2 1 a-C + 1 1 a-B + 0 1 a-A + + $ hg init ../beta + $ hg push -r 1 ../beta + pushing to ../beta + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + $ hgph + 3 1 a-D + 2 1 a-C + 1 0 a-B + 0 0 a-A + + $ cd ../beta + $ hgph + 1 0 a-B + 0 0 a-A + $ hg up -q + $ mkcommit b-A + $ hgph + 2 1 b-A + 1 0 a-B + 0 0 a-A + $ hg pull ../alpha + pulling from ../alpha + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + (run 'hg heads' to see heads, 'hg merge' to merge) + $ hgph + 4 0 a-D + 3 0 a-C + 2 1 b-A + 1 0 a-B + 0 0 a-A + +pull did not updated ../alpha state. +push from alpha to beta should update phase even if nothing is transfered + + $ cd ../alpha + $ hgph # not updated by remote pull + 3 1 a-D + 2 1 a-C + 1 0 a-B + 0 0 a-A + $ hg push ../beta + pushing to ../beta + searching for changes + no changes found + $ hgph + 3 0 a-D + 2 0 a-C + 1 0 a-B + 0 0 a-A + +update must update phase of common changeset too + + $ hg pull ../beta # getting b-A + pulling from ../beta + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + (run 'hg heads' to see heads, 'hg merge' to merge) + + $ cd ../beta + $ hgph # not updated by remote pull + 4 0 a-D + 3 0 a-C + 2 1 b-A + 1 0 a-B + 0 0 a-A + $ hg pull ../alpha + pulling from ../alpha + searching for changes + no changes found + $ hgph + 4 0 a-D + 3 0 a-C + 2 0 b-A + 1 0 a-B + 0 0 a-A + + diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-phases.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-phases.t Tue Nov 15 14:33:06 2011 -0600 @@ -0,0 +1,10 @@ + $ alias hglog='hg log --template "{rev} {phase} {desc}\n"' + + $ hg init initialrepo + $ cd initialrepo + $ touch sam + $ hg add sam + $ hg ci -m 'first' + + $ hglog + 0 1 first diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-pull-http.t --- a/tests/test-pull-http.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-pull-http.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hg init test $ cd test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-pull-r.t --- a/tests/test-pull-r.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-pull-r.t Tue Nov 15 14:33:06 2011 -0600 @@ -43,7 +43,7 @@ 2:effea6de0384 1:ed1b79f46b9a $ hg pull - pulling from $TESTTMP/repo2 + pulling from $TESTTMP/repo2 (glob) searching for changes adding changesets adding manifests diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-pull.t --- a/tests/test-pull.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-pull.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + $ hg init test $ cd test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-push-http.t --- a/tests/test-push-http.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-push-http.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hg init test $ cd test diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-push-validation.t --- a/tests/test-push-validation.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-push-validation.t Tue Nov 15 14:33:06 2011 -0600 @@ -40,7 +40,7 @@ Expected to fail: $ hg push - pushing to $TESTTMP/test + pushing to $TESTTMP/test (glob) searching for changes adding changesets adding manifests diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rebase-detach.t --- a/tests/test-rebase-detach.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rebase-detach.t Tue Nov 15 14:33:06 2011 -0600 @@ -283,7 +283,7 @@ $ hg rebase -d 5 -s 7 - saved backup bundle to $TESTTMP/a5/.hg/strip-backup/13547172c9c0-backup.hg + saved backup bundle to $TESTTMP/a5/.hg/strip-backup/13547172c9c0-backup.hg (glob) $ hg tglog @ 8: 'D' | diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rebase-pull.t --- a/tests/test-rebase-pull.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rebase-pull.t Tue Nov 15 14:33:06 2011 -0600 @@ -48,7 +48,7 @@ Now b has one revision to be pulled from a: $ hg pull --rebase - pulling from $TESTTMP/a + pulling from $TESTTMP/a (glob) searching for changes adding changesets adding manifests @@ -68,7 +68,7 @@ Re-run: $ hg pull --rebase - pulling from $TESTTMP/a + pulling from $TESTTMP/a (glob) searching for changes no changes found @@ -78,7 +78,7 @@ $ cd ../c $ hg pull --rebase - pulling from $TESTTMP/a + pulling from $TESTTMP/a (glob) searching for changes adding changesets adding manifests @@ -94,7 +94,7 @@ pull --rebase --update should ignore --update: $ hg pull --rebase --update - pulling from $TESTTMP/a + pulling from $TESTTMP/a (glob) searching for changes no changes found @@ -103,7 +103,7 @@ $ hg up -q 1 $ hg pull --rebase - pulling from $TESTTMP/a + pulling from $TESTTMP/a (glob) searching for changes no changes found diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rebase-scenario-global.t --- a/tests/test-rebase-scenario-global.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rebase-scenario-global.t Tue Nov 15 14:33:06 2011 -0600 @@ -251,7 +251,7 @@ C onto A - rebase onto an ancestor: $ hg rebase -d 0 -s 2 - saved backup bundle to $TESTTMP/a7/.hg/strip-backup/5fddd98957c8-backup.hg + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/5fddd98957c8-backup.hg (glob) $ hg tglog @ 7: 'D' | @@ -473,7 +473,7 @@ $ hg clone -q -u . ah ah5 $ cd ah5 $ hg rebase -r '6::' -d 2 - saved backup bundle to $TESTTMP/ah5/.hg/strip-backup/3d8a618087a7-backup.hg + saved backup bundle to $TESTTMP/ah5/.hg/strip-backup/3d8a618087a7-backup.hg (glob) $ hg tglog @ 8: 'I' | diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rebuildstate.t --- a/tests/test-rebuildstate.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rebuildstate.t Tue Nov 15 14:33:06 2011 -0600 @@ -17,8 +17,8 @@ state dump after $ hg debugstate --nodates | sort - n 666 -1 bar - n 666 -1 foo + n 644 -1 bar + n 644 -1 foo status diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-record.t --- a/tests/test-record.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-record.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + Set up a repo $ echo "[ui]" >> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-relink.t --- a/tests/test-relink.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-relink.t Tue Nov 15 14:33:06 2011 -0600 @@ -39,7 +39,7 @@ don't sit forever trying to double-lock the source repo $ hg relink . - relinking $TESTTMP/repo/.hg/store to $TESTTMP/repo/.hg/store + relinking $TESTTMP/repo/.hg/store to $TESTTMP/repo/.hg/store (glob) there is nothing to relink diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-remove.t --- a/tests/test-remove.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-remove.t Tue Nov 15 14:33:06 2011 -0600 @@ -196,8 +196,8 @@ $ rm test/bar $ remove test - removing test/bar - removing test/foo + removing test/bar (glob) + removing test/foo (glob) exit code: 0 R test/bar R test/foo @@ -208,8 +208,8 @@ $ rm test/bar $ remove -f test - removing test/bar - removing test/foo + removing test/bar (glob) + removing test/foo (glob) exit code: 0 R test/bar R test/foo @@ -220,8 +220,8 @@ $ rm test/bar $ remove -A test - not removing test/foo: file still exists (use -f to force removal) - removing test/bar + not removing test/foo: file still exists (use -f to force removal) (glob) + removing test/bar (glob) exit code: 1 R test/bar ./foo @@ -232,8 +232,8 @@ $ rm test/bar $ remove -Af test - removing test/bar - removing test/foo + removing test/bar (glob) + removing test/foo (glob) exit code: 0 R test/bar R test/foo @@ -250,7 +250,7 @@ adding issue1861/b/c/y adding issue1861/x $ hg rm issue1861/b - removing issue1861/b/c/y + removing issue1861/b/c/y (glob) $ hg ci -m remove $ ls issue1861 x diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rename-dir-merge.t --- a/tests/test-rename-dir-merge.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rename-dir-merge.t Tue Nov 15 14:33:06 2011 -0600 @@ -11,8 +11,8 @@ $ hg co -C 0 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg mv a b - moving a/a to b/a - moving a/b to b/b + moving a/a to b/a (glob) + moving a/b to b/b (glob) $ hg ci -m "1 mv a/ b/" $ hg co -C 0 @@ -75,7 +75,7 @@ ? b/d $ hg ci -m "3 merge 2+1" $ hg debugrename b/c - b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 + b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob) $ hg co -C 1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved @@ -111,7 +111,7 @@ $ hg ci -m "4 merge 1+2" created new head $ hg debugrename b/c - b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 + b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob) Second scenario with two repos: @@ -122,7 +122,7 @@ $ mkdir a $ echo foo > a/f $ hg add a - adding a/f + adding a/f (glob) $ hg ci -m "a/f == foo" $ cd .. @@ -131,7 +131,7 @@ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd r2 $ hg mv a b - moving a/f to b/f + moving a/f to b/f (glob) $ echo foo1 > b/f $ hg ci -m" a -> b, b/f == foo1" $ cd .. @@ -140,7 +140,7 @@ $ mkdir a/aa $ echo bar > a/aa/g $ hg add a/aa - adding a/aa/g + adding a/aa/g (glob) $ hg ci -m "a/aa/g" $ hg pull ../r2 pulling from ../r2 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rename.t --- a/tests/test-rename.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rename.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink || exit 80 + $ hg init $ mkdir d1 d1/d11 d2 $ echo d1/a > d1/a @@ -69,7 +71,7 @@ rename --after a single file to a nonexistant target filename $ hg rename --after d1/a dummy - d1/a: not recording move - dummy does not exist + d1/a: not recording move - dummy does not exist (glob) move a single file to an existing directory @@ -119,10 +121,10 @@ rename directory d1 as d3 $ hg rename d1/ d3 - moving d1/a to d3/a - moving d1/b to d3/b - moving d1/ba to d3/ba - moving d1/d11/a1 to d3/d11/a1 + moving d1/a to d3/a (glob) + moving d1/b to d3/b (glob) + moving d1/ba to d3/ba (glob) + moving d1/d11/a1 to d3/d11/a1 (glob) $ hg status -C A d3/a d1/a @@ -144,10 +146,10 @@ $ mv d1 d3 $ hg rename --after d1 d3 - moving d1/a to d3/a - moving d1/b to d3/b - moving d1/ba to d3/ba - moving d1/d11/a1 to d3/d11/a1 + moving d1/a to d3/a (glob) + moving d1/b to d3/b (glob) + moving d1/ba to d3/ba (glob) + moving d1/d11/a1 to d3/d11/a1 (glob) $ hg status -C A d3/a d1/a @@ -168,7 +170,7 @@ move a directory using a relative path $ (cd d2; mkdir d3; hg rename ../d1/d11 d3) - moving ../d1/d11/a1 to d3/d11/a1 + moving ../d1/d11/a1 to d3/d11/a1 (glob) $ hg status -C A d2/d3/d11/a1 d1/d11/a1 @@ -180,7 +182,7 @@ move --after a directory using a relative path $ (cd d2; mkdir d3; mv ../d1/d11 d3; hg rename --after ../d1/d11 d3) - moving ../d1/d11/a1 to d3/d11/a1 + moving ../d1/d11/a1 to d3/d11/a1 (glob) $ hg status -C A d2/d3/d11/a1 d1/d11/a1 @@ -192,7 +194,7 @@ move directory d1/d11 to an existing directory d2 (removes empty d1) $ hg rename d1/d11/ d2 - moving d1/d11/a1 to d2/d11/a1 + moving d1/d11/a1 to d2/d11/a1 (glob) $ hg status -C A d2/d11/a1 d1/d11/a1 @@ -205,11 +207,11 @@ $ mkdir d3 $ hg rename d1 d2 d3 - moving d1/a to d3/d1/a - moving d1/b to d3/d1/b - moving d1/ba to d3/d1/ba - moving d1/d11/a1 to d3/d1/d11/a1 - moving d2/b to d3/d2/b + moving d1/a to d3/d1/a (glob) + moving d1/b to d3/d1/b (glob) + moving d1/ba to d3/d1/ba (glob) + moving d1/d11/a1 to d3/d1/d11/a1 (glob) + moving d2/b to d3/d2/b (glob) $ hg status -C A d3/d1/a d1/a @@ -235,11 +237,11 @@ $ mkdir d3 $ mv d1 d2 d3 $ hg rename --after d1 d2 d3 - moving d1/a to d3/d1/a - moving d1/b to d3/d1/b - moving d1/ba to d3/d1/ba - moving d1/d11/a1 to d3/d1/d11/a1 - moving d2/b to d3/d2/b + moving d1/a to d3/d1/a (glob) + moving d1/b to d3/d1/b (glob) + moving d1/ba to d3/d1/ba (glob) + moving d1/d11/a1 to d3/d1/d11/a1 (glob) + moving d2/b to d3/d2/b (glob) $ hg status -C A d3/d1/a d1/a @@ -265,7 +267,7 @@ $ hg rename d1/* d2 d2/b: not overwriting - file exists - moving d1/d11/a1 to d2/d11/a1 + moving d1/d11/a1 to d2/d11/a1 (glob) $ hg status -C A d2/a d1/a @@ -306,10 +308,10 @@ $ mkdir d2/d21 $ hg rename 'glob:d1/**' d2/d21 - moving d1/a to d2/d21/a - moving d1/b to d2/d21/b - moving d1/ba to d2/d21/ba - moving d1/d11/a1 to d2/d21/a1 + moving d1/a to d2/d21/a (glob) + moving d1/b to d2/d21/b (glob) + moving d1/ba to d2/d21/ba (glob) + moving d1/d11/a1 to d2/d21/a1 (glob) $ hg status -C A d2/d21/a d1/a @@ -332,10 +334,10 @@ $ mkdir d2/d21 $ mv d1/a d1/d11/a1 d2/d21 $ hg rename --after 'glob:d1/**' d2/d21 - moving d1/a to d2/d21/a - d1/b: not recording move - d2/d21/b does not exist - d1/ba: not recording move - d2/d21/ba does not exist - moving d1/d11/a1 to d2/d21/a1 + moving d1/a to d2/d21/a (glob) + d1/b: not recording move - d2/d21/b does not exist (glob) + d1/ba: not recording move - d2/d21/ba does not exist (glob) + moving d1/d11/a1 to d2/d21/a1 (glob) $ hg status -C A d2/d21/a d1/a @@ -351,8 +353,8 @@ $ mkdir d2/d21 $ hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21 - moving d1/a to d2/d21/a - moving d1/d11/a1 to d2/d21/a1 + moving d1/a to d2/d21/a (glob) + moving d1/d11/a1 to d2/d21/a1 (glob) $ hg status -C A d2/d21/a d1/a @@ -413,7 +415,7 @@ $ mkdir d3 $ hg rename d1/* d2/* d3 - moving d1/d11/a1 to d3/d11/a1 + moving d1/d11/a1 to d3/d11/a1 (glob) d3/b: not overwriting - d2/b collides with d1/b $ hg status -C A d3/a @@ -439,7 +441,7 @@ moving a to ../d3/d1/a moving b to ../d3/d1/b moving ba to ../d3/d1/ba - moving d11/a1 to ../d3/d1/d11/a1 + moving d11/a1 to ../d3/d1/d11/a1 (glob) $ hg status -C A d3/d1/a d1/a @@ -465,7 +467,7 @@ moving a to ../d3/a moving b to ../d3/b moving ba to ../d3/ba - moving d11/a1 to ../d3/d11/a1 + moving d11/a1 to ../d3/d11/a1 (glob) $ hg status -C A d3/a d1/a @@ -486,9 +488,9 @@ move the parent tree with "hg rename .." $ (cd d1/d11; hg rename .. ../../d3) - moving ../a to ../../d3/a - moving ../b to ../../d3/b - moving ../ba to ../../d3/ba + moving ../a to ../../d3/a (glob) + moving ../b to ../../d3/b (glob) + moving ../ba to ../../d3/ba (glob) moving a1 to ../../d3/d11/a1 $ hg status -C A d3/a @@ -511,9 +513,9 @@ $ hg remove d1/b $ hg rename d1 d3 - moving d1/a to d3/a - moving d1/ba to d3/ba - moving d1/d11/a1 to d3/d11/a1 + moving d1/a to d3/a (glob) + moving d1/ba to d3/ba (glob) + moving d1/d11/a1 to d3/d11/a1 (glob) $ hg status -C A d3/a d1/a @@ -587,7 +589,7 @@ check illegal path components $ hg rename d1/d11/a1 .hg/foo - abort: path contains illegal component: .hg/foo + abort: path contains illegal component: .hg/foo (glob) [255] $ hg status -C $ hg rename d1/d11/a1 ../foo @@ -597,7 +599,7 @@ $ mv d1/d11/a1 .hg/foo $ hg rename --after d1/d11/a1 .hg/foo - abort: path contains illegal component: .hg/foo + abort: path contains illegal component: .hg/foo (glob) [255] $ hg status -C ! d1/d11/a1 @@ -606,17 +608,17 @@ $ rm .hg/foo $ hg rename d1/d11/a1 .hg - abort: path contains illegal component: .hg/a1 + abort: path contains illegal component: .hg/a1 (glob) [255] $ hg status -C $ hg rename d1/d11/a1 .. - abort: ../a1 not under root + abort: ../a1 not under root (glob) [255] $ hg status -C $ mv d1/d11/a1 .hg $ hg rename --after d1/d11/a1 .hg - abort: path contains illegal component: .hg/a1 + abort: path contains illegal component: .hg/a1 (glob) [255] $ hg status -C ! d1/d11/a1 @@ -625,7 +627,7 @@ $ rm .hg/a1 $ (cd d1/d11; hg rename ../../d2/b ../../.hg/foo) - abort: path contains illegal component: .hg/foo + abort: path contains illegal component: .hg/foo (glob) [255] $ hg status -C $ (cd d1/d11; hg rename ../../d2/b ../../../foo) diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-repair-strip.t --- a/tests/test-repair-strip.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-repair-strip.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" unix-permissions || exit 80 $ echo "[extensions]" >> $HGRCPATH $ echo "mq=">> $HGRCPATH diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-revert.t --- a/tests/test-revert.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-revert.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" execbit || exit 80 + $ hg init repo $ cd repo $ echo 123 > a @@ -214,11 +216,11 @@ $ echo foo > newdir/newfile $ hg add newdir/newfile $ hg revert b newdir - reverting b/b - forgetting newdir/newfile + reverting b/b (glob) + forgetting newdir/newfile (glob) $ echo foobar > b/b $ hg revert . - reverting b/b + reverting b/b (glob) reverting a rename target should revert the source @@ -259,8 +261,8 @@ $ hg revert -a --no-backup reverting ignored - reverting ignoreddir/file - undeleting ignoreddir/removed + reverting ignoreddir/file (glob) + undeleting ignoreddir/removed (glob) undeleting removed $ hg st -mardi diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-revset-outgoing.t --- a/tests/test-revset-outgoing.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-revset-outgoing.t Tue Nov 15 14:33:06 2011 -0600 @@ -39,7 +39,7 @@ $ cd b $ cat .hg/hgrc [paths] - default = $TESTTMP/a#stable + default = $TESTTMP/a#stable (glob) $ echo red >> a $ hg ci -qm3 @@ -60,7 +60,7 @@ $ hg tout - comparing with $TESTTMP/a + comparing with $TESTTMP/a (glob) searching for changes 2:1d4099801a4e: '3' stable @@ -79,11 +79,11 @@ $ cat .hg/hgrc [paths] - default = $TESTTMP/a#stable + default = $TESTTMP/a#stable (glob) green = ../a#default $ hg tout green - comparing with $TESTTMP/a + comparing with $TESTTMP/a (glob) searching for changes 3:f0461977a3db: '4' diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-rollback.t --- a/tests/test-rollback.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-rollback.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + setup repo $ hg init t $ cd t diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-run-tests.t --- a/tests/test-run-tests.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-run-tests.t Tue Nov 15 14:33:06 2011 -0600 @@ -16,6 +16,11 @@ $ foo bar +Return codes before inline python: + + $ false + [1] + Doctest commands: >>> print 'foo' @@ -28,7 +33,7 @@ y z >>> print - + Regular expressions: diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-schemes.t --- a/tests/test-schemes.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-schemes.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ cat <> $HGRCPATH > [extensions] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-serve.t --- a/tests/test-serve.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-serve.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hgserve() > { diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-share.t --- a/tests/test-share.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-share.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ echo "[extensions]" >> $HGRCPATH $ echo "share = " >> $HGRCPATH @@ -26,14 +27,14 @@ Some sed versions appends newline, some don't, and some just fails $ cat .hg/sharedpath; echo - $TESTTMP/repo1/.hg + $TESTTMP/repo1/.hg (glob) trailing newline on .hg/sharedpath is ok $ hg tip -q 0:d3873e73d99e $ echo '' >> .hg/sharedpath $ cat .hg/sharedpath - $TESTTMP/repo1/.hg + $TESTTMP/repo1/.hg (glob) $ hg tip -q 0:d3873e73d99e diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-static-http.t --- a/tests/test-static-http.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-static-http.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 $ hg clone http://localhost:$HGPORT/ copy abort: error: Connection refused diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-subrepo-deep-nested-change.t --- a/tests/test-subrepo-deep-nested-change.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-subrepo-deep-nested-change.t Tue Nov 15 14:33:06 2011 -0600 @@ -3,7 +3,7 @@ $ hg init sub2 $ echo sub2 > sub2/sub2 $ hg add -R sub2 - adding sub2/sub2 + adding sub2/sub2 (glob) $ hg commit -R sub2 -m "sub2 import" Preparing the 'sub1' repo which depends on the subrepo 'sub2' @@ -15,8 +15,8 @@ updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg add -R sub1 - adding sub1/.hgsub - adding sub1/sub1 + adding sub1/.hgsub (glob) + adding sub1/sub1 (glob) $ hg commit -R sub1 -m "sub1 import" committing subrepository sub2 @@ -30,8 +30,8 @@ cloning subrepo sub2 from $TESTTMP/sub2 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg add -R main - adding main/.hgsub - adding main/main + adding main/.hgsub (glob) + adding main/main (glob) $ hg commit -R main -m "main import" committing subrepository sub1 @@ -51,7 +51,7 @@ $ hg clone main cloned updating to branch default cloning subrepo sub1 from $TESTTMP/sub1 - cloning subrepo sub1/sub2 from $TESTTMP/sub2 + cloning subrepo sub1/sub2 from $TESTTMP/sub2 (glob) 3 files updated, 0 files merged, 0 files removed, 0 files unresolved Checking cloned repo ids @@ -79,7 +79,7 @@ $ echo modified > cloned/sub1/sub2/sub2 $ hg commit --subrepos -m "deep nested modif should trigger a commit" -R cloned committing subrepository sub1 - committing subrepository sub1/sub2 + committing subrepository sub1/sub2 (glob) Checking modified node ids diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-subrepo-paths.t --- a/tests/test-subrepo-paths.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-subrepo-paths.t Tue Nov 15 14:33:06 2011 -0600 @@ -55,5 +55,5 @@ > .* = \1 > EOF $ hg debugsub - abort: bad subrepository pattern in $TESTTMP/outer/.hg/hgrc:2: invalid group reference + abort: bad subrepository pattern in $TESTTMP/outer/.hg/hgrc:2: invalid group reference (glob) [255] diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-subrepo-recursion.t --- a/tests/test-subrepo-recursion.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-subrepo-recursion.t Tue Nov 15 14:33:06 2011 -0600 @@ -265,10 +265,10 @@ archiving (foo) [====================================>] 3/3 archiving (foo) [====================================>] 3/3 - archiving (foo/bar) [ ] 0/1 - archiving (foo/bar) [ ] 0/1 - archiving (foo/bar) [================================>] 1/1 - archiving (foo/bar) [================================>] 1/1 + archiving (foo/bar) [ ] 0/1 (glob) + archiving (foo/bar) [ ] 0/1 (glob) + archiving (foo/bar) [================================>] 1/1 (glob) + archiving (foo/bar) [================================>] 1/1 (glob) \r (esc) $ find ../archive | sort ../archive @@ -305,10 +305,10 @@ archiving (foo) [====================================>] 3/3 archiving (foo) [====================================>] 3/3 - archiving (foo/bar) [ ] 0/1 - archiving (foo/bar) [ ] 0/1 - archiving (foo/bar) [================================>] 1/1 - archiving (foo/bar) [================================>] 1/1 + archiving (foo/bar) [ ] 0/1 (glob) + archiving (foo/bar) [ ] 0/1 (glob) + archiving (foo/bar) [================================>] 1/1 (glob) + archiving (foo/bar) [================================>] 1/1 (glob) \r (esc) Test archiving a revision that references a subrepo that is not yet @@ -336,10 +336,10 @@ archiving (foo) [====================================>] 3/3 archiving (foo) [====================================>] 3/3 - archiving (foo/bar) [ ] 0/1 - archiving (foo/bar) [ ] 0/1 - archiving (foo/bar) [================================>] 1/1 - archiving (foo/bar) [================================>] 1/1 + archiving (foo/bar) [ ] 0/1 (glob) + archiving (foo/bar) [ ] 0/1 (glob) + archiving (foo/bar) [================================>] 1/1 (glob) + archiving (foo/bar) [================================>] 1/1 (glob) cloning subrepo foo from $TESTTMP/repo/foo cloning subrepo foo/bar from $TESTTMP/repo/foo/bar diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-subrepo-relative-path.t --- a/tests/test-subrepo-relative-path.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-subrepo-relative-path.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,9 +1,11 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Preparing the subrepository 'sub' $ hg init sub $ echo sub > sub/sub $ hg add -R sub - adding sub/sub + adding sub/sub (glob) $ hg commit -R sub -m "sub import" Preparing the 'main' repo which depends on the subrepo 'sub' @@ -15,8 +17,8 @@ updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg add -R main - adding main/.hgsub - adding main/main + adding main/.hgsub (glob) + adding main/main (glob) $ hg commit -R main -m "main import" committing subrepository sub diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-subrepo.t --- a/tests/test-subrepo.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-subrepo.t Tue Nov 15 14:33:06 2011 -0600 @@ -49,7 +49,7 @@ $ hg revert -a $ hg revert -R s -a -C - reverting s/a + reverting s/a (glob) Issue2022: update -C @@ -92,7 +92,7 @@ update: (current) $ hg ci -m2 committing subrepository s - committing subrepository s/ss + committing subrepository s/ss (glob) $ hg sum parent: 2:df30734270ae tip 2 @@ -147,7 +147,7 @@ $ hg init t $ echo t > t/t $ hg -R t add t - adding t/t + adding t/t (glob) 5 @@ -265,9 +265,9 @@ $ cd .. $ hg clone t tc updating to branch default - cloning subrepo s from $TESTTMP/sub/t/s - cloning subrepo s/ss from $TESTTMP/sub/t/s/ss - cloning subrepo t from $TESTTMP/sub/t/t + cloning subrepo s from $TESTTMP/sub/t/s (glob) + cloning subrepo s/ss from $TESTTMP/sub/t/s/ss (glob) + cloning subrepo t from $TESTTMP/sub/t/t (glob) 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd tc $ hg debugsub @@ -284,14 +284,14 @@ $ hg ci -m11 committing subrepository t $ hg push - pushing to $TESTTMP/sub/t - pushing subrepo s/ss to $TESTTMP/sub/t/s/ss + pushing to $TESTTMP/sub/t (glob) + pushing subrepo s/ss to $TESTTMP/sub/t/s/ss (glob) searching for changes no changes found - pushing subrepo s to $TESTTMP/sub/t/s + pushing subrepo s to $TESTTMP/sub/t/s (glob) searching for changes no changes found - pushing subrepo t to $TESTTMP/sub/t/t + pushing subrepo t to $TESTTMP/sub/t/t (glob) searching for changes adding changesets adding manifests @@ -309,27 +309,27 @@ $ hg ci -m12 committing subrepository s $ hg push - pushing to $TESTTMP/sub/t - pushing subrepo s/ss to $TESTTMP/sub/t/s/ss + pushing to $TESTTMP/sub/t (glob) + pushing subrepo s/ss to $TESTTMP/sub/t/s/ss (glob) searching for changes no changes found - pushing subrepo s to $TESTTMP/sub/t/s + pushing subrepo s to $TESTTMP/sub/t/s (glob) searching for changes abort: push creates new remote head 12a213df6fa9! (did you forget to merge? use push -f to force) [255] $ hg push -f - pushing to $TESTTMP/sub/t - pushing subrepo s/ss to $TESTTMP/sub/t/s/ss + pushing to $TESTTMP/sub/t (glob) + pushing subrepo s/ss to $TESTTMP/sub/t/s/ss (glob) searching for changes no changes found - pushing subrepo s to $TESTTMP/sub/t/s + pushing subrepo s to $TESTTMP/sub/t/s (glob) searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) - pushing subrepo t to $TESTTMP/sub/t/t + pushing subrepo t to $TESTTMP/sub/t/t (glob) searching for changes no changes found searching for changes @@ -351,7 +351,7 @@ $ cd ../tc $ hg pull - pulling from $TESTTMP/sub/t + pulling from $TESTTMP/sub/t (glob) searching for changes adding changesets adding manifests @@ -362,7 +362,7 @@ should pull t $ hg up - pulling subrepo t from $TESTTMP/sub/t/t + pulling subrepo t from $TESTTMP/sub/t/t (glob) searching for changes adding changesets adding manifests @@ -507,15 +507,15 @@ $ echo test > testdelete/nested/foo $ echo test > testdelete/nested2/foo $ hg -R testdelete/nested add - adding testdelete/nested/foo + adding testdelete/nested/foo (glob) $ hg -R testdelete/nested2 add - adding testdelete/nested2/foo + adding testdelete/nested2/foo (glob) $ hg -R testdelete/nested ci -m test $ hg -R testdelete/nested2 ci -m test $ echo nested = nested > testdelete/.hgsub $ echo nested2 = nested2 >> testdelete/.hgsub $ hg -R testdelete add - adding testdelete/.hgsub + adding testdelete/.hgsub (glob) $ hg -R testdelete ci -m "nested 1 & 2 added" committing subrepository nested committing subrepository nested2 @@ -534,19 +534,19 @@ $ hg init nested_absolute $ echo test > nested_absolute/foo $ hg -R nested_absolute add - adding nested_absolute/foo + adding nested_absolute/foo (glob) $ hg -R nested_absolute ci -mtest $ cd mercurial $ hg init nested_relative $ echo test2 > nested_relative/foo2 $ hg -R nested_relative add - adding nested_relative/foo2 + adding nested_relative/foo2 (glob) $ hg -R nested_relative ci -mtest2 $ hg init main $ echo "nested_relative = ../nested_relative" > main/.hgsub $ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub $ hg -R main add - adding main/.hgsub + adding main/.hgsub (glob) $ hg -R main ci -m "add subrepos" committing subrepository nested_absolute committing subrepository nested_relative @@ -575,7 +575,7 @@ committing subrepository s $ hg clone repo repo2 updating to branch default - cloning subrepo s from $TESTTMP/sub/repo/s + cloning subrepo s from $TESTTMP/sub/repo/s (glob) 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg -q -R repo2 pull -u $ echo 1 > repo2/s/a @@ -609,10 +609,10 @@ $ echo sub/repo = sub/repo > .hgsub $ hg add .hgsub $ hg ci -mtest - committing subrepository sub/repo + committing subrepository sub/repo (glob) $ echo test >> sub/repo/foo $ hg ci -mtest - committing subrepository sub/repo + committing subrepository sub/repo (glob) $ cd .. Create repo without default path, pull top repo, and see what happens on update @@ -627,7 +627,7 @@ added 2 changesets with 3 changes to 2 files (run 'hg update' to get a working copy) $ hg -R issue1852b update - abort: default path for subrepository sub/repo not found + abort: default path for subrepository sub/repo not found (glob) [255] Pull -u now doesn't help @@ -646,14 +646,14 @@ adding manifests adding file changes added 1 changesets with 2 changes to 2 files - cloning subrepo sub/repo from issue1852a/sub/repo + cloning subrepo sub/repo from issue1852a/sub/repo (glob) 2 files updated, 0 files merged, 0 files removed, 0 files unresolved Try to push from the other side $ hg -R issue1852a push `pwd`/issue1852c pushing to $TESTTMP/sub/issue1852c - pushing subrepo sub/repo to $TESTTMP/sub/issue1852c/sub/repo + pushing subrepo sub/repo to $TESTTMP/sub/issue1852c/sub/repo (glob) searching for changes no changes found searching for changes @@ -883,3 +883,135 @@ rm2 +Test behavior of add for explicit path in subrepo: + $ cd .. + $ hg init explicit + $ cd explicit + $ echo s = s > .hgsub + $ hg add .hgsub + $ hg init s + $ hg ci -m0 + committing subrepository s +Adding with an explicit path in a subrepo adds the file + $ echo c1 > f1 + $ echo c2 > s/f2 + $ hg st -S + ? f1 + ? s/f2 + $ hg add s/f2 + $ hg st -S + A s/f2 + ? f1 + $ hg ci -R s -m0 + $ hg ci -Am1 + adding f1 + committing subrepository s +Adding with an explicit path in a subrepo with -S has the same behavior + $ echo c3 > f3 + $ echo c4 > s/f4 + $ hg st -S + ? f3 + ? s/f4 + $ hg add -S s/f4 + $ hg st -S + A s/f4 + ? f3 + $ hg ci -R s -m1 + $ hg ci -Ama2 + adding f3 + committing subrepository s +Adding without a path or pattern silently ignores subrepos + $ echo c5 > f5 + $ echo c6 > s/f6 + $ echo c7 > s/f7 + $ hg st -S + ? f5 + ? s/f6 + ? s/f7 + $ hg add + adding f5 + $ hg st -S + A f5 + ? s/f6 + ? s/f7 + $ hg ci -R s -Am2 + adding f6 + adding f7 + $ hg ci -m3 + committing subrepository s +Adding without a path or pattern with -S also adds files in subrepos + $ echo c8 > f8 + $ echo c9 > s/f9 + $ echo c10 > s/f10 + $ hg st -S + ? f8 + ? s/f10 + ? s/f9 + $ hg add -S + adding f8 + adding s/f10 + adding s/f9 + $ hg st -S + A f8 + A s/f10 + A s/f9 + $ hg ci -R s -m3 + $ hg ci -m4 + committing subrepository s +Adding with a pattern silently ignores subrepos + $ echo c11 > fm11 + $ echo c12 > fn12 + $ echo c13 > s/fm13 + $ echo c14 > s/fn14 + $ hg st -S + ? fm11 + ? fn12 + ? s/fm13 + ? s/fn14 + $ hg add 'glob:**fm*' + adding fm11 + $ hg st -S + A fm11 + ? fn12 + ? s/fm13 + ? s/fn14 + $ hg ci -R s -Am4 + adding fm13 + adding fn14 + $ hg ci -Am5 + adding fn12 + committing subrepository s +Adding with a pattern with -S also adds matches in subrepos + $ echo c15 > fm15 + $ echo c16 > fn16 + $ echo c17 > s/fm17 + $ echo c18 > s/fn18 + $ hg st -S + ? fm15 + ? fn16 + ? s/fm17 + ? s/fn18 + $ hg add -S 'glob:**fm*' + adding fm15 + adding s/fm17 + $ hg st -S + A fm15 + A s/fm17 + ? fn16 + ? s/fn18 + $ hg ci -R s -Am5 + adding fn18 + $ hg ci -Am6 + adding fn16 + committing subrepository s + +Test behavior of forget for explicit path in subrepo: +Forgetting an explicit path in a subrepo untracks the file + $ echo c19 > s/f19 + $ hg add s/f19 + $ hg st -S + A s/f19 + $ hg forget s/f19 + $ hg st -S + ? s/f19 + $ rm s/f19 diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-symlink-placeholder.t --- a/tests/test-symlink-placeholder.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-symlink-placeholder.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" symlink || exit 80 + Create extension that can disable symlink support: $ cat > nolink.py <> $HGRCPATH > [extensions] > transplant= diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-treediscovery-legacy.t --- a/tests/test-treediscovery-legacy.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-treediscovery-legacy.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" serve || exit 80 + Tests discovery against servers without getbundle support: $ cat >> $HGRCPATH <>> u >>> str(u) - 'file:f%3Aoo/bar/baz' + 'file:f:oo/bar/baz' >>> u.localpath() 'f:oo/bar/baz' diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-walk.t --- a/tests/test-walk.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-walk.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,5 @@ + $ "$TESTDIR/hghave" no-windows || exit 80 + $ hg init t $ cd t $ mkdir -p beans diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-win32text.t --- a/tests/test-win32text.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-win32text.t Tue Nov 15 14:33:06 2011 -0600 @@ -385,7 +385,7 @@ WARNING: f4.bat already has CRLF line endings and does not need EOL conversion by the win32text plugin. Before your next commit, please reconsider your encode/decode settings in - Mercurial.ini or $TESTTMP/t/.hg/hgrc. + Mercurial.ini or $TESTTMP/t/.hg/hgrc. (glob) 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cat bin hello\x00\r (esc) diff -r 6eff984d8e76 -r 25ea33fe7e5c tests/test-wireproto.t --- a/tests/test-wireproto.t Tue Nov 15 14:25:11 2011 -0600 +++ b/tests/test-wireproto.t Tue Nov 15 14:33:06 2011 -0600 @@ -1,3 +1,4 @@ + $ "$TESTDIR/hghave" serve || exit 80 Test wire protocol argument passing