我正在使用capistrano来部署RoR应用程序.代码库位于git存储库中,分支广泛用于开发.Capistrano使用deploy.rb文件进行设置,其中一个是要部署的分支.
我的问题是这样的:比方说,我创建了一个新的分支一个从主.部署文件将引用master分支.我编辑它,所以可以部署A来测试环境.我完成了该功能,并将分支A合并到主服务器中.由于deploy.rb从文件一个是新鲜的,它被合并了,现在deploy.rb在主分支引用一个.是时候再次编辑了.
这是很多看似不必要的手动编辑 - 参数应始终与当前分支名称匹配.最重要的是,每次都很容易忘记编辑设置.
什么是自动化这个过程的最佳方法?
编辑:结果已经完成了我所需要的人:
今天早上我有机会将一个git存储库的一个分支部署到一个临时服务器,但是没有最模糊的想法.通过capistrano源代码快速搜索显示我可以
:branch "branch_name"在部署脚本中使用set .我尝试了它,它的工作原理.然后我想我需要对所有分支进行类似的更改.当然,我是一个懒惰的草皮,并想知道是否有更好的方法.如果您不熟悉git,git branch命令的输出是一个带有星号的分支列表,标记当前在本地计算机上签出的星号.例如:
Run Code Online (Sandbox Code Playgroud)> git branch * drupal_authentication fragment_caching master所以,我想,如果我只是解析输出并搜索标记为当前的分支:
Run Code Online (Sandbox Code Playgroud)set :branch, $1 if `git branch` =~ /\* (\S+)\s/m现在,我可以从单个共享的部署脚本部署本地计算机上当前的任何分支.
当我运行'cap production deploy'时,我没有在服务器上获取我的最新主服务器.以下是部署日志中的行:
DEBUG[208486a4] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/----/git-ssh.sh /usr/bin/env git ls-remote git@github.com:------.git )
DEBUG[208486a4] 3983b992ede90e5957dc9ddb953c4df488354d7d HEAD
DEBUG[208486a4] 3983b992ede90e5957dc9ddb953c4df488354d7d refs/heads/master
DEBUG[208486a4] Finished in 0.832 seconds with exit status 0 (successful).
Run Code Online (Sandbox Code Playgroud)
然后在日志中:
INFO[38bea0b3] Running /usr/bin/env echo "Branch master (at 18306db) deployed as release 20140626124746 by dean; " >> /home/deploy/royalty/revisions.log on 96.126.121.168
DEBUG[38bea0b3] Command: echo "Branch master (at 18306db) deployed as release 20140626124746 by dean; " >> /home/deploy/royalty/revisions.log
INFO[38bea0b3] Finished in 0.116 seconds with exit status 0 (successful).
Run Code Online (Sandbox Code Playgroud)
我最近从使用assembla的repo切换到github.提交:18306db是我推送到assembla的最后一次提交.但是当我在github上查看repo时,所有新的提交都会显示出来.
我用set-url更改了原始URL,然后将其推送到github.
我在这里失踪了什么?谢谢