From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Karthik Nayak <karthik.188@gmail.com>,
git@vger.kernel.org, toon@iotcl.com
Subject: Re: [PATCH v3 0/2] check-attr: add support to work with revisions
Date: Mon, 19 Dec 2022 09:45:34 +0100 [thread overview]
Message-ID: <221219.86fsdb22hb.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <xmqq7cyrm0tr.fsf@gitster.g>
On Sat, Dec 17 2022, Junio C Hamano wrote:
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>> So we could invent that as this series currently does with:
>>
>> git check-attrs --revision <rev> <attr>... <path>...
>>
>> Or, as I suggested:
>>
>> git check-attr [<rev>:]<attr>... -- <path>...
>
> What does <rev>:<attr> really mean? As the syntax for the proposed
> feature, I do not think it makes much sense. For example:
>
> $ git check-attr HEAD:text HEAD^:text -- README.txt
>
> - With which README.txt are we checking the attribute? The one
> taken from HEAD or HEAD^ or the index or the working tree?
All of them, but I do think this rightly points out that the "rev before
path" part of this doesn't make sense, but shouldn't we be making this
work like "git grep" with <rev>/<path> combinations? I.e.:
$ git -P grep -m 1 oid HEAD~:cache.h v2.26.0:cache.h v1.6.0:cache.h
HEAD~:cache.h:#include "oid-array.h"
v2.26.0:cache.h:void git_inflate_init(git_zstream *);
v1.6.0:cache.h:static inline void copy_cache_entry(struct cache_entry *dst, struct cache_entry *src)
I.e. we currently support:
git check-attr [-a | --all | <attr>...] [--] <pathname>...
git check-attr --stdin [-z] [-a | --all | <attr>...]
So if we add to that:
git check-attr --stdin [-z] <rev>:<pathname>...
We'd have this do the right thing:
$ git check-attr diff -- README.md HEAD:git-send-email.perl v1.6.0:git-send-email.perl
README.md: diff: unspecified
HEAD:git-send-email.perl: diff: perl
v1.6.0:git-send-email.perl: diff: perl
Which would technically break backwards compatibility, as we now
"support" it (we just interpret the whole thing as a path), but I think
such revision-looking paths aren't worth worrying about
> - When we say "README.txt has the text attribute", how does the
> user tell which "text" applies to the path? From HEAD? From
> HEAD^?
Regardless of what I'm suggesting here, the "git check-attr" output
already has a one-to-one line output correspondance with its input, so
just as it does now we'd print both.
This looks like a bug though (on master, the missing "\n" is there in
the output):
$ ./git check-attr diffgit-send-email.perl foo.perl git-send-email.perl
foo.perl: diffgit-send-email.perl: unspecified
git-send-email.perl: diffgit-send-email.perl: unspecified
> - Does the same attribute 'text' have different meaning when coming
> from two different tree-ish?
Yes, just like "git grep", we'd need to parse & apply the .gitattributes
for that revision. Whether we call it "<rev>:<path>", "--revision <rev>
<path>" or whatever we'd always want to do that, otherwise what's the
point?
next prev parent reply other threads:[~2022-12-19 8:59 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-16 9:35 [PATCH v3 0/2] check-attr: add support to work with revisions Karthik Nayak
2022-12-16 9:35 ` [PATCH v3 1/2] t0003: move setup for `--all` into new block Karthik Nayak
2022-12-16 9:35 ` [PATCH v3 2/2] attr: add flag `-r|--revisions` to work with revisions Karthik Nayak
2022-12-16 23:45 ` Junio C Hamano
2022-12-17 15:23 ` Karthik Nayak
2022-12-21 6:10 ` Toon Claes
2022-12-17 0:33 ` Junio C Hamano
2022-12-17 15:27 ` Karthik Nayak
2022-12-16 16:17 ` [PATCH v3 0/2] check-attr: add support " Ævar Arnfjörð Bjarmason
2022-12-16 22:38 ` Junio C Hamano
2022-12-19 8:45 ` Ævar Arnfjörð Bjarmason [this message]
2022-12-16 23:28 ` Junio C Hamano
2022-12-17 14:46 ` Karthik Nayak
2022-12-16 23:26 ` Junio C Hamano
2022-12-17 14:49 ` Karthik Nayak
2022-12-17 10:53 ` Phillip Wood
2022-12-17 14:52 ` Karthik Nayak
2022-12-19 9:45 ` Ævar Arnfjörð Bjarmason
2022-12-19 13:16 ` Karthik Nayak
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=221219.86fsdb22hb.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=karthik.188@gmail.com \
--cc=toon@iotcl.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).