# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1600074083 -19800 # Node ID b9d6ab6cdeb435a2d4cafeab9be8025c1e0c7c53 # Parent f9a3edf2dee4f11117699967c226b882a98957e0 configitems: add a new config option to control new filenode functionality This series is adding functionality where we can force create a new filenode for some files on a merge-commit. This is meant to represent an explicit choice made by user and hence distingusing the file in the merged commit with the file in parent by creating a new filenode instead of using the parent one. This introduces a experimental config option under which this functionality will be hidden. A new testcase is added in tests/test-merge-criss-cross.t to test the new functionality while making the option does not break other scenarios. Differential Revision: https://phab.mercurial-scm.org/D9026 diff -r f9a3edf2dee4 -r b9d6ab6cdeb4 mercurial/configitems.py --- a/mercurial/configitems.py Wed Sep 23 14:20:49 2020 -0400 +++ b/mercurial/configitems.py Mon Sep 14 14:31:23 2020 +0530 @@ -590,6 +590,11 @@ coreconfigitem( b'experimental', b'maxdeltachainspan', default=-1, ) +# tracks files which were undeleted (merge might delete them but we explicitly +# kept/undeleted them) and creates new filenodes for them +coreconfigitem( + b'experimental', b'merge-track-salvaged', default=False, +) coreconfigitem( b'experimental', b'mergetempdirprefix', default=None, ) diff -r f9a3edf2dee4 -r b9d6ab6cdeb4 tests/test-merge-criss-cross.t --- a/tests/test-merge-criss-cross.t Wed Sep 23 14:20:49 2020 -0400 +++ b/tests/test-merge-criss-cross.t Mon Sep 14 14:31:23 2020 +0530 @@ -1,3 +1,15 @@ +#testcases old newfilenode + +#if newfilenode +Enable the config option +------------------------ + + $ cat >> $HGRCPATH < [experimental] + > merge-track-salvaged = True + > EOF +#endif + Criss cross merging $ hg init criss-cross