diff options
author | Karthik Nayak <karthik.188@gmail.com> | 2023-01-14 09:30:38 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-01-14 08:49:55 -0800 |
commit | 47cfc9bd7d0add617cf6d928e96b7d207be614f1 (patch) | |
tree | 72af9265a72d2b08913a8bb1eb252e80fd7ebe29 /Documentation/git-check-attr.txt | |
parent | c847e8c228a7820f11ce66d82dc68cd2241af031 (diff) | |
download | git-47cfc9bd7d0add617cf6d928e96b7d207be614f1.tar.gz |
attr: add flag `--source` to work with tree-ish
The contents of the .gitattributes files may evolve over time, but "git
check-attr" always checks attributes against them in the working tree
and/or in the index. It may be beneficial to optionally allow the users
to check attributes taken from a commit other than HEAD against paths.
Add a new flag `--source` which will allow users to check the
attributes against a commit (actually any tree-ish would do). When the
user uses this flag, we go through the stack of .gitattributes files but
instead of checking the current working tree and/or in the index, we
check the blobs from the provided tree-ish object. This allows the
command to also be used in bare repositories.
Since we use a tree-ish object, the user can pass "--source
HEAD:subdirectory" and all the attributes will be looked up as if
subdirectory was the root directory of the repository.
We cannot simply use the `<rev>:<path>` syntax without the `--source`
flag, similar to how it is used in `git show` because any non-flag
parameter before `--` is treated as an attribute and any parameter after
`--` is treated as a pathname.
The change involves creating a new function `read_attr_from_blob`, which
given the path reads the blob for the path against the provided source and
parses the attributes line by line. This function is plugged into
`read_attr()` function wherein we go through the stack of attributes
files.
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Toon Claes <toon@iotcl.com>
Co-authored-by: toon@iotcl.com
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'Documentation/git-check-attr.txt')
-rw-r--r-- | Documentation/git-check-attr.txt | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Documentation/git-check-attr.txt b/Documentation/git-check-attr.txt index 84f41a8e82..6e4f3aaf34 100644 --- a/Documentation/git-check-attr.txt +++ b/Documentation/git-check-attr.txt @@ -9,8 +9,8 @@ git-check-attr - Display gitattributes information SYNOPSIS -------- [verse] -'git check-attr' [-a | --all | <attr>...] [--] <pathname>... -'git check-attr' --stdin [-z] [-a | --all | <attr>...] +'git check-attr' [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>... +'git check-attr' --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...] DESCRIPTION ----------- @@ -36,6 +36,11 @@ OPTIONS If `--stdin` is also given, input paths are separated with a NUL character instead of a linefeed character. +--source=<tree-ish>:: + Check attributes against the specified tree-ish. It is common to + specify the source tree by naming a commit, branch or tag associated + with it. + \--:: Interpret all preceding arguments as attributes and all following arguments as path names. |