以下是我检查我的回购的代码。我想在我的厨师开发环境中开发分支。
git "/home/ubuntu/workspace/repo" do
repository "git@github.com:me/repo.git"
revision "development"
action :sync
user "root"
end
当我看到结账分支时,我得到了:
* deploy
master
如果我在盒子上运行git checkout开发,我得到:
deploy
* development
master
那么....我如何从厨师那里得到我的开发分支?
我正在使用厨师维基的例子。 chef wiki git example
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
答案 0 :(得分: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
您还可以在厨师客户的日志中看到一条信息消息,从中可以看到已部署的分支:
[Sun, 01 Jul 2012 18:07:40 +0200] INFO: git[/usr/local/rbenv] checked out branch: master reference: 6778c8e905d774d4dc70724c455e6fcff4c1d3e1
此外,您问题中文档的链接清楚地表明:
请记住,如果在运行此配方后使用命令“git status”,它将返回分支名称为“deploy”,因为这是默认值。当您运行chef-client并进行调试时,您应该能够看到它检出正确的分支:
sudo chef-client -l debug
可以找到关于分离的HEAD状态的更多信息,例如在AlBlue的blog
答案 1 :(得分:3)
根据厨师文档中的git资源页面: http://docs.opscode.com/resource_git.html
使用以下属性:
checkout_branch
Use to specify the name of a branch to be checked out. Default value: deploy.
所以你想要这样做:
git "/home/ubuntu/workspace/repo" do
repository "git@github.com:me/repo.git"
revision "development"
checkout_branch 'development'
action :sync
user "root"
end
答案 2 :(得分:3)
对于仍然遇到此问题的人,您可以将enable_checkout用于false。当你将checkout_branch设置为master时,这将使你的分支机构成为主分支并且不会中断。
git "/home/user/deployment" do
repository "git@github.com:gitsite/deployment.git"
revision branch_name
checkout_branch branch_name
enable_checkout false
action :sync
user "user"
group "test"
end
答案 3 :(得分:0)
厨师基本上会说
git checkout -b deploy remote/branch
如果您执行git log
,您将看到提交。
答案 4 :(得分:0)
如果您需要回到原始开发分支,(比如说您正在使用chef deploy来配置您的应用,但您正在进行现场更改并希望提交更改),您可以执行以下操作
git push origin deploy:development