# HG changeset patch # User Wagner Bruna # Date 1280638281 10800 # Node ID 0b8d17bb8b2d5ba837e036a49358e64e86eb119d # Parent 281a812297cc84ef3f208b899b8ac9c55ead4ca5# Parent db426935fa94a39aead18eab3e8145384f556608 Merge with stable diff -r 281a812297cc -r 0b8d17bb8b2d doc/runrst --- a/doc/runrst Sun Aug 01 01:46:58 2010 -0300 +++ b/doc/runrst Sun Aug 01 01:51:21 2010 -0300 @@ -13,9 +13,14 @@ """ import sys -from docutils.parsers.rst import roles -from docutils.core import publish_cmdline -from docutils import nodes, utils +try: + from docutils.parsers.rst import roles + from docutils.core import publish_cmdline + from docutils import nodes, utils +except ImportError: + sys.stderr.write("abort: couldn't generate documentation: docutils " + "module is missing\n") + sys.exit(-1) def role_hg(name, rawtext, text, lineno, inliner, options={}, content=[]): diff -r 281a812297cc -r 0b8d17bb8b2d hgext/bookmarks.py --- a/hgext/bookmarks.py Sun Aug 01 01:46:58 2010 -0300 +++ b/hgext/bookmarks.py Sun Aug 01 01:51:21 2010 -0300 @@ -136,6 +136,9 @@ if "\n" in mark: raise util.Abort(_("bookmark name cannot contain newlines")) mark = mark.strip() + if not mark: + raise util.Abort(_("bookmark names cannot consist entirely of " + "whitespace")) if mark in marks and not force: raise util.Abort(_("a bookmark of the same name already exists")) if ((mark in repo.branchtags() or mark == repo.dirstate.branch()) diff -r 281a812297cc -r 0b8d17bb8b2d hgext/keyword.py --- a/hgext/keyword.py Sun Aug 01 01:46:58 2010 -0300 +++ b/hgext/keyword.py Sun Aug 01 01:51:21 2010 -0300 @@ -108,7 +108,7 @@ svnutcdate = lambda x: util.datestr((x[0], 0), '%Y-%m-%d %H:%M:%SZ') # make keyword tools accessible -kwtools = {'templater': None, 'hgcmd': '', 'inc': [], 'exc': ['.hg*']} +kwtools = {'templater': None, 'hgcmd': ''} def _defaultkwmaps(ui): @@ -141,11 +141,10 @@ provides keyword substitution functions. ''' - def __init__(self, ui, repo): + def __init__(self, ui, repo, inc, exc): self.ui = ui self.repo = repo - self.match = match.match(repo.root, '', [], - kwtools['inc'], kwtools['exc']) + self.match = match.match(repo.root, '', [], inc, exc) self.restrict = kwtools['hgcmd'] in restricted.split() self.record = kwtools['hgcmd'] in recordcommands.split() @@ -438,23 +437,15 @@ def uisetup(ui): - '''Collects [keyword] config in kwtools. - Monkeypatches dispatch._parse if needed.''' - - for pat, opt in ui.configitems('keyword'): - if opt != 'ignore': - kwtools['inc'].append(pat) - else: - kwtools['exc'].append(pat) + ''' Monkeypatches dispatch._parse to retrieve user command.''' - if kwtools['inc']: - def kwdispatch_parse(orig, ui, args): - '''Monkeypatch dispatch._parse to obtain running hg command.''' - cmd, func, args, options, cmdoptions = orig(ui, args) - kwtools['hgcmd'] = cmd - return cmd, func, args, options, cmdoptions + def kwdispatch_parse(orig, ui, args): + '''Monkeypatch dispatch._parse to obtain running hg command.''' + cmd, func, args, options, cmdoptions = orig(ui, args) + kwtools['hgcmd'] = cmd + return cmd, func, args, options, cmdoptions - extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse) + extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse) def reposetup(ui, repo): '''Sets up repo as kwrepo for keyword substitution. @@ -465,15 +456,23 @@ Monkeypatches patch and webcommands.''' try: - if (not repo.local() or not kwtools['inc'] - or kwtools['hgcmd'] in nokwcommands.split() + if (not repo.local() or kwtools['hgcmd'] in nokwcommands.split() or '.hg' in util.splitpath(repo.root) or repo._url.startswith('bundle:')): return except AttributeError: pass - kwtools['templater'] = kwt = kwtemplater(ui, repo) + inc, exc = [], ['.hg*'] + for pat, opt in ui.configitems('keyword'): + if opt != 'ignore': + inc.append(pat) + else: + exc.append(pat) + if not inc: + return + + kwtools['templater'] = kwt = kwtemplater(ui, repo, inc, exc) class kwrepo(repo.__class__): def file(self, f): diff -r 281a812297cc -r 0b8d17bb8b2d hgext/mq.py --- a/hgext/mq.py Sun Aug 01 01:46:58 2010 -0300 +++ b/hgext/mq.py Sun Aug 01 01:51:21 2010 -0300 @@ -1051,12 +1051,16 @@ self.check_localchanges(repo) if move: - try: - index = self.series.index(patch, start) - fullpatch = self.full_series[index] - del self.full_series[index] - except ValueError: - raise util.Abort(_("patch '%s' not found") % patch) + if not patch: + raise util.Abort(_("please specify the patch to move")) + for i, rpn in enumerate(self.full_series[start:]): + # strip markers for patch guards + if self.guard_re.split(rpn, 1)[0] == patch: + break + index = start + i + assert index < len(self.full_series) + fullpatch = self.full_series[index] + del self.full_series[index] self.full_series.insert(start, fullpatch) self.parse_series() self.series_dirty = 1 @@ -1702,7 +1706,7 @@ else: text = url.open(self.ui, filename).read() except (OSError, IOError): - raise util.Abort(_("unable to read %s") % filename) + raise util.Abort(_("unable to read file %s") % filename) if not patchname: patchname = normname(os.path.basename(filename)) self.check_reserved_name(patchname) diff -r 281a812297cc -r 0b8d17bb8b2d mercurial/commands.py --- a/mercurial/commands.py Sun Aug 01 01:46:58 2010 -0300 +++ b/mercurial/commands.py Sun Aug 01 01:51:21 2010 -0300 @@ -3660,6 +3660,8 @@ for n in names: if n in ['tip', '.', 'null']: raise util.Abort(_('the name \'%s\' is reserved') % n) + if not n: + raise util.Abort(_('tag names cannot consist entirely of whitespace')) if opts.get('rev') and opts.get('remove'): raise util.Abort(_("--rev and --remove are incompatible")) if opts.get('rev'): diff -r 281a812297cc -r 0b8d17bb8b2d mercurial/dispatch.py --- a/mercurial/dispatch.py Sun Aug 01 01:46:58 2010 -0300 +++ b/mercurial/dispatch.py Sun Aug 01 01:51:21 2010 -0300 @@ -248,7 +248,7 @@ if self.shadows: ui.debug("alias '%s' shadows command\n" % self.name) - return self.fn(ui, *args, **opts) + return util.checksignature(self.fn)(ui, *args, **opts) def addaliases(ui, cmdtable): # aliases are processed after extensions have been loaded, so they @@ -366,7 +366,12 @@ os.chdir(cwd[-1]) # read the local repository .hgrc into a local ui object - path = cmdutil.findrepo(os.getcwd()) or "" + try: + wd = os.getcwd() + except OSError, e: + raise util.Abort(_("error getting current working directory: %s") % + e.strerror) + path = cmdutil.findrepo(wd) or "" if not path: lui = ui else: diff -r 281a812297cc -r 0b8d17bb8b2d mercurial/hgweb/hgwebdir_mod.py --- a/mercurial/hgweb/hgwebdir_mod.py Sun Aug 01 01:46:58 2010 -0300 +++ b/mercurial/hgweb/hgwebdir_mod.py Sun Aug 01 01:51:21 2010 -0300 @@ -32,7 +32,7 @@ except KeyError: repos.append((prefix, root)) continue - roothead = os.path.normpath(roothead) + roothead = os.path.normpath(os.path.abspath(roothead)) for path in util.walkrepos(roothead, followsym=True, recurse=recurse): path = os.path.normpath(path) name = util.pconvert(path[len(roothead):]).strip('/') diff -r 281a812297cc -r 0b8d17bb8b2d mercurial/merge.py --- a/mercurial/merge.py Sun Aug 01 01:46:58 2010 -0300 +++ b/mercurial/merge.py Sun Aug 01 01:51:21 2010 -0300 @@ -286,7 +286,7 @@ numupdates = len(action) for i, a in enumerate(action): f, m = a[:2] - u.progress('update', i + 1, item=f, total=numupdates, unit='files') + u.progress(_('updating'), i + 1, item=f, total=numupdates, unit='files') if f and f[0] == "/": continue if m == "r": # remove @@ -346,7 +346,7 @@ elif m == "e": # exec flags = a[2] util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags) - u.progress('update', None, total=numupdates, unit='files') + u.progress(_('updating'), None, total=numupdates, unit='files') return updated, merged, removed, unresolved diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-alias --- a/tests/test-alias Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-alias Sun Aug 01 01:51:21 2010 -0300 @@ -14,6 +14,7 @@ dln = lognull --debug nousage = rollback put = export -r 0 -o "\$FOO/%R.diff" +rt = root [defaults] mylog = -q @@ -64,3 +65,8 @@ echo '% path expanding' FOO=`pwd` hg put cat 0.diff + +echo '% invalid arguments' +hg rt foo + +exit 0 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-alias.out --- a/tests/test-alias.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-alias.out Sun Aug 01 01:51:21 2010 -0300 @@ -43,3 +43,16 @@ +++ b/foo Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +foo +% invalid arguments +hg rt: invalid arguments +hg rt + +alias for: hg root + +print the root (top) of the current working directory + + Print the root directory of the current repository. + + Returns 0 on success. + +use "hg -v help rt" to show global options diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-bookmarks --- a/tests/test-bookmarks Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-bookmarks Sun Aug 01 01:51:21 2010 -0300 @@ -100,4 +100,7 @@ echo % revision but no bookmark name hg bookmark -r . +echo % bookmark name with whitespace only +hg bookmark ' ' + true diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-bookmarks.out --- a/tests/test-bookmarks.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-bookmarks.out Sun Aug 01 01:51:21 2010 -0300 @@ -74,3 +74,5 @@ * x y 2:0316ce92851d % revision but no bookmark name abort: bookmark name required +% bookmark name with whitespace only +abort: bookmark names cannot consist entirely of whitespace diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-copy-move-merge.out --- a/tests/test-copy-move-merge.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-copy-move-merge.out Sun Aug 01 01:51:21 2010 -0300 @@ -15,12 +15,12 @@ preserving a for resolve of b preserving a for resolve of c removing a -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'internal:merge' for b (binary False symlink False) merging a and b to b my b@fb3948d97f07+ other b@7f1309517659 ancestor a@583c7b748052 premerge successful -update: a 2/2 files (100.00%) +updating: a 2/2 files (100.00%) picked tool 'internal:merge' for c (binary False symlink False) merging a and c to c my c@fb3948d97f07+ other c@7f1309517659 ancestor a@583c7b748052 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-dispatch --- a/tests/test-dispatch Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-dispatch Sun Aug 01 01:51:21 2010 -0300 @@ -3,6 +3,8 @@ "$TESTDIR/hghave" no-outer-repo || exit 80 +dir=`pwd` + hg init a cd a echo a > a @@ -19,8 +21,12 @@ EOF hg cat a +echo '% working directory removed' +rm -rf $dir/a +hg --version + echo '% no repo' -cd .. +cd $dir hg cat exit 0 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-dispatch.out --- a/tests/test-dispatch.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-dispatch.out Sun Aug 01 01:51:21 2010 -0300 @@ -33,5 +33,7 @@ % [defaults] a a: No such file in rev 000000000000 +% working directory removed +abort: error getting current working directory: No such file or directory % no repo abort: There is no Mercurial repository here (.hg not found)! diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-double-merge.out --- a/tests/test-double-merge.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-double-merge.out Sun Aug 01 01:51:21 2010 -0300 @@ -17,12 +17,12 @@ foo: remote copied to bar -> m preserving foo for resolve of bar preserving foo for resolve of foo -update: foo 1/2 files (50.00%) +updating: foo 1/2 files (50.00%) picked tool 'internal:merge' for bar (binary False symlink False) merging foo and bar to bar my bar@2092631ce82b+ other bar@d9da848d0adf ancestor foo@310fd17130da premerge successful -update: foo 2/2 files (100.00%) +updating: foo 2/2 files (100.00%) picked tool 'internal:merge' for foo (binary False symlink False) merging foo my foo@2092631ce82b+ other foo@d9da848d0adf ancestor foo@310fd17130da diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-encoding-align --- a/tests/test-encoding-align Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-encoding-align Sun Aug 01 01:51:21 2010 -0300 @@ -60,34 +60,38 @@ #### - user names in annotate #### - file names in diffstat +rm -f s; touch s +rm -f m; touch m +rm -f l; touch l + #### add files -touch $S +cp s $S hg add $S -touch $M +cp m $M hg add $M -touch $L +cp l $L hg add $L #### commit(1) -echo 'first line(1)' >> $S -echo 'first line(2)' >> $M -echo 'first line(3)' >> $L +echo 'first line(1)' >> s; cp s $S +echo 'first line(2)' >> m; cp m $M +echo 'first line(3)' >> l; cp l $L hg commit -m 'first commit' -u $S -d "1000000 0" #### commit(2) -echo 'second line(1)' >> $S -echo 'second line(2)' >> $M -echo 'second line(3)' >> $L +echo 'second line(1)' >> s; cp s $S +echo 'second line(2)' >> m; cp m $M +echo 'second line(3)' >> l; cp l $L hg commit -m 'second commit' -u $M -d "1000000 0" #### commit(3) -echo 'third line(1)' >> $S -echo 'third line(2)' >> $M -echo 'third line(3)' >> $L +echo 'third line(1)' >> s; cp s $S +echo 'third line(2)' >> m; cp m $M +echo 'third line(3)' >> l; cp l $L hg commit -m 'third commit' -u $L -d "1000000 0" #### check diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-hgwebdir --- a/tests/test-hgwebdir Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-hgwebdir Sun Aug 01 01:51:21 2010 -0300 @@ -65,6 +65,8 @@ b=$root/b coll=$root/* rcoll=$root/** +star=* +starstar=** EOF hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \ diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-hgwebdir.out --- a/tests/test-hgwebdir.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-hgwebdir.out Sun Aug 01 01:51:21 2010 -0300 @@ -46,6 +46,15 @@ /rcoll/b/ /rcoll/b/d/ /rcoll/c/ +/star/webdir/a/ +/star/webdir/a/.hg/patches/ +/star/webdir/b/ +/star/webdir/c/ +/starstar/webdir/a/ +/starstar/webdir/a/.hg/patches/ +/starstar/webdir/b/ +/starstar/webdir/b/d/ +/starstar/webdir/c/ 200 Script output follows @@ -165,6 +174,78 @@ + +star/webdir/a +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +star/webdir/a/.hg/patches +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +star/webdir/b +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +star/webdir/c +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +starstar/webdir/a +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +starstar/webdir/a/.hg/patches +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +starstar/webdir/b +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +starstar/webdir/b/d +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + + +starstar/webdir/c +unknown +Foo Bar <foo.bar@example.com> +seconds ago + + + diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-issue522.out --- a/tests/test-issue522.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-issue522.out Sun Aug 01 01:51:21 2010 -0300 @@ -8,7 +8,7 @@ overwrite None partial False ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee foo: remote is newer -> g -update: foo 1/1 files (100.00%) +updating: foo 1/1 files (100.00%) getting foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-issue672.out --- a/tests/test-issue672.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-issue672.out Sun Aug 01 01:51:21 2010 -0300 @@ -13,9 +13,9 @@ ancestor 81f4b099af3d local c64f439569a9+ remote c12dcd37c90a 1: other deleted -> r 1a: remote created -> g -update: 1 1/2 files (50.00%) +updating: 1 1/2 files (50.00%) removing 1 -update: 1a 2/2 files (100.00%) +updating: 1a 2/2 files (100.00%) getting 1a 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) @@ -33,7 +33,7 @@ ancestor c64f439569a9 local e327dca35ac8+ remote 746e9549ea96 1a: local copied/moved to 1 -> m preserving 1a for resolve of 1a -update: 1a 1/1 files (100.00%) +updating: 1a 1/1 files (100.00%) picked tool 'internal:merge' for 1a (binary False symlink False) merging 1a and 1 to 1a my 1a@e327dca35ac8+ other 1@746e9549ea96 ancestor 1@81f4b099af3d @@ -53,7 +53,7 @@ 1: remote moved to 1a -> m preserving 1 for resolve of 1a removing 1 -update: 1 1/1 files (100.00%) +updating: 1 1/1 files (100.00%) picked tool 'internal:merge' for 1a (binary False symlink False) merging 1 and 1a to 1a my 1a@746e9549ea96+ other 1a@e327dca35ac8 ancestor 1@81f4b099af3d diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-keyword --- a/tests/test-keyword Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-keyword Sun Aug 01 01:51:21 2010 -0300 @@ -283,8 +283,17 @@ echo % cat a cat a +echo % clone +cd .. + +echo % expansion in dest +hg --quiet clone Test globalconf +cat globalconf/a +echo % no expansion in dest +hg --quiet --config 'keyword.**=ignore' clone Test localconf +cat localconf/a + echo % clone to test incoming -cd .. hg clone -r1 Test Test-a cd Test-a cat <> .hg/hgrc diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-keyword.out --- a/tests/test-keyword.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-keyword.out Sun Aug 01 01:51:21 2010 -0300 @@ -333,6 +333,17 @@ do not process $Id: xxx $ $Xinfo: User Name : firstline $ +% clone +% expansion in dest +expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ +do not process $Id: +xxx $ +$Xinfo: User Name : firstline $ +% no expansion in dest +expand $Id$ +do not process $Id: +xxx $ +$Xinfo$ % clone to test incoming requesting all changes adding changesets diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-merge-commit.out --- a/tests/test-merge-commit.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-merge-commit.out Sun Aug 01 01:51:21 2010 -0300 @@ -28,7 +28,7 @@ ancestor 0f2ff26688b9 local 2263c1be0967+ remote 0555950ead28 bar: versions differ -> m preserving bar for resolve of bar -update: bar 1/1 files (100.00%) +updating: bar 1/1 files (100.00%) picked tool 'internal:merge' for bar (binary False symlink False) merging bar my bar@2263c1be0967+ other bar@0555950ead28 ancestor bar@0f2ff26688b9 @@ -79,7 +79,7 @@ ancestor 0f2ff26688b9 local 2263c1be0967+ remote 3ffa6b9e35f0 bar: versions differ -> m preserving bar for resolve of bar -update: bar 1/1 files (100.00%) +updating: bar 1/1 files (100.00%) picked tool 'internal:merge' for bar (binary False symlink False) merging bar my bar@2263c1be0967+ other bar@3ffa6b9e35f0 ancestor bar@0f2ff26688b9 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-merge-types.out --- a/tests/test-merge-types.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-merge-types.out Sun Aug 01 01:51:21 2010 -0300 @@ -8,7 +8,7 @@ conflicting flags for a (n)one, e(x)ec or sym(l)ink? n a: update permissions -> e -update: a 1/1 files (100.00%) +updating: a 1/1 files (100.00%) 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) % symlink is local parent, executable is other @@ -21,7 +21,7 @@ conflicting flags for a (n)one, e(x)ec or sym(l)ink? n a: remote is newer -> g -update: a 1/1 files (100.00%) +updating: a 1/1 files (100.00%) getting a 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-merge7.out --- a/tests/test-merge7.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-merge7.out Sun Aug 01 01:51:21 2010 -0300 @@ -25,7 +25,7 @@ ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360 test.txt: versions differ -> m preserving test.txt for resolve of test.txt -update: test.txt 1/1 files (100.00%) +updating: test.txt 1/1 files (100.00%) picked tool 'internal:merge' for test.txt (binary False symlink False) merging test.txt my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-mq --- a/tests/test-mq Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-mq Sun Aug 01 01:51:21 2010 -0300 @@ -107,6 +107,11 @@ hg qnew -m 'foo bar' test.patch +echo '# comment' > .hg/patches/series.tmp +echo >> .hg/patches/series.tmp # empty line +cat .hg/patches/series >> .hg/patches/series.tmp +mv .hg/patches/series.tmp .hg/patches/series + echo % qrefresh echo a >> a @@ -228,17 +233,29 @@ echo % qpush --move hg qpop -a +hg qguard test1b.patch -- -negguard +hg qguard test2.patch -- +posguard +hg qpush --move test2.patch # can't move guarded patch +hg qselect posguard hg qpush --move test2.patch # move to front -hg qpush --move test1b.patch +hg qpush --move test1b.patch # negative guard unselected hg qpush --move test.patch # noop move hg qseries -v hg qpop -a -hg qpush --move test.patch # cleaning up +# cleaning up +hg qselect --none +hg qguard --none test1b.patch +hg qguard --none test2.patch +hg qpush --move test.patch hg qpush --move test1b.patch hg qpush --move bogus # nonexistent patch +hg qpush --move # no patch hg qpush --move test.patch # already applied hg qpush +echo % series after move +cat `hg root`/.hg/patches/series + echo % pop, qapplied, qunapplied hg qseries -v echo % qapplied -1 test.patch diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-mq-qimport-fail-cleanup.out --- a/tests/test-mq-qimport-fail-cleanup.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-mq-qimport-fail-cleanup.out Sun Aug 01 01:51:21 2010 -0300 @@ -4,7 +4,7 @@ #qimport valid patch followed by invalid patch adding b.patch to series file -abort: unable to read fakepatch +abort: unable to read file fakepatch #valid patches before fail added to series b.patch diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-mq-qimport.out --- a/tests/test-mq-qimport.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-mq-qimport.out Sun Aug 01 01:51:21 2010 -0300 @@ -1,5 +1,5 @@ % qimport non-existing-file -abort: unable to read non-existing-file +abort: unable to read file non-existing-file % import email adding email to series file applying email diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-mq.out --- a/tests/test-mq.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-mq.out Sun Aug 01 01:51:21 2010 -0300 @@ -209,6 +209,8 @@ popping test1b.patch popping test.patch patch queue now empty +cannot push 'test2.patch' - guarded by ['+posguard'] +number of unguarded, unapplied patches has changed from 2 to 3 applying test2.patch now at: test2.patch applying test1b.patch @@ -222,14 +224,23 @@ popping test1b.patch popping test2.patch patch queue now empty +guards deactivated +number of unguarded, unapplied patches has changed from 3 to 2 applying test.patch now at: test.patch applying test1b.patch now at: test1b.patch abort: patch bogus not in series +abort: please specify the patch to move abort: cannot push to a previous patch: test.patch applying test2.patch now at: test2.patch +% series after move +test.patch +test1b.patch +test2.patch +# comment + % pop, qapplied, qunapplied 0 A test.patch 1 A test1b.patch diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-rename-dir-merge.out --- a/tests/test-rename-dir-merge.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-rename-dir-merge.out Sun Aug 01 01:51:21 2010 -0300 @@ -28,17 +28,17 @@ a/a: other deleted -> r b/a: remote created -> g b/b: remote created -> g -update: a/a 1/6 files (16.67%) +updating: a/a 1/6 files (16.67%) removing a/a -update: a/b 2/6 files (33.33%) +updating: a/b 2/6 files (33.33%) removing a/b -update: a/c 3/6 files (50.00%) +updating: a/c 3/6 files (50.00%) moving a/c to b/c -update: a/d 4/6 files (66.67%) +updating: a/d 4/6 files (66.67%) moving a/d to b/d -update: b/a 5/6 files (83.33%) +updating: b/a 5/6 files (83.33%) getting b/a -update: b/b 6/6 files (100.00%) +updating: b/b 6/6 files (100.00%) getting b/b 4 files updated, 0 files merged, 2 files removed, 0 files unresolved (branch merge, don't forget to commit) @@ -70,7 +70,7 @@ overwrite None partial False ancestor f9b20c0d4c51 local 397f8b00a740+ remote ce36d17b18fb None: local renamed directory to b/c -> d -update:None 1/1 files (100.00%) +updating:None 1/1 files (100.00%) getting a/c to b/c 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-rename-merge1.out --- a/tests/test-rename-merge1.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-rename-merge1.out Sun Aug 01 01:51:21 2010 -0300 @@ -21,16 +21,16 @@ b2: remote created -> g preserving a for resolve of b removing a -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) picked tool 'internal:merge' for b (binary False symlink False) merging a and b to b my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c premerge successful -update: a2 2/3 files (66.67%) +updating: a2 2/3 files (66.67%) warning: detected divergent renames of a2 to: c2 b2 -update: b2 3/3 files (100.00%) +updating: b2 3/3 files (100.00%) getting b2 1 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-rename-merge2.out --- a/tests/test-rename-merge2.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-rename-merge2.out Sun Aug 01 01:51:21 2010 -0300 @@ -15,12 +15,12 @@ a: remote copied to b -> m preserving a for resolve of b preserving rev for resolve of rev -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging a and b to b my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337 premerge successful -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 @@ -50,14 +50,14 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) getting a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337 premerge successful -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 @@ -87,12 +87,12 @@ preserving a for resolve of b preserving rev for resolve of rev removing a -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging a and b to b my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337 premerge successful -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 @@ -120,12 +120,12 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337 premerge successful -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 @@ -152,9 +152,9 @@ rev: versions differ -> m b: remote created -> g preserving rev for resolve of rev -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) getting b -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 @@ -180,7 +180,7 @@ ancestor 924404dff337 local 86a2aa42fc76+ remote 97c705ade336 rev: versions differ -> m preserving rev for resolve of rev -update: rev 1/1 files (100.00%) +updating: rev 1/1 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 @@ -208,11 +208,11 @@ rev: versions differ -> m b: remote created -> g preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) removing a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) getting b -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 @@ -237,7 +237,7 @@ ancestor 924404dff337 local 02963e448370+ remote 97c705ade336 rev: versions differ -> m preserving rev for resolve of rev -update: rev 1/1 files (100.00%) +updating: rev 1/1 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 @@ -259,11 +259,11 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 @@ -293,13 +293,13 @@ rev: versions differ -> m c: remote created -> g preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) warning: detected divergent renames of a to: b c -update: c 2/3 files (66.67%) +updating: c 2/3 files (66.67%) getting c -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 @@ -322,11 +322,11 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 @@ -350,13 +350,13 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) removing a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 @@ -379,13 +379,13 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) getting a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 @@ -409,13 +409,13 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) removing a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 @@ -438,13 +438,13 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) getting a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 @@ -467,11 +467,11 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 @@ -497,13 +497,13 @@ a: prompt recreating -> g preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) +updating: a 1/3 files (33.33%) getting a -update: b 2/3 files (66.67%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 @@ -529,12 +529,12 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: a 1/3 files (33.33%) -update: b 2/3 files (66.67%) +updating: a 1/3 files (33.33%) +updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 @@ -563,11 +563,11 @@ preserving a for resolve of b preserving rev for resolve of rev removing a -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging a and b to b my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 @@ -595,11 +595,11 @@ rev: versions differ -> m preserving b for resolve of b preserving rev for resolve of rev -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 -update: rev 2/2 files (100.00%) +updating: rev 2/2 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 @@ -630,14 +630,14 @@ c: remote created -> g preserving b for resolve of b preserving rev for resolve of rev -update: b 1/3 files (33.33%) +updating: b 1/3 files (33.33%) picked tool 'python ../merge' for b (binary False symlink False) merging b and a to b my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337 premerge successful -update: c 2/3 files (66.67%) +updating: c 2/3 files (66.67%) getting c -update: rev 3/3 files (100.00%) +updating: rev 3/3 files (100.00%) picked tool 'python ../merge' for rev (binary False symlink False) merging rev my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-subrepo.out --- a/tests/test-subrepo.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-subrepo.out Sun Aug 01 01:51:21 2010 -0300 @@ -83,7 +83,7 @@ overwrite None partial False ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4 .hgsubstate: versions differ -> m -update: .hgsubstate 1/1 files (100.00%) +updating: .hgsubstate 1/1 files (100.00%) subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg getting subrepo t @@ -91,7 +91,7 @@ overwrite True partial False ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a t: remote is newer -> g -update: t 1/1 files (100.00%) +updating: t 1/1 files (100.00%) getting t 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) @@ -107,7 +107,7 @@ overwrite None partial False ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf .hgsubstate: versions differ -> m -update: .hgsubstate 1/1 files (100.00%) +updating: .hgsubstate 1/1 files (100.00%) subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4 subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg merging subrepo t @@ -117,7 +117,7 @@ ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198 t: versions differ -> m preserving t for resolve of t -update: t 1/1 files (100.00%) +updating: t 1/1 files (100.00%) picked tool 'internal:merge' for t (binary False symlink False) merging t my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-tag --- a/tests/test-tag Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-tag Sun Aug 01 01:51:21 2010 -0300 @@ -7,6 +7,9 @@ hg add a hg commit -m "test" -d "1000000 0" hg history + +hg tag ' ' + hg tag -d "1000000 0" "bleah" hg history diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-tag.out --- a/tests/test-tag.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-tag.out Sun Aug 01 01:51:21 2010 -0300 @@ -4,6 +4,7 @@ date: Mon Jan 12 13:46:40 1970 +0000 summary: test +abort: tag names cannot consist entirely of whitespace changeset: 1:3ecf002a1c57 tag: tip user: test diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-up-local-change.out --- a/tests/test-up-local-change.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-up-local-change.out Sun Aug 01 01:51:21 2010 -0300 @@ -24,11 +24,11 @@ a: versions differ -> m b: remote created -> g preserving a for resolve of a -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'true' for a (binary False symlink False) merging a my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b -update: b 2/2 files (100.00%) +updating: b 2/2 files (100.00%) getting b 1 files updated, 1 files merged, 0 files removed, 0 files unresolved changeset: 1:802f095af299 @@ -43,9 +43,9 @@ a: versions differ -> m b: other deleted -> r preserving a for resolve of a -update: b 1/2 files (50.00%) +updating: b 1/2 files (50.00%) removing b -update: a 2/2 files (100.00%) +updating: a 2/2 files (100.00%) picked tool 'true' for a (binary False symlink False) merging a my a@802f095af299+ other a@33aaa84a386b ancestor a@802f095af299 @@ -71,11 +71,11 @@ a: versions differ -> m b: remote created -> g preserving a for resolve of a -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'true' for a (binary False symlink False) merging a my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b -update: b 2/2 files (100.00%) +updating: b 2/2 files (100.00%) getting b 1 files updated, 1 files merged, 0 files removed, 0 files unresolved changeset: 1:802f095af299 @@ -128,11 +128,11 @@ b: versions differ -> m preserving a for resolve of a preserving b for resolve of b -update: a 1/2 files (50.00%) +updating: a 1/2 files (50.00%) picked tool 'true' for a (binary False symlink False) merging a my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b -update: b 2/2 files (100.00%) +updating: b 2/2 files (100.00%) picked tool 'true' for b (binary False symlink False) merging b my b@802f095af299+ other b@030602aee63d ancestor b@000000000000 diff -r 281a812297cc -r 0b8d17bb8b2d tests/test-update-reverse.out --- a/tests/test-update-reverse.out Sun Aug 01 01:46:58 2010 -0300 +++ b/tests/test-update-reverse.out Sun Aug 01 01:51:21 2010 -0300 @@ -46,11 +46,11 @@ side2: other deleted -> r side1: other deleted -> r main: remote created -> g -update: side1 1/3 files (33.33%) +updating: side1 1/3 files (33.33%) removing side1 -update: side2 2/3 files (66.67%) +updating: side2 2/3 files (66.67%) removing side2 -update: main 3/3 files (100.00%) +updating: main 3/3 files (100.00%) getting main 1 files updated, 0 files merged, 2 files removed, 0 files unresolved Should only show a main