# HG changeset patch # User Edouard Gomez # Date 1272747922 -7200 # Node ID 4a9bee613737785eb5357f5ea46e23397fcee274 # Parent d2da9e6dd13e8b2b29039f8d4d1a4aed98e49e8d subrepo: print paths relative to upper repo root for push/pull/commit This makes more sense when using multiple levels of nesting. This happens to help a lot in a case where 3 projects of mine all use the same makefile helper project as a sub. A fourth project use these first three projects and current output made it very hard to figure which makefile helper was committed. it looked more like the project was committed/pushed/pulled three times in a row than dealing on three different repos. diff -r d2da9e6dd13e -r 4a9bee613737 mercurial/localrepo.py --- a/mercurial/localrepo.py Sat May 01 23:05:22 2010 +0200 +++ b/mercurial/localrepo.py Sat May 01 23:05:22 2010 +0200 @@ -867,8 +867,10 @@ if subs or removedsubs: state = wctx.substate.copy() for s in subs: - self.ui.status(_('committing subrepository %s\n') % s) - sr = wctx.sub(s).commit(cctx._text, user, date) + sub = wctx.sub(s) + self.ui.status(_('committing subrepository %s\n') % + subrepo.relpath(sub)) + sr = sub.commit(cctx._text, user, date) state[s] = (state[s][0], sr) subrepo.writestate(self, state) diff -r d2da9e6dd13e -r 4a9bee613737 mercurial/subrepo.py --- a/mercurial/subrepo.py Sat May 01 23:05:22 2010 +0200 +++ b/mercurial/subrepo.py Sat May 01 23:05:22 2010 +0200 @@ -126,6 +126,14 @@ # record merged .hgsubstate writestate(repo, sm) +def relpath(sub): + if not hasattr(sub, '_repo'): + return sub._path + parent = sub._repo + while hasattr(parent, '_subparent'): + parent = parent._subparent + return sub._repo.root[len(parent.root)+1:] + def _abssource(repo, push=False): if hasattr(repo, '_subparent'): source = repo._subsource @@ -214,7 +222,7 @@ return w.dirty() # working directory changed def commit(self, text, user, date): - self._repo.ui.debug("committing subrepo %s\n" % self._path) + self._repo.ui.debug("committing subrepo %s\n" % relpath(self)) n = self._repo.commit(text, user, date) if not n: return self._repo['.'].hex() # different version checked out @@ -223,7 +231,7 @@ def remove(self): # we can't fully delete the repository as it may contain # local-only history - self._repo.ui.note(_('removing subrepo %s\n') % self._path) + self._repo.ui.note(_('removing subrepo %s\n') % relpath(self)) hg.clean(self._repo, node.nullid, False) def _get(self, state): @@ -234,7 +242,7 @@ self._repo._subsource = source srcurl = _abssource(self._repo) self._repo.ui.status(_('pulling subrepo %s from %s\n') - % (self._path, srcurl)) + % (relpath(self), srcurl)) other = hg.repository(self._repo.ui, srcurl) self._repo.pull(other) @@ -250,12 +258,12 @@ dst = self._repo[state[1]] anc = dst.ancestor(cur) if anc == cur: - self._repo.ui.debug("updating subrepo %s\n" % self._path) + self._repo.ui.debug("updating subrepo %s\n" % relpath(self)) hg.update(self._repo, state[1]) elif anc == dst: - self._repo.ui.debug("skipping subrepo %s\n" % self._path) + self._repo.ui.debug("skipping subrepo %s\n" % relpath(self)) else: - self._repo.ui.debug("merging subrepo %s\n" % self._path) + self._repo.ui.debug("merging subrepo %s\n" % relpath(self)) hg.merge(self._repo, state[1], remind=False) def push(self, force): @@ -268,7 +276,7 @@ dsturl = _abssource(self._repo, True) self._repo.ui.status(_('pushing subrepo %s to %s\n') % - (self._path, dsturl)) + (relpath(self), dsturl)) other = hg.repository(self._repo.ui, dsturl) return self._repo.push(other, force) diff -r d2da9e6dd13e -r 4a9bee613737 tests/test-subrepo-deep-nested-change.out --- a/tests/test-subrepo-deep-nested-change.out Sat May 01 23:05:22 2010 +0200 +++ b/tests/test-subrepo-deep-nested-change.out Sat May 01 23:05:22 2010 +0200 @@ -50,7 +50,7 @@ revision c57a0840e3badd667ef3c3ef65471609acb2ba3c % Modifying deeply nested sub2 committing subrepository sub1 -committing subrepository sub2 +committing subrepository sub1/sub2 % Checking modified node ids cloned ffe6649062fe tip cloned/sub1 2ecb03bf44a9 tip diff -r d2da9e6dd13e -r 4a9bee613737 tests/test-subrepo.out --- a/tests/test-subrepo.out Sat May 01 23:05:22 2010 +0200 +++ b/tests/test-subrepo.out Sat May 01 23:05:22 2010 +0200 @@ -129,7 +129,7 @@ adding manifests adding file changes added 4 changesets with 5 changes to 3 files -pulling subrepo ss from .../sub/t/s/ss +pulling subrepo s/ss from .../sub/t/s/ss requesting all changes adding changesets adding manifests