Skip to content
Snippets Groups Projects
Commit ca8d2b73155d authored by Augie Fackler's avatar Augie Fackler
Browse files

changegroup: fix treemanifest exchange code (issue5061)

There were two mistakes: one was accidental reuse of the fclnode
variable from the loop gathering file nodes, and the other (masked by
that bug) was not correctly handling deleted directories. Both cases
are now fixed and the test passes.
parent 4186d359046a
No related branches found
No related tags found
No related merge requests found
......@@ -778,7 +778,10 @@
if 'treemanifest' in repo.requirements:
submfs = {'/': mdata}
for dn, bn in _moddirs(mfchangedfiles[x]):
submf = submfs[dn]
submf = submf._dirs[bn]
try:
submf = submfs[dn]
submf = submf._dirs[bn]
except KeyError:
continue # deleted directory, so nothing to send
submfs[submf.dir()] = submf
tmfclnodes = tmfnodes.setdefault(submf.dir(), {})
......@@ -783,7 +786,7 @@
submfs[submf.dir()] = submf
tmfclnodes = tmfnodes.setdefault(submf.dir(), {})
tmfclnodes.setdefault(submf._node, clnode)
if clrevorder[clnode] < clrevorder[fclnode]:
tmfclnode = tmfclnodes.setdefault(submf._node, clnode)
if clrevorder[clnode] < clrevorder[tmfclnode]:
tmfclnodes[n] = clnode
return clnode
......
......@@ -332,6 +332,21 @@
$ grep treemanifest empty-repo/.hg/requires
treemanifest
Pushing to an empty repo works
$ hg --config experimental.treemanifest=1 init clone
$ grep treemanifest clone/.hg/requires
treemanifest
$ hg push -R repo clone
pushing to clone
searching for changes
adding changesets
adding manifests
adding file changes
added 11 changesets with 15 changes to 10 files (+3 heads)
$ grep treemanifest clone/.hg/requires
treemanifest
Create deeper repo with tree manifests.
$ hg --config experimental.treemanifest=True init deeprepo
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment