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