Thomas Gummerer <t.gummerer@xxxxxxxxx> writes: > In the previous patch we introduced a new no-overlay mode for git > checkout. Some users (such as the author of this commit) may want to > have this mode turned on by default as it matches their mental model > more closely. Make that possible by introducing a new config option > to that extend. > > Signed-off-by: Thomas Gummerer <t.gummerer@xxxxxxxxx> > --- > Documentation/config/checkout.txt | 7 +++++++ > builtin/checkout.c | 8 +++++++- > t/t2025-checkout-no-overlay.sh | 10 ++++++++++ > 3 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/Documentation/config/checkout.txt b/Documentation/config/checkout.txt > index c4118fa196..53f917e15e 100644 > --- a/Documentation/config/checkout.txt > +++ b/Documentation/config/checkout.txt > @@ -21,3 +21,10 @@ checkout.optimizeNewBranch:: > will not update the skip-worktree bit in the index nor add/remove > files in the working directory to reflect the current sparse checkout > settings nor will it show the local changes. > + > +checkout.overlayMode:: > + In the default overlay mode files `git checkout` never > + removes files from the index or the working tree. Technically the above "never removes" is incorrect. $ mv COPYING 1 && mkdir COPYING && mv 1 COPYING/COPYING $ git add COPYING $ git checkout HEAD COPYING would remove COPYING/1 from the index and from the working tree to make room. Because I think that a bit of white lie like what you wrote would help readers understand the key point of "overlay or not overlay" better than an overly precise description of the reason why the removal in the above three-liner case is the right thing to do, I think the text in the patch is good enough at least for now, but I'd mention it in case somebody else can think of a better phrasing to covey the same key point without being technically incorrect. Thanks.