##// END OF EJS Templates
merge: combine merge and get lists
Matt Mackall -
r2977:87a0332a default
parent child Browse files
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 merge = {}
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 merge[f] = (fmerge(f, m1, m2, ma), n[:20], m2[f])
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 get[f] = (m2.execf(f), m2[f])
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 get[f] = (m2.execf(f), m2[f])
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 get[f] = (m2.execf(f), n)
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 get[f] = (m2.execf(f), n)
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 get[f] = (m2.execf(f), n)
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, node = get[f]
246 flag, my, other = action[f]
245 247 if f[0] == "/":
246 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 255 repo.ui.note(_("getting %s\n") % f)
248 t = repo.file(f).read(node)
256 t = repo.file(f).read(my)
249 257 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)
258 updated += 1
262 259 util.set_exec(repo.wjoin(f), flag)
263 260
264 261 remove.sort()
@@ -281,17 +278,16 b' def update(repo, node, branchmerge=False'
281 278 else:
282 279 repo.dirstate.forget(remove)
283 280
284 files = get.keys()
281 files = action.keys()
285 282 files.sort()
286 283 for f in files:
284 flag, my, other = action[f]
285 if not other:
287 286 if branchmerge:
288 287 repo.dirstate.update([f], 'n', st_mtime=-1)
289 288 else:
290 289 repo.dirstate.update([f], 'n')
291
292 files = merge.keys()
293 files.sort()
294 for f in files:
290 else:
295 291 if branchmerge:
296 292 # We've done a branch merge, mark this file as merged
297 293 # so that we properly record the merger later
@@ -307,8 +303,8 b' def update(repo, node, branchmerge=False'
307 303 repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1)
308 304
309 305 if show_stats:
310 stats = ((len(get), _("updated")),
311 (len(merge) - len(unresolved), _("merged")),
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