changeset 45443 | 037e88d453fa |
parent 45432 | f52b0297acc8 |
child 45585 | 479cce8c9882 |
45442:c6e332a451d0 | 45443:037e88d453fa |
---|---|
155 mctx = m1ctx.copy() |
155 mctx = m1ctx.copy() |
156 |
156 |
157 m = mctx.read() |
157 m = mctx.read() |
158 m1 = m1ctx.read() |
158 m1 = m1ctx.read() |
159 m2 = m2ctx.read() |
159 m2 = m2ctx.read() |
160 ms = mergestate.mergestate.read(repo) |
|
160 |
161 |
161 files = metadata.ChangingFiles() |
162 files = metadata.ChangingFiles() |
162 |
163 |
163 # check in files |
164 # check in files |
164 added = [] |
165 added = [] |
173 if fctx is None: |
174 if fctx is None: |
174 removed.append(f) |
175 removed.append(f) |
175 else: |
176 else: |
176 added.append(f) |
177 added.append(f) |
177 m[f], is_touched = _filecommit( |
178 m[f], is_touched = _filecommit( |
178 repo, fctx, m1, m2, linkrev, tr, writefilecopymeta, |
179 repo, fctx, m1, m2, linkrev, tr, writefilecopymeta, ms |
179 ) |
180 ) |
180 if is_touched: |
181 if is_touched: |
181 if is_touched == 'added': |
182 if is_touched == 'added': |
182 files.mark_added(f) |
183 files.mark_added(f) |
183 else: |
184 else: |
209 |
210 |
210 return mn, files |
211 return mn, files |
211 |
212 |
212 |
213 |
213 def _filecommit( |
214 def _filecommit( |
214 repo, fctx, manifest1, manifest2, linkrev, tr, includecopymeta, |
215 repo, fctx, manifest1, manifest2, linkrev, tr, includecopymeta, ms, |
215 ): |
216 ): |
216 """ |
217 """ |
217 commit an individual file as part of a larger transaction |
218 commit an individual file as part of a larger transaction |
218 |
219 |
219 input: |
220 input: |
224 linkrev: revision number of the changeset being created |
225 linkrev: revision number of the changeset being created |
225 tr: current transation |
226 tr: current transation |
226 includecopymeta: boolean, set to False to skip storing the copy data |
227 includecopymeta: boolean, set to False to skip storing the copy data |
227 (only used by the Google specific feature of using |
228 (only used by the Google specific feature of using |
228 changeset extra as copy source of truth). |
229 changeset extra as copy source of truth). |
230 ms: mergestate object |
|
229 |
231 |
230 output: (filenode, touched) |
232 output: (filenode, touched) |
231 |
233 |
232 filenode: the filenode that should be used by this changeset |
234 filenode: the filenode that should be used by this changeset |
233 touched: one of: None (mean untouched), 'added' or 'modified' |
235 touched: one of: None (mean untouched), 'added' or 'modified' |
322 fparent1, fparent2 = fparent2, nullid |
324 fparent1, fparent2 = fparent2, nullid |
323 elif fparent2 in fparentancestors: |
325 elif fparent2 in fparentancestors: |
324 fparent2 = nullid |
326 fparent2 = nullid |
325 elif not fparentancestors: |
327 elif not fparentancestors: |
326 # TODO: this whole if-else might be simplified much more |
328 # TODO: this whole if-else might be simplified much more |
327 ms = mergestate.mergestate.read(repo) |
329 if ( |
328 if ms.extras(fname).get(b'filenode-source') == b'other': |
330 ms.active() |
331 and ms.extras(fname).get(b'filenode-source') == b'other' |
|
332 ): |
|
329 fparent1, fparent2 = fparent2, nullid |
333 fparent1, fparent2 = fparent2, nullid |
330 |
334 |
331 # is the file changed? |
335 # is the file changed? |
332 text = fctx.data() |
336 text = fctx.data() |
333 if fparent2 != nullid or meta or flog.cmp(fparent1, text): |
337 if fparent2 != nullid or meta or flog.cmp(fparent1, text): |