Mercurial > public > mercurial-scm > hg
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') |