相关疑难解决方法(0)

使用capistrano从不同的git分支部署

我正在使用capistrano来部署RoR应用程序.代码库位于git存储库中,分支广泛用于开发.Capistrano使用deploy.rb文件进行设置,其中一个是要部署的分支.

我的问题是这样的:比方说,我创建了一个新的分支一个.部署文件将引用master分支.我编辑它,所以可以部署A来测试环境.我完成了该功能,并将分支A合并到主服务器中.由于deploy.rb从文件一个是新鲜的,它被合并了,现在deploy.rb分支引用一个.是时候再次编辑了.

这是很多看似不必要的手动编辑 - 参数应始终与当前分支名称匹配.最重要的是,每次都很容易忘记编辑设置.

什么是自动化这个过程的最佳方法?

编辑:结果已经完成了我所需要的人:

今天早上我有机会将一个git存储库的一个分支部署到一个临时服务器,但是没有最模糊的想法.通过capistrano源代码快速搜索显示我可以:branch "branch_name"在部署脚本中使用set .我尝试了它,它的工作原理.然后我想我需要对所有分支进行类似的更改.当然,我是一个懒惰的草皮,并想知道是否有更好的方法.

如果您不熟悉git,git branch命令的输出是一个带有星号的分支列表,标记当前在本地计算机上签出的星号.例如:

> git branch
* drupal_authentication
fragment_caching
master
Run Code Online (Sandbox Code Playgroud)

所以,我想,如果我只是解析输出并搜索标记为当前的分支:

set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Run Code Online (Sandbox Code Playgroud)

现在,我可以从单个共享的部署脚本部署本地计算机上当前的任何分支.

git capistrano

120
推荐指数
8
解决办法
7万
查看次数

具有 GitHub 流程的开发和生产环境

在工作中,我们现在使用 GitHub 以及 GitHub 流程。我对GitHub流程的理解是有master分支和feature分支。与 git flow 不同,它没有开发分支。

这对于我们已经完成的项目非常有效,并且简化了事情。

但是对于我们的产品来说,我们有一个开发和生产环境。对于生产环境,我们使用master分支,而对于开发环境,我们不知道该怎么做?

我能想到的唯一想法是:

  1. 当分支与 master 合并时,使用 GitHub 操作重新部署 master。
  2. 当推送另一个分支时,设置 GitHub 操作,以便将任何其他分支(master 除外)部署到此环境。

目前,对于需要开发环境的项目,我们基本上使用 git flow(功能 -> 开发 -> 主控)。

您认为我的想法合理吗?如果不合理,您有何建议?

编辑:

只是为了澄清一下,我问的是使用GitHub Flow而不是git flow实现开发的最佳方法。

github branching-and-merging git-flow github-actions github-flow

12
推荐指数
1
解决办法
1万
查看次数

Git rebase不断失败,需要手动合并干预

我有一个问题,从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)

通常我的工作流程是:

  1. 在主分支上进行开发...测试,微笑,提交.
  2. 结帐deploy分支
  3. git rebase master在部门分支上执行- 这曾经没有问题
  4. 推送到远程,然后执行 cap deploy
  5. 放松

我现在遇到的问题是,当我git rebase master在部署分支上执行时,它会出现一个3向合并/手动合并所需的错误(我不认为错误消息非常通用,足以发布).Git告诉我执行合并然后git rebase --continue用来完成 - 这从来都不行.

我发现"确实"工作正在运行git rebase master --interactive,清理选择列表(在此列表中有5个左右重复的"提交"但具有不同的引用号(相同的消息),因此我将选择其中一个)然后手动执行合并.一旦我为每次提交完成了这个,那么我可以继续使用rebase并且它很高兴...

直到下次我需要执行rebase.

那么有谁知道什么可能会幸福?该项目并非真正"秘密",所以如果需要,我可以发布消息,日志,分支图等.

谢谢

git branch rebase

7
推荐指数
1
解决办法
5361
查看次数