Show More
@@ -91,7 +91,7 b' def update(repo, node, branchmerge=False' | |||||
91 | m1n = repo.changelog.read(p1)[0] |
|
91 | m1n = repo.changelog.read(p1)[0] | |
92 | m2n = repo.changelog.read(p2)[0] |
|
92 | m2n = repo.changelog.read(p2)[0] | |
93 | man = repo.manifest.ancestor(m1n, m2n) |
|
93 | man = repo.manifest.ancestor(m1n, m2n) | |
94 | m1 = repo.manifest.read(m1n) |
|
94 | m1 = repo.manifest.read(m1n).copy() | |
95 | m2 = repo.manifest.read(m2n).copy() |
|
95 | m2 = repo.manifest.read(m2n).copy() | |
96 | ma = repo.manifest.read(man) |
|
96 | ma = repo.manifest.read(man) | |
97 |
|
97 | |||
@@ -115,19 +115,16 b' def update(repo, node, branchmerge=False' | |||||
115 | remove = [] |
|
115 | remove = [] | |
116 | forget = [] |
|
116 | forget = [] | |
117 |
|
117 | |||
118 | # construct a working dir manifest |
|
118 | # update m1 from working dir | |
119 | mw = m1.copy() |
|
|||
120 | umap = dict.fromkeys(unknown) |
|
119 | umap = dict.fromkeys(unknown) | |
121 |
|
120 | |||
122 | for f in added + modified + unknown: |
|
121 | for f in added + modified + unknown: | |
123 |
m |
|
122 | m1[f] = m1.get(f, nullid) + "+" | |
124 |
m |
|
123 | m1.set(f, util.is_exec(repo.wjoin(f), m1.execf(f))) | |
125 | if f in m1: |
|
|||
126 | mw[f] = m1[f] + "+" |
|
|||
127 |
|
124 | |||
128 | for f in deleted + removed: |
|
125 | for f in deleted + removed: | |
129 |
if f in m |
|
126 | if f in m1: | |
130 |
del m |
|
127 | del m1[f] | |
131 |
|
128 | |||
132 | # If we're jumping between revisions (as opposed to merging), |
|
129 | # If we're jumping between revisions (as opposed to merging), | |
133 | # and if neither the working directory nor the target rev has |
|
130 | # and if neither the working directory nor the target rev has | |
@@ -138,13 +135,13 b' def update(repo, node, branchmerge=False' | |||||
138 | forget.append(f) |
|
135 | forget.append(f) | |
139 |
|
136 | |||
140 | if partial: |
|
137 | if partial: | |
141 |
for f in m |
|
138 | for f in m1.keys(): | |
142 |
if not partial(f): del m |
|
139 | if not partial(f): del m1[f] | |
143 | for f in m2.keys(): |
|
140 | for f in m2.keys(): | |
144 | if not partial(f): del m2[f] |
|
141 | if not partial(f): del m2[f] | |
145 |
|
142 | |||
146 | # Compare manifests |
|
143 | # Compare manifests | |
147 |
for f, n in m |
|
144 | for f, n in m1.iteritems(): | |
148 | if f in m2: |
|
145 | if f in m2: | |
149 | queued = 0 |
|
146 | queued = 0 | |
150 |
|
147 | |||
@@ -154,7 +151,7 b' def update(repo, node, branchmerge=False' | |||||
154 | # are both different from the ancestor? |
|
151 | # are both different from the ancestor? | |
155 | if not overwrite and n != a and m2[f] != a: |
|
152 | if not overwrite and n != a and m2[f] != a: | |
156 | repo.ui.debug(_(" %s versions differ, resolve\n") % f) |
|
153 | repo.ui.debug(_(" %s versions differ, resolve\n") % f) | |
157 |
merge[f] = (fmerge(f, m |
|
154 | merge[f] = (fmerge(f, m1, m2, ma), n[:20], m2[f]) | |
158 | queued = 1 |
|
155 | queued = 1 | |
159 | # are we clobbering? |
|
156 | # are we clobbering? | |
160 | # is remote's version newer? |
|
157 | # is remote's version newer? | |
@@ -169,12 +166,12 b' def update(repo, node, branchmerge=False' | |||||
169 | get[f] = (m2.execf(f), m2[f]) |
|
166 | get[f] = (m2.execf(f), m2[f]) | |
170 |
|
167 | |||
171 | # do we still need to look at mode bits? |
|
168 | # do we still need to look at mode bits? | |
172 |
if not queued and m |
|
169 | if not queued and m1.execf(f) != m2.execf(f): | |
173 | if overwrite: |
|
170 | if overwrite: | |
174 | repo.ui.debug(_(" updating permissions for %s\n") % f) |
|
171 | repo.ui.debug(_(" updating permissions for %s\n") % f) | |
175 | util.set_exec(repo.wjoin(f), m2.execf(f)) |
|
172 | util.set_exec(repo.wjoin(f), m2.execf(f)) | |
176 | else: |
|
173 | else: | |
177 |
if fmerge(f, m |
|
174 | if fmerge(f, m1, m2, ma) != m1.execf(f): | |
178 | repo.ui.debug(_(" updating permissions for %s\n") |
|
175 | repo.ui.debug(_(" updating permissions for %s\n") | |
179 | % f) |
|
176 | % f) | |
180 | util.set_exec(repo.wjoin(f), mode) |
|
177 | util.set_exec(repo.wjoin(f), mode) | |
@@ -226,7 +223,7 b' def update(repo, node, branchmerge=False' | |||||
226 | else: |
|
223 | else: | |
227 | repo.ui.debug(_("local deleted %s\n") % f) |
|
224 | repo.ui.debug(_("local deleted %s\n") % f) | |
228 |
|
225 | |||
229 |
del |
|
226 | del m1, m2, ma | |
230 |
|
227 | |||
231 | ### apply phase |
|
228 | ### apply phase | |
232 |
|
229 |
General Comments 0
You need to be logged in to leave comments.
Login now