mirror of
https://github.com/git/git
synced 2024-11-05 01:58:18 +00:00
attr: read attributes from HEAD when bare repo
The motivation for44451a2e5e
(attr: teach "--attr-source=<tree>" global option to "git" , 2023-05-06), was to make it possible to use gitattributes with bare repositories. To make it easier to read gitattributes in bare repositories however, let's just make HEAD:.gitattributes the default. This is in line with how mailmap works,8c473cecfd
(mailmap: default mailmap.blob in bare repositories, 2012-12-13). Signed-off-by: John Cai <johncai86@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
43c8a30d15
commit
2386535511
3 changed files with 23 additions and 2 deletions
12
attr.c
12
attr.c
|
@ -1173,6 +1173,7 @@ static void collect_some_attrs(struct index_state *istate,
|
|||
}
|
||||
|
||||
static const char *default_attr_source_tree_object_name;
|
||||
static int ignore_bad_attr_tree;
|
||||
|
||||
void set_git_attr_source(const char *tree_object_name)
|
||||
{
|
||||
|
@ -1184,10 +1185,19 @@ static void compute_default_attr_source(struct object_id *attr_source)
|
|||
if (!default_attr_source_tree_object_name)
|
||||
default_attr_source_tree_object_name = getenv(GIT_ATTR_SOURCE_ENVIRONMENT);
|
||||
|
||||
if (!default_attr_source_tree_object_name &&
|
||||
startup_info->have_repository &&
|
||||
is_bare_repository()) {
|
||||
default_attr_source_tree_object_name = "HEAD";
|
||||
ignore_bad_attr_tree = 1;
|
||||
}
|
||||
|
||||
if (!default_attr_source_tree_object_name || !is_null_oid(attr_source))
|
||||
return;
|
||||
|
||||
if (repo_get_oid_treeish(the_repository, default_attr_source_tree_object_name, attr_source))
|
||||
if (repo_get_oid_treeish(the_repository,
|
||||
default_attr_source_tree_object_name,
|
||||
attr_source) && !ignore_bad_attr_tree)
|
||||
die(_("bad --attr-source or GIT_ATTR_SOURCE"));
|
||||
}
|
||||
|
||||
|
|
|
@ -342,6 +342,17 @@ test_expect_success 'bare repository: check that .gitattribute is ignored' '
|
|||
)
|
||||
'
|
||||
|
||||
|
||||
test_expect_success 'bare repo defaults to reading .gitattributes from HEAD' '
|
||||
test_when_finished rm -rf test bare_with_gitattribute &&
|
||||
git init test &&
|
||||
test_commit -C test gitattributes .gitattributes "f/path test=val" &&
|
||||
git clone --bare test bare_with_gitattribute &&
|
||||
echo "f/path: test: val" >expect &&
|
||||
git -C bare_with_gitattribute check-attr test -- f/path >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'bare repository: with --source' '
|
||||
(
|
||||
cd bare.git &&
|
||||
|
|
|
@ -138,7 +138,7 @@ test_expect_success 'git archive with worktree attributes, bare' '
|
|||
'
|
||||
|
||||
test_expect_missing bare-worktree/ignored
|
||||
test_expect_exists bare-worktree/ignored-by-tree
|
||||
test_expect_missing bare-worktree/ignored-by-tree
|
||||
test_expect_exists bare-worktree/ignored-by-worktree
|
||||
|
||||
test_expect_success 'export-subst' '
|
||||
|
|
Loading…
Reference in a new issue