On Tue, Oct 10, 2023 at 09:10:34PM +0200, Kristoffer Haugsbakk wrote: > 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.