comparison mercurial/merge.py @ 3003:cbb90f4bafb0

merge: eliminate usage of m1 after working manifest creation
author Matt Mackall <mpm@selenic.com>
date Tue, 22 Aug 2006 17:20:09 -0500
parents a31557193f3c
children 31011730f9bd
comparison
equal deleted inserted replaced
3002:a31557193f3c 3003:cbb90f4bafb0
118 # construct a working dir manifest 118 # construct a working dir manifest
119 mw = m1.copy() 119 mw = m1.copy()
120 umap = dict.fromkeys(unknown) 120 umap = dict.fromkeys(unknown)
121 121
122 for f in added + modified + unknown: 122 for f in added + modified + unknown:
123 mw[f] = "" 123 mw[f] = nullid + "+"
124 mw.set(f, util.is_exec(repo.wjoin(f), mw.execf(f))) 124 mw.set(f, util.is_exec(repo.wjoin(f), mw.execf(f)))
125 if f in m1:
126 mw[f] = m1[f] + "+"
125 127
126 for f in deleted + removed: 128 for f in deleted + removed:
127 if f in mw: 129 if f in mw:
128 del mw[f] 130 del mw[f]
129 131
150 if n != m2[f]: 152 if n != m2[f]:
151 a = ma.get(f, nullid) 153 a = ma.get(f, nullid)
152 # are both different from the ancestor? 154 # are both different from the ancestor?
153 if not overwrite and n != a and m2[f] != a: 155 if not overwrite and n != a and m2[f] != a:
154 repo.ui.debug(_(" %s versions differ, resolve\n") % f) 156 repo.ui.debug(_(" %s versions differ, resolve\n") % f)
155 merge[f] = (fmerge(f, mw, m2, ma), m1.get(f, nullid), m2[f]) 157 merge[f] = (fmerge(f, mw, m2, ma), n[:20], m2[f])
156 queued = 1 158 queued = 1
157 # are we clobbering? 159 # are we clobbering?
158 # is remote's version newer? 160 # is remote's version newer?
159 # or are we going back in time and clean? 161 # or are we going back in time and clean?
160 elif overwrite or m2[f] != a or (backwards and mw[f] == m1[f]): 162 elif overwrite or m2[f] != a or (backwards and not n[20:]):
161 repo.ui.debug(_(" remote %s is newer, get\n") % f) 163 repo.ui.debug(_(" remote %s is newer, get\n") % f)
162 get[f] = (m2.execf(f), m2[f]) 164 get[f] = (m2.execf(f), m2[f])
163 queued = 1 165 queued = 1
164 elif f in umap or f in added: 166 elif f in umap or f in added:
165 # this unknown file is the same as the checkout 167 # this unknown file is the same as the checkout
192 else: 194 else:
193 # file is created on branch or in working directory 195 # file is created on branch or in working directory
194 if overwrite and f not in umap: 196 if overwrite and f not in umap:
195 repo.ui.debug(_("remote deleted %s, clobbering\n") % f) 197 repo.ui.debug(_("remote deleted %s, clobbering\n") % f)
196 remove.append(f) 198 remove.append(f)
197 elif n == m1.get(f, nullid): # same as parent 199 elif not n[20:]: # same as parent
198 if backwards: 200 if backwards:
199 repo.ui.debug(_("remote deleted %s\n") % f) 201 repo.ui.debug(_("remote deleted %s\n") % f)
200 remove.append(f) 202 remove.append(f)
201 else: 203 else:
202 repo.ui.debug(_("local modified %s, keeping\n") % f) 204 repo.ui.debug(_("local modified %s, keeping\n") % f)