equal
deleted
inserted
replaced
68 raise util.Abort(_("outstanding uncommitted merges")) |
68 raise util.Abort(_("outstanding uncommitted merges")) |
69 |
69 |
70 p1, p2 = pl[0], node |
70 p1, p2 = pl[0], node |
71 pa = repo.changelog.ancestor(p1, p2) |
71 pa = repo.changelog.ancestor(p1, p2) |
72 |
72 |
|
73 # are we going backwards? |
|
74 backwards = (pa == p2) |
|
75 |
73 # is there a linear path from p1 to p2? |
76 # is there a linear path from p1 to p2? |
74 linear_path = (pa == p1 or pa == p2) |
77 linear_path = (pa == p1 or pa == p2) |
75 if branchmerge and linear_path: |
78 if branchmerge and linear_path: |
76 raise util.Abort(_("there is nothing to merge, just use " |
79 raise util.Abort(_("there is nothing to merge, just use " |
77 "'hg update' or look at 'hg heads'")) |
80 "'hg update' or look at 'hg heads'")) |
152 repo.ui.debug(_(" %s versions differ, resolve\n") % f) |
155 repo.ui.debug(_(" %s versions differ, resolve\n") % f) |
153 merge[f] = (fmerge(f, mw, m2, ma), m1.get(f, nullid), m2[f]) |
156 merge[f] = (fmerge(f, mw, m2, ma), m1.get(f, nullid), m2[f]) |
154 s = 1 |
157 s = 1 |
155 # are we clobbering? |
158 # are we clobbering? |
156 # is remote's version newer? |
159 # is remote's version newer? |
157 # or are we going back in time? |
160 # or are we going back in time and clean? |
158 elif overwrite or m2[f] != a or (p2 == pa and mw[f] == m1[f]): |
161 elif overwrite or m2[f] != a or (backwards and mw[f] == m1[f]): |
159 repo.ui.debug(_(" remote %s is newer, get\n") % f) |
162 repo.ui.debug(_(" remote %s is newer, get\n") % f) |
160 get[f] = (m2.execf(f), m2[f]) |
163 get[f] = (m2.execf(f), m2[f]) |
161 s = 1 |
164 s = 1 |
162 elif f in umap or f in added: |
165 elif f in umap or f in added: |
163 # this unknown file is the same as the checkout |
166 # this unknown file is the same as the checkout |
190 # file is created on branch or in working directory |
193 # file is created on branch or in working directory |
191 if overwrite and f not in umap: |
194 if overwrite and f not in umap: |
192 repo.ui.debug(_("remote deleted %s, clobbering\n") % f) |
195 repo.ui.debug(_("remote deleted %s, clobbering\n") % f) |
193 remove.append(f) |
196 remove.append(f) |
194 elif n == m1.get(f, nullid): # same as parent |
197 elif n == m1.get(f, nullid): # same as parent |
195 if p2 == pa: # going backwards? |
198 if backwards: |
196 repo.ui.debug(_("remote deleted %s\n") % f) |
199 repo.ui.debug(_("remote deleted %s\n") % f) |
197 remove.append(f) |
200 remove.append(f) |
198 else: |
201 else: |
199 repo.ui.debug(_("local modified %s, keeping\n") % f) |
202 repo.ui.debug(_("local modified %s, keeping\n") % f) |
200 else: |
203 else: |
215 get[f] = (m2.execf(f), n) |
218 get[f] = (m2.execf(f), n) |
216 elif f not in ma: |
219 elif f not in ma: |
217 repo.ui.debug(_("remote created %s\n") % f) |
220 repo.ui.debug(_("remote created %s\n") % f) |
218 get[f] = (m2.execf(f), n) |
221 get[f] = (m2.execf(f), n) |
219 else: |
222 else: |
220 if overwrite or p2 == pa: # going backwards? |
223 if overwrite or backwards: |
221 repo.ui.debug(_("local deleted %s, recreating\n") % f) |
224 repo.ui.debug(_("local deleted %s, recreating\n") % f) |
222 get[f] = (m2.execf(f), n) |
225 get[f] = (m2.execf(f), n) |
223 else: |
226 else: |
224 repo.ui.debug(_("local deleted %s\n") % f) |
227 repo.ui.debug(_("local deleted %s\n") % f) |
225 |
228 |