# HG changeset patch # User Matt Mackall # Date 1323980678 21600 # Node ID 43bb9c5ab963256582e06751977bd551c8b1e04b # Parent 4fbd0eeeb52c43225a933b2f1768038b7d3f4288# Parent 4841035f37b6df368682460d8a7cbf10276b8d1b merge with crew diff -r 4fbd0eeeb52c -r 43bb9c5ab963 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Thu Dec 15 14:24:29 2011 -0600 +++ b/mercurial/cmdutil.py Thu Dec 15 14:24:38 2011 -0600 @@ -588,8 +588,14 @@ ctx1 = repo[node1] ctx2 = repo[node2] for subpath, sub in subrepo.itersubrepos(ctx1, ctx2): - if node2 is not None: - node2 = ctx2.substate[subpath][1] + try: + if node2 is not None: + node2 = 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 submatch = matchmod.narrowmatcher(subpath, match) sub.diff(diffopts, node2, submatch, changes=changes, stat=stat, fp=fp, prefix=prefix) diff -r 4fbd0eeeb52c -r 43bb9c5ab963 mercurial/commands.py --- a/mercurial/commands.py Thu Dec 15 14:24:29 2011 -0600 +++ b/mercurial/commands.py Thu Dec 15 14:24:38 2011 -0600 @@ -5157,7 +5157,8 @@ Examples: - - show changes in the working directory relative to a changeset: + - show changes in the working directory relative to a + changeset:: hg status --rev 9353 diff -r 4fbd0eeeb52c -r 43bb9c5ab963 mercurial/dispatch.py --- a/mercurial/dispatch.py Thu Dec 15 14:24:29 2011 -0600 +++ b/mercurial/dispatch.py Thu Dec 15 14:24:38 2011 -0600 @@ -259,7 +259,6 @@ return 1 self.fn = fn self.badalias = True - return if self.definition.startswith('!'): diff -r 4fbd0eeeb52c -r 43bb9c5ab963 tests/test-subrepo.t --- a/tests/test-subrepo.t Thu Dec 15 14:24:29 2011 -0600 +++ b/tests/test-subrepo.t Thu Dec 15 14:24:38 2011 -0600 @@ -885,6 +885,22 @@ rm2 +Test issue3153: diff -S with deleted subrepos + + $ hg diff --nodates -S -c . + diff -r 3941e0aa5236 -r 8b31de9d13d1 .hgsub + --- a/.hgsub + +++ /dev/null + @@ -1,2 +0,0 @@ + -s = s + -t = t + diff -r 3941e0aa5236 -r 8b31de9d13d1 .hgsubstate + --- a/.hgsubstate + +++ /dev/null + @@ -1,2 +0,0 @@ + -fc627a69481fcbe5f1135069e8a3881c023e4cf5 s + -e95bcfa18a358dc4936da981ebf4147b4cad1362 t + Test behavior of add for explicit path in subrepo: $ cd .. $ hg init explicit