我正在为某些开发操作使用git标签,因此问题是:
是否可以仅使用git或更低级别的utils(即upload / fetch pack)或协议本身下载标签的注释消息?
我发现一些不符合要求的“解决方案”:
git fetch --tags
git clone --branch <tag> --single-branch
git clone with --depth=<depth>
所有这些都下载了很多我不需要的数据 我只需要标签注释/消息。理想的解决方案应该允许以最小的带宽开销获取标记消息。
答案 0 :(得分:0)
是否可以仅下载标签的带注释消息
不。
您可以下载所有存储库数据或给定的提交(提交也意味着标记或分支)但您无法获取任何部分数据,除非它是提交树的一部分。
您必须从最近的提交结账,但是您无法获取它们之间存在间隙的提交。
Tag只是对提交的引用,您可以获取所有内容并在代码在本地计算机上时显示消息。
答案 1 :(得分:0)
如果您拥有其他仓库的管理员权限,您可以使用预先接收退出设置它,该退出运行for-each-ref以响应您为此预留的refs。最简单的就是
#!/bin/sh
rc=0
while read old new ref; do
if [[ $ref = refs/requests/refcontents ]]; then
git for-each-ref --format='%(refname) %(objectname)
%(contents)
-------- '
rc=1
fi
done
exit $rc
请记住,您可以推送到任何仓库,以便测试您可以将其放入.git/hooks/pre-receive
,chmod +x
和git push . @:refs/requests/refcontents
。