如何使用gpg-agent批量签署git标签

4
我的问题是关于 gpg-agent 命令,它为 gpg 密钥和口令提供缓存。
我想知道如何使用它,在脚本中运行多个 git tag -s 命令时,无需每次输入我的 gpg 口令。
我的脚本的初始版本如下所示:

git branch -r | grep origin | grep pattern |while read BRANCH; do TAG=basename $BRANCH; git tag -s -m "tag $TAG release" "$TAG" "$BRANCH"; done;

我有两种用例:
  1. 我有大约20个发布分支要转换成标签。
  2. 我有大约40个发布标签要重新命名以遵循新的命名约定。
我正在寻找 gpg-agent 的命令行,然后需要运行的 gpg 命令来获取我的密码短语缓存,以便在执行 git tag -s 命令时可用。
1个回答

2

在运行脚本之前,可以通过运行gpg-agent来实现。例如:

$ eval $( gpg-agent --daemon )
$ for branch in $( git branch -r | grep PATTERN ); do
>   tag="$( basename $BRANCH )"
>   git tag -sm "tag $tag release" "$tag" "$branch"
> done

您将在首次签名时被提示输入密码(除非在首次签名之前已经使用了gpg-agent)。如果使用以上方法,请确保在完成后杀死代理(例如,pkill gpg-agent)。
有关运行代理的更多信息,请参阅此处:http://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接