Compare commits
No commits in common. "c8" and "c9-beta" have entirely different histories.
@ -1,2 +1,2 @@
|
|||||||
7577a22e233e892dba5cf19a3a57cef2062d01e6 SOURCES/git-2.43.5.tar.sign
|
9a1c24da266ee42b4b8fd32274bae3f5ab3968da SOURCES/git-2.43.0.tar.sign
|
||||||
31decef72034ae36c8098a9e6bb13a7dd4859fd9 SOURCES/git-2.43.5.tar.xz
|
d34f8331e3dcd7d2beb2f4af3e3d6db50b8036f1 SOURCES/git-2.43.0.tar.xz
|
||||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,2 +1,2 @@
|
|||||||
SOURCES/git-2.43.5.tar.sign
|
SOURCES/git-2.43.0.tar.sign
|
||||||
SOURCES/git-2.43.5.tar.xz
|
SOURCES/git-2.43.0.tar.xz
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
diff -ur a/git-instaweb.sh b/git-instaweb.sh
|
|
||||||
--- a/git-instaweb.sh 2020-04-20 17:52:30.000000000 +0200
|
|
||||||
+++ b/git-instaweb.sh 2020-05-27 12:36:20.725300334 +0200
|
|
||||||
@@ -36,7 +36,7 @@
|
|
||||||
# Defaults:
|
|
||||||
|
|
||||||
# if installed, it doesn't need further configuration (module_path)
|
|
||||||
-test -z "$httpd" && httpd='lighttpd -f'
|
|
||||||
+test -z "$httpd" && httpd='httpd -f'
|
|
||||||
|
|
||||||
# Default is @@GITWEBDIR@@
|
|
||||||
test -z "$root" && root='@@GITWEBDIR@@'
|
|
@ -1,115 +0,0 @@
|
|||||||
From 51441e6460b505c07b4a8a6deeaa7de4bf6e8e33 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Junio C Hamano <gitster@pobox.com>
|
|
||||||
Date: Fri, 3 May 2024 08:34:27 -0700
|
|
||||||
Subject: [PATCH] stop using HEAD for attributes in bare repository by default
|
|
||||||
|
|
||||||
With 23865355 (attr: read attributes from HEAD when bare repo,
|
|
||||||
2023-10-13), we started to use the HEAD tree as the default
|
|
||||||
attribute source in a bare repository. One argument for such a
|
|
||||||
behaviour is that it would make things like "git archive" run in
|
|
||||||
bare and non-bare repositories for the same commit consistent.
|
|
||||||
This changes was merged to Git 2.43 but without an explicit mention
|
|
||||||
in its release notes.
|
|
||||||
|
|
||||||
It turns out that this change destroys performance of shallowly
|
|
||||||
cloning from a bare repository. As the "server" installations are
|
|
||||||
expected to be mostly bare, and "git pack-objects", which is the
|
|
||||||
core of driving the other side of "git clone" and "git fetch" wants
|
|
||||||
to see if a path is set not to delta with blobs from other paths via
|
|
||||||
the attribute system, the change forces the server side to traverse
|
|
||||||
the tree of the HEAD commit needlessly to find if each and every
|
|
||||||
paths the objects it sends out has the attribute that controls the
|
|
||||||
deltification. Given that (1) most projects do not configure such
|
|
||||||
an attribute, and (2) it is dubious for the server side to honor
|
|
||||||
such an end-user supplied attribute anyway, this was a poor choice
|
|
||||||
of the default.
|
|
||||||
|
|
||||||
To mitigate the current situation, let's revert the change that uses
|
|
||||||
the tree of HEAD in a bare repository by default as the attribute
|
|
||||||
source. This will help most people who have been happy with the
|
|
||||||
behaviour of Git 2.42 and before.
|
|
||||||
|
|
||||||
Two things to note:
|
|
||||||
|
|
||||||
* If you are stuck with versions of Git 2.43 or newer, that is
|
|
||||||
older than the release this fix appears in, you can explicitly
|
|
||||||
set the attr.tree configuration variable to point at an empty
|
|
||||||
tree object, i.e.
|
|
||||||
|
|
||||||
$ git config attr.tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
|
||||||
|
|
||||||
* If you like the behaviour we are reverting, you can explicitly
|
|
||||||
set the attr.tree configuration variable to HEAD, i.e.
|
|
||||||
|
|
||||||
$ git config attr.tree HEAD
|
|
||||||
|
|
||||||
The right fix for this is to optimize the code paths that allow
|
|
||||||
accesses to attributes in tree objects, but that is a much more
|
|
||||||
involved change and is left as a longer-term project, outside the
|
|
||||||
scope of this "first step" fix.
|
|
||||||
|
|
||||||
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
||||||
---
|
|
||||||
attr.c | 7 -------
|
|
||||||
t/t0003-attributes.sh | 10 ++++++++--
|
|
||||||
t/t5001-archive-attr.sh | 3 ++-
|
|
||||||
3 files changed, 10 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/attr.c b/attr.c
|
|
||||||
index e62876dfd3e9be..02ab8436266289 100644
|
|
||||||
--- a/attr.c
|
|
||||||
+++ b/attr.c
|
|
||||||
@@ -1213,13 +1213,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 aee2298f01331a..5de46ddf67f7ff 100755
|
|
||||||
--- a/t/t0003-attributes.sh
|
|
||||||
+++ b/t/t0003-attributes.sh
|
|
||||||
@@ -384,13 +384,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 eaf959d8f63f15..7310774af5efea 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
|
|
||||||
'
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
|||||||
shopt -s failglob
|
shopt -s failglob
|
||||||
|
|
||||||
# Print output from failing tests
|
# Print output from failing tests
|
||||||
dashes=$(printf "%80s" '' | tr ' ' '-')
|
printf -v sep "%0.s-" {1..80}
|
||||||
for exit_file in t/test-results/*.exit; do
|
for exit_file in t/test-results/*.exit; do
|
||||||
[ "$(cat "$exit_file")" -eq 0 ] && continue
|
[ "$(< "$exit_file")" -eq 0 ] && continue
|
||||||
out_file="${exit_file%exit}out"
|
out_file="${exit_file%exit}out"
|
||||||
printf '\n%s\n%s\n%s\n' "$dashes" "$out_file" "$dashes"
|
printf '\n%s\n%s\n%s\n' "$sep" "$out_file" "$sep"
|
||||||
cat "$out_file"
|
cat "$out_file"
|
||||||
done
|
done
|
||||||
exit 1
|
exit 1
|
||||||
|
1579
SPECS/git.spec
1579
SPECS/git.spec
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user