comparison mercurial/sparse.py @ 39527:9db856446298

sparse: add local files to temporaryfiles if they exist out of sparse We get the f1 from args if it's merge and check that whether that exists in sparse checkout or not. If that does not, we add that for merging. The error comes from very low-level where we try to read data of a working-filectx which does not exists in the working directory. It will be extremely ugly to plug in logic to update sparse copy with new file at such a low level. We already have logic related to updating the checkout with required files in calculateupdates() and let's handle this case there only. calculateupdates() call sparse.filterupdatesactions() and the logic is added into the latter function. To get the exact traceback, this patch can be backed out and test-sparse-merges.t can be run with ui.traceback=True. Differential Revision: https://phab.mercurial-scm.org/D4341
author Pulkit Goyal <pulkit@yandex-team.ru>
date Tue, 21 Aug 2018 16:11:17 +0300
parents 1ff45c518e6f
children 54c3b4bd01f2
comparison
equal deleted inserted replaced
39526:c6eb2118f44f 39527:9db856446298
359 elif type == 'f': 359 elif type == 'f':
360 prunedactions[file] = action 360 prunedactions[file] = action
361 elif file in wctx: 361 elif file in wctx:
362 prunedactions[file] = ('r', args, msg) 362 prunedactions[file] = ('r', args, msg)
363 363
364 if branchmerge and type == mergemod.ACTION_MERGE:
365 f1, f2, fa, move, anc = args
366 if not sparsematch(f1):
367 temporaryfiles.append(f1)
368
364 if len(temporaryfiles) > 0: 369 if len(temporaryfiles) > 0:
365 repo.ui.status(_('temporarily included %d file(s) in the sparse ' 370 repo.ui.status(_('temporarily included %d file(s) in the sparse '
366 'checkout for merging\n') % len(temporaryfiles)) 371 'checkout for merging\n') % len(temporaryfiles))
367 addtemporaryincludes(repo, temporaryfiles) 372 addtemporaryincludes(repo, temporaryfiles)
368 373