Hello community,

here is the log from the commit of package mercurial for openSUSE:Factory
checked in at Mon Mar 28 11:05:23 CEST 2011.



--------
--- mercurial/mercurial.changes 2011-03-09 12:57:11.000000000 +0100
+++ /mounts/work_src_done/STABLE/mercurial/mercurial.changes    2011-03-25 
13:42:22.000000000 +0100
@@ -1,0 +2,21 @@
+Fri Mar 25 12:37:39 UTC 2011 - [email protected]
+
+- update to version 1.8.1
+  * annotate: rewrite to deal with crossed linkrevs (issue2682)
+  * bookmark: fix invalidation of localrepo._bookmarkcurrent
+  * cacert: improve error report when web.cacert file does not exist
+  * contrib: update tcsh_completion for Mercurial 1.8
+  * hgcia: accept "queued." xmlrpc return as success
+  * hgweb: fix filelog rss links generation
+  * hgweb: use tip in gitweb/monoblue filelog rss links (issue2677)
+  * merge: back out single-parent fast-forward merge
+  * merge: drop resolve state for mergers with identical contents (issue2680)
+  * merge: improve unresolved conflicts warning (issue2681)
+  * mergetools: add alternate registry keys for 32bit apps on 64bit O/S
+  * mq: forbid commit of merge involving mq patches
+  * subrepo: backout 67fbe566eff1, --force requires svn >= 1.5
+  * subrepo: don't crash when git repo is missing
+  * subrepo: handle svn tracked/unknown directory collisions
+  * wix: drop bin/ folder from MSI installers (issue2673) 
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  _service:recompress:download_url:mercurial-1.8.tar.bz2

New:
----
  _service:recompress:download_url:mercurial-1.8.1.tar.bz2

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

Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.pnO1Wg/_old  2011-03-28 10:54:27.000000000 +0200
+++ /var/tmp/diff_new_pack.pnO1Wg/_new  2011-03-28 10:54:27.000000000 +0200
@@ -15,7 +15,6 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
-# norootforbuild
 
 %{!?python_sitelib:  %global python_sitelib  %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print(get_python_lib())")}
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from 
distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
@@ -28,21 +27,12 @@
 %endif
 
 Name:           mercurial
-BuildRequires:  gcc python-devel python-xml
-%if 0%{?with_doc}
-BuildRequires:  asciidoc docutils sgml-skel xmlto
-%endif
-BuildRequires:  perl
-%if 0%{?suse_version} > 1020
-BuildRequires:  fdupes
-%endif
 Summary:        Scalable Distributed SCM
-Version:        1.8
+Version:        1.8.1
 Release:        1
 License:        GPLv2+
 Group:          Development/Tools/Version Control
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-Url:            http://www.selenic.com/mercurial/
+Url:            http://mercurial.selenic.com/
 # http://mercurial.selenic.com/release/mercurial-%{version}.tar.gz
 Source:         %{name}-%{version}.tar.bz2
 Source1:        cacerts.rc
@@ -50,6 +40,15 @@
 Patch:          mercurial-hgk-path-fix.diff
 Patch1:         mercurial-sle10-inotify-fixes.diff
 Patch2:         mercurial-docutils-compat.diff
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildRequires:  gcc python-devel python-xml
+%if 0%{?with_doc}
+BuildRequires:  asciidoc docutils sgml-skel xmlto
+%endif
+BuildRequires:  perl
+%if 0%{?suse_version} > 1020
+BuildRequires:  fdupes
+%endif
 # hgext/hgcia needs python-xml
 Requires:       python-xml
 # require rcs for 3-way "merge" command.

++++++ _service ++++++
--- /var/tmp/diff_new_pack.pnO1Wg/_old  2011-03-28 10:54:27.000000000 +0200
+++ /var/tmp/diff_new_pack.pnO1Wg/_new  2011-03-28 10:54:27.000000000 +0200
@@ -1,4 +1,11 @@
 <services>
-  <service name="download_url"><param 
name="path">/release/mercurial-1.8.tar.gz</param><param 
name="host">mercurial.selenic.com</param></service>
-  <service name="recompress"><param 
name="file">_service:download_url:mercurial-1.8.tar.gz</param><param 
name="compression">bz2</param></service>
+  <service name="download_url">
+    <param name="protocol">http</param>
+    <param name="host">mercurial.selenic.com</param>
+    <param name="path">/release/mercurial-1.8.1.tar.gz</param>
+  </service>
+  <service name="recompress">
+    <param name="file">_service:download_url:mercurial-1.8.1.tar.gz</param>
+    <param name="compression">bz2</param>
+  </service>
 </services>

++++++ _service:recompress:download_url:mercurial-1.8.tar.bz2 -> 
_service:recompress:download_url:mercurial-1.8.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/.hgsigs new/mercurial-1.8.1/.hgsigs
--- old/mercurial-1.8/.hgsigs   2011-03-01 23:01:38.000000000 +0100
+++ new/mercurial-1.8.1/.hgsigs 2011-03-10 18:30:38.000000000 +0100
@@ -34,3 +34,4 @@
 e3bf16703e2601de99e563cdb3a5d50b64e6d320 0 
iD8DBQBNH8WqywK+sNU5EO8RAiQTAJ9sBO+TeiGro4si77VVaQaA6jcRUgCfSA28dBbjj0oFoQwvPoZjANiZBH8=
 a6c855c32ea081da3c3b8ff628f1847ff271482f 0 
iD8DBQBNSJJ+ywK+sNU5EO8RAoJaAKCweDEF70fu+r1Zn7pYDXdlk5RuSgCeO9gK/eit8Lin/1n3pO7aYguFLok=
 2b2155623ee2559caf288fd333f30475966c4525 0 
iD8DBQBNSJeBywK+sNU5EO8RAm1KAJ4hW9Cm9nHaaGJguchBaPLlAr+O3wCgqgmMok8bdAS06N6PL60PSTM//Gg=
+2616325766e3504c8ae7c84bd15ee610901fe91d 0 
iD8DBQBNbWy9ywK+sNU5EO8RAlWCAJ4mW8HbzjJj9GpK98muX7k+7EvEHwCfaTLbC/DH3QEsZBhEP+M8tzL6RU4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/.hgtags new/mercurial-1.8.1/.hgtags
--- old/mercurial-1.8/.hgtags   2011-03-01 23:01:38.000000000 +0100
+++ new/mercurial-1.8.1/.hgtags 2011-03-10 18:30:38.000000000 +0100
@@ -46,3 +46,4 @@
 e3bf16703e2601de99e563cdb3a5d50b64e6d320 1.7.3
 a6c855c32ea081da3c3b8ff628f1847ff271482f 1.7.4
 2b2155623ee2559caf288fd333f30475966c4525 1.7.5
+2616325766e3504c8ae7c84bd15ee610901fe91d 1.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/PKG-INFO new/mercurial-1.8.1/PKG-INFO
--- old/mercurial-1.8/PKG-INFO  2011-03-01 23:01:50.000000000 +0100
+++ new/mercurial-1.8.1/PKG-INFO        2011-03-10 18:30:49.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: mercurial
-Version: 1.8
+Version: 1.8.1
 Summary: Scalable distributed SCM
 Home-page: http://mercurial.selenic.com/
 Author: Matt Mackall
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/contrib/mergetools.hgrc 
new/mercurial-1.8.1/contrib/mergetools.hgrc
--- old/mercurial-1.8/contrib/mergetools.hgrc   2011-03-01 23:01:28.000000000 
+0100
+++ new/mercurial-1.8.1/contrib/mergetools.hgrc 2011-03-10 18:30:30.000000000 
+0100
@@ -3,6 +3,7 @@
 [merge-tools]
 kdiff3.args=--auto --L1 base --L2 local --L3 other $base $local $other -o 
$output
 kdiff3.regkey=Software\KDiff3
+kdiff3.regkeyalt=Software\Wow6432Node\KDiff3
 kdiff3.regappend=\kdiff3.exe
 kdiff3.fixeol=True
 kdiff3.gui=True
@@ -10,6 +11,7 @@
 
 gvimdiff.args=--nofork -d -g -O $local $other $base
 gvimdiff.regkey=Software\Vim\GVim
+gvimdiff.regkeyalt=Software\Wow6432Node\Vim\GVim
 gvimdiff.regname=path
 gvimdiff.priority=-9
 
@@ -36,6 +38,7 @@
 xxdiff.diffargs=--title1 '$plabel1' $parent --title2 '$clabel' $child
 
 diffmerge.regkey=Software\SourceGear\SourceGear DiffMerge\
+diffmerge.regkeyalt=Software\Wow6432Node\SourceGear\SourceGear DiffMerge\
 diffmerge.regname=Location
 diffmerge.priority=-7
 diffmerge.args=-nosplash -merge -title1=local -title2=merged -title3=other 
$local $base $other -result=$output
@@ -45,6 +48,7 @@
 
 p4merge.args=$base $local $other $output
 p4merge.regkey=Software\Perforce\Environment
+p4merge.regkeyalt=Software\Wow6432Node\Perforce\Environment
 p4merge.regname=P4INSTROOT
 p4merge.regappend=\p4merge.exe
 p4merge.gui=True
@@ -53,6 +57,7 @@
 
 tortoisemerge.args=/base:$base /mine:$local /theirs:$other /merged:$output
 tortoisemerge.regkey=Software\TortoiseSVN
+tortoisemerge.regkeyalt=Software\Wow6432Node\TortoiseSVN
 tortoisemerge.checkchanged=True
 tortoisemerge.gui=True
 tortoisemerge.priority=-8
@@ -60,6 +65,7 @@
 
 ecmerge.args=$base $local $other --mode=merge3 --title0=base --title1=local 
--title2=other --to=$output
 ecmerge.regkey=Software\Elli\xc3\xa9 Computing\Merge
+ecmerge.regkeyalt=Software\Wow6432Node\Elli\xc3\xa9 Computing\Merge
 ecmerge.gui=True
 ecmerge.diffargs=$parent $child --mode=diff2 --title1='$plabel1' 
--title2='$clabel'
 
@@ -84,6 +90,7 @@
 
 winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
 winmerge.regkey=Software\Thingamahoochie\WinMerge
+winmerge.regkeyalt=Software\Wow6432Node\Thingamahoochie\WinMerge\
 winmerge.regname=Executable
 winmerge.checkchanged=True
 winmerge.gui=True
@@ -106,6 +113,7 @@
 diffuse.diffargs=$parent $child
 
 UltraCompare.regkey=Software\Microsoft\Windows\CurrentVersion\App Paths\UC.exe
+UltraCompare.regkeyalt=Software\Wow6432Node\Microsoft\Windows\CurrentVersion\App
 Paths\UC.exe
 UltraCompare.args = $base $local $other -title1 base -title3 other
 UltraCompare.priority = -2
 UltraCompare.gui = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/contrib/wix/guids.wxi 
new/mercurial-1.8.1/contrib/wix/guids.wxi
--- old/mercurial-1.8/contrib/wix/guids.wxi     2011-03-01 23:01:28.000000000 
+0100
+++ new/mercurial-1.8.1/contrib/wix/guids.wxi   2011-03-10 18:30:30.000000000 
+0100
@@ -47,6 +47,5 @@
   <?define paths.rc.guid = {F9ADF21D-5F0B-4934-8CD9-14BE63664721} ?>
   <?define cacert.pem.guid = {EC1B2630-FE21-46E6-915B-A6545AF703D4} ?>
   <?define ProgramMenuDir.guid = {D5A63320-1238-489B-B68B-CF053E9577CA} ?>
-  <?define hgcmd.guid = {65CCC756-E72E-4C5F-901E-D575EDC80DB3} ?>
 
 </Include>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/contrib/wix/mercurial.wxs 
new/mercurial-1.8.1/contrib/wix/mercurial.wxs
--- old/mercurial-1.8/contrib/wix/mercurial.wxs 2011-03-01 23:01:28.000000000 
+0100
+++ new/mercurial-1.8.1/contrib/wix/mercurial.wxs       2011-03-10 
18:30:30.000000000 +0100
@@ -62,7 +62,7 @@
           <Component Id='MainExecutable' 
Guid='$(var.ComponentMainExecutableGUID)' Win64='$(var.IsX64)'>
             <File Id='hgEXE' Name='hg.exe' Source='dist\hg.exe' KeyPath='yes' 
/>
             <Environment Id="Environment" Name="PATH" Part="last" System="yes"
-                         Permanent="no" Value="[INSTALLDIR]bin" Action="set" />
+                         Permanent="no" Value="[INSTALLDIR]" Action="set" />
           </Component>
           <Component Id='ReadMe' Guid='$(var.ReadMe.guid)' 
Win64='$(var.IsX64)'>
               <File Id='ReadMe' Name='ReadMe.html' 
Source='contrib\win32\ReadMe.html'
@@ -93,11 +93,6 @@
             </Component>
           </Directory>
 
-          <Directory Id='binFolder' Name='bin'>
-            <Component Id='HgCmd' Guid='$(var.hgcmd.guid)' 
Win64='$(var.IsX64)'>
-                <File Id='Hg.Cmd' Name='hg.cmd' KeyPath='yes' 
Source='contrib\wix\hg.cmd' />
-            </Component>
-          </Directory>
         </Directory>
       </Directory>
 
@@ -140,7 +135,6 @@
         <ComponentRef Id='paths.rc' />
         <ComponentRef Id='cacert.pem' />
         <ComponentRef Id='helpFolder' />
-        <ComponentRef Id='HgCmd' />
         <ComponentGroupRef Id='templatesFolder' />
         <MergeRef Id='VCRuntime' />
         <MergeRef Id='VCRuntimePolicy' />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/doc/hgrc.5 
new/mercurial-1.8.1/doc/hgrc.5
--- old/mercurial-1.8/doc/hgrc.5        2011-03-01 23:01:43.000000000 +0100
+++ new/mercurial-1.8.1/doc/hgrc.5      2011-03-10 18:30:43.000000000 +0100
@@ -732,6 +732,14 @@
 \fBHKEY_CURRENT_USER\fP and then under \fBHKEY_LOCAL_MACHINE\fP.
 Default: None
 .TP
+.B \fBregkeyalt\fP
+.sp
+An alternate Windows registry key to try if the first key is not
+found.  The alternate key uses the same \fBregname\fP and \fBregappend\fP
+semantics of the primary key.  The most common use for this key
+is to search for 32bit applications on 64bit operating systems.
+Default: None
+.TP
 .B \fBregname\fP
 .sp
 Name of value to read from specified registry key. Defaults to the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/doc/hgrc.5.html 
new/mercurial-1.8.1/doc/hgrc.5.html
--- old/mercurial-1.8/doc/hgrc.5.html   2011-03-01 23:01:48.000000000 +0100
+++ new/mercurial-1.8.1/doc/hgrc.5.html 2011-03-10 18:30:48.000000000 +0100
@@ -576,6 +576,12 @@
 tool. Mercurial will search for this key first under
 <tt class="docutils literal">HKEY_CURRENT_USER</tt> and then under <tt 
class="docutils literal">HKEY_LOCAL_MACHINE</tt>.
 Default: None</dd>
+<dt><tt class="docutils literal">regkeyalt</tt></dt>
+<dd>An alternate Windows registry key to try if the first key is not
+found.  The alternate key uses the same <tt class="docutils 
literal">regname</tt> and <tt class="docutils literal">regappend</tt>
+semantics of the primary key.  The most common use for this key
+is to search for 32bit applications on 64bit operating systems.
+Default: None</dd>
 <dt><tt class="docutils literal">regname</tt></dt>
 <dd>Name of value to read from specified registry key. Defaults to the
 unnamed (default) value.</dd>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/doc/hgrc.5.txt 
new/mercurial-1.8.1/doc/hgrc.5.txt
--- old/mercurial-1.8/doc/hgrc.5.txt    2011-03-01 23:01:28.000000000 +0100
+++ new/mercurial-1.8.1/doc/hgrc.5.txt  2011-03-10 18:30:30.000000000 +0100
@@ -556,6 +556,12 @@
   tool. Mercurial will search for this key first under
   ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.
   Default: None
+``regkeyalt``
+  An alternate Windows registry key to try if the first key is not
+  found.  The alternate key uses the same ``regname`` and ``regappend``
+  semantics of the primary key.  The most common use for this key
+  is to search for 32bit applications on 64bit operating systems.
+  Default: None
 ``regname``
   Name of value to read from specified registry key. Defaults to the
   unnamed (default) value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/hgext/hgcia.py 
new/mercurial-1.8.1/hgext/hgcia.py
--- old/mercurial-1.8/hgext/hgcia.py    2011-03-01 23:01:28.000000000 +0100
+++ new/mercurial-1.8.1/hgext/hgcia.py  2011-03-10 18:30:30.000000000 +0100
@@ -198,7 +198,7 @@
     def sendrpc(self, msg):
         srv = xmlrpclib.Server(self.ciaurl)
         res = srv.hub.deliver(msg)
-        if res is not True:
+        if res is not True and res != 'queued.':
             raise util.Abort(_('%s returned an error: %s') %
                              (self.ciaurl, res))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/hgext/mq.py 
new/mercurial-1.8.1/hgext/mq.py
--- old/mercurial-1.8/hgext/mq.py       2011-03-01 23:01:28.000000000 +0100
+++ new/mercurial-1.8.1/hgext/mq.py     2011-03-10 18:30:30.000000000 +0100
@@ -2921,8 +2921,9 @@
 
         def abort_if_wdir_patched(self, errmsg, force=False):
             if self.mq.applied and not force:
-                parent = self.dirstate.parents()[0]
-                if parent in [s.node for s in self.mq.applied]:
+                parents = self.dirstate.parents()
+                patches = [s.node for s in self.mq.applied]
+                if parents[0] in patches or parents[1] in patches:
                     raise util.Abort(errmsg)
 
         def commit(self, text="", user=None, date=None, match=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/i18n/de.po 
new/mercurial-1.8.1/i18n/de.po
--- old/mercurial-1.8/i18n/de.po        2011-03-01 23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/i18n/de.po      2011-03-10 18:30:30.000000000 +0100
@@ -11774,7 +11774,7 @@
 msgstr ""
 
 msgid "show only branches that have unmerged heads"
-msgstr "Zeigt nur Branches mit mehreren Köpfen"
+msgstr "Zeigt nur Branches deren Köpfe nicht zusammengeführt wurden"
 
 msgid "show normal and closed branches"
 msgstr "Zeigt normale und geschlossene Branches"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/i18n/pt_BR.po 
new/mercurial-1.8.1/i18n/pt_BR.po
--- old/mercurial-1.8/i18n/pt_BR.po     2011-03-01 23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/i18n/pt_BR.po   2011-03-10 18:30:30.000000000 +0100
@@ -14975,8 +14975,8 @@
 msgid "file not tracked!"
 msgstr "arquivo não rastreado!"
 
-msgid "unresolved merge conflicts (see hg resolve)"
-msgstr "conflitos de mesclagem não resolvidos (veja hg resolve)"
+msgid "unresolved merge conflicts (see hg help resolve)"
+msgstr "conflitos de mesclagem não resolvidos (veja hg help resolve)"
 
 #, python-format
 msgid "committing subrepository %s\n"
@@ -16022,6 +16022,10 @@
 msgstr "obtenha um ramo do git se você pretender fazer mudanças\n"
 
 #, python-format
+msgid "subrepo %s is missing"
+msgstr "o sub-repositório %s está faltando"
+
+#, python-format
 msgid "unrelated git branch checked out in subrepo %s\n"
 msgstr "ramo do git não relacionado obtido no sub-repositório %s\n"
 
@@ -16191,6 +16195,10 @@
 msgstr "nenhum commonName ou subjectAltName encontrado no certificado"
 
 #, python-format
+msgid "could not find web.cacerts: %s"
+msgstr "não foi possível encontrar web.cacerts: %s"
+
+#, python-format
 msgid "%s certificate error: %s (use --insecure to connect insecurely)"
 msgstr "erro no certificado de %s: %s (use --insecure para conectar de modo 
inseguro)"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/__version__.py 
new/mercurial-1.8.1/mercurial/__version__.py
--- old/mercurial-1.8/mercurial/__version__.py  2011-03-01 23:01:49.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/__version__.py        2011-03-10 
18:30:49.000000000 +0100
@@ -1,2 +1,2 @@
 # this file is autogenerated by setup.py
-version = "1.8"
+version = "1.8.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/cmdutil.py 
new/mercurial-1.8.1/mercurial/cmdutil.py
--- old/mercurial-1.8/mercurial/cmdutil.py      2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/cmdutil.py    2011-03-10 18:30:31.000000000 
+0100
@@ -261,6 +261,8 @@
     return ret
 
 def match(repo, pats=[], opts={}, globbed=False, default='relpath'):
+    if pats == ("",):
+        pats = []
     if not globbed and default == 'relpath':
         pats = expandpats(pats or [])
     m = matchmod.match(repo.root, repo.getcwd(), pats,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/context.py 
new/mercurial-1.8.1/mercurial/context.py
--- old/mercurial-1.8/mercurial/context.py      2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/context.py    2011-03-10 18:30:31.000000000 
+0100
@@ -466,39 +466,40 @@
         else:
             base = self
 
-        # find all ancestors
-        needed = {base: 1}
+        # This algorithm would prefer to be recursive, but Python is a
+        # bit recursion-hostile. Instead we do an iterative
+        # depth-first search.
+
         visit = [base]
-        files = [base._path]
+        hist = {}
+        pcache = {}
+        needed = {base: 1}
         while visit:
-            f = visit.pop(0)
-            for p in parents(f):
-                if p not in needed:
-                    needed[p] = 1
+            f = visit[-1]
+            if f not in pcache:
+                pcache[f] = parents(f)
+
+            ready = True
+            pl = pcache[f]
+            for p in pl:
+                if p not in hist:
+                    ready = False
                     visit.append(p)
-                    if p._path not in files:
-                        files.append(p._path)
-                else:
-                    # count how many times we'll use this
-                    needed[p] += 1
-
-        # sort by revision (per file) which is a topological order
-        visit = []
-        for f in files:
-            visit.extend(n for n in needed if n._path == f)
+                    needed[p] = needed.get(p, 0) + 1
+            if ready:
+                visit.pop()
+                curr = decorate(f.data(), f)
+                for p in pl:
+                    curr = pair(hist[p], curr)
+                    if needed[p] == 1:
+                        del hist[p]
+                    else:
+                        needed[p] -= 1
 
-        hist = {}
-        for f in sorted(visit, key=lambda x: x.rev()):
-            curr = decorate(f.data(), f)
-            for p in parents(f):
-                curr = pair(hist[p], curr)
-                # trim the history of unneeded revs
-                needed[p] -= 1
-                if not needed[p]:
-                    del hist[p]
-            hist[f] = curr
+                hist[f] = curr
+                pcache[f] = []
 
-        return zip(hist[f][0], hist[f][1].splitlines(True))
+        return zip(hist[base][0], hist[base][1].splitlines(True))
 
     def ancestor(self, fc2, actx=None):
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/filemerge.py 
new/mercurial-1.8.1/mercurial/filemerge.py
--- old/mercurial-1.8/mercurial/filemerge.py    2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/filemerge.py  2011-03-10 18:30:31.000000000 
+0100
@@ -25,8 +25,10 @@
 def _findtool(ui, tool):
     if tool in _internal:
         return tool
-    k = _toolstr(ui, tool, "regkey")
-    if k:
+    for kn in ("regkey", "regkeyalt"):
+        k = _toolstr(ui, tool, kn)
+        if not k:
+            continue
         p = util.lookup_reg(k, _toolstr(ui, tool, "regname"))
         if p:
             p = util.find_exe(p + _toolstr(ui, tool, "regappend"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/localrepo.py 
new/mercurial-1.8.1/mercurial/localrepo.py
--- old/mercurial-1.8/mercurial/localrepo.py    2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/localrepo.py  2011-03-10 18:30:31.000000000 
+0100
@@ -763,7 +763,7 @@
         self._branchcachetip = None
 
     def invalidate(self):
-        for a in ("changelog", "manifest", "_bookmarks", "_bookmarkscurrent"):
+        for a in ("changelog", "manifest", "_bookmarks", "_bookmarkcurrent"):
             if a in self.__dict__:
                 delattr(self, a)
         self.invalidatecaches()
@@ -976,7 +976,7 @@
             for f in changes[0]:
                 if f in ms and ms[f] == 'u':
                     raise util.Abort(_("unresolved merge conflicts "
-                                                    "(see hg resolve)"))
+                                       "(see hg help resolve)"))
 
             cctx = context.workingctx(self, text, user, date, extra, changes)
             if editor:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/merge.py 
new/mercurial-1.8.1/mercurial/merge.py
--- old/mercurial-1.8/mercurial/merge.py        2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/merge.py      2011-03-10 18:30:31.000000000 
+0100
@@ -74,7 +74,10 @@
         fco = octx[ofile]
         fca = self._repo.filectx(afile, fileid=anode)
         r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca)
-        if not r:
+        if r is None:
+            # no real conflict
+            del self._state[dfile]
+        elif not r:
             self.mark(dfile, 'r')
         return r
 
@@ -537,7 +540,7 @@
         action += manifestmerge(repo, wc, p2, pa, overwrite, partial)
 
         ### apply phase
-        if not branchmerge or fastforward: # just jump to the new rev
+        if not branchmerge: # just jump to the new rev
             fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''
         if not partial:
             repo.hook('preupdate', throw=True, parent1=xp1, parent2=xp2)
@@ -546,7 +549,7 @@
 
         if not partial:
             repo.dirstate.setparents(fp1, fp2)
-            recordupdates(repo, action, branchmerge and not fastforward)
+            recordupdates(repo, action, branchmerge)
             if not branchmerge and not fastforward:
                 repo.dirstate.setbranch(p2.branch())
     finally:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/subrepo.py 
new/mercurial-1.8.1/mercurial/subrepo.py
--- old/mercurial-1.8/mercurial/subrepo.py      2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/mercurial/subrepo.py    2011-03-10 18:30:31.000000000 
+0100
@@ -702,6 +702,9 @@
 
         return retdata, p.returncode
 
+    def _gitmissing(self):
+        return not os.path.exists(os.path.join(self._abspath, '.git'))
+
     def _gitstate(self):
         return self._gitcommand(['rev-parse', 'HEAD'])
 
@@ -758,7 +761,7 @@
         return _abssource(self)
 
     def _fetch(self, source, revision):
-        if not os.path.exists(os.path.join(self._abspath, '.git')):
+        if self._gitmissing():
             self._ui.status(_('cloning subrepo %s\n') % self._relpath)
             self._gitnodir(['clone', self._abssource(source), self._abspath])
         if self._githavelocally(revision):
@@ -771,6 +774,8 @@
                                (revision, self._relpath))
 
     def dirty(self, ignoreupdate=False):
+        if self._gitmissing():
+            return True
         if not ignoreupdate and self._state[1] != self._gitstate():
             # different version checked out
             return True
@@ -859,6 +864,8 @@
             rawcheckout()
 
     def commit(self, text, user, date):
+        if self._gitmissing():
+            raise util.Abort(_("subrepo %s is missing") % self._relpath)
         cmd = ['commit', '-a', '-m', text]
         env = os.environ.copy()
         if user:
@@ -895,6 +902,8 @@
             mergefunc()
 
     def push(self, force):
+        if self._gitmissing():
+            raise util.Abort(_("subrepo %s is missing") % self._relpath)
         # if a branch in origin contains the revision, nothing to do
         branch2rev, rev2branch = self._gitbranchmap()
         if self._state[1] in rev2branch:
@@ -928,6 +937,8 @@
             return False
 
     def remove(self):
+        if self._gitmissing():
+            return
         if self.dirty():
             self._ui.warn(_('not removing repo %s because '
                             'it has changes.\n') % self._relpath)
@@ -971,6 +982,9 @@
 
 
     def status(self, rev2, **opts):
+        if self._gitmissing():
+            # if the repo is missing, return no results
+            return [], [], [], [], [], [], []
         rev1 = self._state[1]
         modified, added, removed = [], [], []
         if rev2:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-1.8/mercurial/templates/gitweb/filelog.tmpl 
new/mercurial-1.8.1/mercurial/templates/gitweb/filelog.tmpl
--- old/mercurial-1.8/mercurial/templates/gitweb/filelog.tmpl   2011-03-01 
23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/mercurial/templates/gitweb/filelog.tmpl 2011-03-10 
18:30:31.000000000 +0100
@@ -22,7 +22,7 @@
 revisions |
 <a 
href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
 |
 <a 
href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>
 |
-<a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a> |
+<a href="{url}rss-log/tip/{file|urlescape}">rss</a> |
 <a href="{url}help{sessionvars%urlparameter}">help</a>
 <br/>
 {nav%filenav}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-1.8/mercurial/templates/monoblue/filelog.tmpl 
new/mercurial-1.8.1/mercurial/templates/monoblue/filelog.tmpl
--- old/mercurial-1.8/mercurial/templates/monoblue/filelog.tmpl 2011-03-01 
23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/mercurial/templates/monoblue/filelog.tmpl       
2011-03-10 18:30:31.000000000 +0100
@@ -34,7 +34,7 @@
         <li class="current">revisions</li>
         <li><a 
href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
         <li><a 
href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-        <li><a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a></li>
+        <li><a href="{url}rss-log/tip/{file|urlescape}">rss</a></li>
     </ul>
 
     <h2 class="no-link no-border">{file|urlescape}</h2>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mercurial-1.8/mercurial/templates/rss/filelogentry.tmpl 
new/mercurial-1.8.1/mercurial/templates/rss/filelogentry.tmpl
--- old/mercurial-1.8/mercurial/templates/rss/filelogentry.tmpl 2011-03-01 
23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/mercurial/templates/rss/filelogentry.tmpl       
2011-03-10 18:30:31.000000000 +0100
@@ -1,6 +1,6 @@
 <item>
     <title>{desc|strip|firstline|strip|escape}</title>
-    <link>{urlbase}{url}log{{node|short}}/{file|urlescape}</link>
+    <link>{urlbase}{url}log{node|short}/{file|urlescape}</link>
     
<description><![CDATA[{desc|strip|escape|addbreaks|nonempty}]]></description>
     <author>{author|obfuscate}</author>
     <pubDate>{date|rfc822date}</pubDate>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/mercurial/url.py 
new/mercurial-1.8.1/mercurial/url.py
--- old/mercurial-1.8/mercurial/url.py  2011-03-01 23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/mercurial/url.py        2011-03-10 18:30:31.000000000 
+0100
@@ -560,9 +560,13 @@
             hostfingerprint = self.ui.config('hostfingerprints', host)
 
             if cacerts and not hostfingerprint:
+                cacerts = util.expandpath(cacerts)
+                if not os.path.exists(cacerts):
+                    raise util.Abort(_('could not find '
+                                       'web.cacerts: %s') % cacerts)
                 self.sock = _ssl_wrap_socket(self.sock, self.key_file,
                     self.cert_file, cert_reqs=CERT_REQUIRED,
-                    ca_certs=util.expandpath(cacerts))
+                    ca_certs=cacerts)
                 msg = _verifycert(self.sock.getpeercert(), host)
                 if msg:
                     raise util.Abort(_('%s certificate error: %s '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/hghave 
new/mercurial-1.8.1/tests/hghave
--- old/mercurial-1.8/tests/hghave      2011-03-01 23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/tests/hghave    2011-03-10 18:30:31.000000000 +0100
@@ -202,7 +202,7 @@
     "outer-repo": (has_outer_repo, "outer repo"),
     "p4": (has_p4, "Perforce server and client"),
     "pygments": (has_pygments, "Pygments source highlighting library"),
-    "ssl": (has_ssl, "python >= 2.6 ssl module"),
+    "ssl": (has_ssl, "python >= 2.6 ssl module and python OpenSSL"),
     "svn": (has_svn, "subversion client and admin tools"),
     "svn-bindings": (has_svn_bindings, "subversion python bindings"),
     "symlink": (has_symlink, "symbolic links"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-commit-unresolved.t 
new/mercurial-1.8.1/tests/test-commit-unresolved.t
--- old/mercurial-1.8/tests/test-commit-unresolved.t    2011-03-01 
23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/tests/test-commit-unresolved.t  2011-03-10 
18:30:31.000000000 +0100
@@ -38,7 +38,7 @@
 
   $ echo "ABCD" > A
   $ hg commit -m "Merged"
-  abort: unresolved merge conflicts (see hg resolve)
+  abort: unresolved merge conflicts (see hg help resolve)
   [255]
 
 Mark the conflict as resolved and commit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-hgweb-filelog.t 
new/mercurial-1.8.1/tests/test-hgweb-filelog.t
--- old/mercurial-1.8/tests/test-hgweb-filelog.t        2011-03-01 
23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/tests/test-hgweb-filelog.t      2011-03-10 
18:30:31.000000000 +0100
@@ -656,6 +656,84 @@
   </html>
   
 
+rss log
+
+  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/rss-log/tip/a')
+  200 Script output follows
+  
+  <?xml version="1.0" encoding="ascii"?>
+  <rss version="2.0">
+    <channel>
+      <link>http://*:$HGPORT/</link> (glob)
+      <language>en-us</language>
+  
+      <title>test: a history</title>
+      <description>a revision history</description>
+      <item>
+      <title>second a</title>
+      <link>http://*:$HGPORT/log01de2d66a28d/a</link> (glob)
+      <description><![CDATA[second a]]></description>
+      <author>&#116;&#101;&#115;&#116;</author>
+      <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
+  </item>
+  <item>
+      <title>first a</title>
+      <link>http://*:$HGPORT/log5ed941583260/a</link> (glob)
+      <description><![CDATA[first a]]></description>
+      <author>&#116;&#101;&#115;&#116;</author>
+      <pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate>
+  </item>
+  
+    </channel>
+  </rss>
+
+atom log
+
+  $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/atom-log/tip/a')
+  200 Script output follows
+  
+  <?xml version="1.0" encoding="ascii"?>
+  <feed xmlns="http://www.w3.org/2005/Atom";>
+   <id>http://*:$HGPORT/atom-log/tip/a</id> (glob)
+   <link rel="self" href="http://*:$HGPORT/atom-log/tip/a"/> (glob)
+   <title>test: a history</title>
+   <updated>1970-01-01T00:00:00+00:00</updated>
+  
+   <entry>
+    <title>second a</title>
+    
<id>http://*:$HGPORT/#changeset-01de2d66a28df5549090991dccda788726948517</id> 
(glob)
+    <link href="http://*:$HGPORT/rev/01de2d66a28d"/> (glob)
+    <author>
+     <name>test</name>
+     <email>&#116;&#101;&#115;&#116;</email>
+    </author>
+    <updated>1970-01-01T00:00:00+00:00</updated>
+    <published>1970-01-01T00:00:00+00:00</published>
+    <content type="xhtml">
+     <div xmlns="http://www.w3.org/1999/xhtml";>
+      <pre xml:space="preserve">second a</pre>
+     </div>
+    </content>
+   </entry>
+   <entry>
+    <title>first a</title>
+    
<id>http://*:$HGPORT/#changeset-5ed941583260248620985524192fdc382ef57c36</id> 
(glob)
+    <link href="http://*:$HGPORT/rev/5ed941583260"/> (glob)
+    <author>
+     <name>test</name>
+     <email>&#116;&#101;&#115;&#116;</email>
+    </author>
+    <updated>1970-01-01T00:00:00+00:00</updated>
+    <published>1970-01-01T00:00:00+00:00</published>
+    <content type="xhtml">
+     <div xmlns="http://www.w3.org/1999/xhtml";>
+      <pre xml:space="preserve">first a</pre>
+     </div>
+    </content>
+   </entry>
+  
+  </feed>
+
 errors
 
   $ cat errors.log
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-https.t 
new/mercurial-1.8.1/tests/test-https.t
--- old/mercurial-1.8/tests/test-https.t        2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/tests/test-https.t      2011-03-10 18:30:31.000000000 
+0100
@@ -96,6 +96,12 @@
   $ hg serve -p $HGPORT -d --pid-file=../hg0.pid --certificate=$PRIV
   $ cat ../hg0.pid >> $DAEMON_PIDS
 
+cacert not found
+
+  $ hg in --config web.cacerts=no-such.pem https://localhost:$HGPORT/
+  abort: could not find web.cacerts: no-such.pem
+  [255]
+
 Test server address cannot be reused
 
   $ hg serve -p $HGPORT --certificate=$PRIV 2>&1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-issue619.t 
new/mercurial-1.8.1/tests/test-issue619.t
--- old/mercurial-1.8/tests/test-issue619.t     2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/tests/test-issue619.t   2011-03-10 18:30:31.000000000 
+0100
@@ -19,12 +19,7 @@
   $ hg merge b
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
-  $ hg branch
-  default
-  $ hg parent --template '{rev}:{node|short} {branches}: {desc}\n'
-  1:06c2121185be b: b
   $ hg ci -Ammerge
-  created new head
 
 Bogus fast-forward should fail:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-mq-merge.t 
new/mercurial-1.8.1/tests/test-mq-merge.t
--- old/mercurial-1.8/tests/test-mq-merge.t     2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/tests/test-mq-merge.t   2011-03-10 18:30:31.000000000 
+0100
@@ -1,3 +1,32 @@
+Setup extension:
+
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "mq =" >> $HGRCPATH
+  $ echo "[mq]" >> $HGRCPATH
+  $ echo "git = keep" >> $HGRCPATH
+
+Test merge with mq changeset as the second parent:
+
+  $ hg init m
+  $ cd m
+  $ touch a b c
+  $ hg add a
+  $ hg commit -m a
+  $ hg add b
+  $ hg qnew -d "0 0" b
+  $ hg update 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg add c
+  $ hg commit -m c
+  created new head
+  $ hg merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg commit -m merge
+  abort: cannot commit over an applied mq patch
+  [255]
+  $ cd ..
+
 Issue529: mq aborts when merging patch deleting files
 
   $ checkundo()
@@ -7,11 +36,6 @@
   >     fi
   > }
 
-  $ echo "[extensions]" >> $HGRCPATH
-  $ echo "mq =" >> $HGRCPATH
-  $ echo "[mq]" >> $HGRCPATH
-  $ echo "git = keep" >> $HGRCPATH
-
 Commit two dummy files in "init" changeset:
 
   $ hg init t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-newbranch.t 
new/mercurial-1.8.1/tests/test-newbranch.t
--- old/mercurial-1.8/tests/test-newbranch.t    2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/tests/test-newbranch.t  2011-03-10 18:30:31.000000000 
+0100
@@ -209,11 +209,12 @@
   $ hg branch
   foo
   $ hg commit -m'Merge ff into foo'
-  created new head
   $ hg parents
-  changeset:   6:6af8030670c9
+  changeset:   6:917eb54e1b4b
   branch:      foo
   tag:         tip
+  parent:      4:98d14f698afe
+  parent:      5:6683a60370cb
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     Merge ff into foo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-push-warn.t 
new/mercurial-1.8.1/tests/test-push-warn.t
--- old/mercurial-1.8/tests/test-push-warn.t    2011-03-01 23:01:29.000000000 
+0100
+++ new/mercurial-1.8.1/tests/test-push-warn.t  2011-03-10 18:30:31.000000000 
+0100
@@ -413,7 +413,6 @@
   (branch merge, don't forget to commit)
 
   $ hg -R k ci -m merge
-  created new head
 
   $ hg -R k push -r a j
   pushing to j
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-rebase-conflicts.t 
new/mercurial-1.8.1/tests/test-rebase-conflicts.t
--- old/mercurial-1.8/tests/test-rebase-conflicts.t     2011-03-01 
23:01:29.000000000 +0100
+++ new/mercurial-1.8.1/tests/test-rebase-conflicts.t   2011-03-10 
18:30:31.000000000 +0100
@@ -65,7 +65,7 @@
 Try to continue without solving the conflict:
 
   $ hg rebase --continue 
-  abort: unresolved merge conflicts (see hg resolve)
+  abort: unresolved merge conflicts (see hg help resolve)
   [255]
 
 Conclude rebase:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-1.8/tests/test-subrepo-git.t 
new/mercurial-1.8.1/tests/test-subrepo-git.t
--- old/mercurial-1.8/tests/test-subrepo-git.t  2011-03-01 23:01:30.000000000 
+0100
+++ new/mercurial-1.8.1/tests/test-subrepo-git.t        2011-03-10 
18:30:31.000000000 +0100
@@ -314,6 +314,26 @@
   cloning subrepo s
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
+Don't crash if the subrepo is missing
+
+  $ hg clone t missing -q
+  $ cd missing
+  $ rm -rf s
+  $ hg status -S
+  $ hg sum | grep commit
+  commit: 1 subrepos
+  $ hg push -q
+  abort: subrepo s is missing
+  [255]
+  $ hg commit -qm missing
+  abort: subrepo s is missing
+  [255]
+  $ hg update -C
+  cloning subrepo s
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg sum | grep commit
+  commit: (clean)
+
 Check hg update --clean
   $ cd $TESTTMP/ta
   $ echo  > s/g


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



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to