Hello community,

here is the log from the commit of package mercurial for openSUSE:Factory 
checked in at 2014-03-14 15:16:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mercurial (Old)
 and      /work/SRC/openSUSE:Factory/.mercurial.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mercurial"

Changes:
--------
--- /work/SRC/openSUSE:Factory/mercurial/mercurial.changes      2014-02-18 
14:45:16.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mercurial.new/mercurial.changes 2014-03-14 
15:16:49.000000000 +0100
@@ -1,0 +2,19 @@
+Thu Mar 13 21:07:15 UTC 2014 - devel...@develop7.info
+
+- update to version 2.9.1
+  * coal: hgweb style adds extra blank line in file view (issue4136)
+  * hg.openpath: use url.islocal to tell if the path is local (issue3624)
+  * hgweb: hack around mimetypes encoding thinko (issue4160)
+  * hooks: only disable/re-enable demandimport when it's already enabled
+  * merge: add "other" file node in the merge state file
+  * merge: audit the right destination file when merging with dir rename
+  * merge: don't overwrite file untracked after remove, abort with 'untracked 
files'
+  * merge: record the "other" node in merge state
+  * pathencode: eliminate signed integer warnings
+  * pull: close peer repo on completion (issue2491) (issue2797)
+  * purge: avoid duplicate output for --print (issue4092)
+  * rebase: do not try to reactivate deleted divergent bookmark
+  * resolve: use "other" changeset from merge state (issue4163)
+  * verify: do not prevent verify repository containing hidden changesets
+
+-------------------------------------------------------------------

Old:
----
  mercurial-2.9.tar.gz

New:
----
  mercurial-2.9.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.5DxGfQ/_old  2014-03-14 15:16:50.000000000 +0100
+++ /var/tmp/diff_new_pack.5DxGfQ/_new  2014-03-14 15:16:50.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           mercurial
-Version:        2.9
+Version:        2.9.1
 Release:        0
 Summary:        Scalable Distributed SCM
 License:        GPL-2.0+

++++++ mercurial-2.9.tar.gz -> mercurial-2.9.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/.hgsigs new/mercurial-2.9.1/.hgsigs
--- old/mercurial-2.9/.hgsigs   2014-02-01 22:20:49.000000000 +0100
+++ new/mercurial-2.9.1/.hgsigs 2014-03-01 22:22:50.000000000 +0100
@@ -83,3 +83,4 @@
 209e04a06467e2969c0cc6501335be0406d46ef0 0 
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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/.hgtags new/mercurial-2.9.1/.hgtags
--- old/mercurial-2.9/.hgtags   2014-02-01 22:20:49.000000000 +0100
+++ new/mercurial-2.9.1/.hgtags 2014-03-01 22:22:50.000000000 +0100
@@ -96,3 +96,4 @@
 209e04a06467e2969c0cc6501335be0406d46ef0 2.8.1
 ca387377df7a3a67dbb90b6336b781cdadc3ef41 2.8.2
 8862469e16f9236208581b20de5f96bd13cc039d 2.9-rc
+3cec5134e9c4bceab6a00c60f52a4f80677a78f2 2.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/PKG-INFO new/mercurial-2.9.1/PKG-INFO
--- old/mercurial-2.9/PKG-INFO  2014-02-01 22:20:57.000000000 +0100
+++ new/mercurial-2.9.1/PKG-INFO        2014-03-01 22:22:58.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: mercurial
-Version: 2.9
+Version: 2.9.1
 Summary: Fast scalable distributed SCM (revision control, version control) 
system
 Home-page: http://mercurial.selenic.com/
 Author: Matt Mackall and many others
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/doc/hgrc.5 
new/mercurial-2.9.1/doc/hgrc.5
--- old/mercurial-2.9/doc/hgrc.5        2014-02-01 22:20:52.000000000 +0100
+++ new/mercurial-2.9.1/doc/hgrc.5      2014-03-01 22:22:53.000000000 +0100
@@ -948,7 +948,7 @@
 .nf
 .ft C
 [hostfingerprints]
-hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d
+hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0
 .ft P
 .fi
 .sp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/doc/hgrc.5.html 
new/mercurial-2.9.1/doc/hgrc.5.html
--- old/mercurial-2.9/doc/hgrc.5.html   2014-02-01 22:20:55.000000000 +0100
+++ new/mercurial-2.9.1/doc/hgrc.5.html 2014-03-01 22:22:56.000000000 +0100
@@ -756,7 +756,7 @@
 <p>For example:</p>
 <pre class="literal-block">
 [hostfingerprints]
-hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d
+hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0
 </pre>
 <p>This feature is only supported when using Python 2.6 or later.</p>
 </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/hgext/purge.py 
new/mercurial-2.9.1/hgext/purge.py
--- old/mercurial-2.9/hgext/purge.py    2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/hgext/purge.py  2014-03-01 22:22:30.000000000 +0100
@@ -101,10 +101,12 @@
     status = repo.status(match=match, ignored=opts['all'], unknown=True)
 
     for f in sorted(status[4] + status[5]):
-        ui.note(_('removing file %s\n') % f)
+        if act:
+            ui.note(_('removing file %s\n') % f)
         remove(removefile, f)
 
     for f in sorted(directories, reverse=True):
         if match(f) and not os.listdir(repo.wjoin(f)):
-            ui.note(_('removing directory %s\n') % f)
+            if act:
+                ui.note(_('removing directory %s\n') % f)
             remove(os.rmdir, f)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/hgext/rebase.py 
new/mercurial-2.9.1/hgext/rebase.py
--- old/mercurial-2.9/hgext/rebase.py   2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/hgext/rebase.py 2014-03-01 22:22:30.000000000 +0100
@@ -404,6 +404,9 @@
 
         if currentbookmarks:
             updatebookmarks(repo, targetnode, nstate, currentbookmarks)
+            if activebookmark not in repo._bookmarks:
+                # active bookmark was divergent one and has been deleted
+                activebookmark = None
 
         clearstatus(repo)
         ui.note(_("rebase completed\n"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/i18n/ja.po 
new/mercurial-2.9.1/i18n/ja.po
--- old/mercurial-2.9/i18n/ja.po        2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/i18n/ja.po      2014-03-01 22:22:30.000000000 +0100
@@ -149,8 +149,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-de...@selenic.com>\n"
-"POT-Creation-Date: 2014-01-29 17:19+0900\n"
-"PO-Revision-Date: 2014-01-31 16:19+0900\n"
+"POT-Creation-Date: 2014-02-23 17:05+0900\n"
+"PO-Revision-Date: 2014-02-23 17:58+0900\n"
 "Last-Translator: Japanese translation team <mercurial...@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -2286,7 +2286,7 @@
 "    :convert.hg.clonebranches: dispatch source branches in separate\n"
 "        clones. The default is False."
 msgstr ""
-"    :convert.hg.clonebranches: 変換元ブランチの別複製への振り分けの要否。\n"
+"    :convert.hg.clonebranches: 変換元ブランチ毎に変換先リポジトリを作成。\n"
 "        デフォルト値は False。"
 
 msgid ""
@@ -2301,7 +2301,7 @@
 "        True.\n"
 "    "
 msgstr ""
-"    :convert.hg.usebranchnames: ブランチ名維持の要否。\n"
+"    :convert.hg.usebranchnames: 変換元におけるブランチ名の維持の要否。\n"
 "        デフォルト値は True。\n"
 "    "
 
@@ -8485,6 +8485,9 @@
 msgid "cannot use revision %d as base, result would have 3 parents"
 msgstr "親リビジョンが 3 つになるので、 リビジョン %d をベースにできません"
 
+msgid ".hg/rebasestate is incomplete"
+msgstr "管理情報 (.hg/rebasestate) が破損しています"
+
 msgid "no rebase in progress"
 msgstr "未完了な rebase による移動はありません"
 
@@ -17649,12 +17652,12 @@
 
 msgid ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:"
-"d4:89:2a:9d"
+"    hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:"
+"b8:58:28:7d:8b:d0"
 msgstr ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:"
-"d4:89:2a:9d"
+"    hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:"
+"b8:58:28:7d:8b:d0"
 
 msgid "This feature is only supported when using Python 2.6 or later."
 msgstr "本機能は、 Python 2.6 以降でのみ使用可能です。"
@@ -18079,31 +18082,38 @@
 "    新規作成されるリビジョンのフェーズ。\n"
 "    デフォルト値: draft"
 
-msgid "``checksubrepos``"
-msgstr "``checksubrepos``"
-
 msgid ""
-"    Check phase of state in each subrepositories, allowed values are\n"
-"    \"ignore\", \"follow\" or \"abort\". For settings other than \"ignore"
-"\",\n"
-"    the phase of each subrepository commit is checked before committing\n"
-"    in the parent repository. If there is any greater phase than the parent\n"
-"    (\"secret\" vs \"draft\", for example), the commit is either aborted\n"
-"    with \"abort\" or the higher phase is used with \"follow\". Default: "
-"\"follow\"."
+"``checksubrepos``\n"
+"    Check the phase of the current revision of each subrepository. Allowed\n"
+"    values are \"ignore\", \"follow\" and \"abort\". For settings other "
+"than\n"
+"    \"ignore\", the phase of the current revision of each subrepository is\n"
+"    checked before committing the parent repository. If any of those phases "
+"is\n"
+"    greater than the phase of the parent repository (e.g. if a subrepo is in "
+"a\n"
+"    \"secret\" phase while the parent repo is in \"draft\" phase), the "
+"commit is\n"
+"    either aborted (if checksubrepos is set to \"abort\") or the higher "
+"phase is\n"
+"    used for the parent repository commit (if set to \"follow\").\n"
+"    Default: \"follow\""
 msgstr ""
-"    サブリポジトリのフェーズ確認の有無。\"ignore\"、 \"follow\" または\n"
+"``checksubrepos``\n"
+"    サブリポジトリのフェーズ確認の有無。 \"ignore\"、 \"follow\" または\n"
 "    \"abort\" が指定可能です。 \"ignore\" 以外が指定された場合、\n"
 "    親リポジトリのコミット前に、 サブリポジトリのフェーズを確認します。\n"
 "    親リポジトリ側フェーズよりも、サブリポジトリ側の公開度合が低い場合\n"
-"    (例: \"draft\" に対する \"secret\")、 \"abort\" ならコミット中断し、\n"
-"    \"follow\" ならコミット時にサブリポジトリ側フェーズ値に従います。    デ"
-"フォルト値: \"follow\""
+"    (例: 親側の \"draft\" に対して、サブリポジトリ側が \"secret\")、\n"
+"    コミット中断 (\"abort\" 時)か、 サブリポジトリ側フェーズ値でコミット\n"
+"    (\"follow\" 時)します。 デフォルト値: \"follow\""
 
 msgid ""
+"\n"
 "``profiling``\n"
 "-------------"
 msgstr ""
+"\n"
 "``profiling``\n"
 "-------------"
 
@@ -21319,8 +21329,9 @@
 "  Please see :hg:`help patterns` for details."
 msgstr ""
 ".. note::\n"
-"  ``.hgignore`` 以外の記述では、 作業領域ルートからの相対パスに対して、\n"
-"  パス先頭からのパターン合致が要求されます。 詳細は :hg:`help patterns`\n"
+"  ``.hgignore`` 記述の場合、 作業領域ルートからの相対パスに対して、\n"
+"  途中要素の部分一致でも合致とみなされますが、 通常のパターン指定では、\n"
+"  相対パスの先頭からの合致が要求されます。 詳細は :hg:`help patterns`\n"
 "  を参照してください。"
 
 msgid ""
@@ -21864,15 +21875,13 @@
 
 msgid ""
 "All patterns, except for ``glob:`` specified in command line (not for\n"
-"``-I`` or ``-X`` options) or ``.hgignore`` file, can match also\n"
-"against directories: files under matched directories are treated as\n"
-"matched."
-msgstr ""
-"コマンドライン引数 (但し ``-I`` や ``-X`` 向けを除く) や ``.hgignore``\n"
-"ファイルでの ``glob:`` 形式以外のパターンは、 ディレクトリにも合致します:\n"
-"合致対象ディレクトリ配下のファイルも、 合致したのとみなされます。\n"
-"(※ 訳注: コマンドラインや ``.hgignore`` での ``glob:`` パターンは、\n"
-"ファイルにしか合致しません。 必要に応じて末尾 ``**`` 等を補ってください)"
+"``-I`` or ``-X`` options), can match also against directories: files\n"
+"under matched directories are treated as matched."
+msgstr ""
+"パターンはディレクトリにも合致します。 合致ディレクトリ配下のファイルも、\n"
+"パターンに合致したものとみなされます。但し( ``-I`` や ``-X`` 向けを除く)\n"
+"コマンドライン引数での ``glob:`` 形式指定は、ファイルにしか合致しません。\n"
+"(※ 訳注: 必要に応じて末尾 ``**`` 等を補ってください)"
 
 msgid "Plain examples::"
 msgstr "パターン合致未使用例::"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/i18n/pt_BR.po 
new/mercurial-2.9.1/i18n/pt_BR.po
--- old/mercurial-2.9/i18n/pt_BR.po     2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/i18n/pt_BR.po   2014-03-01 22:22:30.000000000 +0100
@@ -17978,10 +17978,10 @@
 
 msgid ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 
44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d"
+"    hg.intevation.org = 
fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0"
 msgstr ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 
44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d"
+"    hg.intevation.org = 
fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0"
 
 msgid "This feature is only supported when using Python 2.6 or later."
 msgstr ""
@@ -18414,30 +18414,36 @@
 "    Fase de revisões criadas usando commit.\n"
 "    Padrão: draft (rascunho)"
 
-msgid "``checksubrepos``"
-msgstr "``checksubrepos``"
-
 msgid ""
-"    Check phase of state in each subrepositories, allowed values are\n"
-"    \"ignore\", \"follow\" or \"abort\". For settings other than 
\"ignore\",\n"
-"    the phase of each subrepository commit is checked before committing\n"
-"    in the parent repository. If there is any greater phase than the parent\n"
-"    (\"secret\" vs \"draft\", for example), the commit is either aborted\n"
-"    with \"abort\" or the higher phase is used with \"follow\". Default: 
\"follow\"."
+"``checksubrepos``\n"
+"    Check the phase of the current revision of each subrepository. Allowed\n"
+"    values are \"ignore\", \"follow\" and \"abort\". For settings other 
than\n"
+"    \"ignore\", the phase of the current revision of each subrepository is\n"
+"    checked before committing the parent repository. If any of those phases 
is\n"
+"    greater than the phase of the parent repository (e.g. if a subrepo is in 
a\n"
+"    \"secret\" phase while the parent repo is in \"draft\" phase), the commit 
is\n"
+"    either aborted (if checksubrepos is set to \"abort\") or the higher phase 
is\n"
+"    used for the parent repository commit (if set to \"follow\").\n"
+"    Default: \"follow\""
 msgstr ""
-"    Verifica a fase do estado de cada sub-repositório. Os valores\n"
+"``checksubrepos``\n"
+"    Verifica a fase da revisão atual de cada sub-repositório. Os valores\n"
 "    possíveis são \"ignore\", \"follow\" ou \"abort\". Para valores\n"
-"    diferentes de \"ignore\", a fase da consolidação de cada\n"
+"    diferentes de \"ignore\", a fase da revisão atual de cada\n"
 "    sub-repositório será verificada antes da consolidação no repositório\n"
-"    pai. Se houver qualquer fase maior que a do pai (\"secret\" versus\n"
-"    \"draft\", por exemplo), o valor \"abort\" faz com que a consolidação\n"
-"    seja abortada, e \"follow\" faz com que seja usada a fase mais\n"
-"    alta. O valor padrão é: \"follow\"."
+"    pai. Se houver qualquer fase maior que a do pai (por exemplo, se um\n"
+"    sub-repositório estiver na fase \"secret\" e o repositório pai estiver\n"
+"    na fase \"draft\"), o valor \"abort\" faz com que a consolidação\n"
+"    seja abortada, e \"follow\" faz com que a fase mais alta seja usada\n"
+"    na consolidação do repositório pai.\n"
+"    O valor padrão é: \"follow\"."
 
 msgid ""
+"\n"
 "``profiling``\n"
 "-------------"
 msgstr ""
+"\n"
 "``profiling``\n"
 "-------------"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/__version__.py 
new/mercurial-2.9.1/mercurial/__version__.py
--- old/mercurial-2.9/mercurial/__version__.py  2014-02-01 22:20:55.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/__version__.py        2014-03-01 
22:22:56.000000000 +0100
@@ -1,2 +1,2 @@
 # this file is autogenerated by setup.py
-version = "2.9"
+version = "2.9.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/commands.py 
new/mercurial-2.9.1/mercurial/commands.py
--- old/mercurial-2.9/mercurial/commands.py     2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/commands.py   2014-03-01 22:22:30.000000000 
+0100
@@ -4605,47 +4605,50 @@
     """
     source, branches = hg.parseurl(ui.expandpath(source), opts.get('branch'))
     other = hg.peer(repo, opts, source)
-    ui.status(_('pulling from %s\n') % util.hidepassword(source))
-    revs, checkout = hg.addbranchrevs(repo, other, branches, opts.get('rev'))
-
-    remotebookmarks = other.listkeys('bookmarks')
-
-    if opts.get('bookmark'):
-        if not revs:
-            revs = []
-        for b in opts['bookmark']:
-            if b not in remotebookmarks:
-                raise util.Abort(_('remote bookmark %s not found!') % b)
-            revs.append(remotebookmarks[b])
-
-    if revs:
-        try:
-            revs = [other.lookup(rev) for rev in revs]
-        except error.CapabilityError:
-            err = _("other repository doesn't support revision lookup, "
-                    "so a rev cannot be specified.")
-            raise util.Abort(err)
-
-    modheads = repo.pull(other, heads=revs, force=opts.get('force'))
-    bookmarks.updatefromremote(ui, repo, remotebookmarks, source)
-    if checkout:
-        checkout = str(repo.changelog.rev(other.lookup(checkout)))
-    repo._subtoppath = source
     try:
-        ret = postincoming(ui, repo, modheads, opts.get('update'), checkout)
+        ui.status(_('pulling from %s\n') % util.hidepassword(source))
+        revs, checkout = hg.addbranchrevs(repo, other, branches,
+                                          opts.get('rev'))
+
+        remotebookmarks = other.listkeys('bookmarks')
+
+        if opts.get('bookmark'):
+            if not revs:
+                revs = []
+            for b in opts['bookmark']:
+                if b not in remotebookmarks:
+                    raise util.Abort(_('remote bookmark %s not found!') % b)
+                revs.append(remotebookmarks[b])
+
+        if revs:
+            try:
+                revs = [other.lookup(rev) for rev in revs]
+            except error.CapabilityError:
+                err = _("other repository doesn't support revision lookup, "
+                        "so a rev cannot be specified.")
+                raise util.Abort(err)
+
+        modheads = repo.pull(other, heads=revs, force=opts.get('force'))
+        bookmarks.updatefromremote(ui, repo, remotebookmarks, source)
+        if checkout:
+            checkout = str(repo.changelog.rev(other.lookup(checkout)))
+        repo._subtoppath = source
+        try:
+            ret = postincoming(ui, repo, modheads, opts.get('update'), 
checkout)
 
-    finally:
-        del repo._subtoppath
-
-    # update specified bookmarks
-    if opts.get('bookmark'):
-        marks = repo._bookmarks
-        for b in opts['bookmark']:
-            # explicit pull overrides local bookmark if any
-            ui.status(_("importing bookmark %s\n") % b)
-            marks[b] = repo[remotebookmarks[b]].node()
-        marks.write()
+        finally:
+            del repo._subtoppath
 
+        # update specified bookmarks
+        if opts.get('bookmark'):
+            marks = repo._bookmarks
+            for b in opts['bookmark']:
+                # explicit pull overrides local bookmark if any
+                ui.status(_("importing bookmark %s\n") % b)
+                marks[b] = repo[remotebookmarks[b]].node()
+            marks.write()
+    finally:
+        other.close()
     return ret
 
 @command('^push',
@@ -4958,7 +4961,6 @@
                 ms.mark(f, "u")
             else:
                 wctx = repo[None]
-                mctx = wctx.parents()[-1]
 
                 # backup pre-resolve (merge uses .orig for its own purposes)
                 a = repo.wjoin(f)
@@ -4967,7 +4969,7 @@
                 try:
                     # resolve file
                     ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
-                    if ms.resolve(f, wctx, mctx):
+                    if ms.resolve(f, wctx):
                         ret = 1
                 finally:
                     ui.setconfig('ui', 'forcemerge', '')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/demandimport.py 
new/mercurial-2.9.1/mercurial/demandimport.py
--- old/mercurial-2.9/mercurial/demandimport.py 2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/demandimport.py       2014-03-01 
22:22:30.000000000 +0100
@@ -162,6 +162,9 @@
     'mimetools',
     ]
 
+def isenabled():
+    return __builtin__.__import__ == _demandimport
+
 def enable():
     "enable global demand-loading of modules"
     __builtin__.__import__ = _demandimport
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/help/config.txt 
new/mercurial-2.9.1/mercurial/help/config.txt
--- old/mercurial-2.9/mercurial/help/config.txt 2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/help/config.txt       2014-03-01 
22:22:30.000000000 +0100
@@ -748,7 +748,7 @@
 For example::
 
     [hostfingerprints]
-    hg.intevation.org = 
44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d
+    hg.intevation.org = 
fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0
 
 This feature is only supported when using Python 2.6 or later.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/hg.py 
new/mercurial-2.9.1/mercurial/hg.py
--- old/mercurial-2.9/mercurial/hg.py   2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/mercurial/hg.py 2014-03-01 22:22:30.000000000 +0100
@@ -82,7 +82,7 @@
         return thing
 
 def islocal(repo):
-    '''return true if repo or path is local'''
+    '''return true if repo (or path pointing to repo) is local'''
     if isinstance(repo, str):
         try:
             return _peerlookup(repo).islocal(repo)
@@ -92,8 +92,9 @@
 
 def openpath(ui, path):
     '''open path with open if local, url.open if remote'''
-    if islocal(path):
-        return util.posixfile(util.urllocalpath(path), 'rb')
+    pathurl = util.url(path, parsequery=False, parsefragment=False)
+    if pathurl.islocal():
+        return util.posixfile(pathurl.localpath(), 'rb')
     else:
         return url.open(ui, path)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/hgweb/hgwebdir_mod.py 
new/mercurial-2.9.1/mercurial/hgweb/hgwebdir_mod.py
--- old/mercurial-2.9/mercurial/hgweb/hgwebdir_mod.py   2014-02-01 
22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/mercurial/hgweb/hgwebdir_mod.py 2014-03-01 
22:22:30.000000000 +0100
@@ -365,7 +365,8 @@
                            description_sort=description.upper() or "unknown",
                            lastchange=d,
                            lastchange_sort=d[1]-d[0],
-                           archives=archivelist(u, "tip", url))
+                           archives=archivelist(u, "tip", url),
+                           isdirectory=None)
 
                 seenrepos.add(name)
                 yield row
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/hgweb/server.py 
new/mercurial-2.9.1/mercurial/hgweb/server.py
--- old/mercurial-2.9/mercurial/hgweb/server.py 2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/hgweb/server.py       2014-03-01 
22:22:30.000000000 +0100
@@ -322,7 +322,21 @@
         cls = MercurialHTTPServer
 
     # ugly hack due to python issue5853 (for threaded use)
-    import mimetypes; mimetypes.init()
+    try:
+        import mimetypes
+        mimetypes.init()
+    except UnicodeDecodeError:
+        # Python 2.x's mimetypes module attempts to decode strings
+        # from Windows' ANSI APIs as ascii (fail), then re-encode them
+        # as ascii (clown fail), because the default Python Unicode
+        # codec is hardcoded as ascii.
+
+        sys.argv # unwrap demand-loader so that reload() works
+        reload(sys) # resurrect sys.setdefaultencoding()
+        oldenc = sys.getdefaultencoding()
+        sys.setdefaultencoding("latin1") # or any full 8-bit encoding
+        mimetypes.init()
+        sys.setdefaultencoding(oldenc)
 
     address = ui.config('web', 'address', '')
     port = util.getport(ui.config('web', 'port', 8000))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/hook.py 
new/mercurial-2.9.1/mercurial/hook.py
--- old/mercurial-2.9/mercurial/hook.py 2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/mercurial/hook.py       2014-03-01 22:22:30.000000000 
+0100
@@ -36,28 +36,33 @@
             if modpath and modfile:
                 sys.path = sys.path[:] + [modpath]
                 modname = modfile
-        try:
+        demandimportenabled = demandimport.isenabled()
+        if demandimportenabled:
             demandimport.disable()
-            obj = __import__(modname)
-            demandimport.enable()
-        except ImportError:
-            e1 = sys.exc_type, sys.exc_value, sys.exc_traceback
+        try:
             try:
-                # extensions are loaded with hgext_ prefix
-                obj = __import__("hgext_%s" % modname)
-                demandimport.enable()
+                obj = __import__(modname)
             except ImportError:
+                e1 = sys.exc_type, sys.exc_value, sys.exc_traceback
+                try:
+                    # extensions are loaded with hgext_ prefix
+                    obj = __import__("hgext_%s" % modname)
+                except ImportError:
+                    e2 = sys.exc_type, sys.exc_value, sys.exc_traceback
+                    if ui.tracebackflag:
+                        ui.warn(_('exception from first failed import '
+                                  'attempt:\n'))
+                    ui.traceback(e1)
+                    if ui.tracebackflag:
+                        ui.warn(_('exception from second failed import '
+                                  'attempt:\n'))
+                    ui.traceback(e2)
+                    raise util.Abort(_('%s hook is invalid '
+                                       '(import of "%s" failed)') %
+                                     (hname, modname))
+        finally:
+            if demandimportenabled:
                 demandimport.enable()
-                e2 = sys.exc_type, sys.exc_value, sys.exc_traceback
-                if ui.tracebackflag:
-                    ui.warn(_('exception from first failed import attempt:\n'))
-                ui.traceback(e1)
-                if ui.tracebackflag:
-                    ui.warn(_('exception from second failed import 
attempt:\n'))
-                ui.traceback(e2)
-                raise util.Abort(_('%s hook is invalid '
-                                   '(import of "%s" failed)') %
-                                 (hname, modname))
         sys.path = oldpaths
         try:
             for p in funcname.split('.')[1:]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/merge.py 
new/mercurial-2.9.1/mercurial/merge.py
--- old/mercurial-2.9/mercurial/merge.py        2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/merge.py      2014-03-01 22:22:30.000000000 
+0100
@@ -5,52 +5,172 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
+import struct
+
 from node import nullid, nullrev, hex, bin
 from i18n import _
 from mercurial import obsolete
 import error, util, filemerge, copies, subrepo, worker, dicthelpers
 import errno, os, shutil
 
+_pack = struct.pack
+_unpack = struct.unpack
+
+def _droponode(data):
+    # used for compatibility for v1
+    bits = data.split("\0")
+    bits = bits[:-2] + bits[-1:]
+    return "\0".join(bits)
+
 class mergestate(object):
-    '''track 3-way merge state of individual files'''
+    '''track 3-way merge state of individual files
+
+    it is stored on disk when needed. Two file are used, one with an old
+    format, one with a new format. Both contains similar data, but the new
+    format can store new kind of field.
+
+    Current new format is a list of arbitrary record of the form:
+
+        [type][length][content]
+
+    Type is a single character, length is a 4 bytes integer, content is an
+    arbitrary suites of bytes of lenght `length`.
+
+    Type should be a letter. Capital letter are mandatory record, Mercurial
+    should abort if they are unknown. lower case record can be safely ignored.
+
+    Currently known record:
+
+    L: the node of the "local" part of the merge (hexified version)
+    O: the node of the "other" part of the merge (hexified version)
+    F: a file to be merged entry
+    '''
+    statepathv1 = "merge/state"
+    statepathv2 = "merge/state2"
     def __init__(self, repo):
         self._repo = repo
         self._dirty = False
         self._read()
-    def reset(self, node=None):
+    def reset(self, node=None, other=None):
         self._state = {}
         if node:
             self._local = node
+            self._other = other
         shutil.rmtree(self._repo.join("merge"), True)
         self._dirty = False
     def _read(self):
         self._state = {}
+        records = self._readrecords()
+        for rtype, record in records:
+            if rtype == 'L':
+                self._local = bin(record)
+            elif rtype == 'O':
+                self._other = bin(record)
+            elif rtype == "F":
+                bits = record.split("\0")
+                self._state[bits[0]] = bits[1:]
+            elif not rtype.islower():
+                raise util.Abort(_('unsupported merge state record:'
+                                   % rtype))
+        self._dirty = False
+    def _readrecords(self):
+        v1records = self._readrecordsv1()
+        v2records = self._readrecordsv2()
+        oldv2 = set() # old format version of v2 record
+        for rec in v2records:
+            if rec[0] == 'L':
+                oldv2.add(rec)
+            elif rec[0] == 'F':
+                # drop the onode data (not contained in v1)
+                oldv2.add(('F', _droponode(rec[1])))
+        for rec in v1records:
+            if rec not in oldv2:
+                # v1 file is newer than v2 file, use it
+                # we have to infer the "other" changeset of the merge
+                # we cannot do better than that with v1 of the format
+                mctx = self._repo[None].parents()[-1]
+                v1records.append(('O', mctx.hex()))
+                # add place holder "other" file node information
+                # nobody is using it yet so we do no need to fetch the data
+                # if mctx was wrong `mctx[bits[-2]]` may fails.
+                for idx, r in enumerate(v1records):
+                    if r[0] == 'F':
+                        bits = r[1].split("\0")
+                        bits.insert(-2, '')
+                        v1records[idx] = (r[0], "\0".join(bits))
+                return v1records
+        else:
+            return v2records
+    def _readrecordsv1(self):
+        records = []
         try:
-            f = self._repo.opener("merge/state")
+            f = self._repo.opener(self.statepathv1)
             for i, l in enumerate(f):
                 if i == 0:
-                    self._local = bin(l[:-1])
+                    records.append(('L', l[:-1]))
                 else:
-                    bits = l[:-1].split("\0")
-                    self._state[bits[0]] = bits[1:]
+                    records.append(('F', l[:-1]))
             f.close()
         except IOError, err:
             if err.errno != errno.ENOENT:
                 raise
-        self._dirty = False
+        return records
+    def _readrecordsv2(self):
+        records = []
+        try:
+            f = self._repo.opener(self.statepathv2)
+            data = f.read()
+            off = 0
+            end = len(data)
+            while off < end:
+                rtype = data[off]
+                off += 1
+                lenght = _unpack('>I', data[off:(off + 4)])[0]
+                off += 4
+                record = data[off:(off + lenght)]
+                off += lenght
+                records.append((rtype, record))
+            f.close()
+        except IOError, err:
+            if err.errno != errno.ENOENT:
+                raise
+        return records
     def commit(self):
         if self._dirty:
-            f = self._repo.opener("merge/state", "w")
-            f.write(hex(self._local) + "\n")
+            records = []
+            records.append(("L", hex(self._local)))
+            records.append(("O", hex(self._other)))
             for d, v in self._state.iteritems():
-                f.write("\0".join([d] + v) + "\n")
-            f.close()
+                records.append(("F", "\0".join([d] + v)))
+            self._writerecords(records)
             self._dirty = False
+    def _writerecords(self, records):
+        self._writerecordsv1(records)
+        self._writerecordsv2(records)
+    def _writerecordsv1(self, records):
+        f = self._repo.opener(self.statepathv1, "w")
+        irecords = iter(records)
+        lrecords = irecords.next()
+        assert lrecords[0] == 'L'
+        f.write(hex(self._local) + "\n")
+        for rtype, data in irecords:
+            if rtype == "F":
+                f.write("%s\n" % _droponode(data))
+        f.close()
+    def _writerecordsv2(self, records):
+        f = self._repo.opener(self.statepathv2, "w")
+        for key, data in records:
+            assert len(key) == 1
+            format = ">sI%is" % len(data)
+            f.write(_pack(format, key, len(data), data))
+        f.close()
     def add(self, fcl, fco, fca, fd):
         hash = util.sha1(fcl.path()).hexdigest()
         self._repo.opener.write("merge/" + hash, fcl.data())
-        self._state[fd] = ['u', hash, fcl.path(), fca.path(),
-                           hex(fca.filenode()), fco.path(), fcl.flags()]
+        self._state[fd] = ['u', hash, fcl.path(),
+                           fca.path(), hex(fca.filenode()),
+                           fco.path(), hex(fco.filenode()),
+                           fcl.flags()]
         self._dirty = True
     def __contains__(self, dfile):
         return dfile in self._state
@@ -66,10 +186,12 @@
     def mark(self, dfile, state):
         self._state[dfile][0] = state
         self._dirty = True
-    def resolve(self, dfile, wctx, octx):
+    def resolve(self, dfile, wctx):
         if self[dfile] == 'r':
             return 0
-        state, hash, lfile, afile, anode, ofile, flags = self._state[dfile]
+        stateentry = self._state[dfile]
+        state, hash, lfile, afile, anode, ofile, onode, flags = stateentry
+        octx = self._repo[self._other]
         fcd = wctx[dfile]
         fco = octx[ofile]
         fca = self._repo.filectx(afile, fileid=anode)
@@ -343,7 +465,12 @@
                 else:
                     actions.append((f, "g", (fl2,), "remote created"))
         elif n2 and n2 != ma[f]:
-            prompts.append((f, "dc")) # prompt deleted/changed
+            different = _checkunknownfile(repo, wctx, p2, f)
+            if not force and different:
+                aborts.append((f, "ud"))
+            else:
+                # if different: old untracked f may be overwritten and lost
+                prompts.append((f, "dc")) # prompt deleted/changed
 
     for f, m in sorted(aborts):
         if m == "ud":
@@ -435,7 +562,7 @@
 
     updated, merged, removed, unresolved = 0, 0, 0, 0
     ms = mergestate(repo)
-    ms.reset(wctx.p1().node())
+    ms.reset(wctx.p1().node(), mctx.node())
     moves = []
     actions.sort(key=actionkey)
 
@@ -515,7 +642,7 @@
                                  overwrite)
                 continue
             audit(fd)
-            r = ms.resolve(fd, wctx, mctx)
+            r = ms.resolve(fd, wctx)
             if r is not None and r > 0:
                 unresolved += 1
             else:
@@ -527,7 +654,7 @@
             f2, fd, flags = args
             if f:
                 repo.ui.note(_("moving %s to %s\n") % (f, fd))
-                audit(f)
+                audit(fd)
                 repo.wwrite(fd, wctx.filectx(f).data(), flags)
                 util.unlinkpath(repo.wjoin(f))
             if f2:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/pathencode.c 
new/mercurial-2.9.1/mercurial/pathencode.c
--- old/mercurial-2.9/mercurial/pathencode.c    2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/pathencode.c  2014-03-01 22:22:30.000000000 
+0100
@@ -530,7 +530,7 @@
        static const uint32_t twobytes[8];
 
        static const uint32_t onebyte[8] = {
-               ~0, 0xffff3ffe, ~0, ~0, ~0, ~0, ~0, ~0,
+               ~0U, 0xffff3ffe, ~0U, ~0U, ~0U, ~0U, ~0U, ~0U,
        };
 
        return _encode(twobytes, onebyte, dest, 0, destsize, src, len, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-2.9/mercurial/templates/static/style-coal.css 
new/mercurial-2.9.1/mercurial/templates/static/style-coal.css
--- old/mercurial-2.9/mercurial/templates/static/style-coal.css 2014-02-01 
22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/mercurial/templates/static/style-coal.css       
2014-03-01 22:22:30.000000000 +0100
@@ -214,6 +214,13 @@
 .source a { color: #999; font-size: smaller; font-family: monospace;}
 .bottomline { border-bottom: 1px solid #999; }
 
+.sourcelines > div {
+  display: inline-block;
+  width: 100%;
+  padding: 1px 0px;
+  counter-increment: lineno;
+}
+
 .fileline { font-family: monospace; }
 .fileline img { border: 0; }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/util.py 
new/mercurial-2.9.1/mercurial/util.py
--- old/mercurial-2.9/mercurial/util.py 2014-02-01 22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/mercurial/util.py       2014-03-01 22:22:30.000000000 
+0100
@@ -1875,6 +1875,11 @@
             return path
         return self._origpath
 
+    def islocal(self):
+        '''whether localpath will return something that posixfile can open'''
+        return (not self.scheme or self.scheme == 'file'
+                or self.scheme == 'bundle')
+
 def hasscheme(path):
     return bool(url(path).scheme)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/mercurial/verify.py 
new/mercurial-2.9.1/mercurial/verify.py
--- old/mercurial-2.9/mercurial/verify.py       2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/mercurial/verify.py     2014-03-01 22:22:30.000000000 
+0100
@@ -38,7 +38,7 @@
     mf = repo.manifest
     lrugetctx = util.lrucachefunc(repo.changectx)
 
-    if not repo.cancopy():
+    if not repo.url().startswith('file:'):
         raise util.Abort(_("cannot verify bundle or remote repos"))
 
     def err(linkrev, msg, filename=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/tests/test-backout.t 
new/mercurial-2.9.1/tests/test-backout.t
--- old/mercurial-2.9/tests/test-backout.t      2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/tests/test-backout.t    2014-03-01 22:22:30.000000000 
+0100
@@ -408,3 +408,93 @@
   update: (current)
 
   $ cd ..
+
+
+Test usage of `hg resolve` in case of conflict
+(issue4163)
+
+  $ hg init issue4163
+  $ cd issue4163
+  $ touch foo
+  $ hg add foo
+  $ cat > foo << EOF
+  > one
+  > two
+  > three
+  > four
+  > five
+  > six
+  > seven
+  > height
+  > nine
+  > ten
+  > EOF
+  $ hg ci -m 'initial'
+  $ cat > foo << EOF
+  > one
+  > two
+  > THREE
+  > four
+  > five
+  > six
+  > seven
+  > height
+  > nine
+  > ten
+  > EOF
+  $ hg ci -m 'capital three'
+  $ cat > foo << EOF
+  > one
+  > two
+  > THREE
+  > four
+  > five
+  > six
+  > seven
+  > height
+  > nine
+  > TEN
+  > EOF
+  $ hg ci -m 'capital ten'
+  $ hg backout -r 'desc("capital three")' --tool internal:fail
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  use 'hg resolve' to retry unresolved file merges
+  [1]
+  $ hg status
+  $ hg resolve -l  # still unresolved
+  U foo
+  $ hg summary
+  parent: 2:b71750c4b0fd tip
+   capital ten
+  branch: default
+  commit: 1 unresolved (clean)
+  update: (current)
+  $ hg resolve --all --debug
+  picked tool 'internal:merge' for foo (binary False symlink False)
+  merging foo
+  my foo@b71750c4b0fd+ other foo@a30dd8addae3 ancestor foo@913609522437
+   premerge successful
+  $ hg status
+  M foo
+  ? foo.orig
+  $ hg resolve -l
+  R foo
+  $ hg summary
+  parent: 2:b71750c4b0fd tip
+   capital ten
+  branch: default
+  commit: 1 modified, 1 unknown
+  update: (current)
+  $ cat foo
+  one
+  two
+  three
+  four
+  five
+  six
+  seven
+  height
+  nine
+  TEN
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/tests/test-bundle.t 
new/mercurial-2.9.1/tests/test-bundle.t
--- old/mercurial-2.9/tests/test-bundle.t       2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/tests/test-bundle.t     2014-03-01 22:22:30.000000000 
+0100
@@ -84,6 +84,11 @@
   searching for changes
   no changes found
 
+Verify that there are no leaked temporary files after pull (issue2797)
+
+  $ ls test/.hg | grep .hg10un
+  [1]
+
 Pull full.hg into empty (using --cwd)
 
   $ hg --cwd empty pull ../full.hg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/tests/test-merge-remove.t 
new/mercurial-2.9.1/tests/test-merge-remove.t
--- old/mercurial-2.9/tests/test-merge-remove.t 2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/tests/test-merge-remove.t       2014-03-01 
22:22:30.000000000 +0100
@@ -85,3 +85,30 @@
 
   $ hg diff
 
+Merge should not overwrite local file that is untracked after remove
+
+  $ rm *
+  $ hg up -qC
+  $ hg rm bar
+  $ hg ci -m 'remove bar'
+  $ echo 'memories of buried pirate treasure' > bar
+  $ hg merge
+  bar: untracked file differs
+  abort: untracked files in working directory differ from files in requested 
revision
+  [255]
+  $ cat bar
+  memories of buried pirate treasure
+
+Those who use force will lose
+
+  $ hg merge -f
+  remote changed bar which local deleted
+  use (c)hanged version or leave (d)eleted? c
+  merging foo1 and foo to foo1
+  1 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ cat bar
+  bleh
+  $ hg st
+  M bar
+  M foo1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/tests/test-phases.t 
new/mercurial-2.9.1/tests/test-phases.t
--- old/mercurial-2.9/tests/test-phases.t       2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/tests/test-phases.t     2014-03-01 22:22:30.000000000 
+0100
@@ -549,4 +549,13 @@
   o  0 public A
   
 
+test verify repo containing hidden changesets, which should not abort just
+because repo.cancopy() is False
 
+  $ cd ../initialrepo
+  $ hg verify
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  7 files, 8 changesets, 7 total revisions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/tests/test-purge.t 
new/mercurial-2.9.1/tests/test-purge.t
--- old/mercurial-2.9/tests/test-purge.t        2014-02-01 22:20:34.000000000 
+0100
+++ new/mercurial-2.9.1/tests/test-purge.t      2014-03-01 22:22:30.000000000 
+0100
@@ -21,7 +21,7 @@
 delete an empty directory
 
   $ mkdir empty_dir
-  $ hg purge -p
+  $ hg purge -p -v
   empty_dir
   $ hg purge -v
   removing directory empty_dir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.9/tests/test-rebase-bookmarks.t 
new/mercurial-2.9.1/tests/test-rebase-bookmarks.t
--- old/mercurial-2.9/tests/test-rebase-bookmarks.t     2014-02-01 
22:20:34.000000000 +0100
+++ new/mercurial-2.9.1/tests/test-rebase-bookmarks.t   2014-03-01 
22:22:30.000000000 +0100
@@ -85,6 +85,24 @@
   |/
   o  0: 'A' bookmarks: Y@diverge
   
+Do not try to keep active but deleted divergent bookmark
+
+  $ cd ..
+  $ hg clone -q a a4
+
+  $ cd a4
+  $ hg up -q 2
+  $ hg book W@diverge
+
+  $ hg rebase -s W -d .
+  saved backup bundle to $TESTTMP/a4/.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg bookmarks
+     W                         3:0d3554f74897
+     X                         1:6c81ed0049f8
+     Y                         2:49cb3485fa0c
+     Z                         2:49cb3485fa0c
+
 Keep bookmarks to the correct rebased changeset
 
   $ cd ..

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to