# HG changeset patch # User Martin Geisler # Date 1266189438 -3600 # Node ID ed4de30e16c5b6efb67a2a5edabb424cd4deda7d # Parent 2253715fde970449d762b5a2cb22352e59df6d7d# Parent 44b4a2a3162319ef6d21c9e9f191ecf2c42ea609 Merge with stable diff -r 2253715fde97 -r ed4de30e16c5 contrib/win32/mercurial.ini --- a/contrib/win32/mercurial.ini Sun Feb 14 17:08:52 2010 -0500 +++ b/contrib/win32/mercurial.ini Mon Feb 15 00:17:18 2010 +0100 @@ -57,6 +57,7 @@ ;pager = ;parentrevspec = ;patchbomb = +;progress = ;purge = ;rebase = ;record = diff -r 2253715fde97 -r ed4de30e16c5 hgext/bookmarks.py --- a/hgext/bookmarks.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/bookmarks.py Mon Feb 15 00:17:18 2010 +0100 @@ -30,7 +30,7 @@ from mercurial.i18n import _ from mercurial.node import nullid, nullrev, hex, short -from mercurial import util, commands, localrepo, repair, extensions +from mercurial import util, commands, repair, extensions import os def write(repo): diff -r 2253715fde97 -r ed4de30e16c5 hgext/color.py --- a/hgext/color.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/color.py Mon Feb 15 00:17:18 2010 +0100 @@ -65,7 +65,7 @@ import os, sys -from mercurial import cmdutil, commands, extensions, error +from mercurial import cmdutil, commands, extensions from mercurial.i18n import _ # start and stop parameters for effects diff -r 2253715fde97 -r ed4de30e16c5 hgext/inotify/__init__.py --- a/hgext/inotify/__init__.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/inotify/__init__.py Mon Feb 15 00:17:18 2010 +0100 @@ -11,7 +11,6 @@ # todo: socket permissions from mercurial.i18n import _ -from mercurial import cmdutil, util import server from client import client, QueryFailed diff -r 2253715fde97 -r ed4de30e16c5 hgext/inotify/linuxserver.py --- a/hgext/inotify/linuxserver.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/inotify/linuxserver.py Mon Feb 15 00:17:18 2010 +0100 @@ -8,7 +8,6 @@ from mercurial.i18n import _ from mercurial import osutil, util -import common import server import errno, os, select, stat, sys, time diff -r 2253715fde97 -r ed4de30e16c5 hgext/interhg.py --- a/hgext/interhg.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/interhg.py Mon Feb 15 00:17:18 2010 +0100 @@ -40,7 +40,7 @@ templatefilters.filters["escape"] = interhg_escape -def interhg_refresh(orig, self): +def interhg_refresh(orig, self, *args, **kwargs): interhg_table[:] = [] for key, pattern in self.repo.ui.configitems('interhg'): # grab the delimiter from the character after the "s" @@ -75,6 +75,6 @@ except re.error: self.repo.ui.warn(_("interhg: invalid regexp for %s: %s\n") % (key, regexp)) - return orig(self) + return orig(self, *args, **kwargs) extensions.wrapfunction(hgweb_mod.hgweb, 'refresh', interhg_refresh) diff -r 2253715fde97 -r ed4de30e16c5 hgext/mq.py --- a/hgext/mq.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/mq.py Mon Feb 15 00:17:18 2010 +0100 @@ -2152,7 +2152,7 @@ To set guards on another patch:: - hg qguard -- other.patch +2.6.17 -stable + hg qguard other.patch -- +2.6.17 -stable ''' def status(idx): guards = q.series_guards[idx] or ['unguarded'] @@ -2721,7 +2721,7 @@ (guard, [('l', 'list', None, _('list all patches and guards')), ('n', 'none', None, _('drop all guards'))], - _('hg qguard [-l] [-n] -- [PATCH] [+GUARD]... [-GUARD]...')), + _('hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]')), 'qheader': (header, [], _('hg qheader [PATCH]')), "^qimport": (qimport, diff -r 2253715fde97 -r ed4de30e16c5 hgext/progress.py --- a/hgext/progress.py Sun Feb 14 17:08:52 2010 -0500 +++ b/hgext/progress.py Mon Feb 15 00:17:18 2010 +0100 @@ -33,13 +33,12 @@ # (that is, min(width, term width) will be used) clear-complete = True # clear the progress bar after it's done -Valid entries for the format field are topic, bar, number, unit, and item. -item defaults to the last 20 characters of the item, but this can be -changed by adding either - which would take the last num characters, -or + for the first num characters. +Valid entries for the format field are topic, bar, number, unit, and +item. item defaults to the last 20 characters of the item, but this +can be changed by adding either ``-`` which would take the last +num characters, or ``+`` for the first num characters. """ -import math import sys import time @@ -157,7 +156,8 @@ if topic not in self.topics: self.topics.append(topic) now = time.time() - if now - self.lastprint > 0.1 and topic == self.topics[-1]: + if (now - self.lastprint >= self.refresh + and topic == self.topics[-1]): self.lastprint = now self.show(topic, pos, item, unit, total) return orig(topic, pos, item=item, unit=unit, total=total) diff -r 2253715fde97 -r ed4de30e16c5 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Sun Feb 14 17:08:52 2010 -0500 +++ b/mercurial/cmdutil.py Mon Feb 15 00:17:18 2010 +0100 @@ -7,7 +7,7 @@ from node import hex, nullid, nullrev, short from i18n import _ -import os, sys, errno, re, glob, tempfile, time +import os, sys, errno, re, glob, tempfile import mdiff, bdiff, util, templater, patch, error, encoding, templatekw import match as _match diff -r 2253715fde97 -r ed4de30e16c5 mercurial/copies.py --- a/mercurial/copies.py Sun Feb 14 17:08:52 2010 -0500 +++ b/mercurial/copies.py Mon Feb 15 00:17:18 2010 +0100 @@ -5,7 +5,6 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -from i18n import _ import util import heapq diff -r 2253715fde97 -r ed4de30e16c5 mercurial/patch.py --- a/mercurial/patch.py Sun Feb 14 17:08:52 2010 -0500 +++ b/mercurial/patch.py Mon Feb 15 00:17:18 2010 +0100 @@ -1435,9 +1435,6 @@ copy = {} if opts.git or opts.upgrade: copy = copies.copies(repo, ctx1, ctx2, repo[nullid])[0] - copy = copy.copy() - for k, v in copy.items(): - copy[v] = k difffn = lambda opts, losedata: trydiff(repo, revs, ctx1, ctx2, modified, added, removed, copy, getfilectx, opts, losedata) @@ -1467,6 +1464,8 @@ gone = set() gitmode = {'l': '120000', 'x': '100755', '': '100644'} + copyto = dict([(v, k) for k, v in copy.items()]) + if opts.git: revs = None @@ -1483,9 +1482,12 @@ if opts.git or losedatafn: if f in added: mode = gitmode[ctx2.flags(f)] - if f in copy: + if f in copy or f in copyto: if opts.git: - a = copy[f] + if f in copy: + a = copy[f] + else: + a = copyto[f] omode = gitmode[man1.flags(a)] _addmodehdr(header, omode, mode) if a in removed and a not in gone: @@ -1514,7 +1516,10 @@ elif f in removed: if opts.git: # have we already reported a copy above? - if f in copy and copy[f] in added and copy[copy[f]] == f: + if ((f in copy and copy[f] in added + and copyto[copy[f]] == f) or + (f in copyto and copyto[f] in added + and copy[copyto[f]] == f)): dodiff = False else: header.append('deleted file mode %s\n' % diff -r 2253715fde97 -r ed4de30e16c5 tests/filtertmp.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/filtertmp.py Mon Feb 15 00:17:18 2010 +0100 @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# +# This used to be a simple sed call like: +# +# $ sed "s:$HGTMP:*HGTMP*:" +# +# But $HGTMP has ':' under Windows which breaks the sed call. +# +import sys, os + +input = sys.stdin.read() +input = input.replace(os.sep, '/') +hgtmp = os.environ['HGTMP'].replace(os.sep, '/') +input = input.replace(hgtmp, '$HGTMP') +sys.stdout.write(input) diff -r 2253715fde97 -r ed4de30e16c5 tests/test-interhg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-interhg Mon Feb 15 00:17:18 2010 +0100 @@ -0,0 +1,28 @@ +#!/bin/sh + +hg init test +cd test + +cat > .hg/hgrc <Issue\1| + +# yes, 'x' is a weird delimiter... +markbugs = sxbugxbugx +EOF + +touch foo +hg add foo +hg commit -d '1 0' -m 'Issue123: fixed the bug!' + +hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log +cat hg.pid >> $DAEMON_PIDS + +echo % log +"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/' | grep bts + +echo % errors +cat errors.log diff -r 2253715fde97 -r ed4de30e16c5 tests/test-interhg.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-interhg.out Mon Feb 15 00:17:18 2010 +0100 @@ -0,0 +1,3 @@ +% log + Issue123: fixed the bug!default tip +% errors diff -r 2253715fde97 -r ed4de30e16c5 tests/test-progress --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-progress Mon Feb 15 00:17:18 2010 +0100 @@ -0,0 +1,60 @@ +#!/bin/sh + +cat > loop.py <= 0: + total = loops + loops = abs(loops) + + for i in range(loops): + ui.progress('loop', i, 'loop.%d' % i, 'loopnum', total) + ui.progress('loop', None, 'loop.done', 'loopnum', total) + +commands.norepo += " loop" + +cmdtable = { + "loop": (loop, [], 'hg loop LOOPS'), +} +EOF + +cat > filtercr.py <> $HGRCPATH +echo "progress=" >> $HGRCPATH +echo "loop=" `pwd`/loop.py >> $HGRCPATH +echo "[ui]" >> $HGRCPATH +echo "interactive=1" >> $HGRCPATH + +echo '% test default params, display nothing because of delay' +hg -y loop 3 | python filtercr.py + +echo "[progress]" >> $HGRCPATH +echo "delay=0" >> $HGRCPATH +echo "refresh=0" >> $HGRCPATH + +echo '% test with delay=0, refresh=0' +hg -y loop 3 | python filtercr.py + +echo '% test refresh is taken in account' +hg -y --config progress.refresh=100 loop 3 | python filtercr.py + +echo '% test format options 1' +hg -y --config 'progress.format=number topic item+2' loop 2 | python filtercr.py + +echo '% test format options 2' +hg -y --config 'progress.format=number item-3 bar' loop 2 | python filtercr.py + +echo '% test format options and indeterminate progress' +hg -y --config 'progress.format=number item bar' loop -- -2 | python filtercr.py + +echo '% test immediate progress completion' +hg -y loop 0 | python filtercr.py diff -r 2253715fde97 -r ed4de30e16c5 tests/test-progress.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-progress.out Mon Feb 15 00:17:18 2010 +0100 @@ -0,0 +1,20 @@ +% test default params, display nothing because of delay +% test with delay=0, refresh=0 + +loop [ ] 0/3 +loop [=====================> ] 1/3 +loop [============================================> ] 2/3 + % test refresh is taken in account +% test format options 1 + +0/2 loop lo +1/2 loop lo + % test format options 2 + +0/2 p.0 [ ] +1/2 p.1 [=================================> ] + % test format options and indeterminate progress + +0 loop.0 [ <=> ] +1 loop.1 [ <=> ] + % test immediate progress completion diff -r 2253715fde97 -r ed4de30e16c5 tests/test-pull --- a/tests/test-pull Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-pull Mon Feb 15 00:17:18 2010 +0100 @@ -26,6 +26,10 @@ hg pull -u ../test echo % test file: uri handling -hg pull -q file://../test-doesnt-exist +hg pull -q file://../test-doesnt-exist 2>&1 \ + | sed 's%abort: repository.*/test-doesnt-exist%abort: repository /test-doesnt-exist%' hg pull -q file:../test -hg pull -q file://foobar`pwd`/../test +# It's tricky to make file:// URLs working on every platforms +# with regular shell commands. +URL=`python -c "import os; print 'file://foobar' + ('/' + os.getcwd().replace(os.sep, '/')).replace('//', '/') + '/../test'"` +hg pull -q $URL diff -r 2253715fde97 -r ed4de30e16c5 tests/test-push-validation --- a/tests/test-push-validation Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-push-validation Mon Feb 15 00:17:18 2010 +0100 @@ -1,7 +1,5 @@ #!/bin/sh -STRIP=`pwd` - hg init test cd test cat > .hg/hgrc <> beta hg ci -m '2 (corrupt)' mv tmp .hg/store/data/beta.i -hg push 2>&1 | sed "s%$STRIP%test-root%" +hg push 2>&1 | "$TESTDIR/filtertmp.py" diff -r 2253715fde97 -r ed4de30e16c5 tests/test-push-validation.out --- a/tests/test-push-validation.out Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-push-validation.out Mon Feb 15 00:17:18 2010 +0100 @@ -2,7 +2,7 @@ adding beta updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved -pushing to test-root/test +pushing to $HGTMP/test-push-validation/test searching for changes adding changesets adding manifests diff -r 2253715fde97 -r ed4de30e16c5 tests/test-rename --- a/tests/test-rename Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-rename Mon Feb 15 00:17:18 2010 +0100 @@ -210,6 +210,13 @@ hg status -C hg update -C +echo '# overwriting with renames (issue1959)' +hg rename d1/a d1/c +hg rename d1/b d1/a +hg status -C +hg diff --git +hg update -C + echo "# check illegal path components" hg rename d1/d11/a1 .hg/foo diff -r 2253715fde97 -r ed4de30e16c5 tests/test-rename.out --- a/tests/test-rename.out Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-rename.out Mon Feb 15 00:17:18 2010 +0100 @@ -300,6 +300,19 @@ # idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b) M d1/b 1 files updated, 0 files merged, 0 files removed, 0 files unresolved +# overwriting with renames (issue1959) +A d1/a + d1/b +A d1/c + d1/a +R d1/b +diff --git a/d1/b b/d1/a +rename from d1/b +rename to d1/a +diff --git a/d1/a b/d1/c +copy from d1/a +copy to d1/c +2 files updated, 0 files merged, 1 files removed, 0 files unresolved # check illegal path components abort: path contains illegal component: .hg/foo abort: ../foo not under root diff -r 2253715fde97 -r ed4de30e16c5 tests/test-share --- a/tests/test-share Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-share Mon Feb 15 00:17:18 2010 +0100 @@ -19,7 +19,7 @@ && echo "fail: .hg/store should not exist" \ || echo "pass: .hg/store does not exist" # Some sed versions appends newline, some don't, and some just fails -(cat .hg/sharedpath; echo) | head -n1 | sed "s:$HGTMP:*HGTMP*:" +(cat .hg/sharedpath; echo) | head -n1 | "$TESTDIR/filtertmp.py" echo % commit in shared clone echo a >> a diff -r 2253715fde97 -r ed4de30e16c5 tests/test-share.out --- a/tests/test-share.out Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-share.out Mon Feb 15 00:17:18 2010 +0100 @@ -5,7 +5,7 @@ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved % contents of repo2/.hg pass: .hg/store does not exist -*HGTMP*/test-share/repo1/.hg +$HGTMP/test-share/repo1/.hg % commit in shared clone % check original changeset: 1:8af4dc49db9e diff -r 2253715fde97 -r ed4de30e16c5 tests/test-subrepo --- a/tests/test-subrepo Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-subrepo Mon Feb 15 00:17:18 2010 +0100 @@ -180,7 +180,9 @@ hg -R main ci -m "add subrepos" cd .. hg clone mercurial/main mercurial2/main -cat mercurial2/main/nested_absolute/.hg/hgrc mercurial2/main/nested_relative/.hg/hgrc | sed "s:${PWD}:/tmp:" +cat mercurial2/main/nested_absolute/.hg/hgrc \ + mercurial2/main/nested_relative/.hg/hgrc \ + | "$TESTDIR/filtertmp.py" rm -rf mercurial mercurial2 exit 0 diff -r 2253715fde97 -r ed4de30e16c5 tests/test-subrepo.out --- a/tests/test-subrepo.out Sun Feb 14 17:08:52 2010 -0500 +++ b/tests/test-subrepo.out Mon Feb 15 00:17:18 2010 +0100 @@ -256,6 +256,6 @@ updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved [paths] -default = /tmp/mercurial/main/nested_absolute +default = $HGTMP/test-subrepo/sub/mercurial/main/nested_absolute [paths] -default = /tmp/mercurial/main/nested_relative +default = $HGTMP/test-subrepo/sub/mercurial/main/nested_relative