厨师不会从git结账开发分支

Tam*_*mpa 9 git chef-infra

下面是我检查我的回购的代码.我想在我的厨师开发环境中开发分支.

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而命名.

git提供者

以下是实际代码的摘录:

#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的博客中找到