This behaviour is explained by this comment by Ian in workingtree_4.py:
1416 # If content filtering is supported, do not use the accelerator
1417 # tree - the cost of transforming the content both ways and
1418 # checking for changed content can outweight the gains it gives.
1419 # Note: do NOT move this logic up higher - using the basis from
1420 # the accelerator tree is still desirable because that can save
1421 # a minute or more of processing on large trees!
1422 # The original tree may not have the same content filters
1423 # applied so we can't safely build the inventory delta from
1424 # the source tree.
1425 if wt.supports_content_filtering():
1426 accelerator_tree = None
1427 delta_from_tree = False
1428 else:
1429 delta_from_tree = True
1430 # delta_from_tree is safe even for DirStateRevisionTrees,
1431 # because wt4.apply_inventory_delta does not mutate the input
1432 # inventory entries.
1433 transform.build_tree(basis, wt, accelerator_tree,
1434 hardlink=hardlink,
1435 delta_from_tree=delta_from_tree)
I'll change the test to expect failure here, and I think we should at least give a message to the user explaining why their request was not followed.
It seems like Ian's saying that we *could* hardlink them, it just might be slow. I think we should still give the user the option to do it if it's safe: they may care about disk space more than they care about speed, or they may not actually have any content filters configured.
This behaviour is explained by this comment by Ian in workingtree_4.py:
1416 # If content filtering is supported, do not use the accelerator content_ filtering( ): nTrees, inventory_ delta does not mutate the input build_tree( basis, wt, accelerator_tree, tree=delta_ from_tree)
1417 # tree - the cost of transforming the content both ways and
1418 # checking for changed content can outweight the gains it gives.
1419 # Note: do NOT move this logic up higher - using the basis from
1420 # the accelerator tree is still desirable because that can save
1421 # a minute or more of processing on large trees!
1422 # The original tree may not have the same content filters
1423 # applied so we can't safely build the inventory delta from
1424 # the source tree.
1425 if wt.supports_
1426 accelerator_tree = None
1427 delta_from_tree = False
1428 else:
1429 delta_from_tree = True
1430 # delta_from_tree is safe even for DirStateRevisio
1431 # because wt4.apply_
1432 # inventory entries.
1433 transform.
1434 hardlink=hardlink,
1435 delta_from_
I'll change the test to expect failure here, and I think we should at least give a message to the user explaining why their request was not followed.
It seems like Ian's saying that we *could* hardlink them, it just might be slow. I think we should still give the user the option to do it if it's safe: they may care about disk space more than they care about speed, or they may not actually have any content filters configured.