comparison mercurial/merge.py @ 2836:e78cad1f6b1f

Merge manifest refactor work
author Matt Mackall <mpm@selenic.com>
date Wed, 09 Aug 2006 15:03:46 -0500
parents 4870f795f681
children 19b3bc840182
comparison
equal deleted inserted replaced
2830:49988d9f0758 2836:e78cad1f6b1f
116 mfw = mf1.copy() 116 mfw = mf1.copy()
117 umap = dict.fromkeys(unknown) 117 umap = dict.fromkeys(unknown)
118 118
119 for f in added + modified + unknown: 119 for f in added + modified + unknown:
120 mw[f] = "" 120 mw[f] = ""
121 mfw[f] = util.is_exec(repo.wjoin(f), mfw.get(f, False)) 121 mfw.set(f, util.is_exec(repo.wjoin(f), mfw.execf(f)))
122 122
123 for f in deleted + removed: 123 for f in deleted + removed:
124 if f in mw: 124 if f in mw:
125 del mw[f] 125 del mw[f]
126 126
153 # are both different from the ancestor? 153 # are both different from the ancestor?
154 if n != a and m2[f] != a: 154 if n != a and m2[f] != a:
155 repo.ui.debug(_(" %s versions differ, resolve\n") % f) 155 repo.ui.debug(_(" %s versions differ, resolve\n") % f)
156 # merge executable bits 156 # merge executable bits
157 # "if we changed or they changed, change in merge" 157 # "if we changed or they changed, change in merge"
158 a, b, c = mfa.get(f, 0), mfw[f], mf2[f] 158 a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f)
159 mode = ((a^b) | (a^c)) ^ a 159 mode = ((a^b) | (a^c)) ^ a
160 merge[f] = (m1.get(f, nullid), m2[f], mode) 160 merge[f] = (m1.get(f, nullid), m2[f], mode)
161 s = 1 161 s = 1
162 # are we clobbering? 162 # are we clobbering?
163 # is remote's version newer? 163 # is remote's version newer?
169 elif f in umap or f in added: 169 elif f in umap or f in added:
170 # this unknown file is the same as the checkout 170 # this unknown file is the same as the checkout
171 # we need to reset the dirstate if the file was added 171 # we need to reset the dirstate if the file was added
172 get[f] = m2[f] 172 get[f] = m2[f]
173 173
174 if not s and mfw[f] != mf2[f]: 174 if not s and mfw.execf(f) != mf2.execf(f):
175 if overwrite: 175 if overwrite:
176 repo.ui.debug(_(" updating permissions for %s\n") % f) 176 repo.ui.debug(_(" updating permissions for %s\n") % f)
177 util.set_exec(repo.wjoin(f), mf2[f]) 177 util.set_exec(repo.wjoin(f), mf2.execf(f))
178 else: 178 else:
179 a, b, c = mfa.get(f, 0), mfw[f], mf2[f] 179 a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f)
180 mode = ((a^b) | (a^c)) ^ a 180 mode = ((a^b) | (a^c)) ^ a
181 if mode != b: 181 if mode != b:
182 repo.ui.debug(_(" updating permissions for %s\n") 182 repo.ui.debug(_(" updating permissions for %s\n")
183 % f) 183 % f)
184 util.set_exec(repo.wjoin(f), mode) 184 util.set_exec(repo.wjoin(f), mode)
257 if f[0] == "/": 257 if f[0] == "/":
258 continue 258 continue
259 repo.ui.note(_("getting %s\n") % f) 259 repo.ui.note(_("getting %s\n") % f)
260 t = repo.file(f).read(get[f]) 260 t = repo.file(f).read(get[f])
261 repo.wwrite(f, t) 261 repo.wwrite(f, t)
262 util.set_exec(repo.wjoin(f), mf2[f]) 262 util.set_exec(repo.wjoin(f), mf2.execf(f))
263 if not partial: 263 if not partial:
264 if branchmerge: 264 if branchmerge:
265 repo.dirstate.update([f], 'n', st_mtime=-1) 265 repo.dirstate.update([f], 'n', st_mtime=-1)
266 else: 266 else:
267 repo.dirstate.update([f], 'n') 267 repo.dirstate.update([f], 'n')