推荐的测试和生产实例的git工作流程

时间:2011-04-24 09:53:29

标签: git deployment workflow git-rebase

虽然我已经使用git一段时间了,但我仍然认为自己是n00b,所以请不要对我太苛刻。

我将“公司”主机系统维护为两个不相同的副本。我们称之为测试和生产。大型机没有任何我(或许可能是你们中的任何一个)会认为是版本控制系统的东西,所以我在桌面上使用git来为我提供版本控制。以下是我当前工作流程的主要功能:

  • 桌面和大型机与FTP“同步”。最后,无论是在大型机还是PC上编写的所有开发工作都在git分支机构的PC上完成。

  • 我无法访问任何类型的“现代”部署技术,例如Hudson

  • 我有两个主要分支,名为Test和Prod。由于产品的(继承)结构,Test和Prod实例之间的代码存在许多差异。例如,所有显示面板都需要清楚地识别这是测试还是产品,但是没有办法在单点配置它。

  • 我通常会为特定的开发子项目临时创建其他分支。

  • 一般开发在Test分支上完成,具有多个提交。准备好后,将这些樱桃挑选到Prod上,标记有更改编号,并在批准后上传。

  • 幸运的是,紧急工作是在Prod分支上进行的,然后选择进行测试。

  • 非常偶然地采摘樱桃需要手动合并。

我想改进这个工作流程。目前,我的存储库在两个分支上充满了并行相同的更改。

我想我更喜欢这样做(对于Test - > Prod):

  • 开发完成后,在Prod的HEAD创建一个新的分支

  • 将此一组开发更改折叠为新分支上的单个更改

  • 将这个新分支合并到Prod。请记住,他们的共同祖先是之前使测试与Prod不同的变化

似乎git rebase -i可能会完成这项工作,但我必须承认git rebase是我的 pons asinorum ,不知怎的,我已经设法搞砸了我的树了次数。

所以我的问题是这些:

  1. 请在产品的限制范围内建议更好的方法。

  2. 如果我的首选方法可行,有人可以为git rebase -i建议正确的参数吗?

2 个答案:

答案 0 :(得分:7)

关于Test和Prod之间的区别,请检查您是否可以检测到您是否在某个环境中。

对于具有特定于平台内容的文件,可以在结帐时使用filter driver通过涂抹脚本修改。

filter driver

这样,您就不必维护分支只是为了分隔几乎相同的代码集。

答案 1 :(得分:0)

我的建议是更频繁地将您的开发(测试)和生产(Prod)分支合并到彼此,而不是挑选更改。特别是,在Prod中进行更改时,请经常(至少每天一次)将它们合并到Test中。当测试中的更改准备就绪时,将它们合并到产品中。

你在审批时提交了从提交到Prod的提交,这也表明你的提交没有很好地分割,而是提交了一些具有非常大的差异的提交。这使得难以使用历史记录来调试问题,并且几乎不可能恢复单个更改(通过还原单个提交)。

我认为通过在工作流程中更改这两件事,如何管理开发和生产分支的更大问题将更加明显。