Mercurial > public > mercurial-scm > hg
diff mercurial/subrepo.py @ 20319:427d672c0e4e stable
subrepo: make it possible to update to hidden subrepo revisions
When a subrepo revision was hidden it was considered missing and mercurial was
unable to update to the corresponding parent revision. Instead warn the user of
the problem and let it choose what to do (the default is to udpate anyway).
author | Angel Ezquerra <angel.ezquerra@gmail.com> |
---|---|
date | Sun, 24 Nov 2013 02:17:17 +0100 |
parents | c5aef7a66607 |
children | d4f804caa0ed 6a2acb0d9352 |
line wrap: on
line diff
--- a/mercurial/subrepo.py Sun Nov 24 02:13:00 2013 +0100 +++ b/mercurial/subrepo.py Sun Nov 24 02:17:17 2013 +0100 @@ -702,7 +702,7 @@ def _get(self, state): source, revision, kind = state if revision in self._repo.unfiltered(): - return + return True self._repo._subsource = source srcurl = _abssource(self._repo) other = hg.peer(self._repo, {}, srcurl) @@ -728,13 +728,23 @@ if cleansub: # keep the repo clean after pull self._cachestorehash(srcurl) + return False @annotatesubrepoerror def get(self, state, overwrite=False): - self._get(state) + inrepo = self._get(state) source, revision, kind = state - self._repo.ui.debug("getting subrepo %s\n" % self._path) - hg.updaterepo(self._repo, revision, overwrite) + repo = self._repo + repo.ui.debug("getting subrepo %s\n" % self._path) + if inrepo: + urepo = repo.unfiltered() + ctx = urepo[revision] + if ctx.hidden(): + urepo.ui.warn( + _('revision %s in subrepo %s is hidden\n') \ + % (revision[0:12], self._path)) + repo = urepo + hg.updaterepo(repo, revision, overwrite) @annotatesubrepoerror def merge(self, state):