On 11/02/22 11:38, Drew Gallatin wrote:


On Fri, Feb 11, 2022 at 4:38 AM Kristof Provost <k...@freebsd.org <mailto:k...@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 <melif...@freebsd.org>
            AuthorDate: 2022-01-08 16:14:47 +0000
            Commit: Alexander V. Chernikov <melif...@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

Reply via email to