[PATCH 07 of 12] phases: marked content of a changegroup as published
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Tue Oct 18 12:27:04 CDT 2011
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1318956406 -7200
# Node ID f4981dc4b9e9b559864f5cffa19b90479ba5bdb9
# Parent 568b9dfebb7e9224d5b0f0fe9628f54fb30aca16
phases: marked content of a changegroup as published
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1942,10 +1942,13 @@ class localrepository(repo.repository):
p = lambda: cl.writepending() and self.root or ""
self.hook('pretxnchangegroup', throw=True,
node=hex(cl.node(clstart)), source=srctype,
url=url, pending=p)
+ added = [cl.node(r) for r in xrange(clstart, clend)]
+ if phases.moveboundary(self, 0, added):
+ phases.writeheads(self)
# make changelog see real files again
cl.finalize(trp)
tr.close()
finally:
@@ -1958,13 +1961,12 @@ class localrepository(repo.repository):
self.ui.debug("updating the branch cache\n")
self.updatebranchcache()
self.hook("changegroup", node=hex(cl.node(clstart)),
source=srctype, url=url)
- for i in xrange(clstart, clend):
- self.hook("incoming", node=hex(cl.node(i)),
- source=srctype, url=url)
+ for n in added:
+ self.hook("incoming", node=hex(n), source=srctype, url=url)
# never return 0 here:
if dh < 0:
return dh - 1
else:
diff --git a/tests/test-phases-exchange.t b/tests/test-phases-exchange.t
new file mode 100644
--- /dev/null
+++ b/tests/test-phases-exchange.t
@@ -0,0 +1,58 @@
+ $ cat >> $HGRCPATH <<EOF
+ > [extensions]
+ > graphlog=
+ > EOF
+ $ alias hgph='hg log --template "{rev} {phase} {desc}\n"'
+
+ $ mkcommit() {
+ > echo "$1" > "$1"
+ > hg add "$1"
+ > hg ci -m "$1"
+ > }
+
+ $ hg init alpha
+ $ cd alpha
+ $ mkcommit a-A
+ $ mkcommit a-B
+ $ mkcommit a-C
+ $ mkcommit a-D
+ $ hgph
+ 3 1 a-D
+ 2 1 a-C
+ 1 1 a-B
+ 0 1 a-A
+
+ $ hg init ../beta
+ $ hg push -r 1 ../beta
+ pushing to ../beta
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 2 files
+ $ cd ../beta
+ $ hgph
+ 1 0 a-B
+ 0 0 a-A
+ $ hg up -q
+ $ mkcommit b-A
+ $ hgph
+ 2 1 b-A
+ 1 0 a-B
+ 0 0 a-A
+ $ hg pull ../alpha
+ pulling from ../alpha
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 2 files (+1 heads)
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+ $ hgph
+ 4 0 a-D
+ 3 0 a-C
+ 2 1 b-A
+ 1 0 a-B
+ 0 0 a-A
+
+
More information about the Mercurial-devel
mailing list