changeset 11710:58a038605a2b stable

merge crew and main
author Nicolas Dumazet <nicdumz.commits@gmail.com>
date Sat, 31 Jul 2010 11:04:33 +0900
parents 52e4ac3e63f7 (diff) 3e561b6af810 (current diff)
children 9cbc62f68328
files
diffstat 15 files changed, 183 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- 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):
--- 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'):
--- 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:
--- 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('/')
--- 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
--- 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
--- 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
--- 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)!
--- 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
--- 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 \
--- 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 @@
 <td class="indexlinks"></td>
 </tr>
 
+<tr class="parity1">
+<td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
 </table>
 </div>
 </div>
--- 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 <<EOF >> .hg/hgrc
--- 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 <user@example.com>: 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 <user@example.com>: firstline $
+% no expansion in dest
+expand $Id$
+do not process $Id:
+xxx $
+$Xinfo$
 % clone to test incoming
 requesting all changes
 adding changesets
--- 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
 
--- 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