2012-03-15 83 views
4

我的問題是關於gpg代理命令執行緩存gpg密鑰和通行短語。如何使用gpg代理批量簽署git標籤

我想知道如何使用它,以便我可以在腳本中運行多個git tag -s命令,而不必每次都輸入我的gpg密碼短語。

我的劇本的最初版本是這樣的:

的Git分支-r | grep origin | grep pattern | while read BRANCH; TAG = basename $BRANCH; git tag -s -m「tag $ TAG release」「$ TAG」「$ BRANCH」;完成;

我有兩個用例:

  1. 我有我想轉換成標籤發行分支機構的約20。
  2. 我有大約40個發佈標籤,我想要重做以遵循新的命名約定。

我找了GPG代理在命令行中運行,然後GPG命令我需要運行得到我的密碼短語緩存,以便它是可用的,當我做了git的標籤-s

回答

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