gpt4 book ai didi

git - git tree hash 能否用于唯一标识子目录中的特定状态

转载 作者:太空狗 更新时间:2023-10-29 14:00:41 25 4
gpt4 key购买 nike

我想使用 git 树对象中使用的哈希值来唯一标识 git 下子目录的状态,特别是作为工件存储库的索引以避免构建。像这样:

# Get hash for source tree in <path-do-dir>/<dir-name>
git cat-file -p HEAD^{tree}:<path-to-dir> | awk '$4 == "<dir-name>" { print $3 }'

我的问题是这些哈希值是否真正持久。天真的实验表明它有效,但我想知道是否有人真正这样做了。

最佳答案

^{tree}这实际上对你没有任何好处。

还有一个更简单的方法:

git rev-parse HEAD:<path-to-dir>/<dir-name>

例如:

$ git cat-file -p HEAD:t | awk '$4 == "t9604" { print $3 }'
846893f0b08b1fa03a6383c9a4deade32c16e929
$ git rev-parse HEAD:t/t9604
846893f0b08b1fa03a6383c9a4deade32c16e929

树对象的 SHA-1 是树“内容”的校验和,也就是说,它的树性,加上树中所有名称的列表以及它们的模式和类型以及SHA-1 的。所以,是的:它标识目录的状态。它可能会过于强烈地识别它,因为如果树中包含的任何 blob 甚至改变模式(+x-x),它都会改变。

如果你想确保HEAD:<em>path</em>命名一棵树(不是 blob),你可以使用 git cat-file -t关于 rev-parse 的结果(但这里可能不需要)。

关于git - git tree hash 能否用于唯一标识子目录中的特定状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com