Mercurial > hg
changeset 20029:2e22f30e8437
Merge with stable.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sun, 17 Nov 2013 13:42:24 -0500 |
parents | 4b06b2a445a1 (diff) 28445179df90 (current diff) |
children | 5931489b65e0 |
files | |
diffstat | 27 files changed, 331 insertions(+), 138 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Sat Nov 16 20:34:58 2013 -0500 +++ b/.hgignore Sun Nov 17 13:42:24 2013 -0500 @@ -1,6 +1,7 @@ syntax: glob *.elc +*.tmp *.orig *.rej *~
--- a/Makefile Sat Nov 16 20:34:58 2013 -0500 +++ b/Makefile Sun Nov 17 13:42:24 2013 -0500 @@ -53,7 +53,8 @@ clean: -$(PYTHON) setup.py clean --all # ignore errors from this command - find . \( -name '*.py[cdo]' -o -name '*.so' \) -exec rm -f '{}' ';' + find contrib doc hgext i18n mercurial tests \ + \( -name '*.py[cdo]' -o -name '*.so' \) -exec rm -f '{}' ';' rm -f $(addprefix mercurial/,$(notdir $(wildcard mercurial/pure/[a-z]*.py))) rm -f MANIFEST MANIFEST.in mercurial/__version__.py tests/*.err rm -rf build mercurial/locale @@ -123,7 +124,10 @@ $(PYTHON) i18n/posplit i18n/hg.pot %.po: i18n/hg.pot - msgmerge --no-location --update $@ $^ + # work on a temporary copy for never having a half completed target + cp $@ $@.tmp + msgmerge --no-location --update $@.tmp $^ + mv -f $@~ $@ .PHONY: help all local build doc clean install install-bin install-doc \ install-home install-home-bin install-home-doc dist dist-notests tests \
--- a/contrib/check-code.py Sat Nov 16 20:34:58 2013 -0500 +++ b/contrib/check-code.py Sun Nov 17 13:42:24 2013 -0500 @@ -141,17 +141,15 @@ (r'^ saved backup bundle to \$TESTTMP.*\.hg$', winglobmsg), (r'^ changeset .* references (corrupted|missing) \$TESTTMP/.*[^)]$', winglobmsg), - (r'^ pulling from \$TESTTMP/.*[^)]$', winglobmsg, '\$TESTTMP/unix-repo$'), - (r'^ reverting .*/.*[^)]$', winglobmsg, '\$TESTTMP/unix-repo$'), - (r'^ cloning subrepo \S+/.*[^)]$', winglobmsg, '\$TESTTMP/unix-repo$'), - (r'^ pushing to \$TESTTMP/.*[^)]$', winglobmsg, '\$TESTTMP/unix-repo$'), - (r'^ pushing subrepo \S+/\S+ to.*[^)]$', winglobmsg, - '\$TESTTMP/unix-repo$'), + (r'^ pulling from \$TESTTMP/.*[^)]$', winglobmsg, + '\$TESTTMP/unix-repo$'), # in test-issue1802.t which skipped on windows + (r'^ reverting .*/.*[^)]$', winglobmsg), + (r'^ cloning subrepo \S+/.*[^)]$', winglobmsg), + (r'^ pushing to \$TESTTMP/.*[^)]$', winglobmsg), + (r'^ pushing subrepo \S+/\S+ to.*[^)]$', winglobmsg), (r'^ moving \S+/.*[^)]$', winglobmsg), - (r'^ no changes made to subrepo since.*/.*[^)]$', - winglobmsg, '\$TESTTMP/unix-repo$'), - (r'^ .*: largefile \S+ not available from file:.*/.*[^)]$', - winglobmsg, '\$TESTTMP/unix-repo$'), + (r'^ no changes made to subrepo since.*/.*[^)]$', winglobmsg), + (r'^ .*: largefile \S+ not available from file:.*/.*[^)]$', winglobmsg), ], # warnings [ @@ -264,7 +262,7 @@ (r'[\s\(](open|file)\([^)]*\)\.read\(', "use util.readfile() instead"), (r'[\s\(](open|file)\([^)]*\)\.write\(', - "use util.readfile() instead"), + "use util.writefile() instead"), (r'^[\s\(]*(open(er)?|file)\([^)]*\)', "always assign an opened file to a variable, and close it afterwards"), (r'[\s\(](open|file)\([^)]*\)\.',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/editmerge Sun Nov 17 13:42:24 2013 -0500 @@ -0,0 +1,58 @@ +#!/bin/bash +# A simple script for opening merge conflicts in the editor. +# Use the following Mercurial settings to enable it. +# +# [ui] +# merge = editmerge +# +# [merge-tools] +# editmerge.args=$output +# editmerge.check=changed +# editmerge.premerge=keep + +FILE=$1 + +getlines() { + grep -n "<<<<<<" $FILE | cut -f1 -d: +} + +# editor preference loosely based on http://mercurial.selenic.com/wiki/editor +# hg showconfig is at the bottom though, since it's slow to run (0.15 seconds) +ED=$HGEDITOR +if [ "$ED" = "" ] ; then + ED=$VISUAL +fi +if [ "$ED" = "" ] ; then + ED=$EDITOR +fi +if [ "$ED" = "" ] ; then + ED=$(hg showconfig ui.editor) +fi +if [ "$ED" = "" ] ; then + echo "merge failed - unable to find editor" + exit 1 +fi + +if [ "$ED" = "emacs" ] || [ "$ED" = "nano" ] || [ "$ED" = "vim" ] ; then + FIRSTLINE=$(getlines | head -n 1) + PREVIOUSLINE="" + + # open the editor to the first conflict until there are no more + # or the user stops editing the file + while [ ! "$FIRSTLINE" = "" ] && [ ! "$FIRSTLINE" = "$PREVIOUSLINE" ] ; do + $ED +$FIRSTLINE $FILE + PREVIOUSLINE=$FIRSTLINE + FIRSTLINE=$(getlines | head -n 1) + done +else + $ED $FILE +fi + +# get the line numbers of the remaining conflicts +CONFLICTS=$(getlines | sed ':a;N;$!ba;s/\n/, /g') +if [ ! "$CONFLICTS" = "" ] ; then + echo "merge failed - resolve the conflicts (line $CONFLICTS) then use 'hg resolve --mark'" + exit 1 +fi + +exit 0
--- a/hgext/transplant.py Sat Nov 16 20:34:58 2013 -0500 +++ b/hgext/transplant.py Sun Nov 17 13:42:24 2013 -0500 @@ -154,7 +154,7 @@ # transplants before them fail. domerge = True if not hasnode(repo, node): - repo.pull(source, heads=[node]) + repo.pull(source.peer(), heads=[node]) skipmerge = False if parents[1] != revlog.nullid:
--- a/mercurial/bookmarks.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/bookmarks.py Sun Nov 17 13:42:24 2013 -0500 @@ -6,7 +6,7 @@ # GNU General Public License version 2 or any later version. from mercurial.i18n import _ -from mercurial.node import hex +from mercurial.node import hex, bin from mercurial import encoding, error, util, obsolete import errno @@ -239,49 +239,176 @@ finally: w.release() +def compare(repo, srcmarks, dstmarks, + srchex=None, dsthex=None, targets=None): + '''Compare bookmarks between srcmarks and dstmarks + + This returns tuple "(addsrc, adddst, advsrc, advdst, diverge, + differ, invalid)", each are list of bookmarks below: + + :addsrc: added on src side (removed on dst side, perhaps) + :adddst: added on dst side (removed on src side, perhaps) + :advsrc: advanced on src side + :advdst: advanced on dst side + :diverge: diverge + :differ: changed, but changeset referred on src is unknown on dst + :invalid: unknown on both side + + Each elements of lists in result tuple is tuple "(bookmark name, + changeset ID on source side, changeset ID on destination + side)". Each changeset IDs are 40 hexadecimal digit string or + None. + + Changeset IDs of tuples in "addsrc", "adddst", "differ" or + "invalid" list may be unknown for repo. + + This function expects that "srcmarks" and "dstmarks" return + changeset ID in 40 hexadecimal digit string for specified + bookmark. If not so (e.g. bmstore "repo._bookmarks" returning + binary value), "srchex" or "dsthex" should be specified to convert + into such form. + + If "targets" is specified, only bookmarks listed in it are + examined. + ''' + if not srchex: + srchex = lambda x: x + if not dsthex: + dsthex = lambda x: x + + if targets: + bset = set(targets) + else: + srcmarkset = set(srcmarks) + dstmarkset = set(dstmarks) + bset = srcmarkset ^ dstmarkset + for b in srcmarkset & dstmarkset: + if srchex(srcmarks[b]) != dsthex(dstmarks[b]): + bset.add(b) + + results = ([], [], [], [], [], [], []) + addsrc = results[0].append + adddst = results[1].append + advsrc = results[2].append + advdst = results[3].append + diverge = results[4].append + differ = results[5].append + invalid = results[6].append + + for b in sorted(bset): + if b not in srcmarks: + if b in dstmarks: + adddst((b, None, dsthex(dstmarks[b]))) + else: + invalid((b, None, None)) + elif b not in dstmarks: + addsrc((b, srchex(srcmarks[b]), None)) + else: + scid = srchex(srcmarks[b]) + dcid = dsthex(dstmarks[b]) + if scid in repo and dcid in repo: + sctx = repo[scid] + dctx = repo[dcid] + if sctx.rev() < dctx.rev(): + if validdest(repo, sctx, dctx): + advdst((b, scid, dcid)) + else: + diverge((b, scid, dcid)) + else: + if validdest(repo, dctx, sctx): + advsrc((b, scid, dcid)) + else: + diverge((b, scid, dcid)) + else: + # it is too expensive to examine in detail, in this case + differ((b, scid, dcid)) + + return results + +def _diverge(ui, b, path, localmarks): + if b == '@': + b = '' + # find a unique @ suffix + for x in range(1, 100): + n = '%s@%d' % (b, x) + if n not in localmarks: + break + # try to use an @pathalias suffix + # if an @pathalias already exists, we overwrite (update) it + for p, u in ui.configitems("paths"): + if path == u: + n = '%s@%s' % (b, p) + return n + def updatefromremote(ui, repo, remotemarks, path): ui.debug("checking for updated bookmarks\n") - changed = False localmarks = repo._bookmarks - for k in sorted(remotemarks): - if k in localmarks: - nr, nl = remotemarks[k], localmarks[k] - if nr in repo: - cr = repo[nr] - cl = repo[nl] - if cl.rev() >= cr.rev(): - continue - if validdest(repo, cl, cr): - localmarks[k] = cr.node() - changed = True - ui.status(_("updating bookmark %s\n") % k) - else: - if k == '@': - kd = '' - else: - kd = k - # find a unique @ suffix - for x in range(1, 100): - n = '%s@%d' % (kd, x) - if n not in localmarks: - break - # try to use an @pathalias suffix - # if an @pathalias already exists, we overwrite (update) it - for p, u in ui.configitems("paths"): - if path == u: - n = '%s@%s' % (kd, p) + (addsrc, adddst, advsrc, advdst, diverge, differ, invalid + ) = compare(repo, remotemarks, localmarks, dsthex=hex) + + changed = [] + for b, scid, dcid in addsrc: + if scid in repo: # add remote bookmarks for changes we already have + changed.append((b, bin(scid), ui.status, + _("adding remote bookmark %s\n") % (b))) + for b, scid, dcid in advsrc: + changed.append((b, bin(scid), ui.status, + _("updating bookmark %s\n") % (b))) + for b, scid, dcid in diverge: + db = _diverge(ui, b, path, localmarks) + changed.append((db, bin(scid), ui.warn, + _("divergent bookmark %s stored as %s\n") % (b, db))) + if changed: + for b, node, writer, msg in sorted(changed): + localmarks[b] = node + writer(msg) + localmarks.write() + +def updateremote(ui, repo, remote, revs): + ui.debug("checking for updated bookmarks\n") + revnums = map(repo.changelog.rev, revs or []) + ancestors = [a for a in repo.changelog.ancestors(revnums, inclusive=True)] + (addsrc, adddst, advsrc, advdst, diverge, differ, invalid + ) = compare(repo, repo._bookmarks, remote.listkeys('bookmarks'), + srchex=hex) - localmarks[n] = cr.node() - changed = True - ui.warn(_("divergent bookmark %s stored as %s\n") % (k, n)) - elif remotemarks[k] in repo: - # add remote bookmarks for changes we already have - localmarks[k] = repo[remotemarks[k]].node() - changed = True - ui.status(_("adding remote bookmark %s\n") % k) + for b, scid, dcid in advsrc: + if ancestors and repo[scid].rev() not in ancestors: + continue + if remote.pushkey('bookmarks', b, dcid, scid): + ui.status(_("updating bookmark %s\n") % b) + else: + ui.warn(_('updating bookmark %s failed!\n') % b) + +def pushtoremote(ui, repo, remote, targets): + (addsrc, adddst, advsrc, advdst, diverge, differ, invalid + ) = compare(repo, repo._bookmarks, remote.listkeys('bookmarks'), + srchex=hex, targets=targets) + if invalid: + b, scid, dcid = invalid[0] + ui.warn(_('bookmark %s does not exist on the local ' + 'or remote repository!\n') % b) + return 2 - if changed: - localmarks.write() + def push(b, old, new): + r = remote.pushkey('bookmarks', b, old, new) + if not r: + ui.warn(_('updating bookmark %s failed!\n') % b) + return 1 + return 0 + failed = 0 + for b, scid, dcid in sorted(addsrc + advsrc + advdst + diverge + differ): + ui.status(_("exporting bookmark %s\n") % b) + if dcid is None: + dcid = '' + failed += push(b, dcid, scid) + for b, scid, dcid in adddst: + # treat as "deleted locally" + ui.status(_("deleting remote bookmark %s\n") % b) + failed += push(b, dcid, '') + + if failed: + return 1 def diff(ui, dst, src): ui.status(_("searching for changed bookmarks\n"))
--- a/mercurial/commands.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/commands.py Sun Nov 17 13:42:24 2013 -0500 @@ -4711,25 +4711,11 @@ result = not result if opts.get('bookmark'): - rb = other.listkeys('bookmarks') - for b in opts['bookmark']: - # explicit push overrides remote bookmark if any - if b in repo._bookmarks: - ui.status(_("exporting bookmark %s\n") % b) - new = repo[b].hex() - elif b in rb: - ui.status(_("deleting remote bookmark %s\n") % b) - new = '' # delete - else: - ui.warn(_('bookmark %s does not exist on the local ' - 'or remote repository!\n') % b) - return 2 - old = rb.get(b, '') - r = other.pushkey('bookmarks', b, old, new) - if not r: - ui.warn(_('updating bookmark %s failed!\n') % b) - if not result: - result = 2 + bresult = bookmarks.pushtoremote(ui, repo, other, opts['bookmark']) + if bresult == 2: + return 2 + if not result and bresult: + result = 2 return result
--- a/mercurial/help/templates.txt Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/help/templates.txt Sun Nov 17 13:42:24 2013 -0500 @@ -102,3 +102,7 @@ - Invert the firstline filter, i.e. everything but the first line:: $ hg log -r 0 --template "{sub(r'^.*\n?\n?', '', desc)}\n" + +- Display the contents of the 'extra' field, one per line:: + + $ hg log -r 0 --template "{join(extras, '\n')}\n"
--- a/mercurial/hgweb/webcommands.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/hgweb/webcommands.py Sun Nov 17 13:42:24 2013 -0500 @@ -836,15 +836,11 @@ end = min(count, start + revcount) # last rev on this page parity = paritygen(web.stripecount, offset=start - end) - def entries(latestonly, **map): + def entries(): l = [] repo = web.repo - revs = repo.changelog.revs(start, end - 1) - if latestonly: - for r in revs: - pass - revs = (r,) + revs = fctx.filelog().revs(start, end - 1) for i in revs: iterfctx = fctx.filectx(i) @@ -868,11 +864,14 @@ for e in reversed(l): yield e + entries = list(entries()) + latestentry = entries[:1] + revnav = webutil.filerevnav(web.repo, fctx.path()) nav = revnav.gen(end - 1, revcount, count) return tmpl("filelog", file=f, node=fctx.hex(), nav=nav, - entries=lambda **x: entries(latestonly=False, **x), - latestentry=lambda **x: entries(latestonly=True, **x), + entries=entries, + latestentry=latestentry, revcount=revcount, morevars=morevars, lessvars=lessvars) def archive(web, req, tmpl):
--- a/mercurial/localrepo.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/localrepo.py Sun Nov 17 13:42:24 2013 -0500 @@ -1976,27 +1976,7 @@ if locallock is not None: locallock.release() - self.ui.debug("checking for updated bookmarks\n") - rb = remote.listkeys('bookmarks') - revnums = map(unfi.changelog.rev, revs or []) - ancestors = [ - a for a in unfi.changelog.ancestors(revnums, inclusive=True)] - for k in rb.keys(): - if k in unfi._bookmarks: - nr, nl = rb[k], hex(self._bookmarks[k]) - if nr in unfi: - cr = unfi[nr] - cl = unfi[nl] - if bookmarks.validdest(unfi, cr, cl): - if ancestors and cl.rev() not in ancestors: - continue - r = remote.pushkey('bookmarks', k, nr, nl) - if r: - self.ui.status(_("updating bookmark %s\n") % k) - else: - self.ui.warn(_('updating bookmark %s' - ' failed!\n') % k) - + bookmarks.updateremote(self.ui, unfi, remote, revs) return ret def changegroupinfo(self, nodes, source):
--- a/mercurial/scmutil.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/scmutil.py Sun Nov 17 13:42:24 2013 -0500 @@ -97,9 +97,10 @@ self._newfiles = set() def __call__(self, f): + if f in self._newfiles: + return fl = encoding.lower(f) - if (fl in self._loweredfiles and f not in self._dirstate and - f not in self._newfiles): + if fl in self._loweredfiles and f not in self._dirstate: msg = _('possible case-folding collision for %s') % f if self._abort: raise util.Abort(msg)
--- a/mercurial/templatekw.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/templatekw.py Sun Nov 17 13:42:24 2013 -0500 @@ -219,11 +219,10 @@ return '%s: +%s/-%s' % (len(stats), adds, removes) def showextras(**args): - templ = args['templ'] - for key, value in sorted(args['ctx'].extra().items()): - args = args.copy() - args.update(dict(key=key, value=value)) - yield templ('extra', **args) + """:extras: List of dicts with key, value entries of the 'extras' + field of this changeset.""" + yield showlist('extra', sorted(dict(key=a, value=b) + for (a, b) in args['ctx'].extra().items()), **args) def showfileadds(**args): """:file_adds: List of strings. Files added by this changeset."""
--- a/mercurial/util.py Sat Nov 16 20:34:58 2013 -0500 +++ b/mercurial/util.py Sun Nov 17 13:42:24 2013 -0500 @@ -1033,9 +1033,10 @@ if t < 0: t = 0 # time.gmtime(lt) fails on Windows for lt < -43200 tz = 0 - if "%1" in format or "%2" in format: + if "%1" in format or "%2" in format or "%z" in format: sign = (tz > 0) and "-" or "+" minutes = abs(tz) // 60 + format = format.replace("%z", "%1%2") format = format.replace("%1", "%c%02d" % (sign, minutes // 60)) format = format.replace("%2", "%02d" % (minutes % 60)) try:
--- a/tests/hghave.py Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/hghave.py Sun Nov 17 13:42:24 2013 -0500 @@ -233,6 +233,9 @@ finally: os.rmdir(d) +def has_root(): + return os.geteuid() == 0 + def has_pyflakes(): return matchoutput("sh -c \"echo 'import re' 2>&1 | pyflakes\"", r"<stdin>:1: 're' imported but unused", @@ -312,6 +315,7 @@ "p4": (has_p4, "Perforce server and client"), "pyflakes": (has_pyflakes, "Pyflakes python linter"), "pygments": (has_pygments, "Pygments source highlighting library"), + "root": (has_root, "root permissions"), "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"),
--- a/tests/run-tests.py Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/run-tests.py Sun Nov 17 13:42:24 2013 -0500 @@ -103,6 +103,7 @@ requiredtools = [os.path.basename(sys.executable), "diff", "grep", "unzip", "gunzip", "bunzip2", "sed"] +createdfiles = [] defaults = { 'jobs': ('HGTEST_JOBS', 1), @@ -420,6 +421,11 @@ if not options.keep_tmpdir: vlog("# Cleaning up HGTMP", HGTMP) shutil.rmtree(HGTMP, True) + for f in createdfiles: + try: + os.remove(f) + except OSError: + pass def usecorrectpython(): # some tests run python interpreter. they must use same @@ -439,6 +445,7 @@ if findprogram(pyexename) != sys.executable: try: os.symlink(sys.executable, mypython) + createdfiles.append(mypython) except OSError, err: # child processes may race, which is harmless if err.errno != errno.EEXIST: @@ -498,18 +505,6 @@ usecorrectpython() - vlog("# Installing dummy diffstat") - f = open(os.path.join(BINDIR, 'diffstat'), 'w') - f.write('#!' + sys.executable + '\n' - 'import sys\n' - 'files = 0\n' - 'for line in sys.stdin:\n' - ' if line.startswith("diff "):\n' - ' files += 1\n' - 'sys.stdout.write("files patched: %d\\n" % files)\n') - f.close() - os.chmod(os.path.join(BINDIR, 'diffstat'), 0700) - if options.py3k_warnings and not options.anycoverage: vlog("# Updating hg command to enable Py3k Warnings switch") f = open(os.path.join(BINDIR, 'hg'), 'r')
--- a/tests/test-blackbox.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-blackbox.t Sun Nov 17 13:42:24 2013 -0500 @@ -65,7 +65,7 @@ $ hg rollback repository tip rolled back to revision 1 (undo pull) -#if unix-permissions +#if unix-permissions no-root $ chmod 000 .hg/blackbox.log $ hg --debug incoming warning: cannot write to blackbox.log: Permission denied @@ -98,7 +98,7 @@ (run 'hg update' to get a working copy) a failure reading from the log is fine -#if unix-permissions +#if unix-permissions no-root $ hg blackbox -l 3 abort: Permission denied: $TESTTMP/blackboxtest2/.hg/blackbox.log [255]
--- a/tests/test-clone.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-clone.t Sun Nov 17 13:42:24 2013 -0500 @@ -543,7 +543,7 @@ $ rm -rf b # work around bug with http clone -#if unix-permissions +#if unix-permissions no-root Inaccessible source @@ -596,7 +596,7 @@ [255] -#if unix-permissions +#if unix-permissions no-root leave existing directory in place after clone failure
--- a/tests/test-command-template.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-command-template.t Sun Nov 17 13:42:24 2013 -0500 @@ -447,7 +447,7 @@ Error if style not readable: -#if unix-permissions +#if unix-permissions no-root $ touch q $ chmod 0 q $ hg log --style ./q @@ -479,7 +479,7 @@ Error if include fails: $ echo 'changeset = q' >> t -#if unix-permissions +#if unix-permissions no-root $ hg log --style ./t abort: template file ./q: Permission denied [255] @@ -1445,7 +1445,7 @@ $ hg ci -m h2e -d '4 0' $ hg merge -q - $ hg ci -m merge -d '5 0' + $ hg ci -m merge -d '5 -3600' No tag set: @@ -1533,7 +1533,7 @@ > EOF $ hg -R latesttag tip - test 10:dee8f28249af + test 10:9b4a630e5f5f Test recursive showlist template (issue1989): @@ -1586,3 +1586,18 @@ h1c b a + +Test date format: + + $ hg log -R latesttag --template 'date: {date(date, "%y %m %d %S %z")}\n' + date: 70 01 01 10 +0000 + date: 70 01 01 09 +0000 + date: 70 01 01 08 +0000 + date: 70 01 01 07 +0000 + date: 70 01 01 06 +0000 + date: 70 01 01 05 +0100 + date: 70 01 01 04 +0000 + date: 70 01 01 03 +0000 + date: 70 01 01 02 +0000 + date: 70 01 01 01 +0000 + date: 70 01 01 00 +0000
--- a/tests/test-convert.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-convert.t Sun Nov 17 13:42:24 2013 -0500 @@ -310,7 +310,7 @@ abort: cannot create new bundle repository [255] -#if unix-permissions +#if unix-permissions no-root conversion to dir without permissions should fail
--- a/tests/test-journal-exists.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-journal-exists.t Sun Nov 17 13:42:24 2013 -0500 @@ -22,7 +22,7 @@ Check that zero-size journals are correctly aborted: -#if unix-permissions +#if unix-permissions no-root $ hg bundle -qa repo.hg $ chmod -w foo/.hg/store/00changelog.i
--- a/tests/test-lock-badness.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-lock-badness.t Sun Nov 17 13:42:24 2013 -0500 @@ -1,5 +1,4 @@ - $ "$TESTDIR/hghave" unix-permissions || exit 80 - +#if unix-permissions no-root $ hg init a $ echo a > a/a $ hg -R a ci -A -m a @@ -21,4 +20,4 @@ [255] $ chmod 700 a/.hg/store - +#endif
--- a/tests/test-permissions.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-permissions.t Sun Nov 17 13:42:24 2013 -0500 @@ -1,4 +1,4 @@ - $ "$TESTDIR/hghave" unix-permissions || exit 80 +#ifdef unix-permissions no-root $ hg init t $ cd t @@ -70,3 +70,5 @@ $ chmod +rx dir $ cd .. + +#endif
--- a/tests/test-phases-exchange.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-phases-exchange.t Sun Nov 17 13:42:24 2013 -0500 @@ -1062,7 +1062,7 @@ | o 0 public a-A - 054250a37db4 -#if unix-permissions +#if unix-permissions no-root Pushing From an unlockable repo --------------------------------
--- a/tests/test-pull-permission.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-pull-permission.t Sun Nov 17 13:42:24 2013 -0500 @@ -1,4 +1,4 @@ - $ "$TESTDIR/hghave" unix-permissions || exit 80 +#if unix-permissions no-root $ hg init a $ cd a @@ -30,3 +30,5 @@ 1 files, 1 changesets, 1 total revisions $ cd .. + +#endif
--- a/tests/test-repair-strip.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-repair-strip.t Sun Nov 17 13:42:24 2013 -0500 @@ -1,4 +1,4 @@ - $ "$TESTDIR/hghave" unix-permissions || exit 80 +#if unix-permissions no-root $ echo "[extensions]" >> $HGRCPATH $ echo "mq=">> $HGRCPATH @@ -130,3 +130,5 @@ 2 files, 2 changesets, 2 total revisions $ cd .. + +#endif
--- a/tests/test-serve.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-serve.t Sun Nov 17 13:42:24 2013 -0500 @@ -45,12 +45,14 @@ With -v and -p daytime (should fail because low port) +#if no-root $ KILLQUIETLY=Y $ hgserve -p daytime abort: cannot start server at 'localhost:13': Permission denied abort: child process failed to start % errors $ KILLQUIETLY=N +#endif With --prefix foo
--- a/tests/test-transplant.t Sat Nov 16 20:34:58 2013 -0500 +++ b/tests/test-transplant.t Sun Nov 17 13:42:24 2013 -0500 @@ -430,6 +430,20 @@ adding manifests adding file changes added 4 changesets with 4 changes to 4 files + +test "--merge" causing pull from source repository on local host + + $ hg --config extensions.mq= -q strip 2 + $ hg transplant -s ../t --merge tip + searching for changes + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + applying a53251cdf717 + 4:a53251cdf717 merged at 4831f4dc831a + $ cd ..