Comments
Patch
@@ -1229,7 +1229,7 @@ class manifestrevlog(revlog.revlog):
def _addtree(self, m, transaction, link, m1, m2, readtree):
# If the manifest is unchanged compared to one parent,
# don't write a new revision
- if m.unmodifiedsince(m1) or m.unmodifiedsince(m2):
+ if self._dir != '' and (m.unmodifiedsince(m1) or m.unmodifiedsince(m2)):
return m.node()
def writesubtree(subm, subp1, subp2):
sublog = self.dirlog(subm.dir())
@@ -1237,13 +1237,17 @@ class manifestrevlog(revlog.revlog):
readtree=readtree)
m.writesubtrees(m1, m2, writesubtree)
text = m.dirtext(self._usemanifestv2)
- # Double-check whether contents are unchanged to one parent
- if text == m1.dirtext(self._usemanifestv2):
- n = m1.node()
- elif text == m2.dirtext(self._usemanifestv2):
- n = m2.node()
- else:
+ n = None
+ if self._dir != '':
+ # Double-check whether contents are unchanged to one parent
+ if text == m1.dirtext(self._usemanifestv2):
+ n = m1.node()
+ elif text == m2.dirtext(self._usemanifestv2):
+ n = m2.node()
+
+ if not n:
n = self.addrevision(text, transaction, link, m1.node(), m2.node())
+
# Save nodeid so parent manifest can calculate its nodeid
m.setnode(n)
return n
@@ -825,3 +825,13 @@ other branch
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
+Committing a empty commit does not duplicate root treemanifest
+ $ echo z >> z
+ $ hg commit -Aqm 'pre-empty commit'
+ $ hg rm z
+ $ hg commit --amend -m 'empty commit'
+ saved backup bundle to $TESTTMP/grafted-dir-repo-clone/.hg/strip-backup/cb99d5717cea-de37743b-amend-backup.hg (glob)
+ $ hg log -r 'tip + tip^' -T '{manifest}\n'
+ 1:678d3574b88c
+ 1:678d3574b88c
+ $ hg --config extensions.strip= strip -r . -q