Mercurial > hg
changeset 11470:34e33d50c26b stable
subrepo: correctly handle update -C with modified subrepos (issue2022)
(based on a patch by Saint Germain)
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 30 Jun 2010 23:56:35 -0500 |
parents | c37f35d7f2f5 |
children | 44b4873ea59b |
files | mercurial/merge.py mercurial/subrepo.py tests/test-subrepo tests/test-subrepo.out |
diffstat | 4 files changed, 23 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Wed Jun 30 18:15:23 2010 -0500 +++ b/mercurial/merge.py Wed Jun 30 23:56:35 2010 -0500 @@ -167,7 +167,7 @@ m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest() copied = set(copy.values()) - if not overwrite and '.hgsubstate' in m1: + if '.hgsubstate' in m1: # check whether sub state is modified for s in p1.substate: if p1.sub(s).dirty():
--- a/mercurial/subrepo.py Wed Jun 30 18:15:23 2010 -0500 +++ b/mercurial/subrepo.py Wed Jun 30 23:56:35 2010 -0500 @@ -67,11 +67,13 @@ repo.ui.debug(" subrepo %s: %s %s\n" % (s, msg, r)) for s, l in s1.items(): + a = sa.get(s, nullstate) ld = l # local state with possible dirty flag for compares - if wctx != actx and wctx.sub(s).dirty(): + if wctx.sub(s).dirty(): ld = (l[0], l[1] + "+") + if wctx == actx: # overwrite + a = ld - a = sa.get(s, nullstate) if s in s2: r = s2[s] if ld == r or r == a: # no change or local is newer
--- a/tests/test-subrepo Wed Jun 30 18:15:23 2010 -0500 +++ b/tests/test-subrepo Wed Jun 30 23:56:35 2010 -0500 @@ -19,6 +19,13 @@ hg sum hg ci -m1 +# issue 2022 - update -C + +echo b > s/a +hg sum +hg co -C 1 +hg sum + echo % add sub sub echo ss = ss > s/.hgsub hg init s/ss
--- a/tests/test-subrepo.out Wed Jun 30 18:15:23 2010 -0500 +++ b/tests/test-subrepo.out Wed Jun 30 23:56:35 2010 -0500 @@ -8,6 +8,17 @@ commit: 1 added, 1 subrepos update: (current) committing subrepository s +parent: 1:7cf8cfea66e4 tip + 1 +branch: default +commit: 1 subrepos +update: (current) +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +parent: 1:7cf8cfea66e4 tip + 1 +branch: default +commit: (clean) +update: (current) % add sub sub parent: 1:7cf8cfea66e4 tip 1