Re: git: b1f7154cb125 - main - gitignore: ignore vim swap files & .rej/.orig

From: Drew Gallatin <gallatin_at_netflix.com>
Date: Fri, 11 Feb 2022 15:02:05 UTC
I think that has the same problem.  Either that, or I'm doing the escaping
wrong.  Using tcsh:

<10:01am>beast/gallatin:work1>git clean -ne '\!\*.orig'
Would remove ktrace.out
<10:01am>beast/gallatin:work1>git clean -xn | grep rej
Would remove FreeBSD/sys/dev/mlx5/mlx5_en/en_hw_tls.h.rej

On Fri, Feb 11, 2022 at 9:58 AM Renato Botelho <garga@freebsd.org> wrote:

> On 11/02/22 11:38, Drew Gallatin wrote:
> >
> >
> > On Fri, Feb 11, 2022 at 4:38 AM Kristof Provost <kp@freebsd.org
> > <mailto:kp@freebsd.org>> wrote:
> >
> >     __
> >
> >     On 11 Feb 2022, at 2:25, Andrew Gallatin wrote:
> >
> >         On 1/17/22 04:35, Alexander V. Chernikov wrote:
> >
> >             The branch main has been updated by melifaro:
> >
> >             URL:
> >
> https://urldefense.com/v3/__https://cgit.FreeBSD.org/src/commit/?id=b1f7154cb12517162a51d19ae19ec3f2dee88e11__;!!OToaGQ!4Lozvj8S2Opxre6qHuywX_aNhwm1heXl1CyQyb0N5f_fiBJEkTQGhLzE7KlqqP9C7A$
> >             <
> https://urldefense.com/v3/__https://cgit.FreeBSD.org/src/commit/?id=b1f7154cb12517162a51d19ae19ec3f2dee88e11__;!!OToaGQ!4Lozvj8S2Opxre6qHuywX_aNhwm1heXl1CyQyb0N5f_fiBJEkTQGhLzE7KlqqP9C7A$
> >
> >
> >             commit b1f7154cb12517162a51d19ae19ec3f2dee88e11
> >             Author: Alexander V. Chernikov <melifaro@FreeBSD.org>
> >             AuthorDate: 2022-01-08 16:14:47 +0000
> >             Commit: Alexander V. Chernikov <melifaro@FreeBSD.org>
> >             CommitDate: 2022-01-17 09:35:15 +0000
> >
> >             gitignore: ignore vim swap files & .rej/.orig
> >             Reviewed by: cem, avg
> >             MFC after: 2 weeks
> >
> >         Hi,
> >
> >         I was wondering if you might consider reverting this change?
> >         Alternatively, can you teach me how to override this file
> >         locally without carrying a diff?
> >
> >         I'm asking because this makes life painful for my workflow.
> >
> >         Having git clean be able to handle .orig and .rej is incredibly
> >         handy when applying large patch sets. It makes finding a rejected
> >         patch as simple as 'git clean -n | grep rej'.
> >
> >
> >     Would ‘git clean -n -x’ work for you?
> >
> >     |-x Don’t use the standard ignore rules (see gitignore(5)), but
> >     still use the ignore rules given with -e options from the command
> >     line. This allows removing all untracked files, including build
> >     products. This can be used (possibly in conjunction with git restore
> >     or git reset) to create a pristine working directory to test a clean
> >     build. |
> >
> >
> > Yes, except it would delete our .obj directories, which I don't want.
> > The -x is how I figured out the .gitignore had been changed.
> >
> >     Alternatively, the gitignore(5) man page also mentions that patterns
> >     can be listed in
> >
> >     |• Patterns read from $GIT_DIR/info/exclude. • Patterns read from
> >     the file specified by the configuration variable core.excludesFile. |
> >
> >     So I’d think you can overrule things you don’t like from the repo
> >     gitignore file in $GIT_DIR/info/exclude or in your global git
> >     configuration, especially combined with this:
> >
> >     |• An optional prefix "!" which negates the pattern; any matching
> >     file excluded by a previous pattern will become included again. It
> >     is not possible to re-include a file if a parent directory of that
> >     file is excluded. Git doesn’t list excluded directories for
> >     performance reasons, so any patterns on contained files have no
> >     effect, no matter where they are defined. Put a backslash ("\") in
> >     front of the first "!" for patterns that begin with a literal "!",
> >     for example, "\!important!.txt". |
> >
> >     Kristof
> >
> >
> > The problem seems to be that all of these solutions are processed
> > *FIRST*, before a .gitignore in the repo, so they cannot be used to
> > negate a gitignore rule in the repo.  Eg:
> >
> > <9:32am>beast/gallatin:work1>kdump | grep NAMI | egrep
> > exclude\|gitignore | head
> >   42947 git      NAMI  "/home/gallatin/.gitignore"
> >   42947 git      NAMI  "/home/gallatin/.gitignore"
> >   42947 git      NAMI  "/data/ocafirmware/.git/info/exclude"
> >   42947 git      NAMI  "/data/ocafirmware/.git/info/exclude"
> >   42947 git      NAMI  ".gitignore"
> >   42947 git      NAMI  "FreeBSD/.gitignore"
> >
> > 9:34am>beast/gallatin:work1>cat ~/.gitignore
> > !*.orig
> > !*.rej
> >
> > <9:35am>beast/gallatin:work1>git clean -n | grep rej
> > <9:35am>beast/gallatin:work1>git clean -xn | grep rej
> > Would remove FreeBSD/sys/dev/mlx5/mlx5_en/en_hw_tls.h.rej
> >
> > This makes a stronger case that those who want to ignore .orig and .rej
> > files can add them to *their* local .gitignore, and we should back them
> > out of the .gitignore for the project.
>
> What about -e parameter?  Something like:
>
> git clean -x -e '*.obj'
>
> --
> Renato Botelho
>