oops sent from wrong email identity..

On 22/01/2019 22:35, Philip Oakley wrote:
On 22/01/2019 21:20, Claude Robitaille wrote:
Thanks this help.

I did read the man page, but I am used at seeing the files and locations at the end of the man page the section FILES. My bad to skiping right to the end of the man page. See dnsmasq as an example.

Yes TL;DR..... :-( I skip too quickly on --no-index. But now I understand that it makes check-ignore to "mimic" add.... (even if mimic was not the intent)

But, the description is talking about file and tracked files. It is not obvious for an occasional user to correlate that with "my dir is not checked because something under it is indeed tracked" . Bomttom line, what I am saying is that dir and file are slightly different in the context here and yes my mental model was wrong.

--->
Extra points for you will be on order if you can suggest some better wording for manual pages to help others patch that misunderstanding. The same would apply to a contribution for the git-scm 'book'.

It is a help to the devs to have some real user input...


Philip



Le mar. 22 janv. 2019 à 15:09, Konstantin Khomoutov <kos...@bswap.ru <mailto:kos...@bswap.ru>> a écrit :

    On Tue, Jan 22, 2019 at 10:55:50AM -0800, cl.robitai...@gmail.com
    <mailto:cl.robitai...@gmail.com> wrote:

    > Is there a way to list ALL of the ignore files that a given git
    uses?

    Yes. This list is documented in the gitignore(5) manual page.
    Run `git help ignore` to read it.

    > There are tons of files and locations that git uses and Googling
    only
    > reports a partial list...... in my case, I had, but forgotten, both
    > ~/.gitconfig AND ~/.config/git/ignore. The later was never
    mentioned
    > anywhere on Google but was the culprit of my issue.

    Your general problem is a wrong approach: instead of googling, you
    should better have spent your time contemplating the first two
    paragraphs of the manual page mentioned above.

    > Ok, I know, git check-ignore be used. But not in my case!!! Here
    is an
    > example
    >
    > git add lib
    > The following paths are ignored by one of your .gitignore files:
    > lib
    > Use -f if you really want to add them.
    >
    >
    > git check-ignore lib
    > NO OUTPUT
    >
    >
    > git check-ignore -v -n lib
    > :: lib
    >
    >
    > The 2 git check-ignore clearly say that lib should not be
    ignored (the NO
    > OUTPUT is me writing) while git add ignores it. So, somehow, git
    > check-ignore is misleading. Some files under lib are already
    under control;
    > I probably added lib/ in the ignore long time ago (so that I
    forgot) and
    > MAY be the reason why git check-ignore fails reporting the same
    behaviour
    > as git add. Just a guess though...

    No, you just have a mental model about how `git check-ignore` works
    different from how it's actually implemented.

    Again, reading the manual page of that command should have helped.
    In the intro part of that manual page, we read:

    | By default, tracked files are not shown at all since they are not
    | subject to exclude rules; but see ‘--no-index’.

    So, the reason Git says you have 'lib' ignored when you attempt to
    `git add` it is because you have this directory ignored _and_ have it     included in the commit HEAD points at (what you currently have checked
    out).

    To demonstrate:

      ~$ cd ~/tmp
      tmp$ mkdir zzz
      tmp$ cd zzz
      zzz$ git init .
      Initialized empty Git repository in /home/kostix/tmp/zzz/.git/

      zzz$ touch aaa
      zzz$ git add aaa
      zzz$ git commit aaa
      [master (root-commit) f98e522] boo
       1 file changed, 0 insertions(+), 0 deletions(-)
       create mode 100644 aaa

      zzz$ mkdir lib
      zzz$ touch lib/bbb
      zzz$ git add lib/bbb
      zzz$ git commit
      [master 2a63dbe] trrr
       1 file changed, 0 insertions(+), 0 deletions(-)
       create mode 100644 lib/bbb

      zzz$ echo 'lib/' >.gitignore

      zzz$ git add lib
      The following paths are ignored by one of your .gitignore files:
      lib
      Use -f if you really want to add them.

      zzz$ git check-ignore -v lib

      zzz$ git check-ignore -v -n lib
      ::      lib

    So, that's precisely what you see.

    Now let's add "--no-index" as suggested by the manual page - to ignore
    "lib" even if we have it tracked:

      zzz$ git check-ignore -v --no-index lib
      .gitignore:1:lib/       lib

    It works.


    TL;DR

    1) You have your "lib" directory tracked by Git.
       This means the currently checked out commit have at least a single
       file from that directory (or deeper) included.

    2) You have your "lib" directory ignored.

    The crux here is that the "ignoring" mechanics have nothing to
    with what
    files Git actually tracks (as part of commits). The behaviour of the
    `git check-ignore` may arguably seem weird but it's documented
    nonetheless.

    Hope this helps.

    --     You received this message because you are subscribed to the Google
    Groups "Git for human beings" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to git-users+unsubscr...@googlegroups.com
    <mailto:git-users%2bunsubscr...@googlegroups.com>.
    For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscr...@googlegroups.com <mailto:git-users+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Git for 
human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to