Mercurial > public > mercurial-scm > hg-stable
diff mercurial/subrepo.py @ 30060:a145161debed
merge: use labels in subrepo merge
This is the last place that doesn't respect conflict labels in merge output.
Teach subrepos to use subrepo merge output too.
author | Simon Farnsworth <simonfar@fb.com> |
---|---|
date | Sat, 08 Oct 2016 01:25:28 -0700 |
parents | 19205a0e2bf1 |
children | bb77654dc7ae |
line wrap: on
line diff
--- a/mercurial/subrepo.py Fri Oct 07 08:32:18 2016 -0400 +++ b/mercurial/subrepo.py Sat Oct 08 01:25:28 2016 -0700 @@ -26,6 +26,7 @@ config, error, exchange, + filemerge, match as matchmod, node, pathutil, @@ -174,7 +175,7 @@ if state[s][1] != nullstate[1]] repo.wwrite('.hgsubstate', ''.join(lines), '') -def submerge(repo, wctx, mctx, actx, overwrite): +def submerge(repo, wctx, mctx, actx, overwrite, labels=None): """delegated from merge.applyupdates: merging of .hgsubstate file in working context, merging context and ancestor context""" if mctx == actx: # backwards? @@ -200,6 +201,8 @@ a = ld if s in s2: + prompts = filemerge.partextras(labels) + prompts['s'] = s r = s2[s] if ld == r or r == a: # no change or local is newer sm[s] = l @@ -209,10 +212,13 @@ wctx.sub(s).get(r, overwrite) sm[s] = r elif ld[0] != r[0]: # sources differ + prompts['lo'] = l[0] + prompts['ro'] = r[0] if repo.ui.promptchoice( - _(' subrepository sources for %s differ\n' - 'use (l)ocal source (%s) or (r)emote source (%s)?' - '$$ &Local $$ &Remote') % (s, l[0], r[0]), 0): + _(' subrepository sources for %(s)s differ\n' + 'use (l)ocal%(l)s source (%(lo)s)' + ' or (r)emote%(o)s source (%(ro)s)?' + '$$ &Local $$ &Remote') % prompts, 0): debug(s, "prompt changed, get", r) wctx.sub(s).get(r, overwrite) sm[s] = r @@ -223,12 +229,14 @@ else: debug(s, "both sides changed") srepo = wctx.sub(s) + prompts['sl'] = srepo.shortid(l[1]) + prompts['sr'] = srepo.shortid(r[1]) option = repo.ui.promptchoice( - _(' subrepository %s diverged (local revision: %s, ' - 'remote revision: %s)\n' - '(M)erge, keep (l)ocal or keep (r)emote?' + _(' subrepository %(s)s diverged (local revision: %(sl)s, ' + 'remote revision: %(sr)s)\n' + '(M)erge, keep (l)ocal%(l)s or keep (r)emote%(o)s?' '$$ &Merge $$ &Local $$ &Remote') - % (s, srepo.shortid(l[1]), srepo.shortid(r[1])), 0) + % prompts, 0) if option == 0: wctx.sub(s).merge(r) sm[s] = l @@ -249,9 +257,10 @@ continue else: if repo.ui.promptchoice( - _(' local changed subrepository %s which remote removed\n' + _(' local%(l)s changed subrepository %(s)s' + ' which remote%(o)s removed\n' 'use (c)hanged version or (d)elete?' - '$$ &Changed $$ &Delete') % s, 0): + '$$ &Changed $$ &Delete') % prompts, 0): debug(s, "prompt remove") wctx.sub(s).remove() @@ -264,9 +273,10 @@ sm[s] = r elif r != sa[s]: if repo.ui.promptchoice( - _(' remote changed subrepository %s which local removed\n' + _(' remote%(o)s changed subrepository %(s)s' + ' which local%(l)s removed\n' 'use (c)hanged version or (d)elete?' - '$$ &Changed $$ &Delete') % s, 0) == 0: + '$$ &Changed $$ &Delete') % prompts, 0) == 0: debug(s, "prompt recreate", r) mctx.sub(s).get(r) sm[s] = r