merge with stable
authorMatt Mackall <mpm@selenic.com>
Tue, 17 May 2016 11:28:46 -0500
changeset 29176 8c8442523eef
parent 29175 7bcfb9090c86 (current diff)
parent 29157 854556c5f3bf (diff)
child 29177 df6b5c6d252a
merge with stable
contrib/debian/rules
mercurial/commands.py
tests/test-help.t
tests/test-subrepo-deep-nested-change.t
--- a/.hgsigs	Wed May 11 01:56:59 2016 +0000
+++ b/.hgsigs	Tue May 17 11:28:46 2016 -0500
@@ -126,3 +126,4 @@
 740156eedf2c450aee58b1a90b0e826f47c5da64 0 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
+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
--- a/.hgtags	Wed May 11 01:56:59 2016 +0000
+++ b/.hgtags	Tue May 17 11:28:46 2016 -0500
@@ -139,3 +139,4 @@
 740156eedf2c450aee58b1a90b0e826f47c5da64 3.8-rc
 f85de28eae32e7d3064b1a1321309071bbaaa069 3.8
 a56296f55a5e1038ea5016dace2076b693c28a56 3.8.1
+aaabed77791a75968a12b8c43ad263631a23ee81 3.8.2
--- a/contrib/builddeb	Wed May 11 01:56:59 2016 +0000
+++ b/contrib/builddeb	Tue May 17 11:28:46 2016 -0500
@@ -58,6 +58,10 @@
 fi
 if [ -n "$distance" ] ; then
     debver="$debver+$distance-$CODENAME-$node"
+elif [ "$DEBFLAGS" = "-S" ] ; then
+    # for building a ppa (--source-only) for a release (distance == 0), we need
+    # to version the distroseries so that we can upload to launchpad
+    debver="$debver~${CODENAME}1"
 fi
 
 control=debian/control
--- a/contrib/debian/control	Wed May 11 01:56:59 2016 +0000
+++ b/contrib/debian/control	Tue May 17 11:28:46 2016 -0500
@@ -42,6 +42,7 @@
  ${misc:Depends},
  ${python:Depends},
 Recommends: mercurial (= ${source:Version}), ca-certificates
+Suggests: wish
 Breaks: mercurial (<< ${source:Version})
 Replaces: mercurial (<< 2.6.3)
 Description: easy-to-use, scalable distributed version control system (common files)
--- a/doc/gendoc.py	Wed May 11 01:56:59 2016 +0000
+++ b/doc/gendoc.py	Tue May 17 11:28:46 2016 -0500
@@ -136,6 +136,7 @@
     extrahelptable = [
         (["common"], '', loaddoc('common')),
         (["hg.1"], '', loaddoc('hg.1')),
+        (["hg-ssh.8"], '', loaddoc('hg-ssh.8')),
         (["hgignore.5"], '', loaddoc('hgignore.5')),
         (["hgrc.5"], '', loaddoc('hgrc.5')),
         (["hgignore.5.gendoc"], '', loaddoc('hgignore')),
--- a/mercurial/commands.py	Wed May 11 01:56:59 2016 +0000
+++ b/mercurial/commands.py	Tue May 17 11:28:46 2016 -0500
@@ -4590,7 +4590,7 @@
     subtopic = None
     if name and '.' in name:
         name, section = name.split('.', 1)
-        section = section.lower()
+        section = encoding.lower(section)
         if '.' in section:
             subtopic, section = section.split('.', 1)
         else:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/hg-ssh.8.txt	Tue May 17 11:28:46 2016 -0500
@@ -0,0 +1,71 @@
+========
+ hg-ssh
+========
+
+----------------------------------------
+restricted ssh login shell for Mercurial
+----------------------------------------
+
+:Author:         Thomas Arendsen Hein <thomas@intevation.de>
+:Organization:   Mercurial
+:Manual section: 8
+:Manual group:   Mercurial Manual
+
+.. contents::
+   :backlinks: top
+   :class: htmlonly
+   :depth: 1
+
+Synopsis
+""""""""
+**hg-ssh** repositories...
+
+Description
+"""""""""""
+**hg-ssh** is a wrapper for ssh access to a limited set of mercurial repos.
+
+To be used in ~/.ssh/authorized_keys with the "command" option, see sshd(8):
+command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ...
+(probably together with these other useful options:
+no-port-forwarding,no-X11-forwarding,no-agent-forwarding)
+
+This allows pull/push over ssh from/to the repositories given as arguments.
+
+If all your repositories are subdirectories of a common directory, you can
+allow shorter paths with:
+command="cd path/to/my/repositories && hg-ssh repo1 subdir/repo2"
+
+You can use pattern matching of your normal shell, e.g.:
+command="cd repos && hg-ssh user/thomas/* projects/{mercurial,foo}"
+
+You can also add a --read-only flag to allow read-only access to a key, e.g.:
+command="hg-ssh --read-only repos/\*"
+
+Bugs
+""""
+Probably lots, please post them to the mailing list (see Resources_
+below) when you find them.
+
+See Also
+""""""""
+|hg(1)|_
+
+Author
+""""""
+Written by Matt Mackall <mpm@selenic.com>
+
+Resources
+"""""""""
+Main Web Site: https://mercurial-scm.org/
+
+Source code repository: http://selenic.com/hg
+
+Mailing list: http://selenic.com/mailman/listinfo/mercurial
+
+Copying
+"""""""
+Copyright (C) 2005-2016 Matt Mackall.
+Free use of this software is granted under the terms of the GNU General
+Public License version 2 or any later version.
+
+.. include:: common.txt
--- a/mercurial/help/internals/revlogs.txt	Wed May 11 01:56:59 2016 +0000
+++ b/mercurial/help/internals/revlogs.txt	Tue May 17 11:28:46 2016 -0500
@@ -1,5 +1,5 @@
-Revisions Logs
-==============
+Revlogs
+=======
 
 Revision logs - or *revlogs* - are an append only data structure for
 storing discrete entries, or *revisions*. They are the primary storage
--- a/mercurial/minirst.py	Wed May 11 01:56:59 2016 +0000
+++ b/mercurial/minirst.py	Tue May 17 11:28:46 2016 -0500
@@ -724,7 +724,7 @@
             x = b['key']
         else:
             x = b['lines'][0]
-        x = x.lower().strip('"')
+        x = encoding.lower(x).strip('"')
         if '(' in x:
             x = x.split('(')[0]
         return x
--- a/mercurial/patch.py	Wed May 11 01:56:59 2016 +0000
+++ b/mercurial/patch.py	Tue May 17 11:28:46 2016 -0500
@@ -1010,7 +1010,7 @@
             ui.write("\n")
             if r == 8: # ?
                 for c, t in ui.extractchoices(resps)[1]:
-                    ui.write('%s - %s\n' % (c, t.lower()))
+                    ui.write('%s - %s\n' % (c, encoding.lower(t)))
                 continue
             elif r == 0: # yes
                 ret = True
--- a/mercurial/progress.py	Wed May 11 01:56:59 2016 +0000
+++ b/mercurial/progress.py	Tue May 17 11:28:46 2016 -0500
@@ -163,7 +163,7 @@
         sys.stderr.flush()
 
     def clear(self):
-        if not shouldprint(self.ui):
+        if not self.printed or not self.lastprint or not shouldprint(self.ui):
             return
         sys.stderr.write('\r%s\r' % (' ' * self.width()))
         if self.printed:
--- a/tests/test-commit-interactive.t	Wed May 11 01:56:59 2016 +0000
+++ b/tests/test-commit-interactive.t	Tue May 17 11:28:46 2016 -0500
@@ -878,6 +878,32 @@
   abort: user quit
   [255]
 
+#if gettext
+
+Test translated help message
+
+str.lower() instead of encoding.lower(str) on translated message might
+make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
+as the second or later byte of multi-byte character.
+
+For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
+contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
+replacement makes message meaningless.
+
+This tests that translated help message is lower()-ed correctly.
+
+  $ LANGUAGE=ja
+  $ export LANGUAGE
+
+  $ hg commit -i --encoding cp932 2>&1 <<EOF | grep '^y - '
+  > ?
+  > q
+  > EOF
+  y - \x82\xb1\x82\xcc\x95\xcf\x8dX\x82\xf0\x8bL\x98^(yes) (esc)
+
+  $ LANGUAGE=
+#endif
+
 Skip
 
   $ hg commit -i <<EOF
--- a/tests/test-help.t	Wed May 11 01:56:59 2016 +0000
+++ b/tests/test-help.t	Tue May 17 11:28:46 2016 -0500
@@ -1539,6 +1539,78 @@
       files         List of strings. All files modified, added, or removed by
                     this changeset.
 
+Test section lookup by translated message
+
+str.lower() instead of encoding.lower(str) on translated message might
+make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
+as the second or later byte of multi-byte character.
+
+For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
+contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
+replacement makes message meaningless.
+
+This tests that section lookup by translated string isn't broken by
+such str.lower().
+
+  $ python <<EOF
+  > def escape(s):
+  >     return ''.join('\u%x' % ord(uc) for uc in s.decode('cp932'))
+  > # translation of "record" in ja_JP.cp932
+  > upper = "\x8bL\x98^"
+  > # str.lower()-ed section name should be treated as different one
+  > lower = "\x8bl\x98^"
+  > with open('ambiguous.py', 'w') as fp:
+  >     fp.write("""# ambiguous section names in ja_JP.cp932
+  > u'''summary of extension
+  > 
+  > %s
+  > ----
+  > 
+  > Upper name should show only this message
+  > 
+  > %s
+  > ----
+  > 
+  > Lower name should show only this message
+  > 
+  > subsequent section
+  > ------------------
+  > 
+  > This should be hidden at "hg help ambiguous" with section name.
+  > '''
+  > """ % (escape(upper), escape(lower)))
+  > EOF
+
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > ambiguous = ./ambiguous.py
+  > EOF
+
+  $ python <<EOF | sh
+  > upper = "\x8bL\x98^"
+  > print "hg --encoding cp932 help -e ambiguous.%s" % upper
+  > EOF
+  \x8bL\x98^ (esc)
+  ----
+  
+  Upper name should show only this message
+  
+
+  $ python <<EOF | sh
+  > lower = "\x8bl\x98^"
+  > print "hg --encoding cp932 help -e ambiguous.%s" % lower
+  > EOF
+  \x8bl\x98^ (esc)
+  ----
+  
+  Lower name should show only this message
+  
+
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > ambiguous = !
+  > EOF
+
 Test dynamic list of merge tools only shows up once
   $ hg help merge-tools
   Merge Tools
--- a/tests/test-install.t	Wed May 11 01:56:59 2016 +0000
+++ b/tests/test-install.t	Tue May 17 11:28:46 2016 -0500
@@ -126,6 +126,7 @@
   $ python wixxml.py help
   Not installed:
     help/common.txt
+    help/hg-ssh.8.txt
     help/hg.1.txt
     help/hgignore.5.txt
     help/hgrc.5.txt
--- a/tests/test-remove.t	Wed May 11 01:56:59 2016 +0000
+++ b/tests/test-remove.t	Tue May 17 11:28:46 2016 -0500
@@ -322,8 +322,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 2/2\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing test/bar (glob)
   removing test/foo (glob)
   exit code: 0
@@ -348,8 +346,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 2/2\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing test/bar (glob)
   removing test/foo (glob)
   exit code: 0
@@ -374,8 +370,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 1/1\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing test/bar (glob)
   not removing test/foo: file still exists (glob)
   exit code: 1
@@ -400,8 +394,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 2/2\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing test/bar (glob)
   removing test/foo (glob)
   exit code: 0
@@ -429,8 +421,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 1/1\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing issue1861/b/c/y (glob)
   $ hg ci -m remove
   $ ls issue1861
@@ -465,8 +455,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 1/1\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing d1/a (glob)
 
   $ hg rm --after nosuch
--- a/tests/test-subrepo-deep-nested-change.t	Wed May 11 01:56:59 2016 +0000
+++ b/tests/test-subrepo-deep-nested-change.t	Tue May 17 11:28:46 2016 -0500
@@ -214,8 +214,6 @@
   \r (no-eol) (esc)
   deleting [===========================================>] 2/2\r (no-eol) (esc)
                                                               \r (no-eol) (esc)
-  \r (no-eol) (esc)
-                                                              \r (no-eol) (esc)
   removing sub1/sub2/folder/test.txt (glob)
   removing sub1/sub2/test.txt (glob)
   $ hg status -S