public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Derrick Stolee <stolee@gmail•com>
To: Elijah Newren <newren@gmail•com>,
	Derrick Stolee via GitGitGadget <gitgitgadget@gmail•com>
Cc: git@vger•kernel.org, gitster@pobox•com, Patrick Steinhardt <ps@pks•im>
Subject: Re: [PATCH v2 3/8] sparse-checkout: match some 'clean' behavior
Date: Thu, 11 Sep 2025 09:52:30 -0400	[thread overview]
Message-ID: <4ed3dd55-6eba-4cce-ba00-626f4d9cddab@gmail.com> (raw)
In-Reply-To: <CABPp-BGQmoPQ9TOLjZPpPPEJ__0rsHgRMJ-nkiW4GcQjPCvaBA@mail.gmail.com>

On 8/5/25 6:06 PM, Elijah Newren wrote:
> On Wed, Jul 16, 2025 at 6:34 PM Derrick Stolee via GitGitGadget
> <gitgitgadget@gmail•com> wrote:
>>
>> From: Derrick Stolee <stolee@gmail•com>
>>
>> The 'git sparse-checkout clean' subcommand is somewhat similar to 'git
>> clean' in that it will delete files that should not be in the worktree.
>> The big difference is that it focuses on the directories that should not
>> be in the worktree due to cone-mode sparse-checkout. It also does not
>> discriminate in the kinds of files and focuses on deleting entire
>> directories.
>>
>> However, there are some restrictions that would be good to bring over
>> from 'git clean', specifically how it refuses to do anything without the
>> '-f'/'--force' or '-n'/'--dry-run' arguments. The 'clean.requireForce'
>> config can be set to 'false' to imply '--force'.
>>
>> Add this behavior to avoid accidental deletion of files that cannot be
>> recovered from Git.
> 
> I'm a bit surprised by this.  Given that the only kinds of files that
> this command cleans out are untracked and ignored files, and Junio's
> comments about clean.requireForce over in
> https://lore.kernel.org/git/xmqqv7o2togi.fsf@gitster.g/, I thought his
> comments could be interpreted as not wanting clean.requireForce to
> apply in more places.  Did I misunderstand?
> 
> Alternatively, maybe you thought that there were files other than
> untracked and ignored which `sparse-checkout clean` would clean up,
> and it was because of those files that we wanted the extra protection?
>   (In that case, it'd make sense, but it seems to go against what was
> demonstrated in the final testcase of the previous patch.)

My thought process here was that users expect 'git clean' to be extra
careful to prevent removing files. While Junio mentioned regret in
the decision to require the '-f', I didn't want to have such a major
difference between the two commands.

I also interpreted Junio's comments to be that he wished that
clean.requireForce was 'false' by default instead of the current
assumption of 'true' if unset.

I'm open to reviewers providing a firm stance towards "the new
command should deviate closer to how we wish 'git clean' worked"
and overriding my choice to match behavior.

Thanks,
-Stolee



  reply	other threads:[~2025-09-11 13:52 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-08 11:19 [PATCH 0/3] sparse-checkout: add 'clean' command Derrick Stolee via GitGitGadget
2025-07-08 11:19 ` [PATCH 1/3] sparse-checkout: remove use of the_repository Derrick Stolee via GitGitGadget
2025-07-08 20:49   ` Elijah Newren
2025-07-08 20:59   ` Junio C Hamano
2025-07-08 11:19 ` [PATCH 2/3] sparse-checkout: add 'clean' command Derrick Stolee via GitGitGadget
2025-07-08 12:15   ` Patrick Steinhardt
2025-07-08 20:30     ` Junio C Hamano
2025-07-08 21:20   ` Junio C Hamano
2025-07-09 14:39     ` Derrick Stolee
2025-07-09 16:46       ` Junio C Hamano
2025-07-08 21:43   ` Elijah Newren
2025-07-09 16:13     ` Derrick Stolee
2025-07-09 17:35       ` Elijah Newren
2025-07-15 13:38         ` Derrick Stolee
2025-07-15 17:17           ` Elijah Newren
2025-07-08 11:19 ` [PATCH 3/3] sparse-index: point users to new 'clean' action Derrick Stolee via GitGitGadget
2025-07-08 21:45   ` Elijah Newren
2025-07-08 12:15 ` [PATCH 0/3] sparse-checkout: add 'clean' command Patrick Steinhardt
2025-07-08 20:36 ` Elijah Newren
2025-07-08 22:01   ` Elijah Newren
2025-07-08 23:41 ` Junio C Hamano
2025-07-09 15:41   ` Derrick Stolee
2025-07-17  1:34 ` [PATCH v2 0/8] " Derrick Stolee via GitGitGadget
2025-07-17  1:34   ` [PATCH v2 1/8] sparse-checkout: remove use of the_repository Derrick Stolee via GitGitGadget
2025-07-17  1:34   ` [PATCH v2 2/8] sparse-checkout: add basics of 'clean' command Derrick Stolee via GitGitGadget
2025-08-05 21:32     ` Elijah Newren
2025-09-11 13:37       ` Derrick Stolee
2025-07-17  1:34   ` [PATCH v2 3/8] sparse-checkout: match some 'clean' behavior Derrick Stolee via GitGitGadget
2025-08-05 22:06     ` Elijah Newren
2025-09-11 13:52       ` Derrick Stolee [this message]
2025-07-17  1:34   ` [PATCH v2 4/8] dir: add generic "walk all files" helper Derrick Stolee via GitGitGadget
2025-08-05 22:22     ` Elijah Newren
2025-07-17  1:34   ` [PATCH v2 5/8] sparse-checkout: add --verbose option to 'clean' Derrick Stolee via GitGitGadget
2025-08-05 22:22     ` Elijah Newren
2025-09-11 14:06       ` Derrick Stolee
2025-07-17  1:34   ` [PATCH v2 6/8] sparse-index: point users to new 'clean' action Derrick Stolee via GitGitGadget
2025-07-17  1:34   ` [PATCH v2 7/8] t: expand tests around sparse merges and clean Derrick Stolee via GitGitGadget
2025-07-17  1:34   ` [PATCH v2 8/8] sparse-checkout: make 'clean' clear more files Derrick Stolee via GitGitGadget
2025-08-06  0:21     ` Elijah Newren
2025-09-11 15:26       ` Derrick Stolee
2025-09-11 16:21         ` Derrick Stolee
2025-08-28 23:22   ` [PATCH v2 0/8] sparse-checkout: add 'clean' command Junio C Hamano
2025-08-29  0:15     ` Elijah Newren
2025-08-29  0:27       ` Junio C Hamano
2025-08-29 21:03         ` Junio C Hamano
2025-08-30 13:41           ` Derrick Stolee
2025-09-12 10:30   ` [PATCH v3 0/7] " Derrick Stolee via GitGitGadget
2025-09-12 10:30     ` [PATCH v3 1/7] sparse-checkout: remove use of the_repository Derrick Stolee via GitGitGadget
2025-09-12 10:30     ` [PATCH v3 2/7] sparse-checkout: add basics of 'clean' command Derrick Stolee via GitGitGadget
2025-10-07 22:49       ` Elijah Newren
2025-10-20 14:16         ` Derrick Stolee
2025-09-12 10:30     ` [PATCH v3 3/7] sparse-checkout: match some 'clean' behavior Derrick Stolee via GitGitGadget
2025-09-12 10:30     ` [PATCH v3 4/7] dir: add generic "walk all files" helper Derrick Stolee via GitGitGadget
2025-09-12 10:30     ` [PATCH v3 5/7] sparse-checkout: add --verbose option to 'clean' Derrick Stolee via GitGitGadget
2025-09-15 18:09       ` Derrick Stolee
2025-09-15 19:12         ` Junio C Hamano
2025-09-16  2:00           ` Derrick Stolee
2025-09-12 10:30     ` [PATCH v3 6/7] sparse-index: point users to new 'clean' action Derrick Stolee via GitGitGadget
2025-10-07 22:53       ` Elijah Newren
2025-10-20 14:17         ` Derrick Stolee
2025-09-12 10:30     ` [PATCH v3 7/7] t: expand tests around sparse merges and clean Derrick Stolee via GitGitGadget
2025-09-12 16:12     ` [PATCH v3 0/7] sparse-checkout: add 'clean' command Junio C Hamano
2025-09-26 13:40       ` Derrick Stolee
2025-09-26 18:58         ` Elijah Newren
2025-10-07 23:07     ` Elijah Newren
2025-10-20 14:25       ` Derrick Stolee
2025-10-20 14:24     ` [PATCH 8/8] sparse-index: improve advice message instructions Derrick Stolee
2025-10-20 16:29       ` Junio C Hamano
2025-10-24  2:22       ` Elijah Newren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ed3dd55-6eba-4cce-ba00-626f4d9cddab@gmail.com \
    --to=stolee@gmail$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitgitgadget@gmail$(echo .)com \
    --cc=gitster@pobox$(echo .)com \
    --cc=newren@gmail$(echo .)com \
    --cc=ps@pks$(echo .)im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox