# HG changeset patch # User Nicolas Dumazet # Date 1280541873 -32400 # Node ID 58a038605a2b5f8af325c8e0be7306a7df4f6027 # Parent 52e4ac3e63f780114c5b7613fe0643b305d09789# Parent 3e561b6af81030cc27c2d22d585895bf9ca8bd47 merge crew and main diff -r 3e561b6af810 -r 58a038605a2b hgext/keyword.py --- a/hgext/keyword.py Sat Jul 31 10:50:29 2010 +0900 +++ b/hgext/keyword.py Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b mercurial/commands.py --- a/mercurial/commands.py Sat Jul 31 10:50:29 2010 +0900 +++ b/mercurial/commands.py Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b mercurial/dispatch.py --- a/mercurial/dispatch.py Sat Jul 31 10:50:29 2010 +0900 +++ b/mercurial/dispatch.py Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b mercurial/hgweb/hgwebdir_mod.py --- a/mercurial/hgweb/hgwebdir_mod.py Sat Jul 31 10:50:29 2010 +0900 +++ b/mercurial/hgweb/hgwebdir_mod.py Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-alias --- a/tests/test-alias Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-alias Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-alias.out --- a/tests/test-alias.out Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-alias.out Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-dispatch --- a/tests/test-dispatch Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-dispatch Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-dispatch.out --- a/tests/test-dispatch.out Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-dispatch.out Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-encoding-align --- a/tests/test-encoding-align Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-encoding-align Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-hgwebdir --- a/tests/test-hgwebdir Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-hgwebdir Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-hgwebdir.out --- a/tests/test-hgwebdir.out Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-hgwebdir.out Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-keyword --- a/tests/test-keyword Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-keyword Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-keyword.out --- a/tests/test-keyword.out Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-keyword.out Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-tag --- a/tests/test-tag Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-tag Sat Jul 31 11:04:33 2010 +0900 @@ -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 3e561b6af810 -r 58a038605a2b tests/test-tag.out --- a/tests/test-tag.out Sat Jul 31 10:50:29 2010 +0900 +++ b/tests/test-tag.out Sat Jul 31 11:04:33 2010 +0900 @@ -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