我怎么知道下面的blob,e.例如,提取物如下:
["text", "143e875f50d1f6b645750cfc3d146842a3644eaa",30,40,"89/accfaa73947d063acb5e4dccf6a4816226e1ec"]
浸提液
echo "Get all blobs > ${fileSizeThreshold} bytes."
git rev-list --objects "${what}" \
| git cat-file --batch-check='"%(objecttype)","%(objectname)",%(objectsize),%(objectsize:disk),"%(rest)"' \
| sed -n 's/^"blob",//p' \
| awk -F',' '$2'">= ${fileSizeThreshold}" \
| sort -t "," --numeric-sort --key=2 > ${outDir}/largeBlobs
不是提交中note部分的blob:我用svn2git
转换。我看到这个sha1哈希包含在git notes
中,它输出所有的note blob。..
2条答案
按热度按时间ars1skjm1#
blob只是Git存储文件数据的方式。
假设你做了一个笔记,其内容需要一个包含
89/accfaa73947d063acb5e4dccf6a4816226e1ec
的blob,* 和 * 由于某种原因 * 我 * 存储了一个实际的 * 文件 *,其内容是89/accfaa73947d063acb5e4dccf6a4816226e1ec
。一个blob对象将用于保存这两个项目。因此,关键不在于事后消除歧义,而在于列举任何感兴趣的内容。特别是:
应该直接发送到
--objects
上的git rev-list
文档部分,其中说:--对象
打印列出的提交引用的任何对象的对象ID。
--objects foo ^bar
的意思是“如果我有提交对象 bar 但没有 foo,请将我需要下载的所有对象ID发送给我”。因此,
git rev-list
将遍历的提交树列表是由${what}
参数决定的,您没有显示这个参数。zaq34kh62#
此外,
git rev-list --objects
并不孤单:你也有git rev-list --object-names
。Git 2.41(2023年第2季度)记录了输出“
rev-list --object
“中的路径名字符串的用途和含义。参见commit 15364d2(2023年3月28日),作者Jeff King (
peff
)。(由Junio C Hamano --
gitster
--合并于commit abb3b69,2023年4月4日)docs
:rev-list
输出的文档警告签字人:杰夫·金
乍一看,“
rev-list --objects
”给出的名称似乎是查看提交集中存在哪些路径的好方法。但也有一些微妙的gotchas那里。
我们根本不记录名称的格式,所以让我们这样做,沿着警告这些问题。
我故意没有在这里记录名称的确切格式,因为我不认为这是我们希望人们依赖的东西(尽管我怀疑在实践中,我们会在这一点上改变它)。
虽然所有这些在历史上都与“--objects”绑定,但现在我们有一个单独的“
--object-names
”标志,可以关闭或打开名称。所以我把详细的文档放在那里,但是添加了一个来自
--objects
的注解(它根本没有提到这些名称,尽管它们在默认情况下是打开的)。rev-list-options
现在在其手册页中包括:object _bar_
而不是_foo_''
。另请参见下面的--object-names
。rev-list-options
现在在其手册页中包括:请注意,每个对象的“名称”都是不明确的,主要是作为 Package 对象的提示。
特别是:标签、树和斑点的名称之间没有区别;可以修改路径名以删除换行符;并且如果对象将以不同的名称出现多次,则仅示出一个名称。