使用git维护不同版本的webapp的工作流程?

时间:2010-08-24 19:17:28

标签: php git cakephp

在我的公司,我们现在使用git几个月了(我们很高兴),但我们仍然没有获得 git的全部100%。

我们的主要产品是我们提供不同语言的网站(前端+管理后端)。其中一些网站提供其他人不应提供的功能(例如,需要填写给定表单的字段类型,不同的验证规则集等。)

由于这些差异相当小,我们现在使用配置文件来确定网站是否应该使用特定元素。但我猜这会在网站之间的差异变大时引起问题。

我想使用不同的分支会使这更容易维护,但是如何使用一个共享核心维护不同的分支?我们还没有使用像Capistrano这样的部署工具(但是计划这样做),所以此时无法从主人到所有不同分支机构进行无休止的手动挑选。

所以,鉴于此设置,分支如何帮助我们?

master
|
- english
|
- german 
|
- french

(澄清:这不是关于l10n / i18n,而是关于在分支之间共享核心功能)

2 个答案:

答案 0 :(得分:1)

其他人尝试过,然后说“always ship trunk

答案 1 :(得分:1)

听起来你想要使用子模块。这将允许您将所有共享功能保留为一个存储库,并将各个站点保存为自己的存储库,以跟踪共享子模块中的更改。很多很好的(虽然有点简洁,像往常一样使用git文档)info here,包括网络广播。

从链接页面:

  

Git的子模块支持允许a   存储库包含,作为   子目录,结帐   外部项目。子模块保持不变   他们自己的身份;子模块   支持只存储子模块   存储库位置和提交ID,所以   克隆的其他开发者   包含项目(“超级项目”)   可以轻松克隆所有子模块   相同的修订版。部分结帐   超级项目是可能的:你   可以告诉Git克隆无,一些或   所有的子模块。

编辑: 如果你想保留分支结构,我猜你可以创建一个钩子脚本(在.git / hooks /中),它检查每个特定于语言的分支,并在你提交的时候合并来自共享分支的最新提交。所以你有一个共享分支,每个语言都有一个分支,你基本上会对共享语言进行提交,它们会自动合并到其他语言中。我不认为这听起来像是一个很好的解决方案,并没有尝试过。如果你想试一试,请查找有关钩子的信息。我认为子模块更合适。