changeset 3273:c0ee9ddfd5ff mercurial-4.3

test-compat: merge stable into mercurial-4.3
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 11 Dec 2017 09:33:04 +0100
parents 68aeeb4d4b8f (current diff) 11a2bc798deb (diff)
children ddbb4d069203 4303a46b4167
files tests/test-metaedit.t tests/test-prev-next.t tests/test-split.t tests/test-topic-stack-data.t tests/test-topic-stack.t tests/test-topic.t tests/test-unstable.t
diffstat 17 files changed, 250 insertions(+), 55 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Tue Nov 14 23:15:18 2017 +0100
+++ b/.hgignore	Mon Dec 11 09:33:04 2017 +0100
@@ -6,7 +6,7 @@
 \.swp$
 \.orig$
 \.rej$
-\.err$
+^tests/.*\.err$
 ^tests/easy_run.sh$
 ^build/
 ^dist/
--- a/.hgtags	Tue Nov 14 23:15:18 2017 +0100
+++ b/.hgtags	Mon Dec 11 09:33:04 2017 +0100
@@ -60,3 +60,4 @@
 430ad68292d76b9387d1eeadf289951f51fd88d3 6.7.1
 ec0bbf26ce7fadd42c637e01d3750dac96ac0b1b 6.8.0
 c56c028f3802202241551e5953bea74ab3a6c434 7.0.0
+c4940c22d76b9c6b3c2117a3b490f3c4fd796972 7.0.1
--- a/CHANGELOG	Tue Nov 14 23:15:18 2017 +0100
+++ b/CHANGELOG	Mon Dec 11 09:33:04 2017 +0100
@@ -1,7 +1,16 @@
 Changelog
 =========
 
-7.0.1 - in progress
+7.0.2 - in progress
+-------------------
+
+  * split: preserve the branch of the source changeset
+
+Topic (0.5.2)
+
+  * makes code more resilient to partiel initialization
+
+7.0.1 -- 2017-11-14
 -------------------
 
   * obsdiscovery: allow the config option to disable discovery server side
@@ -11,7 +20,11 @@
             to server with the extension bu obsolescence marker exchange
             disabled.
 
-7.0.0 -- 2017-10-23
+topic (0.5.1)
+
+  * fix new-heads check when pushing new topic with --publish.
+
+7.0.0 -- 2017-11-02
 -------------------
 
   * drop compatibility with Mercurial 3.8, 3.9 and 4.0,
--- a/debian/changelog	Tue Nov 14 23:15:18 2017 +0100
+++ b/debian/changelog	Mon Dec 11 09:33:04 2017 +0100
@@ -1,3 +1,9 @@
+mercurial-evolve (7.0.1) unstable; urgency=medium
+
+  *  new upstream release
+
+ -- Pierre-Yves David <pierre-yves.david@ens-lyon.org>  Wed, 15 Nov 2017 00:14:42 +0100
+
 mercurial-evolve (7.0.0-1) unstable; urgency=medium
 
   * new upstream release
--- a/hgext3rd/evolve/__init__.py	Tue Nov 14 23:15:18 2017 +0100
+++ b/hgext3rd/evolve/__init__.py	Mon Dec 11 09:33:04 2017 +0100
@@ -58,10 +58,10 @@
 is already raising better results than the previous version (when usable).
 
 "Large" repositories (hundreds of thousand) are currently unsupported. Some key
-algorithm has a naive implementation with too agressive caching, creating
+algorithm has a naive implementation with too aggressive caching, creating
 memory consumption issue (this will get fixed).
 
-Medium sized repositories works fine, but be prepared for a noticable initial
+Medium sized repositories works fine, but be prepared for a noticeable initial
 cache filling. for the Mercurial repository, this is around 20 seconds
 
 The following config control the experiment::
@@ -97,7 +97,7 @@
 
     # automatically disable obshashrange related computation and capabilities
     # if the repository has more than N revisions.  This is meant to help large
-    # server deployement to enable the feature on smaller repositories while
+    # server deployment to enable the feature on smaller repositories while
     # ensuring no large repository will get affected.
     obshashrange.max-revs = 100000 # default is None
 
@@ -159,12 +159,12 @@
 
   - precursors, for each obsolete changeset show the closest visible
     precursors.
-  - successors, for each obsolete changeset show the closests visible
+  - successors, for each obsolete changeset show the closest visible
     successors. It is useful when your working directory is obsolete to see
     what are its successors. This information can also be retrieved with the
     obslog command and the --all option.
   - obsfate, for each obsolete changeset display a line summarizing what
-    changed between the changeset and its successors. Dependending on the
+    changed between the changeset and its successors. Depending on the
     verbosity level (-q and -v) it display the changeset successors, the users
     that created the obsmarkers and the date range of these changes.
 
@@ -1459,8 +1459,8 @@
     Automatic mode only handles common use cases. For example, it avoids taking
     action in the case of ambiguity, and it ignores unstable changesets that
     are not related to your working copy.
-    It also refuses to solve bumped or divergent changesets unless you explicity
-    request such behavior (see below).
+    It also refuses to solve bumped or divergent changesets unless you
+    explicitly request such behavior (see below).
 
     Eliminating all instability around your working copy may require multiple
     invocations of :hg:`evolve`. Alternately, use ``--all`` to recursively
@@ -1726,7 +1726,7 @@
         roots = repo.revs('roots(%ld)', targetrevs)
         heads = repo.revs('heads(%ld)', targetrevs)
         if len(roots) > 1 or len(heads) > 1:
-            msg = "cannot solve split accross two branches\n"
+            msg = "cannot solve split across two branches\n"
             ui.write_err(msg)
             return 2
         target = repo[heads.first()]
@@ -1876,7 +1876,7 @@
     base, others = divergentdata(divergent)
     if len(others) > 1:
         othersstr = "[%s]" % (','.join([str(i) for i in others]))
-        msg = _("skipping %d:divergent with a changeset that got splitted"
+        msg = _("skipping %d:divergent with a changeset that got split"
                 " into multiple ones:\n"
                 "|[%s]\n"
                 "| This is not handled by automatic evolution yet\n"
@@ -2177,7 +2177,7 @@
             displayer.show(c)
             result = 0
         elif children:
-            ui.warn(_("ambigious next changeset:\n"))
+            ui.warn(_("ambiguous next changeset:\n"))
             for c in children:
                 displayer.show(c)
             ui.warn(_('explicitly update to one of them\n'))
@@ -2201,7 +2201,7 @@
                     ui.warn(msg % len(aspchildren))
                 result = 1
             elif 1 < len(aspchildren):
-                ui.warn(_("ambigious next (unstable) changeset:\n"))
+                ui.warn(_("ambiguous next (unstable) changeset:\n"))
                 for c in aspchildren:
                     displayer.show(repo[c])
                 ui.warn(_("(run 'hg evolve --rev REV' on one of them)\n"))
@@ -2467,7 +2467,7 @@
     try:
         versionblob = f.read(4)
         if len(versionblob) < 4:
-            repo.ui.debug('ignoring corrupted evolvestte (file contains %i bits)'
+            repo.ui.debug('ignoring corrupted evolvestate (file contains %i bits)'
                           % len(versionblob))
             return None
         version = _unpack('>I', versionblob)[0]
--- a/hgext3rd/evolve/cmdrewrite.py	Tue Nov 14 23:15:18 2017 +0100
+++ b/hgext3rd/evolve/cmdrewrite.py	Mon Dec 11 09:33:04 2017 +0100
@@ -71,7 +71,7 @@
 interactiveopt = [['i', 'interactive', None, _('use interactive mode')]]
 
 @eh.command(
-    'amend|refresh',
+    '^amend|refresh',
     [('A', 'addremove', None,
       _('mark new/missing files as added/removed before committing')),
      ('a', 'all', False, _("match all files")),
@@ -284,7 +284,7 @@
         ds.copy(src, dst)
 
 @eh.command(
-    '^uncommit',
+    'uncommit',
     [('a', 'all', None, _('uncommit all changes when no arguments given')),
      ('i', 'interactive', False, _('interactive mode to uncommit (EXPERIMENTAL)')),
      ('r', 'rev', '', _('revert commit content to REV instead')),
@@ -590,7 +590,7 @@
         lockmod.release(lock, wlock)
 
 @eh.command(
-    '^metaedit',
+    'metaedit',
     [('r', 'rev', [], _("revision to edit")),
      ('', 'fold', None, _("also fold specified revisions into one")),
     ] + commitopts + commitopts2 + commitopts3,
@@ -933,6 +933,9 @@
         hnt = _("use either `hg split <rs>` or `hg split --rev <rs>`, not both")
         raise error.Abort(msg, hint=hnt)
 
+    # Save the current branch to restore it in the end
+    savedbranch = repo.dirstate.branch()
+
     try:
         wlock = repo.wlock()
         lock = repo.lock()
@@ -964,6 +967,11 @@
         opts['edit'] = True
         if not opts['user']:
             opts['user'] = ctx.user()
+
+        # Set the right branch
+        # XXX-TODO: Find a way to set the branch without altering the dirstate
+        repo.dirstate.setbranch(ctx.branch())
+
         while haschanges():
             pats = ()
             cmdutil.dorecord(ui, repo, commands.commit, 'commit', False,
@@ -987,10 +995,13 @@
             obsolete.createmarkers(repo, [(repo[rev], newcommits)])
         tr.close()
     finally:
+        # Restore the old branch
+        repo.dirstate.setbranch(savedbranch)
+
         lockmod.release(tr, lock, wlock)
 
 @eh.command(
-    '^touch',
+    'touch',
     [('r', 'rev', [], 'revision to update'),
      ('D', 'duplicate', False,
       'do not mark the new revision as successor of the old one'),
@@ -1000,8 +1011,7 @@
     # allow to choose the seed ?
     _('[-r] revs'))
 def touch(ui, repo, *revs, **opts):
-    """create successors that are identical to their predecessors except
-    for the changeset ID
+    """create successors identical to their predecessors but the changeset ID
 
     This is used to "resurrect" changesets
     """
--- a/hgext3rd/evolve/metadata.py	Tue Nov 14 23:15:18 2017 +0100
+++ b/hgext3rd/evolve/metadata.py	Mon Dec 11 09:33:04 2017 +0100
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-__version__ = '7.0.1.dev'
-testedwith = '4.1.3 4.2.3 4.3.2 4.4'
+__version__ = '7.0.2.dev'
+testedwith = '4.1.3 4.2.3 4.3.2 4.4.1'
 minimumhgversion = '4.1'
 buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/topic/__init__.py	Tue Nov 14 23:15:18 2017 +0100
+++ b/hgext3rd/topic/__init__.py	Mon Dec 11 09:33:04 2017 +0100
@@ -9,12 +9,12 @@
 
 Compared to bookmark, topic is reference carried by each changesets of the
 series instead of just the single head revision.  Topic are quite similar to
-the way named branch work, except they eventualy fade away when the changeset
+the way named branch work, except they eventually fade away when the changeset
 becomes part of the immutable history. Changeset can belong to both a topic and
 a named branch, but as long as it is mutable, its topic identity will prevail.
 As a result, default destination for 'update', 'merge', etc...  will take topic
 into account. When a topic is active these operations will only consider other
-changesets on that topic (and, in some occurence, bare changeset on same
+changesets on that topic (and, in some occurrence, bare changeset on same
 branch).  When no topic is active, changeset with topic will be ignored and
 only bare one on the same branch will be taken in account.
 
@@ -77,7 +77,7 @@
 ===================
 
 Topic vanish when changeset move to the public phases. Moving to the public
-phase usually happens on push, but it is possible ot update that behavior. The
+phase usually happens on push, but it is possible to update that behavior. The
 server needs to have specific config for this.
 
     # everything pushed become public (the default)
@@ -174,9 +174,9 @@
               'topic.active': 'green',
              }
 
-__version__ = '0.5.1.dev'
+__version__ = '0.5.2.dev'
 
-testedwith = '4.1.3 4.2.3 4.3.3 4.4'
+testedwith = '4.1.3 4.2.3 4.3.3 4.4.1'
 minimumhgversion = '4.1'
 buglink = 'https://bz.mercurial-scm.org/'
 
@@ -201,9 +201,9 @@
     )
 
     def extsetup(ui):
-        # register config that strickly belong to other code (thg, core, etc)
+        # register config that strictly belong to other code (thg, core, etc)
         #
-        # To ensure all config items we used are registerd, we register them if
+        # To ensure all config items we used are registered, we register them if
         # nobody else did so far.
         from mercurial import configitems
         extraitem = functools.partial(configitems._register, ui._knownconfig)
@@ -444,7 +444,7 @@
             reporef = weakref.ref(self)
 
             def currenttopicempty(tr):
-                # check active topic emptyness
+                # check active topic emptiness
                 repo = reporef()
                 csetcount = stack.stack(repo, topic=ct).changesetcount
                 empty = csetcount == 0
@@ -474,7 +474,7 @@
 
 def wrapinit(orig, self, repo, *args, **kwargs):
     orig(self, repo, *args, **kwargs)
-    if repo.currenttopic:
+    if getattr(repo, 'currenttopic', ''):
         self._extra[constants.extrakey] = repo.currenttopic
     else:
         # Empty key will be dropped from extra by another hack at the changegroup level
@@ -741,14 +741,14 @@
 """
 
 def _findconvertbmarktopic(repo, bmark):
-    """find revisions unambigiously defined by a bookmark
+    """find revisions unambiguously defined by a bookmark
 
     find all changesets under the bookmark and under that bookmark only.
     """
     return repo.revs(CONVERTBOOKREVSET, bmark, bmark, bmark, bmark, bmark)
 
 def _applyconvertbmarktopic(ui, repo, revs, old, bmark, tr):
-    """apply bookmark convertion to topic
+    """apply bookmark conversion to topic
 
     Sets a topic as same as bname to all the changesets under the bookmark
     and delete the bookmark, if topic is set to any changeset
@@ -1012,7 +1012,7 @@
     return topicstime
 
 def summaryhook(ui, repo):
-    t = repo.currenttopic
+    t = getattr(repo, 'currenttopic', '')
     if not t:
         return
     # i18n: column positioning for "hg summary"
--- a/hgext3rd/topic/flow.py	Tue Nov 14 23:15:18 2017 +0100
+++ b/hgext3rd/topic/flow.py	Mon Dec 11 09:33:04 2017 +0100
@@ -41,15 +41,14 @@
         newargs['opargs']['publish'] = True
     return orig(repo, remote, *args, **newargs)
 
-def extendpushoperation(orig, *args, **kwargs):
+def extendpushoperation(orig, self, *args, **kwargs):
     publish = kwargs.pop('publish', False)
-    op = orig(*args, **kwargs)
-    op.publish = publish
-    return op
+    orig(self, *args, **kwargs)
+    self.publish = publish
 
 def wrapphasediscovery(orig, pushop):
     orig(pushop)
-    if pushop.publish:
+    if getattr(pushop, 'publish', False):
         if not util.safehasattr(pushop, 'remotephases'):
             msg = _('--publish flag only supported from Mercurial 4.4 and higher')
             raise error.Abort(msg)
@@ -64,6 +63,7 @@
     entry = extensions.wrapcommand(commands.table, 'push', wrappush)
     entry[1].append(('', 'publish', False,
                     _('push the changeset as public')))
-    extensions.wrapfunction(exchange, 'pushoperation', extendpushoperation)
+    extensions.wrapfunction(exchange.pushoperation, '__init__',
+                            extendpushoperation)
     extensions.wrapfunction(exchange, '_pushdiscoveryphase', wrapphasediscovery)
     exchange.pushdiscoverymapping['phase'] = exchange._pushdiscoveryphase
--- a/hgext3rd/topic/stack.py	Tue Nov 14 23:15:18 2017 +0100
+++ b/hgext3rd/topic/stack.py	Mon Dec 11 09:33:04 2017 +0100
@@ -262,7 +262,7 @@
     else:
         if data['behindcount'] == -1:
             fm.plain(', ')
-            fm.plain('ambigious rebase destination - %s' % data['behinderror'],
+            fm.plain('ambiguous rebase destination - %s' % data['behinderror'],
                      label='topic.stack.summary.behinderror')
         elif data['behindcount']:
             fm.plain(', ')
--- a/tests/test-metaedit.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-metaedit.t	Mon Dec 11 09:33:04 2017 +0100
@@ -209,7 +209,7 @@
   $ hg diff -r "10" -r "11" --hidden
 
 'fold' one commit
-  $ HGUSER=foobar3 hg metaedit "desc(D2)" --fold -U --config
+  $ HGUSER=foobar3 hg metaedit "desc(D2)" --fold -U
   1 changesets folded
   $ hg log -r "tip" --template '{rev}: {author}\n'
   13: foobar3
--- a/tests/test-prev-next.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-prev-next.t	Mon Dec 11 09:33:04 2017 +0100
@@ -200,7 +200,7 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   [3] added b (2)
   $ hg next
-  ambigious next changeset:
+  ambiguous next changeset:
   [4] added c
   [5] added d
   explicitly update to one of them
@@ -215,7 +215,7 @@
   (2 unstable changesets to be evolved here, do you want --evolve?)
   [1]
   $ hg next --evolve
-  ambigious next (unstable) changeset:
+  ambiguous next (unstable) changeset:
   [4] added c
   [5] added d
   (run 'hg evolve --rev REV' on one of them)
--- a/tests/test-split.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-split.t	Mon Dec 11 09:33:04 2017 +0100
@@ -490,3 +490,168 @@
   
   $ hg topic
    * mytopic (2 changesets)
+
+Test split the first commit on a branch
+
+  $ touch SPLIT1 SPLIT2
+  $ hg add SPLIT1 SPLIT2
+  $ hg branch another-branch
+  marked working directory as branch another-branch
+  $ hg commit -m "To be splitted"
+  $ hg log -G -l 3
+  @  changeset:   24:8dad923bdb9b
+  |  branch:      another-branch
+  |  tag:         tip
+  |  topic:       mytopic
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     To be splitted
+  |
+  o  changeset:   23:2532b288af61
+  |  branch:      new-branch
+  |  topic:       mytopic
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     split8
+  |
+  o  changeset:   22:addcf498f19e
+  |  branch:      new-branch
+  ~  topic:       mytopic
+     parent:      20:fdb403258632
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     split7
+  
+  $ hg export .
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Branch another-branch
+  # Node ID 8dad923bdb9bb3b99291caa5baeb03bbc30dfd33
+  # Parent  2532b288af61bd19239a95ae2a3ecb9b0ad4b8e1
+  # EXP-Topic mytopic
+  To be splitted
+  
+  diff --git a/SPLIT1 b/SPLIT1
+  new file mode 100644
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+
+  $ hg split -r . << EOF
+  > Y
+  > N
+  > N
+  > Y
+  > EOF
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  adding SPLIT1
+  adding SPLIT2
+  diff --git a/SPLIT1 b/SPLIT1
+  new file mode 100644
+  examine changes to 'SPLIT1'? [Ynesfdaq?] Y
+  
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+  examine changes to 'SPLIT2'? [Ynesfdaq?] N
+  
+  Done splitting? [yN] N
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+  examine changes to 'SPLIT2'? [Ynesfdaq?] Y
+  
+  no more change to split
+
+The splitted changesets should be on the 'another-branch'
+  $ hg log -G -l 3
+  @  changeset:   26:56a59faa8af7
+  |  branch:      another-branch
+  |  tag:         tip
+  |  topic:       mytopic
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     split10
+  |
+  o  changeset:   25:75695e3e2300
+  |  branch:      another-branch
+  |  topic:       mytopic
+  |  parent:      23:2532b288af61
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     split9
+  |
+  o  changeset:   23:2532b288af61
+  |  branch:      new-branch
+  ~  topic:       mytopic
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     split8
+  
+
+Try splitting the first changeset of a branch then cancel
+
+  $ hg branch yet-another-branch
+  marked working directory as branch yet-another-branch
+  $ touch SPLIT3 SPLIT4
+  $ hg add SPLIT3 SPLIT4
+  $ hg commit -m "To be splitted again"
+
+  $ hg up "tip~1"
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+
+  $ hg log -G -l 2
+  o  changeset:   27:b1020d17c364
+  |  branch:      yet-another-branch
+  |  tag:         tip
+  |  topic:       mytopic
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     To be splitted again
+  |
+  @  changeset:   26:56a59faa8af7
+  |  branch:      another-branch
+  ~  topic:       mytopic
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     split10
+  
+  $ hg branch
+  another-branch
+
+  $ hg split -r tip << EOF
+  > Y
+  > q
+  > EOF
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  adding SPLIT3
+  adding SPLIT4
+  diff --git a/SPLIT3 b/SPLIT3
+  new file mode 100644
+  examine changes to 'SPLIT3'? [Ynesfdaq?] Y
+  
+  diff --git a/SPLIT4 b/SPLIT4
+  new file mode 100644
+  examine changes to 'SPLIT4'? [Ynesfdaq?] q
+  
+  abort: user quit
+  [255]
+
+  $ hg branch
+  another-branch
+
+  $ hg log -G -l 2
+  o  changeset:   27:b1020d17c364
+  |  branch:      yet-another-branch
+  |  tag:         tip
+  |  topic:       mytopic
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     To be splitted again
+  |
+  @  changeset:   26:56a59faa8af7
+  |  branch:      another-branch
+  ~  topic:       mytopic
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     split10
+  
--- a/tests/test-topic-stack-data.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-topic-stack-data.t	Mon Dec 11 09:33:04 2017 +0100
@@ -282,7 +282,7 @@
   t0^ add base_c (base)
   $ hg stack foo
   ### topic: foo
-  ### target: lake (branch), ambigious rebase destination - branch 'lake' has 2 heads
+  ### target: lake (branch), ambiguous rebase destination - branch 'lake' has 2 heads
   t2@ add foo_b (current)
   t1: add foo_a
   t0^ add lake_a (base)
--- a/tests/test-topic-stack.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-topic-stack.t	Mon Dec 11 09:33:04 2017 +0100
@@ -553,7 +553,7 @@
 
   $ hg stack foo
   ### topic: foo
-  ### target: default (branch), ambigious rebase destination - topic 'foo' has 3 heads
+  ### target: default (branch), ambiguous rebase destination - topic 'foo' has 3 heads
   t4: c_f
     ^ c_e
   t3: c_h
@@ -645,7 +645,7 @@
   t0^ c_A (base)
   $ hg stack blue
   ### topic: blue
-  ### target: default (branch), ambigious rebase destination - topic 'blue' has 3 heads
+  ### target: default (branch), ambiguous rebase destination - topic 'blue' has 3 heads
   t3@ c_I (current)
     ^ c_H
   t2: c_D
@@ -698,7 +698,7 @@
 
   $ hg stack red
   ### topic: red
-  ### target: default (branch), ambigious rebase destination - topic 'red' has 3 heads
+  ### target: default (branch), ambiguous rebase destination - topic 'red' has 3 heads
   t5$ c_H (unstable)
     ^ c_G
     ^ c_D
@@ -710,7 +710,7 @@
   t0^ c_A (base)
   $ hg stack blue
   ### topic: blue
-  ### target: default (branch), ambigious rebase destination - topic 'blue' has 3 heads
+  ### target: default (branch), ambiguous rebase destination - topic 'blue' has 3 heads
   t3$ c_I (unstable)
     ^ c_H
   t2$ c_G (unstable)
@@ -772,7 +772,7 @@
 
   $ hg stack red
   ### topic: red
-  ### target: default (branch), ambigious rebase destination - topic 'red' has 3 heads
+  ### target: default (branch), ambiguous rebase destination - topic 'red' has 3 heads
   t5$ c_H (unstable)
     ^ c_G
     ^ c_D
@@ -784,7 +784,7 @@
   t0^ c_A (base)
   $ hg stack blue
   ### topic: blue
-  ### target: default (branch), ambigious rebase destination - topic 'blue' has 3 heads
+  ### target: default (branch), ambiguous rebase destination - topic 'blue' has 3 heads
   t3$ c_I (unstable)
     ^ c_H
   t2$ c_G (unstable)
--- a/tests/test-topic.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-topic.t	Mon Dec 11 09:33:04 2017 +0100
@@ -636,7 +636,7 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg stack
   ### topic: fran
-  ### target: default (branch), ambigious rebase destination - branch 'default' has 2 heads
+  ### target: default (branch), ambiguous rebase destination - branch 'default' has 2 heads
   t1@ start on fran (current)
   t0^ Add file delta (base)
 
@@ -648,7 +648,7 @@
    * fran (1 changesets)
   $ hg stack
   ### topic: fran
-  ### target: default (branch), ambigious rebase destination - branch 'default' has 2 heads
+  ### target: default (branch), ambiguous rebase destination - branch 'default' has 2 heads
   t1: start on fran
   t0^ Add file delta (base current)
 
--- a/tests/test-unstable.t	Tue Nov 14 23:15:18 2017 +0100
+++ b/tests/test-unstable.t	Mon Dec 11 09:33:04 2017 +0100
@@ -302,7 +302,7 @@
   
 
   $ hg evo --all --any --orphan
-  cannot solve split accross two branches
+  cannot solve split across two branches
   $ hg log -G
   @  4:3c69ea6aa93e@default(draft) add bprimesplit2
   |