equal
deleted
inserted
replaced
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') |