From: Brandon Williams <bmwill@google.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: Git List <git@vger.kernel.org>, ben.boeckel@kitware.com
Subject: Re: [PATCH] diff-tree: read the index so attribute checks work in bare repositories
Date: Wed, 6 Dec 2017 14:00:55 -0800 [thread overview]
Message-ID: <20171206220055.GB118027@google.com> (raw)
In-Reply-To: <CAPig+cS6zf3AvQVi7PZf=ignL-7JZKzYUyN9RoJSPZzL=Dj7FA@mail.gmail.com>
On 12/05, Eric Sunshine wrote:
> On Tue, Dec 5, 2017 at 5:13 PM, Brandon Williams <bmwill@google.com> wrote:
> > A regression was introduced in 557a5998d (submodule: remove
> > gitmodules_config, 2017-08-03) to how attribute processing was handled
> > in bare repositories when running the diff-tree command.
> >
> > By default the attribute system will first try to read ".gitattribute"
> > files from the working tree and then falls back to reading them from the
> > index if there isn't a copy checked out in the worktree. Prior to
> > 557a5998d the index was read as a side effect of the call to
> > 'gitmodules_config()' which ensured that the index was already populated
> > before entering the attribute subsystem.
> >
> > Since the call to 'gitmodules_config()' was removed the index is no
> > longer being read so when the attribute system tries to read from the
> > in-memory index it doesn't find any ".gitattribute" entries effectively
> > ignoring any configured attributes.
> >
> > Fix this by explicitly reading the index during the setup of diff-tree.
>
> This commit message does a good job of explaining the issue, so
> someone who hasn't followed the thread (or has not followed it
> closely, like me) can understand the problem and solution. Thanks.
>
> A few comments below...
>
> > Reported-by: Ben Boeckel <ben.boeckel@kitware.com>
> > Signed-off-by: Brandon Williams <bmwill@google.com>
> > ---
> > diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c
> > @@ -110,6 +110,7 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
> >
> > git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
> > init_revisions(opt, prefix);
> > + read_cache();
>
> 557a5998d (submodule: remove gitmodules_config, 2017-08-03) touched a
> fair number of built-in commands. It's not clear from the current
> patch's commit message if diff-tree is the only command which
> regressed. Is it? Or are other commands also likely to have regressed?
> Perhaps the commit message could say something about this. For
> instance: "All other commands touched by 557a5998d have been audited
> and were found to be regression-free" or "Other commands may regress
> in the same way, but we will take a wait-and-see attitude and fix them
> as needed because <fill-in-reason>".
I don't know if any other commands have regressed. This was such an odd
regression that I think it would be difficult to say for certain that
there couldn't be others. I did go through the affected builtins to see
if I could find anything. I came up empty handed so I think we should
be ok.
>
> > diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh
> > @@ -636,6 +636,23 @@ test_expect_success 'check with space before tab in indent (diff-tree)' '
> > +test_expect_success 'check with ignored trailing whitespace attr (diff-tree)' '
> > + test_when_finished "git reset --hard HEAD^" &&
>
> A few style nits...
>
> > + # Create a whitespace error that should be ignored.
>
> Comments in nearby tests are not capitalized and do not end with period.
>
> > + echo "* -whitespace" > ".gitattributes" &&
>
> Please drop unnecessary quotes around the filename, as the extra noise
> makes it a bit harder to read. Also, lose space after redirection
> operator:
>
> echo "* -whitespace" >.gitattributes &&
>
> > + git add ".gitattributes" &&
> > + echo "trailing space -> " > "trailing-space" &&
>
> All the nearby tests use some variation of:
>
> echo "foo (); " >x &&
>
> which differs from the "trailing space ->" and filename
> 'trailing-space' used in this test. Lack of consistency makes this new
> test stick out like a sore thumb.
You're right, when writing the tests I didn't really consider the
surrounding ones. I'll make the requested changes.
>
> > + git add "trailing-space" &&
> > + git commit -m "trailing space" &&
> > +
> > + # With a worktree diff-tree ignores the whitespace error
> > + git diff-tree --root --check HEAD &&
> > +
> > + # Without a worktree diff-tree still ignores the whitespace error
> > + git -C .git diff-tree --root --check HEAD
> > +'
--
Brandon Williams
next prev parent reply other threads:[~2017-12-06 22:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-04 21:22 gitattributes not read for diff-tree anymore in 2.15? Ben Boeckel
2017-12-04 23:03 ` Brandon Williams
2017-12-05 15:42 ` Ben Boeckel
2017-12-05 18:16 ` Brandon Williams
2017-12-05 19:48 ` Ben Boeckel
2017-12-05 22:13 ` [PATCH] diff-tree: read the index so attribute checks work in bare repositories Brandon Williams
2017-12-05 22:29 ` Ben Boeckel
2017-12-05 22:31 ` Brandon Williams
2017-12-05 23:13 ` Junio C Hamano
2017-12-05 23:14 ` Stefan Beller
2017-12-06 21:47 ` Brandon Williams
2017-12-05 23:25 ` Eric Sunshine
2017-12-06 22:00 ` Brandon Williams [this message]
2017-12-06 22:07 ` Eric Sunshine
2017-12-06 22:02 ` [PATCH v2] " Brandon Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171206220055.GB118027@google.com \
--to=bmwill@google.com \
--cc=ben.boeckel@kitware.com \
--cc=git@vger.kernel.org \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.