我正在使用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现在,我可以从单个共享的部署脚本部署本地计算机上当前的任何分支.
在工作中,我们现在使用 GitHub 以及 GitHub 流程。我对GitHub流程的理解是有master分支和feature分支。与 git flow 不同,它没有开发分支。
这对于我们已经完成的项目非常有效,并且简化了事情。
但是对于我们的产品来说,我们有一个开发和生产环境。对于生产环境,我们使用master分支,而对于开发环境,我们不知道该怎么做?
我能想到的唯一想法是:
目前,对于需要开发环境的项目,我们基本上使用 git flow(功能 -> 开发 -> 主控)。
您认为我的想法合理吗?如果不合理,您有何建议?
编辑:
只是为了澄清一下,我问的是使用GitHub Flow而不是git flow实现开发的最佳方法。
github branching-and-merging git-flow github-actions github-flow
我有一个问题,从master到我的一个存储库中的'deploy'分支.
我的回购设置如下:
master - of course, the main branch
deploy - a branch created where files like Capfile, deploy.rb etc are created and configured - these changes will NEVER be merged back into Master
Run Code Online (Sandbox Code Playgroud)
通常我的工作流程是:
deploy分支git rebase master在部门分支上执行- 这曾经没有问题cap deploy我现在遇到的问题是,当我git rebase master在部署分支上执行时,它会出现一个3向合并/手动合并所需的错误(我不认为错误消息非常通用,足以发布).Git告诉我执行合并然后git rebase --continue用来完成 - 这从来都不行.
我发现"确实"工作正在运行git rebase master --interactive,清理选择列表(在此列表中有5个左右重复的"提交"但具有不同的引用号(相同的消息),因此我将选择其中一个)然后手动执行合并.一旦我为每次提交完成了这个,那么我可以继续使用rebase并且它很高兴...
直到下次我需要执行rebase.
那么有谁知道什么可能会幸福?该项目并非真正"秘密",所以如果需要,我可以发布消息,日志,分支图等.
谢谢