Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Feb 2022 10:02:05 -0500
From:      Drew Gallatin <gallatin@netflix.com>
To:        Renato Botelho <garga@freebsd.org>
Cc:        Kristof Provost <kp@freebsd.org>, Andrew Gallatin <gallatin@cs.duke.edu>,  "Alexander V. Chernikov" <melifaro@freebsd.org>, src-committers@freebsd.org,  dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org,  Conrad Meyer <cem@freebsd.org>, Andriy Gapon <avg@freebsd.org>
Subject:   Re: git: b1f7154cb125 - main - gitignore: ignore vim swap files & .rej/.orig
Message-ID:  <CADLQ3sJhbyCa2KmEKkhfUTPrzCv2nWcjA8CyLdGd-U2wr2ZB%2BQ@mail.gmail.com>
In-Reply-To: <4f4f6a83-3def-4938-6e40-5460486cc415@FreeBSD.org>
References:  <202201170935.20H9ZM3T069547@gitrepo.freebsd.org> <72061959-88f8-d2ee-b4e9-f09ca084411e@cs.duke.edu> <4FC1EDC4-9F20-4271-B468-715A1727AC8A@FreeBSD.org> <CADLQ3sKdAvci47RxK=Vqg4JA0Wff2z9dcuDrByWNdendQu=M%2Bw@mail.gmail.com> <4f4f6a83-3def-4938-6e40-5460486cc415@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
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
>

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

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLQ3sJhbyCa2KmEKkhfUTPrzCv2nWcjA8CyLdGd-U2wr2ZB%2BQ>