这可能更加可靠了:"
git clone
"
(man)从SHA256存储库中克隆使用SHA-1作为默认哈希算法的Git,并通过愚蠢的HTTP协议运行,没有正确设置生成的存储库,但这已在Git 2.32(2021年第二季度,8年后)得到纠正。
请参见 提交 00bc839(2021年5月11日)由Eric Wong(ele828
)提交。
(由Junio C Hamano -- gitster
--在提交 bdff041中合并,于2021年5月20日)
签名-by:Eric Wong
Acked-by:brian m. carlson
The remote-https process needs to update it's own instance of the_repository, when it sees an HTTP(S) remote is using sha256.
Without this, parse_oid_hex()
fails to handle sha256 OIDs when it's eventually called by parse_fetch()
.
Tested with:
git clone https://yhbt.net/sha256test.git
GIT_SMART_HTTP=0 git clone https://yhbt.net/sha256test.git
(plain http:// also works)
Cloning the URL via git:// required no changes
注意:自Git 2.41(2023年第二季度)起,文档对
GIT_DEFAULT_HASH
和“
git clone
”
(man)之间的交互存在误导,现已明确指出该变量应被命令忽略。
请查看提交 5f0e37b(2023年4月26日),由Junio C Hamano(gitster
)提交。
(于2023年5月15日由Junio C Hamano -- gitster
--在提交 b14a730中合并)
文档
:GIT_DEFAULT_HASH
在“clone
”期间将被忽略
“is currently ignored”这个措辞容易被误解为我们希望它被执行。请重新表述,以明确表示实验性变量将被忽略。
从长远来看,在允许增量/逐步迁移对象格式的情况下,即从SHA-1存储库克隆以创建SHA-256存储库(或反之亦然),并在它们之间获取和推送时会双向转换对象格式,很可能我们会教授一个新选项“--object-format”给“
git clone
”
(man),以表示您将使用源默认使用的任何对象格式,但这次我告诉您在我们这边使用这种格式,并根据需要进行即时对象格式转换。
因此,即使发生了这样的扩展,使得我们需要有一种方法来创建使用与源存储库不同的对象格式的新存储库,也完全可以忽略此实验性变量的设置。
git
现在在其man page中包含以下内容:
GIT_DEFAULT_HASH
当克隆时,此值将被忽略,并始终使用远程仓库的设置。默认值为"sha1
"。