configitems: add a new config option to control new filenode functionality
authorPulkit Goyal <7895pulkit@gmail.com>
Mon, 14 Sep 2020 14:31:23 +0530
changeset 45579 b9d6ab6cdeb4
parent 45578 f9a3edf2dee4
child 45580 76d79b80d953
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
mercurial/configitems.py
tests/test-merge-criss-cross.t
--- 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,
 )
--- 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 <<EOF
+  > [experimental]
+  > merge-track-salvaged = True
+  > EOF
+#endif
+
 Criss cross merging
 
   $ hg init criss-cross