i18n: merge with main stable
authorMartin Geisler <mg@lazybytes.net>
Sat, 23 Oct 2010 16:24:07 +0200
branchstable
changeset 12834 b814f67d41c0
parent 12833 93776857e17e (current diff)
parent 12814 58bc5024805d (diff)
child 12835 b6bf1f501f9f
i18n: merge with main
--- a/Makefile	Sat Oct 23 15:04:05 2010 +0200
+++ b/Makefile	Sat Oct 23 16:24:07 2010 +0200
@@ -98,7 +98,7 @@
 	  xgettext --package-name "Mercurial" \
 	  --msgid-bugs-address "<mercurial-devel@selenic.com>" \
 	  --copyright-holder "Matt Mackall <mpm@selenic.com> and others" \
-	  --from-code ISO-8859-1 --join --sort-by-file \
+	  --from-code ISO-8859-1 --join --sort-by-file --add-comments=i18n: \
 	  -d hg -p i18n -o hg.pot
 	$(PYTHON) i18n/posplit i18n/hg.pot
 
--- a/doc/gendoc.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/doc/gendoc.py	Sat Oct 23 16:24:07 2010 +0200
@@ -79,7 +79,7 @@
     # print options
     section(ui, _("Options"))
     for optstr, desc in get_opts(globalopts):
-        ui.write("%s\n%s\n\n" % (optstr, desc))
+        ui.write("%s\n    %s\n\n" % (optstr, desc))
 
     # print cmds
     section(ui, _("Commands"))
@@ -97,7 +97,7 @@
         ui.write("\n")
 
     section(ui, _("Extensions"))
-    ui.write(_("This section contains help for extensions that is distributed "
+    ui.write(_("This section contains help for extensions that are distributed "
                "together with Mercurial. Help for other extensions is available "
                "in the help system."))
     ui.write("\n\n"
@@ -130,8 +130,13 @@
         d = get_cmd(h[f], cmdtable)
         sectionfunc(ui, d['cmd'])
         # synopsis
-        ui.write("``%s``\n" % d['synopsis'].replace("hg ","", 1))
-        ui.write("\n")
+        ui.write("::\n\n")
+        synopsislines = d['synopsis'].splitlines()
+        for line in synopsislines:
+            # some commands (such as rebase) have a multi-line
+            # synopsis
+            ui.write("   %s\n" % line)
+        ui.write('\n')
         # description
         ui.write("%s\n\n" % d['desc'][1])
         # options
--- a/hg	Sat Oct 23 15:04:05 2010 +0200
+++ b/hg	Sat Oct 23 16:24:07 2010 +0200
@@ -14,7 +14,8 @@
 
 if libdir != '@' 'LIBDIR' '@':
     if not os.path.isabs(libdir):
-        libdir = os.path.join(os.path.dirname(__file__), libdir)
+        libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
+                              libdir)
         libdir = os.path.abspath(libdir)
     sys.path.insert(0, libdir)
 
--- a/hgext/color.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/hgext/color.py	Sat Oct 23 16:24:07 2010 +0200
@@ -226,6 +226,8 @@
 def extsetup(ui):
     commands.globalopts.append(
         ('', 'color', 'auto',
+         # i18n: 'always', 'auto', and 'never' are keywords and should
+         # not be translated
          _("when to colorize (boolean, always, auto, or never)"),
          _('TYPE')))
 
--- a/hgext/eol.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/hgext/eol.py	Sat Oct 23 16:24:07 2010 +0200
@@ -51,7 +51,7 @@
 behavior. There are two settings:
 
 - ``eol.native`` (default ``os.linesep``) can be set to ``LF`` or
-  ``CRLF`` override the default interpretation of ``native`` for
+  ``CRLF`` to override the default interpretation of ``native`` for
   checkout. This can be used with :hg:`archive` on Unix, say, to
   generate an archive where files have line endings for Windows.
 
--- a/mercurial/commands.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/mercurial/commands.py	Sat Oct 23 16:24:07 2010 +0200
@@ -278,7 +278,11 @@
     revert_opts['no_backup'] = None
     revert(ui, repo, **revert_opts)
     if not opts.get('merge') and op1 != node:
-        return hg.update(repo, op1)
+        try:
+            ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
+            return hg.update(repo, op1)
+        finally:
+            ui.setconfig('ui', 'forcemerge', '')
 
     commit_opts = opts.copy()
     commit_opts['addremove'] = False
@@ -295,7 +299,11 @@
         hg.clean(repo, op1, show_stats=False)
         ui.status(_('merging with changeset %s\n')
                   % nice(repo.changelog.tip()))
-        return hg.merge(repo, hex(repo.changelog.tip()))
+        try:
+            ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
+            return hg.merge(repo, hex(repo.changelog.tip()))
+        finally:
+            ui.setconfig('ui', 'forcemerge', '')
     return 0
 
 def bisect(ui, repo, rev=None, extra=None, command=None,
@@ -2438,7 +2446,7 @@
     ancestors or descendants of the starting revision. --follow-first
     only follows the first parent of merge revisions.
 
-    If no revision range is specified, the default is tip:0 unless
+    If no revision range is specified, the default is ``tip:0`` unless
     --follow is set, in which case the working directory parent is
     used as the starting revision. You can specify a revision set for
     log, see :hg:`help revsets` for more information.
@@ -2943,7 +2951,7 @@
 
     The resolve command can be used in the following ways:
 
-    - :hg:`resolve [--tool] FILE...`: attempt to re-merge the specified
+    - :hg:`resolve [--tool TOOL] FILE...`: attempt to re-merge the specified
       files, discarding any previous merge attempts. Re-merging is not
       performed for files already marked as resolved. Use ``--all/-a``
       to selects all unresolved files. ``--tool`` can be used to specify
@@ -4005,6 +4013,8 @@
            _('merge with old dirstate parent after backout')),
           ('', 'parent', '',
            _('parent to choose when backing out merge'), _('REV')),
+          ('t', 'tool', '',
+           _('specify merge tool')),
           ('r', 'rev', '',
            _('revision to backout'), _('REV')),
          ] + walkopts + commitopts + commitopts2,
--- a/mercurial/demandimport.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/mercurial/demandimport.py	Sat Oct 23 16:24:07 2010 +0200
@@ -45,7 +45,7 @@
         if not self._module:
             head, globals, locals, after, level = self._data
             if level is not None:
-                mod = _origimport(head, globals, locals, level=level)
+                mod = _origimport(head, globals, locals, level)
             else:
                 mod = _origimport(head, globals, locals)
             # load submodules
--- a/mercurial/dispatch.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/mercurial/dispatch.py	Sat Oct 23 16:24:07 2010 +0200
@@ -24,7 +24,7 @@
     except util.Abort, inst:
         sys.stderr.write(_("abort: %s\n") % inst)
         if inst.hint:
-            sys.stderr.write("(%s)\n" % inst.hint)
+            sys.stderr.write(_("(%s)\n") % inst.hint)
         return -1
     except error.ParseError, inst:
         if len(inst.args) > 1:
--- a/mercurial/help/merge-tools.txt	Sat Oct 23 15:04:05 2010 +0200
+++ b/mercurial/help/merge-tools.txt	Sat Oct 23 16:24:07 2010 +0200
@@ -5,23 +5,38 @@
 ancestor of the two file versions, so they can determine the changes
 made on both branches.
 
-The merge tools are used both for :hg:`resolve` and :hg:`merge`.
+Merge tools are used both for :hg:`resolve`, :hg:`merge`, :hg:`update`,
+:hg:`backout` and in several extensions.
 
-Usually, the merge tool tries to automatically, by combining all the
-non-overlapping changes that occurred separately in the two different
-evolutions of the same initial base file. Furthermore, some
+Usually, the merge tool tries to automatically reconcile the files by
+combining all non-overlapping changes that occurred separately in
+the two different evolutions of the same initial base file. Furthermore, some
 interactive merge programs make it easier to manually resolve
 conflicting merges, either in a graphical way, or by inserting some
 conflict markers. Mercurial does not include any interactive merge
-programs but relies on external tools for that. External merge tools
-and their properties and usage is configured in merge-tools section -
-see hgrc(5).
+programs but relies on external tools for that.
+
+Available merge tools
+"""""""""""""""""""""
+
+External merge tools and their properties and usage is configured in the
+merge-tools configuration section - see hgrc(5) - but they can often also just
+be named by their executable.
+
+A merge tool is generally usable if its executable can be found on the
+system and if it can handle the merge. The executable can be found on the
+system if it either is an absolute or relative executable path or the name of
+an application in the executable search path. The tool is assumed to be able
+to handle the merge if it can handle symlinks if the file is a symlink, if it
+can handle binary files if the file is binary, and if a GUI is available if the
+tool requires a GUI.
 
 There are a some internal merge tools which can be used. The internal
 merge tools are:
 
 ``internal:merge``
-   Uses the internal non-interactive merge tool for merging files.
+   Uses the internal non-interactive simple merge algorithm for merging files.
+   It will fail if there are any conflicts.
 
 ``internal:fail``
    Rather than attempting to merge files that were modified on both
@@ -32,7 +47,7 @@
    Uses the local version of files as the merged version.
 
 ``internal:other``
-   Uses the remote version of files as the merged version.
+   Uses the other version of files as the merged version.
 
 ``internal:prompt``
    Asks the user which of the local or the other version to keep as
@@ -41,45 +56,54 @@
 ``internal:dump``
    Creates three versions of the files to merge, containing the
    contents of local, other and base. These files can then be used to
-   perform a merge manually. If the file merged is name ``a.txt``,
-   these files will accordingly be named ``a.txt.local``,
+   perform a merge manually. If the file to be merged is named
+   ``a.txt``, these files will accordingly be named ``a.txt.local``,
    ``a.txt.other`` and ``a.txt.base`` and they will be placed in the
-   same directory as the file to merge.
+   same directory as ``a.txt``.
+
+Internal tools are always available and do not require a GUI but will by default
+not handle symlinks or binary files.
 
-How Mercurial decides which merge program to use
+Choosing a merge tool
+"""""""""""""""""""""
+
+Mercurial uses these rules when decing which merge tool to use:
 
-1. If the ``HGMERGE`` environment variable is present, it is used. If
-   specified it must be either an executable path or the name of an
-   application in your executable search path.
+0. If a tool has been specified with the --tool option to merge or resolve, it
+   is used.  If it is the name of a tool in the merge-tools configuration, its
+   configuration is used. Otherwise the specified tool must be executable by
+   the shell.
 
-2. If the filename of the file to be merged matches any of the
-   patterns in the merge-patterns configuration section, then the
-   corresponding merge tool is used, unless the file to be merged is a
-   symlink. Here binary capabilities of the merge tool are not
-   considered.
+1. If the ``HGMERGE`` environment variable is present, its value is used and
+   must be executable by the shell.
+
+2. If the filename of the file to be merged matches any of the patterns in the
+   merge-patterns configuration section, the first usable merge tool
+   corresponding to a matching pattern is used. Here, binary capabilities of the
+   merge tool are not considered.
 
-3. If ui.merge is set, it is used.
+3. If ui.merge is set it will be considered next. If the value is not the name
+   of a configured tool, the specified value is used and must be executable by
+   the shell. Otherwise the named tool is used if it is usable.
 
-4. If any merge tools are present in the merge-tools configuration
-   section, and any of the tools can be found on the system, the
-   priority settings are used to determine which one to use. Binary,
-   symlink and GUI capabilities do also have to match.
+4. If any usable merge tools are present in the merge-tools configuration
+   section, the one with the higest priority is used.
 
-5. If a program named ``hgmerge`` exists on the system, it is used.
+5. If a program named ``hgmerge`` can be found on the system, it is used - but
+   it will by default not be used for symlinks and binary files.
 
 6. If the file to be merged is not binary and is not a symlink, then
    ``internal:merge`` is used.
 
-7. The merge fails.
+7. The merge of the file fails and must be resolved before commit.
 
 .. note::
    After selecting a merge program, Mercurial will by default attempt
-   to merge the files using a simple merge algorithm first, to see if
-   they can be merged without conflicts. Only if there are conflicting
-   changes Mercurial will actually execute the merge program. Whether
-   to use the simple merge algorithm first can be controlled be the
-   premerge setting of the merge tool, which is enabled by default
-   unless the file is binary or symlink.
+   to merge the files using a simple merge algorithm first. Only if it doesn't
+   succeed because of conflicting changes Mercurial will actually execute the
+   merge program. Whether to use the simple merge algorithm first can be
+   controlled by the premerge setting of the merge tool. Premerge is enabled by
+   default unless the file is binary or a symlink.
 
-See the merge-tools and ui sections of hgrc(5) for details on
+See the merge-tools and ui sections of hgrc(5) for details on the
 configuration of merge tools.
--- a/mercurial/help/revsets.txt	Sat Oct 23 15:04:05 2010 +0200
+++ b/mercurial/help/revsets.txt	Sat Oct 23 16:24:07 2010 +0200
@@ -178,26 +178,26 @@
 
 - Changesets on the default branch::
 
-    hg log -r 'branch(default)'
+    hg log -r "branch(default)"
 
 - Changesets on the default branch since tag 1.5 (excluding merges)::
 
-    hg log -r 'branch(default) and 1.5:: and not merge()'
+    hg log -r "branch(default) and 1.5:: and not merge()"
 
 - Open branch heads::
 
-    hg log -r 'head() and not closed()'
+    hg log -r "head() and not closed()"
 
 - Changesets between tags 1.3 and 1.5 mentioning "bug" that affect
   ``hgext/*``::
 
-    hg log -r '1.3::1.5 and keyword(bug) and file("hgext/*")'
+    hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"
 
 - Changesets in committed May 2008, sorted by user::
 
-    hg log -r 'sort(date("May 2008"), user)'
+    hg log -r "sort(date('May 2008'), user)"
 
 - Changesets mentioning "bug" or "issue" that are not in a tagged
   release::
 
-    hg log -r '(keyword(bug) or keyword(issue)) and not ancestors(tagged())'
+    hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tagged())"
--- a/mercurial/subrepo.py	Sat Oct 23 15:04:05 2010 +0200
+++ b/mercurial/subrepo.py	Sat Oct 23 16:24:07 2010 +0200
@@ -490,7 +490,7 @@
         doc = xml.dom.minidom.parseString(output)
         entries = doc.getElementsByTagName('entry')
         if not entries:
-            return 0
+            return '0'
         return str(entries[0].getAttribute('revision')) or '0'
 
     def _wcchanged(self):
--- a/tests/test-backout.t	Sat Oct 23 15:04:05 2010 +0200
+++ b/tests/test-backout.t	Sat Oct 23 16:24:07 2010 +0200
@@ -1,5 +1,3 @@
-  $ HGMERGE=true; export HGMERGE
-
   $ hg init basic
   $ cd basic
 
@@ -20,7 +18,7 @@
   $ echo b >> a
   $ hg commit -d '1 0' -m b
 
-  $ hg backout -d '2 0' tip
+  $ hg backout -d '2 0' tip --tool=true
   reverting a
   changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57
   $ cat a
@@ -39,7 +37,7 @@
   $ hg rm a
   $ hg commit -d '1 0' -m b
 
-  $ hg backout -d '2 0' tip
+  $ hg backout -d '2 0' tip --tool=true
   adding a
   changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372
   $ cat a
@@ -47,7 +45,7 @@
 
 backout of backout is as if nothing happened
 
-  $ hg backout -d '3 0' --merge tip
+  $ hg backout -d '3 0' --merge tip --tool=true
   removing a
   changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d
   $ cat a 2>/dev/null || echo cat: a: No such file or directory
@@ -102,7 +100,7 @@
   $ echo line 3 >> a
   $ hg commit -d '2 0' -m c
 
-  $ hg backout --merge -d '3 0' 1
+  $ hg backout --merge -d '3 0' 1 --tool=true
   reverting a
   created new head
   changeset 3:26b8ccb9ad91 backs out changeset 1:5a50a024c182
@@ -133,7 +131,7 @@
   adding b
 
 without --merge
-  $ hg backout -d '3 0' 1
+  $ hg backout -d '3 0' 1 --tool=true
   reverting a
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg locate b
@@ -144,7 +142,7 @@
   b
 
 with --merge
-  $ hg backout --merge -d '3 0' 1
+  $ hg backout --merge -d '3 0' 1 --tool=true
   reverting a
   created new head
   changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5
@@ -201,7 +199,7 @@
 
 backout with valid parent should be ok
 
-  $ hg backout -d '5 0' --parent 2 4
+  $ hg backout -d '5 0' --parent 2 4 --tool=true
   removing d
   changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e
 
@@ -210,7 +208,7 @@
   $ hg update -C
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
-  $ hg backout -d '6 0' --parent 3 4
+  $ hg backout -d '6 0' --parent 3 4 --tool=true
   removing c
   changeset 5:033590168430 backs out changeset 4:b2f3bb92043e
 
@@ -236,7 +234,7 @@
   adding file2
 
 without --merge
-  $ hg backout -r 1
+  $ hg backout -r 1 --tool=true
   removing file1
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg branch
@@ -248,7 +246,7 @@
 
 with --merge
   $ hg update -qC
-  $ hg backout --merge -d '3 0' -r 1 -m 'backout on branch1'
+  $ hg backout --merge -d '3 0' -r 1 -m 'backout on branch1' --tool=true
   removing file1
   created new head
   changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3
--- a/tests/test-debugcomplete.t	Sat Oct 23 15:04:05 2010 +0200
+++ b/tests/test-debugcomplete.t	Sat Oct 23 16:24:07 2010 +0200
@@ -196,7 +196,7 @@
   update: clean, check, date, rev
   addremove: similarity, include, exclude, dry-run
   archive: no-decode, prefix, rev, type, subrepos, include, exclude
-  backout: merge, parent, rev, include, exclude, message, logfile, date, user
+  backout: merge, parent, tool, rev, include, exclude, message, logfile, date, user
   bisect: reset, good, bad, skip, command, noupdate
   branch: force, clean
   branches: active, closed
--- a/tests/test-transplant.t	Sat Oct 23 15:04:05 2010 +0200
+++ b/tests/test-transplant.t	Sat Oct 23 16:24:07 2010 +0200
@@ -59,6 +59,15 @@
   1  r2
   0  r1
 
+test transplanted revset
+
+  $ hg log -r 'transplanted()' --template '{rev} {parents} {desc}\n'
+  5 1:d11e3596cc1a  b1
+  6  b2
+  7  b3
+  $ hg help revsets | grep transplanted
+      "transplanted(set)"
+
   $ hg clone ../t ../prune
   updating to branch default
   4 files updated, 0 files merged, 0 files removed, 0 files unresolved