Show More
@@ -110,8 +110,7 b' def update(repo, node, branchmerge=False' | |||||
110 | repo.ui.debug(_(" ancestor %s local %s remote %s\n") % |
|
110 | repo.ui.debug(_(" ancestor %s local %s remote %s\n") % | |
111 | (short(man), short(m1n), short(m2n))) |
|
111 | (short(man), short(m1n), short(m2n))) | |
112 |
|
112 | |||
113 |
|
|
113 | action = {} | |
114 | get = {} |
|
|||
115 | remove = [] |
|
114 | remove = [] | |
116 | forget = [] |
|
115 | forget = [] | |
117 |
|
116 | |||
@@ -150,19 +149,19 b' def update(repo, node, branchmerge=False' | |||||
150 | # are both different from the ancestor? |
|
149 | # are both different from the ancestor? | |
151 | if not overwrite and n != a and m2[f] != a: |
|
150 | if not overwrite and n != a and m2[f] != a: | |
152 | repo.ui.debug(_(" %s versions differ, resolve\n") % f) |
|
151 | repo.ui.debug(_(" %s versions differ, resolve\n") % f) | |
153 |
|
|
152 | action[f] = (fmerge(f, m1, m2, ma), n[:20], m2[f]) | |
154 | queued = 1 |
|
153 | queued = 1 | |
155 | # are we clobbering? |
|
154 | # are we clobbering? | |
156 | # is remote's version newer? |
|
155 | # is remote's version newer? | |
157 | # or are we going back in time and clean? |
|
156 | # or are we going back in time and clean? | |
158 | elif overwrite or m2[f] != a or (backwards and not n[20:]): |
|
157 | elif overwrite or m2[f] != a or (backwards and not n[20:]): | |
159 | repo.ui.debug(_(" remote %s is newer, get\n") % f) |
|
158 | repo.ui.debug(_(" remote %s is newer, get\n") % f) | |
160 |
|
|
159 | action[f] = (m2.execf(f), m2[f], None) | |
161 | queued = 1 |
|
160 | queued = 1 | |
162 | elif f in umap or f in added: |
|
161 | elif f in umap or f in added: | |
163 | # this unknown file is the same as the checkout |
|
162 | # this unknown file is the same as the checkout | |
164 | # we need to reset the dirstate if the file was added |
|
163 | # we need to reset the dirstate if the file was added | |
165 |
|
|
164 | action[f] = (m2.execf(f), m2[f], None) | |
166 |
|
165 | |||
167 | # do we still need to look at mode bits? |
|
166 | # do we still need to look at mode bits? | |
168 | if not queued and m1.execf(f) != m2.execf(f): |
|
167 | if not queued and m1.execf(f) != m2.execf(f): | |
@@ -211,14 +210,14 b' def update(repo, node, branchmerge=False' | |||||
211 | (_("remote changed %s which local deleted\n") % f) + |
|
210 | (_("remote changed %s which local deleted\n") % f) + | |
212 | _("(k)eep or (d)elete?"), _("[kd]"), _("k")) |
|
211 | _("(k)eep or (d)elete?"), _("[kd]"), _("k")) | |
213 | if r == _("k"): |
|
212 | if r == _("k"): | |
214 |
|
|
213 | action[f] = (m2.execf(f), n, None) | |
215 | elif f not in ma: |
|
214 | elif f not in ma: | |
216 | repo.ui.debug(_("remote created %s\n") % f) |
|
215 | repo.ui.debug(_("remote created %s\n") % f) | |
217 |
|
|
216 | action[f] = (m2.execf(f), n, None) | |
218 | else: |
|
217 | else: | |
219 | if overwrite or backwards: |
|
218 | if overwrite or backwards: | |
220 | repo.ui.debug(_("local deleted %s, recreating\n") % f) |
|
219 | repo.ui.debug(_("local deleted %s, recreating\n") % f) | |
221 |
|
|
220 | action[f] = (m2.execf(f), n, None) | |
222 | else: |
|
221 | else: | |
223 | repo.ui.debug(_("local deleted %s\n") % f) |
|
222 | repo.ui.debug(_("local deleted %s\n") % f) | |
224 |
|
223 | |||
@@ -237,28 +236,26 b' def update(repo, node, branchmerge=False' | |||||
237 |
|
236 | |||
238 | repo.hook('preupdate', throw=True, parent1=xp1, parent2=xxp2) |
|
237 | repo.hook('preupdate', throw=True, parent1=xp1, parent2=xxp2) | |
239 |
|
238 | |||
240 | # get the files we don't need to change |
|
239 | # update files | |
241 | files = get.keys() |
|
240 | unresolved = [] | |
|
241 | updated = 0 | |||
|
242 | merged = 0 | |||
|
243 | files = action.keys() | |||
242 | files.sort() |
|
244 | files.sort() | |
243 | for f in files: |
|
245 | for f in files: | |
244 |
flag, |
|
246 | flag, my, other = action[f] | |
245 | if f[0] == "/": |
|
247 | if f[0] == "/": | |
246 | continue |
|
248 | continue | |
|
249 | if other: | |||
|
250 | repo.ui.status(_("merging %s\n") % f) | |||
|
251 | if merge3(repo, f, my, other, xp1, xp2): | |||
|
252 | unresolved.append(f) | |||
|
253 | merged += 1 | |||
|
254 | else: | |||
247 | repo.ui.note(_("getting %s\n") % f) |
|
255 | repo.ui.note(_("getting %s\n") % f) | |
248 |
t = repo.file(f).read( |
|
256 | t = repo.file(f).read(my) | |
249 | repo.wwrite(f, t) |
|
257 | repo.wwrite(f, t) | |
250 | util.set_exec(repo.wjoin(f), flag) |
|
258 | updated += 1 | |
251 |
|
||||
252 | # merge the tricky bits |
|
|||
253 | unresolved = [] |
|
|||
254 | files = merge.keys() |
|
|||
255 | files.sort() |
|
|||
256 | for f in files: |
|
|||
257 | repo.ui.status(_("merging %s\n") % f) |
|
|||
258 | flag, my, other = merge[f] |
|
|||
259 | ret = merge3(repo, f, my, other, xp1, xp2) |
|
|||
260 | if ret: |
|
|||
261 | unresolved.append(f) |
|
|||
262 | util.set_exec(repo.wjoin(f), flag) |
|
259 | util.set_exec(repo.wjoin(f), flag) | |
263 |
|
260 | |||
264 | remove.sort() |
|
261 | remove.sort() | |
@@ -281,17 +278,16 b' def update(repo, node, branchmerge=False' | |||||
281 | else: |
|
278 | else: | |
282 | repo.dirstate.forget(remove) |
|
279 | repo.dirstate.forget(remove) | |
283 |
|
280 | |||
284 |
files = |
|
281 | files = action.keys() | |
285 | files.sort() |
|
282 | files.sort() | |
286 | for f in files: |
|
283 | for f in files: | |
|
284 | flag, my, other = action[f] | |||
|
285 | if not other: | |||
287 | if branchmerge: |
|
286 | if branchmerge: | |
288 | repo.dirstate.update([f], 'n', st_mtime=-1) |
|
287 | repo.dirstate.update([f], 'n', st_mtime=-1) | |
289 | else: |
|
288 | else: | |
290 | repo.dirstate.update([f], 'n') |
|
289 | repo.dirstate.update([f], 'n') | |
291 |
|
290 | else: | ||
292 | files = merge.keys() |
|
|||
293 | files.sort() |
|
|||
294 | for f in files: |
|
|||
295 | if branchmerge: |
|
291 | if branchmerge: | |
296 | # We've done a branch merge, mark this file as merged |
|
292 | # We've done a branch merge, mark this file as merged | |
297 | # so that we properly record the merger later |
|
293 | # so that we properly record the merger later | |
@@ -307,8 +303,8 b' def update(repo, node, branchmerge=False' | |||||
307 | repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1) |
|
303 | repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1) | |
308 |
|
304 | |||
309 | if show_stats: |
|
305 | if show_stats: | |
310 |
stats = (( |
|
306 | stats = ((updated, _("updated")), | |
311 |
( |
|
307 | (merged - len(unresolved), _("merged")), | |
312 | (len(remove), _("removed")), |
|
308 | (len(remove), _("removed")), | |
313 | (len(unresolved), _("unresolved"))) |
|
309 | (len(unresolved), _("unresolved"))) | |
314 | note = ", ".join([_("%d files %s") % s for s in stats]) |
|
310 | note = ", ".join([_("%d files %s") % s for s in stats]) |
@@ -19,10 +19,10 b' resolving manifests' | |||||
19 | ancestor a0c8bcbbb45c local a0c8bcbbb45c remote 1165e8bd193e |
|
19 | ancestor a0c8bcbbb45c local a0c8bcbbb45c remote 1165e8bd193e | |
20 | a versions differ, resolve |
|
20 | a versions differ, resolve | |
21 | remote created b |
|
21 | remote created b | |
22 | getting b |
|
|||
23 | merging a |
|
22 | merging a | |
24 | resolving a |
|
23 | resolving a | |
25 | file a: my b789fdd96dc2 other d730145abbf9 ancestor b789fdd96dc2 |
|
24 | file a: my b789fdd96dc2 other d730145abbf9 ancestor b789fdd96dc2 | |
|
25 | getting b | |||
26 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
26 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
27 | changeset: 1:802f095af299 |
|
27 | changeset: 1:802f095af299 | |
28 | tag: tip |
|
28 | tag: tip | |
@@ -53,10 +53,10 b' resolving manifests' | |||||
53 | ancestor a0c8bcbbb45c local a0c8bcbbb45c remote 1165e8bd193e |
|
53 | ancestor a0c8bcbbb45c local a0c8bcbbb45c remote 1165e8bd193e | |
54 | a versions differ, resolve |
|
54 | a versions differ, resolve | |
55 | remote created b |
|
55 | remote created b | |
56 | getting b |
|
|||
57 | merging a |
|
56 | merging a | |
58 | resolving a |
|
57 | resolving a | |
59 | file a: my b789fdd96dc2 other d730145abbf9 ancestor b789fdd96dc2 |
|
58 | file a: my b789fdd96dc2 other d730145abbf9 ancestor b789fdd96dc2 | |
|
59 | getting b | |||
60 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
60 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
61 | changeset: 1:802f095af299 |
|
61 | changeset: 1:802f095af299 | |
62 | tag: tip |
|
62 | tag: tip |
General Comments 0
You need to be logged in to leave comments.
Login now