我正在使用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现在,我可以从单个共享的部署脚本部署本地计算机上当前的任何分支.
假设我通过git存储库与某人合作,并且有一个特定的文件,我永远不想接受任何外部更改.
有没有办法让我设置我的本地仓库,以便每当我拉动时不抱怨冲突的合并?我想在合并此文件时始终选择我的本地版本.
我是版本控制的新手,所以如果有一个众所周知的解决方案我会道歉.特别是对于这个问题,我正在使用git,但我很好奇如何处理所有版本控制系统.
我正在开发服务器上开发Web应用程序.我已经在两个地方定义了Web应用程序的绝对路径名(而不是文档根目录).在生产服务器上,此路径不同.我对如何处理这件事很困惑.
我可以:
我不喜欢#1,因为我宁愿让应用程序灵活应对未来的任何变化.我不喜欢#2,因为如果我开始使用第三个路径开发第二个开发服务器,我将不得不为每次提交和更新更改它.
处理这个问题的最佳方法是什么?我想到了:
使用自定义关键字和变量扩展(例如在版本控制属性中设置属性$ PATH $并在所有文件中展开它).Git不支持这一点,因为它会带来巨大的性能损失.
使用更新后和预提交挂钩.可能是git的可能解决方案,但每次我查看状态时,它都会报告这两个文件被更改.不太干净.
从版本控制之外的配置文件中提取路径.然后我必须将配置文件放在所有服务器上的相同位置.也可能只有相同的路径开始.
有一个简单的方法来处理这个?我在想它吗?
我有一个系统的5个分支 - 让我们称他们为主人,伦敦,伯明翰,曼彻斯特和演示.它们仅在配置文件中有所不同,每个都有自己的一组图形文件.
当我进行一些开发时,我从master创建一个临时分支,在该功能之后调用,并对其进行处理.当准备合并我checkout master和git merge功能带来我的工作.这似乎工作得很好.
现在我需要将其更改到其他分支中,而不会丢失它们之间的差异.我怎样才能做到这一点?伯明翰获得伦敦的图形以及配置文件中存在冲突,我一直没有遇到任何问题.
当分支最终正确时,我将其推送到一个软件仓库,并将每个分支拉到一个Linux盒子进行最终测试,从那里发布到生产中使用rsync(设置为忽略.git存储库本身).这个阶段也可以正常工作.
我是目前唯一的开发人员,但我需要在邀请帮助之前让流程稳固:)