From: Raf Czlonka Subject: Re: make 'got add' robert-compatible To: Stefan Sperling Cc: "Todd C. Miller" , gameoftrees@openbsd.org Date: Wed, 7 Jul 2021 23:18:03 +0100 On Wed, Jul 07, 2021 at 06:14:25PM BST, Stefan Sperling wrote: > On Wed, Jul 07, 2021 at 09:55:16AM -0600, Todd C. Miller wrote: > > On Tue, 06 Jul 2021 17:08:05 +0200, Stefan Sperling wrote: > > > > > Require the -I option to add ignored files to version control > > > even when 'got add' is not recursing into directories with -R. > > > > > > Inspired by robert@ accidentally committing a ./iridium.core file to the > > > CVS ports tree in spite of "*.core" being on cvs's default ignore list. > > > > This sounds safer for "got add *" but what happens if you do "got > > add foo.core"? Is there an error message or will it silently add > > nothing? > > It will print nothing and add nothing. > > Raising an error is a bad idea since the ignored file would usually be > picked up by some wildcard expression and we still want that case to > succeed ('cvs add *' is likely what robert actually did). > > One option is to list ignored files as such, using a new status code. > I've already played with this. An earlier version of my patch printed this: > > $ got add foo.core > I foo.core > $ > > This tells the user why foo.core wasn't added, which on the surface > seems much better than the behaviour implemented by my current patch, > which looks like this: > > $ got add foo.core > $ > > But unless we special-case things the recursive case would then also > report ignored files. Which would look like this: > > $ got add -R . > A README > I foo.core > I obj/bar.o > I obj/foo.o > A src/foo.c > A src/bar.c > I src/bar.c.orig > $ > > Whereas the current output just would be: > > $ got add -R . > A README > A src/foo.c > A src/bar.c > $ > > So this new output for -R would potentially display many more ignored files > than added files which might not be desirable. We could perhaps collapse > ignored directories to make this less of an issue: > > $ got add -R . > A README > I foo.core > I obj/ > A src/foo.c > A src/bar.c > I src/bar.c.orig > $ > > Implementing the above idea would require further internal changes: > The ignores feature currently works by not even calling the status walk > callback on ignored files. The introduction of a new status code 'I' would > require updating all existing consumers of the status crawl (add, delete, > status, and more) to filter out such files. > This is certainly something we could do if we want 'add -R' to display > every file/directory which was ignored. I would not be opposed to this. > I decided against including such changes in the patch under discussion > because the changes bloat up the patch and might as well be done later. > Given that even "*.core" files find their way to OpenBSD repositories[0], a warning or error message at some point is in order, IMHO. [0] https://cvsweb.openbsd.org/ports/tests/portcheck/t5/some.core Regards, Raf