下面是我检查我的回购的代码.我想在我的厨师开发环境中开发分支.
git "/home/ubuntu/workspace/repo" do
repository "git@github.com:me/repo.git"
revision "development"
action :sync
user "root"
end
Run Code Online (Sandbox Code Playgroud)
当我看到结账分支时,我得到:
* deploy
master
Run Code Online (Sandbox Code Playgroud)
如果我在盒子上运行git checkout开发,我得到:
deploy
* development
master
Run Code Online (Sandbox Code Playgroud)
那么....我怎么得到git来检查我的厨师开发分支?
我正在使用厨师维基的例子.厨师wiki git例子
if node.chef_environment == "QA"
branch_name = "staging"
else
branch_name = "master"
end
git "/home/user/deployment" do
repository "git@github.com:gitsite/deployment.git"
revision branch_name
action :sync
user "user"
group "test"
end
Run Code Online (Sandbox Code Playgroud)
小智 11
您的开发分支已部署.它只是deploy因为厨师检查到本地分支而不是分离的HEAD而命名.
以下是实际代码的摘录:
#File: chef-0.10.8/lib/chef/provider/git.rb
def checkout
sha_ref = target_revision
# checkout into a local branch rather than a detached HEAD
shell_out!("git checkout -b deploy #{sha_ref}", run_options(:cwd => @new_resource.destination))
Chef::Log.info "#{@new_resource} checked out branch: #{@new_resource.revision} reference: #{sha_ref}"
end
Run Code Online (Sandbox Code Playgroud)
您还可以在Chef客户端的日志中看到一条信息消息,从中可以看到已部署的分支:
[Sun, 01 Jul 2012 18:07:40 +0200] INFO: git[/usr/local/rbenv] checked out branch: master reference: 6778c8e905d774d4dc70724c455e6fcff4c1d3e1
Run Code Online (Sandbox Code Playgroud)
此外,您问题中文档的链接清楚地说明:
请记住,如果在运行此配方后使用命令"git status",它将返回分支名称为"deploy",因为这是默认值.当您运行带有调试的chef-client时,您应该能够看到它检出正确的分支:
sudo chef-client -l debug
有关独立HEAD状态的更多信息可以在AlBlue的博客中找到