Accepting request 1077726 from home:adamm:branches:devel:tools:scm
- sha256_clone_fix.patch: fix cloning of empty sha256 repositories OBS-URL: https://build.opensuse.org/request/show/1077726 OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm/git?expand=0&rev=612
This commit is contained in:
parent
cac22aa92d
commit
61bfe16c0b
@ -1,3 +1,8 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 6 10:51:06 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- sha256_clone_fix.patch: fix cloning of empty sha256 repositories
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Mar 13 20:08:03 UTC 2023 - Andreas Stieger <andreas.stieger@gmx.de>
|
Mon Mar 13 20:08:03 UTC 2023 - Andreas Stieger <andreas.stieger@gmx.de>
|
||||||
|
|
||||||
|
1
git.spec
1
git.spec
@ -61,6 +61,7 @@ Patch4: git-prevent_xss-default.diff
|
|||||||
Patch6: git-tcsh-completion-fixes.diff
|
Patch6: git-tcsh-completion-fixes.diff
|
||||||
Patch8: git-asciidoc.patch
|
Patch8: git-asciidoc.patch
|
||||||
Patch10: setup-don-t-fail-if-commondir-reference-is-deleted.patch
|
Patch10: setup-don-t-fail-if-commondir-reference-is-deleted.patch
|
||||||
|
Patch11: sha256_clone_fix.patch
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: gpg2
|
BuildRequires: gpg2
|
||||||
BuildRequires: libcurl-devel
|
BuildRequires: libcurl-devel
|
||||||
|
76
sha256_clone_fix.patch
Normal file
76
sha256_clone_fix.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
commit 8b214c2e9dda8fc5b8d49b978fd2c155b7596cd0
|
||||||
|
Author: Junio C Hamano <gitster@pobox.com>
|
||||||
|
Date: Wed Apr 5 14:15:33 2023 -0700
|
||||||
|
|
||||||
|
clone: propagate object-format when cloning from void
|
||||||
|
|
||||||
|
A user could prepare an empty repository and set it to use SHA256 as
|
||||||
|
the object format. The new repository created by "git clone" from
|
||||||
|
such a repository however would not record that it is expecting
|
||||||
|
objects in the same SHA256 format. This works as expected if the
|
||||||
|
source repository is not empty.
|
||||||
|
|
||||||
|
Just like we started copying the name of the primary branch from the
|
||||||
|
remote repository even if it is unborn in 3d8314f8 (clone: propagate
|
||||||
|
empty remote HEAD even with other branches, 2022-07-07), lift the
|
||||||
|
code that records the object format out of the block executed only
|
||||||
|
when cloning from an instantiated repository, so that it works also
|
||||||
|
when cloning from an empty repository.
|
||||||
|
|
||||||
|
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
||||||
|
|
||||||
|
diff --git a/builtin/clone.c b/builtin/clone.c
|
||||||
|
index 462c286274..8f16d18a43 100644
|
||||||
|
--- a/builtin/clone.c
|
||||||
|
+++ b/builtin/clone.c
|
||||||
|
@@ -910,6 +910,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||||
|
int err = 0, complete_refs_before_fetch = 1;
|
||||||
|
int submodule_progress;
|
||||||
|
int filter_submodules = 0;
|
||||||
|
+ int hash_algo;
|
||||||
|
|
||||||
|
struct transport_ls_refs_options transport_ls_refs_options =
|
||||||
|
TRANSPORT_LS_REFS_OPTIONS_INIT;
|
||||||
|
@@ -1298,15 +1299,15 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (mapped_refs) {
|
||||||
|
- int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* Now that we know what algorithm the remote side is using,
|
||||||
|
* let's set ours to the same thing.
|
||||||
|
*/
|
||||||
|
- initialize_repository_version(hash_algo, 1);
|
||||||
|
- repo_set_hash_algo(the_repository, hash_algo);
|
||||||
|
+ hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
|
||||||
|
+ initialize_repository_version(hash_algo, 1);
|
||||||
|
+ repo_set_hash_algo(the_repository, hash_algo);
|
||||||
|
+
|
||||||
|
+ if (mapped_refs) {
|
||||||
|
/*
|
||||||
|
* transport_get_remote_refs() may return refs with null sha-1
|
||||||
|
* in mapped_refs (see struct transport->get_refs_list
|
||||||
|
diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
|
||||||
|
index 71aabe30b7..6af5c2062f 100755
|
||||||
|
--- a/t/t5702-protocol-v2.sh
|
||||||
|
+++ b/t/t5702-protocol-v2.sh
|
||||||
|
@@ -269,6 +269,17 @@ test_expect_success 'clone propagates unborn HEAD from non-empty repo' '
|
||||||
|
grep "warning: remote HEAD refers to nonexistent ref" stderr
|
||||||
|
'
|
||||||
|
|
||||||
|
+test_expect_success 'clone propagates object-format from empty repo' '
|
||||||
|
+ test_when_finished "rm -fr src256 dst256" &&
|
||||||
|
+
|
||||||
|
+ echo sha256 >expect &&
|
||||||
|
+ git init --object-format=sha256 src256 &&
|
||||||
|
+ git clone src256 dst256 &&
|
||||||
|
+ git -C dst256 rev-parse --show-object-format >actual &&
|
||||||
|
+
|
||||||
|
+ test_cmp expect actual
|
||||||
|
+'
|
||||||
|
+
|
||||||
|
test_expect_success 'bare clone propagates unborn HEAD from non-empty repo' '
|
||||||
|
test_when_finished "rm -rf file_unborn_parent file_unborn_child.git" &&
|
||||||
|
|
Loading…
Reference in New Issue
Block a user