Re: [RFC] Define "precious" attribute and support it in `git clean`
- From
Josh Triplett <josh@joshtriplett.org>
- Date
- Oct 12, 2023, 09:04 UTC
- Message-ID
- <ZSe2rvIWcNrrp-9R@localhost>
- In-Reply-To
- <25b25127-aa10-4179-bc02-065fe12d01ef@app.fastmail.com>
On Tue, Oct 10, 2023 at 09:10:34PM +0200, Kristoffer Haugsbakk wrote:
Show 24 quoted lines
> Hi Josh > > On Tue, Oct 10, 2023, at 16:10, Josh Triplett wrote: > > > [snip] > > > > While I'd love for it to default to that and require an extra option to > > clean away precious files, I'd expect that that would break people's > > workflows and finger memory. If someone expects `git clean -x -d -f` to > > clean away everything, including `.config`, and then it leaves some > > files in place, that seems likely to cause problems. (Leaving aside that > > it might break scripted workflows.) > > > > It seems safer to keep the existing behavior for existing options, and > > add a new option for "remove everything except precious files". > > What's a scenario where it breaks? I'm guessing: > > 1. Someone clones a project > 2. That project has precious files marked via `.gitattributes` > 3. They later do a `clean` > 4. The precious files are left alone even though they expected them to be > deleted; they don't check what `clean` did (it deletes everything > untracked (they expect) so nothing to check) > 5. This hurts them somehow
The scenario I had in mind was:
- Project has ignored files; git doesn't have a concept of "precious" - Users expect that `git clean -x -d -f` deletes everything that isn't part of the latest commit. - Git introduces the concept of "precious" - Project adopts "precious" and marks some of its ignored files as "precious" instead - Users' finger-macros around `git clean` stop cleaning up files they expected to be cleaned.
That said, given Junio's response I'm no longer concerned about this scenario.