diff: when diffing a revision with a deleted subrepo, maintain the node context (issue3153) stable
authorAlistair Bell <alistair.bell@netronome.com>
Thu, 15 Dec 2011 16:41:03 -0500
branchstable
changeset 15698 43e068c15619
parent 15691 7722593fef5c
child 15699 84e55467093c
diff: when diffing a revision with a deleted subrepo, maintain the node context (issue3153)
mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Mon Dec 19 14:04:09 2011 -0600
+++ b/mercurial/cmdutil.py	Thu Dec 15 16:41:03 2011 -0500
@@ -588,16 +588,17 @@
         ctx1 = repo[node1]
         ctx2 = repo[node2]
         for subpath, sub in subrepo.itersubrepos(ctx1, ctx2):
+            tempnode2 = node2
             try:
                 if node2 is not None:
-                    node2 = ctx2.substate[subpath][1]
+                    tempnode2 = ctx2.substate[subpath][1]
             except KeyError:
                 # A subrepo that existed in node1 was deleted between node1 and
                 # node2 (inclusive). Thus, ctx2's substate won't contain that
                 # subpath. The best we can do is to ignore it.
-                node2 = None
+                tempnode2 = None
             submatch = matchmod.narrowmatcher(subpath, match)
-            sub.diff(diffopts, node2, submatch, changes=changes,
+            sub.diff(diffopts, tempnode2, submatch, changes=changes,
                      stat=stat, fp=fp, prefix=prefix)
 
 class changeset_printer(object):