diff -r c80feeb715d1 -r 5e10d41e7b9c mercurial/subrepo.py --- a/mercurial/subrepo.py Tue Sep 24 15:10:32 2013 -0400 +++ b/mercurial/subrepo.py Fri Sep 06 00:38:28 2013 +0200 @@ -202,9 +202,24 @@ wctx.sub(s).get(r, overwrite) sm[s] = r else: - debug(s, "both sides changed, merge with", r) - wctx.sub(s).merge(r) - sm[s] = l + debug(s, "both sides changed") + option = repo.ui.promptchoice( + _(' subrepository %s diverged (local revision: %s, ' + 'remote revision: %s)\n' + '(M)erge, keep (l)ocal or keep (r)emote?' + '$$ &Merge $$ &Local $$ &Remote') + % (s, l[1][:12], r[1][:12]), 0) + if option == 0: + wctx.sub(s).merge(r) + sm[s] = l + debug(s, "merge with", r) + elif option == 1: + sm[s] = l + debug(s, "keep local subrepo revision", l) + else: + wctx.sub(s).get(r, overwrite) + sm[s] = r + debug(s, "get remote subrepo revision", r) elif ld == a: # remote removed, local unchanged debug(s, "remote removed, remove") wctx.sub(s).remove()