# HG changeset patch # User Matt Mackall # Date 1432037877 18000 # Node ID 472a685a49618c684ef7a03ce977bc442f7b6ce8 # Parent 08d1ef09ed371bfa6982ea67f6c92b495d42c520# Parent ef4538ba67ef0d63fe55d4defa7b5993f0d16b6f merge with stable diff -r 08d1ef09ed37 -r 472a685a4961 mercurial/context.py --- 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 diff -r 08d1ef09ed37 -r 472a685a4961 mercurial/exchange.py --- 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') diff -r 08d1ef09ed37 -r 472a685a4961 mercurial/match.py --- 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) diff -r 08d1ef09ed37 -r 472a685a4961 tests/test-bundle2-exchange.t --- 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/ diff -r 08d1ef09ed37 -r 472a685a4961 tests/test-subrepo-deep-nested-change.t --- 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