Date: Fri, 11 Feb 2022 09:38:24 -0500 From: Drew Gallatin <gallatin@netflix.com> To: Kristof Provost <kp@freebsd.org> Cc: 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: <CADLQ3sKdAvci47RxK=Vqg4JA0Wff2z9dcuDrByWNdendQu=M%2Bw@mail.gmail.com> In-Reply-To: <4FC1EDC4-9F20-4271-B468-715A1727AC8A@FreeBSD.org> References: <202201170935.20H9ZM3T069547@gitrepo.freebsd.org> <72061959-88f8-d2ee-b4e9-f09ca084411e@cs.duke.edu> <4FC1EDC4-9F20-4271-B468-715A1727AC8A@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Fri, Feb 11, 2022 at 4:38 AM Kristof Provost <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$ > > 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. Drew [-- Attachment #2 --] <div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 11, 2022 at 4:38 AM Kristof Provost <<a href="mailto:kp@freebsd.org">kp@freebsd.org</a>> 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"><u></u> <div><div style="font-family:sans-serif"><div style="white-space:normal"> <p dir="auto">On 11 Feb 2022, at 2:25, Andrew Gallatin wrote:</p> </div><div style="white-space:normal"><blockquote style="margin:0px 0px 5px;padding-left:5px;border-left:2px solid rgb(19,107,206);color:rgb(19,107,206)"><p dir="auto">On 1/17/22 04:35, Alexander V. Chernikov wrote:</p> <blockquote style="margin:0px 0px 5px;padding-left:5px;border-left:2px solid rgb(75,137,207);color:rgb(75,137,207)"><p dir="auto">The branch main has been updated by melifaro:</p> <p dir="auto">URL: <a href="https://urldefense.com/v3/__https://cgit.FreeBSD.org/src/commit/?id=b1f7154cb12517162a51d19ae19ec3f2dee88e11__;!!OToaGQ!4Lozvj8S2Opxre6qHuywX_aNhwm1heXl1CyQyb0N5f_fiBJEkTQGhLzE7KlqqP9C7A$" target="_blank">https://urldefense.com/v3/__https://cgit.FreeBSD.org/src/commit/?id=b1f7154cb12517162a51d19ae19ec3f2dee88e11__;!!OToaGQ!4Lozvj8S2Opxre6qHuywX_aNhwm1heXl1CyQyb0N5f_fiBJEkTQGhLzE7KlqqP9C7A$</a></p> <p dir="auto">commit b1f7154cb12517162a51d19ae19ec3f2dee88e11 <br> Author: Alexander V. Chernikov <melifaro@FreeBSD.org> <br> AuthorDate: 2022-01-08 16:14:47 +0000 <br> Commit: Alexander V. Chernikov <melifaro@FreeBSD.org> <br> CommitDate: 2022-01-17 09:35:15 +0000</p> <p dir="auto"> gitignore: ignore vim swap files & .rej/.orig <br> Reviewed by: cem, avg <br> MFC after: 2 weeks</p> </blockquote><p dir="auto">Hi,</p> <p dir="auto">I was wondering if you might consider reverting this change? <br> Alternatively, can you teach me how to override this file <br> locally without carrying a diff?</p> <p dir="auto">I'm asking because this makes life painful for my workflow.</p> <p dir="auto">Having git clean be able to handle .orig and .rej is incredibly <br> handy when applying large patch sets. It makes finding a rejected <br> patch as simple as 'git clean -n | grep rej'.</p> <br></blockquote></div> <div style="white-space:normal"> <p dir="auto">Would ‘git clean -n -x’ work for you?</p> <pre style="margin-left:15px;margin-right:15px;padding:5px;border:thin solid gray;overflow-x:auto;max-width:90vw;background-color:rgb(228,228,228)"><code> -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. </code></pre> <p dir="auto"></p></div></div></div></blockquote><div><br></div><div>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.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:sans-serif"><div style="white-space:normal"><p dir="auto">Alternatively, the gitignore(5) man page also mentions that patterns can be listed in</p> <pre style="margin-left:15px;margin-right:15px;padding:5px;border:thin solid gray;overflow-x:auto;max-width:90vw;background-color:rgb(228,228,228)"><code> • Patterns read from $GIT_DIR/info/exclude. • Patterns read from the file specified by the configuration variable core.excludesFile. </code></pre> <p dir="auto">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:</p> <pre style="margin-left:15px;margin-right:15px;padding:5px;border:thin solid gray;overflow-x:auto;max-width:90vw;background-color:rgb(228,228,228)"><code> • 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". </code></pre> <p dir="auto">Kristof</p></div></div></div></blockquote><div><br></div><div>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:</div><div><br></div><div><span style="font-family:monospace"><9:32am>beast/gallatin:work1>kdump | grep NAMI | egrep exclude\|gitignore | head<br> 42947 git NAMI "/home/gallatin/.gitignore"<br> 42947 git NAMI "/home/gallatin/.gitignore"<br> 42947 git NAMI "/data/ocafirmware/.git/info/exclude"<br> 42947 git NAMI "/data/ocafirmware/.git/info/exclude"<br> 42947 git NAMI ".gitignore"<br> 42947 git NAMI "FreeBSD/.gitignore"</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">9:34am>beast/gallatin:work1>cat ~/.gitignore <br>!*.orig<br>!*.rej<br><br><9:35am>beast/gallatin:work1>git clean -n | grep rej<br><9:35am>beast/gallatin:work1>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><div>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.</div><div><br></div><div>Drew<br></div><div> </div></div></div>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLQ3sKdAvci47RxK=Vqg4JA0Wff2z9dcuDrByWNdendQu=M%2Bw>
