diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-05-13 10:19:46 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-05-13 10:19:46 -0700 |
commit | b077cf2679bd9127457b1afe2b05dfcebdae00cd (patch) | |
tree | 324db3722adc676fc19f8d799cc48ff35e042683 | |
parent | dddddea4b52efabbeeefe0aa1fb6362dd6001a53 (diff) | |
parent | 51441e6460b505c07b4a8a6deeaa7de4bf6e8e33 (diff) | |
download | git-b077cf2679bd9127457b1afe2b05dfcebdae00cd.tar.gz |
Merge branch 'jc/no-default-attr-tree-in-bare'
Git 2.43 started using the tree of HEAD as the source of attributes
in a bare repository, which has severe performance implications.
For now, revert the change, without ripping out a more explicit
support for the attr.tree configuration variable.
* jc/no-default-attr-tree-in-bare:
stop using HEAD for attributes in bare repository by default
-rw-r--r-- | attr.c | 7 | ||||
-rwxr-xr-x | t/t0003-attributes.sh | 10 | ||||
-rwxr-xr-x | t/t5001-archive-attr.sh | 3 |
3 files changed, 10 insertions, 10 deletions
@@ -1222,13 +1222,6 @@ static void compute_default_attr_source(struct object_id *attr_source) ignore_bad_attr_tree = 1; } - 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; diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh index b007f76fd6..71f082836a 100755 --- a/t/t0003-attributes.sh +++ b/t/t0003-attributes.sh @@ -398,13 +398,19 @@ test_expect_success 'bad attr source defaults to reading .gitattributes file' ' ) ' -test_expect_success 'bare repo defaults to reading .gitattributes from HEAD' ' +test_expect_success 'bare repo no longer 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 && + + echo "f/path: test: unspecified" >expect && git -C bare_with_gitattribute check-attr test -- f/path >actual && + test_cmp expect actual && + + echo "f/path: test: val" >expect && + git -C bare_with_gitattribute -c attr.tree=HEAD \ + check-attr test -- f/path >actual && test_cmp expect actual ' diff --git a/t/t5001-archive-attr.sh b/t/t5001-archive-attr.sh index eaf959d8f6..7310774af5 100755 --- a/t/t5001-archive-attr.sh +++ b/t/t5001-archive-attr.sh @@ -133,7 +133,8 @@ test_expect_success 'git archive vs. bare' ' ' test_expect_success 'git archive with worktree attributes, bare' ' - (cd bare && git archive --worktree-attributes HEAD) >bare-worktree.tar && + (cd bare && + git -c attr.tree=HEAD archive --worktree-attributes HEAD) >bare-worktree.tar && (mkdir bare-worktree && cd bare-worktree && "$TAR" xf -) <bare-worktree.tar ' |