Thread (30 messages) 30 messages, 8 authors, 2018-12-06

Re: [RFC PATCH] Introduce "precious" file concept

flat view

From: Duy Nguyen <hidden>
Date: 2018-11-26 15:41:19

On Mon, Nov 26, 2018 at 4:34 PM Ævar Arnfjörð Bjarmason
[off-list ref] wrote:

On Mon, Nov 26 2018, Duy Nguyen wrote:
quoted
On Mon, Nov 26, 2018 at 10:30 AM Per Lundberg [off-list ref] wrote:
quoted
On 11/13/18 1:22 AM, brian m. carlson wrote:
quoted
This is going to totally hose automation.  My last job had files which
might move from tracked to untracked (a file that had become generated),
and long-running CI and build systems would need to be able to check out
one status and switch to the other.  Your proposed change will prevent
those systems from working, whereas they previously did.

I agree that your proposal would have been a better design originally,
but breaking the way automated systems currently work is probably going
to be a dealbreaker.
How about something like this:

1. Introduce a concept with "garbage" files, which git is "permitted to
delete" without prompting.

2. Retain the current default, i.e. "ignored files are garbage" for now,
making the new behavior _opt in_ to avoid breaking automated
systems/existing scripts for anyone. Put the setting for this behind a
new core.* config flag.

3. In the plan for version 3.0 (a new major version where some breakage
can be tolerable, according to Semantic Versioning), change the default
so that "only explicit garbage is garbage". Include very clear notices
of this in the release notes. The config flag is retained, but its
default changes from true->false or vice versa. People who dislike the
new behavior can easily change back to the 2.x semantics.
How does this garbage thing interact with "git clean -x"? My
interpretation of this flag/attribute is that at version 3.0 by
default all ignored files are _not_ garbage, so "git clean -x" should
not remove any of them. Which is weird because most of ignored files
are like *.o that should be removed.

I also need to mark "precious" on untracked or even tracked files (*).
Not sure how this "garbage" attribute interacts with that.

(*) I was hoping I could get the idea [1] implemented in somewhat good
shape before presenting here. But I'm a bit slow on that front. So
yeah this "precious" on untracked/tracked thingy may be even
irrelevant if the patch series will be rejected.
I think a garbage (or trashable) flag, if implemented, wouldn't need any
special case in git-clean, i.e. -x would remove all untracked files,
whether ignored or garbage/trashable. That's what my patch to implement
it does:
https://public-inbox.org/git/87zhuf3gs0.fsf@evledraar.gmail.com/

I think that makes sense. Users running "git clean" have "--dry-run" and
unlike "checkout a branch" or "merge this commit" where we'll now shred
data implicitly it's obvious that git-clean is going to shred your data.
Then that't not what I want. If I'm going to mark to keep "config.mak"
around, I'm not going to carefully move it away before doing "git
clean -fdx" then move it back. No "git clean --dry-run" telling me to
make a backup of config.mak is no good.
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help