Git 使用 chef git 资源部署主分支或特定提交或标记

Git deploy master branch or particular commit or tag with chef git resource

我一直在尝试使用 git_resource 与 Chef 一起在我的生产服务器上部署 master 分支。显然它总是从 deploy 分支部署代码,而实际上在主 git repo 中并不存在。

我正在使用仅读取模式的部署密钥。

git '/path/to/the/dir/' do
  repository 'git@github.com:example/example.git'
  revision 'master'
  checkout_branch 'master'
  enable_checkout true
  action :sync
  user 'ubuntu'
  group 'ubuntu'
end 

请帮我解决这个问题。

git 资源的工作方式是获取你在 revision 中提供的任何内容的 SHA,将其签出到工作副本,然后设置一个名为 deploy 的头(或任何 checkout_branch 设置为)到 SHA。这允许有效地检查更新,而无需将回购留在分离的头部状态。所以基本上只要删除 checkout_branch 'master' ,每次 Chef 运行时你都会得到一个同步到 master 的回购。将 revisioncheckout_branch 设置为相同的值会破坏幂等性检查。