--- a/mercurial/context.py Fri Apr 24 14:30:30 2015 -0700
+++ b/mercurial/context.py Tue May 19 07:17:57 2015 -0500
@@ -9,7 +9,7 @@
from i18n import _
import mdiff, error, util, scmutil, subrepo, patch, encoding, phases
import match as matchmod
-import os, errno, stat
+import copy, os, errno, stat
import obsolete as obsmod
import repoview
import fileset
@@ -592,8 +592,14 @@
'''Generates matching file names.'''
# Override match.bad method to have message with nodeid
+ match = copy.copy(match)
oldbad = match.bad
def bad(fn, msg):
+ # The manifest doesn't know about subrepos, so don't complain about
+ # paths into valid subrepos.
+ if any(fn == s or fn.startswith(s + '/')
+ for s in self.substate):
+ return
oldbad(fn, _('no such file in rev %s') % self)
match.bad = bad
--- a/mercurial/exchange.py Fri Apr 24 14:30:30 2015 -0700
+++ b/mercurial/exchange.py Tue May 19 07:17:57 2015 -0500
@@ -1290,7 +1290,7 @@
# quick fix for output mismatch with bundle2 in 3.4
captureoutput = repo.ui.configbool('experimental', 'bundle2-output-capture',
False)
- if url.startswith('remote:http:') or url.startswith('remote:https:'):
+ if url.startswith('remote:'):
captureoutput = True
try:
check_heads(repo, heads, 'uploading changes')
--- a/mercurial/match.py Fri Apr 24 14:30:30 2015 -0700
+++ b/mercurial/match.py Tue May 19 07:17:57 2015 -0500
@@ -274,6 +274,12 @@
self._files = [f[len(path) + 1:] for f in matcher._files
if f.startswith(path + "/")]
+
+ # If the parent repo had a path to this subrepo and no patterns are
+ # specified, this submatcher always matches.
+ if not self._always and not matcher._anypats:
+ self._always = any(f == path for f in matcher._files)
+
self._anypats = matcher._anypats
self.matchfn = lambda fn: matcher.matchfn(self._path + "/" + fn)
self._fileroots = set(self._files)
--- a/tests/test-bundle2-exchange.t Fri Apr 24 14:30:30 2015 -0700
+++ b/tests/test-bundle2-exchange.t Tue May 19 07:17:57 2015 -0500
@@ -694,7 +694,6 @@
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
- abort: pretxnchangegroup hook exited with status 1
remote: adding changesets
remote: adding manifests
remote: adding file changes
@@ -703,6 +702,7 @@
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
+ abort: pretxnchangegroup hook exited with status 1
[255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
--- a/tests/test-subrepo-deep-nested-change.t Fri Apr 24 14:30:30 2015 -0700
+++ b/tests/test-subrepo-deep-nested-change.t Tue May 19 07:17:57 2015 -0500
@@ -232,6 +232,26 @@
sub1/sub2/sub2 (glob)
sub1/sub2/test.txt (glob)
+ $ hg files -S -r '.^' sub1/sub2/folder
+ sub1/sub2/folder/test.txt (glob)
+
+ $ hg files -S -r '.^' sub1/sub2/missing
+ sub1/sub2/missing: no such file in rev 78026e779ea6 (glob)
+ [1]
+
+ $ hg files -S -r '.^' sub1/
+ sub1/.hgsub (glob)
+ sub1/.hgsubstate (glob)
+ sub1/sub1 (glob)
+ sub1/sub2/folder/test.txt (glob)
+ sub1/sub2/sub2 (glob)
+ sub1/sub2/test.txt (glob)
+
+ $ hg files -S -r '.^' sub1/sub2
+ sub1/sub2/folder/test.txt (glob)
+ sub1/sub2/sub2 (glob)
+ sub1/sub2/test.txt (glob)
+
$ hg rollback -q
$ hg up -Cq