200 elif ld[1] == a[1]: # local side is unchanged |
200 elif ld[1] == a[1]: # local side is unchanged |
201 debug(s, "other side changed, get", r) |
201 debug(s, "other side changed, get", r) |
202 wctx.sub(s).get(r, overwrite) |
202 wctx.sub(s).get(r, overwrite) |
203 sm[s] = r |
203 sm[s] = r |
204 else: |
204 else: |
205 debug(s, "both sides changed, merge with", r) |
205 debug(s, "both sides changed") |
206 wctx.sub(s).merge(r) |
206 option = repo.ui.promptchoice( |
207 sm[s] = l |
207 _(' subrepository %s diverged (local revision: %s, ' |
|
208 'remote revision: %s)\n' |
|
209 '(M)erge, keep (l)ocal or keep (r)emote?' |
|
210 '$$ &Merge $$ &Local $$ &Remote') |
|
211 % (s, l[1][:12], r[1][:12]), 0) |
|
212 if option == 0: |
|
213 wctx.sub(s).merge(r) |
|
214 sm[s] = l |
|
215 debug(s, "merge with", r) |
|
216 elif option == 1: |
|
217 sm[s] = l |
|
218 debug(s, "keep local subrepo revision", l) |
|
219 else: |
|
220 wctx.sub(s).get(r, overwrite) |
|
221 sm[s] = r |
|
222 debug(s, "get remote subrepo revision", r) |
208 elif ld == a: # remote removed, local unchanged |
223 elif ld == a: # remote removed, local unchanged |
209 debug(s, "remote removed, remove") |
224 debug(s, "remote removed, remove") |
210 wctx.sub(s).remove() |
225 wctx.sub(s).remove() |
211 elif a == nullstate: # not present in remote or ancestor |
226 elif a == nullstate: # not present in remote or ancestor |
212 debug(s, "local added, keep") |
227 debug(s, "local added, keep") |