Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/merge.py @ 2968:545d33aa3f82
merge: add backwards variable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 21 Aug 2006 14:21:42 -0500 |
parents | 8743188f4d2e |
children | 833677bc9791 |
comparison
equal
deleted
inserted
replaced
2967:eef469259745 | 2968:545d33aa3f82 |
---|---|
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 |