mercurial/localrepo.py
changeset 12175 c0a8f9dea0f6
parent 12174 7bccd04292a2
child 12176 ecab10820983
--- a/mercurial/localrepo.py	Tue Sep 07 15:31:56 2010 +0200
+++ b/mercurial/localrepo.py	Tue Sep 07 16:23:55 2010 +0200
@@ -1161,8 +1161,14 @@
         r = modified, added, removed, deleted, unknown, ignored, clean
 
         if listsubrepos:
-            for subpath in ctx1.substate:
-                sub = ctx1.sub(subpath)
+            # Create a (subpath, ctx) mapping where we prefer subpaths
+            # from ctx1. The subpaths from ctx2 are important when the
+            # .hgsub file has been modified (in ctx2) but not yet
+            # committed (in ctx1).
+            subpaths = dict.fromkeys(ctx2.substate, ctx2)
+            subpaths.update(dict.fromkeys(ctx1.substate, ctx1))
+            for subpath, ctx in subpaths.iteritems():
+                sub = ctx.sub(subpath)
                 if working:
                     rev2 = None
                 else: