在我的公司,我们现在使用git几个月了(我们很高兴),但我们仍然没有获得 git的全部100%。
我们的主要产品是我们提供不同语言的网站(前端+管理后端)。其中一些网站提供其他人不应提供的功能(例如,需要填写给定表单的字段类型,不同的验证规则集等。)
由于这些差异相当小,我们现在使用配置文件来确定网站是否应该使用特定元素。但我猜这会在网站之间的差异变大时引起问题。
我想使用不同的分支会使这更容易维护,但是如何使用一个共享核心维护不同的分支?我们还没有使用像Capistrano这样的部署工具(但是计划这样做),所以此时无法从主人到所有不同分支机构进行无休止的手动挑选。
所以,鉴于此设置,分支如何帮助我们?
master
|
- english
|
- german
|
- french
(澄清:这不是关于l10n / i18n,而是关于在分支之间共享核心功能)
答案 0 :(得分:1)
其他人尝试过,然后说“always ship trunk”
答案 1 :(得分:1)
听起来你想要使用子模块。这将允许您将所有共享功能保留为一个存储库,并将各个站点保存为自己的存储库,以跟踪共享子模块中的更改。很多很好的(虽然有点简洁,像往常一样使用git文档)info here,包括网络广播。
从链接页面:
Git的子模块支持允许a 存储库包含,作为 子目录,结帐 外部项目。子模块保持不变 他们自己的身份;子模块 支持只存储子模块 存储库位置和提交ID,所以 克隆的其他开发者 包含项目(“超级项目”) 可以轻松克隆所有子模块 相同的修订版。部分结帐 超级项目是可能的:你 可以告诉Git克隆无,一些或 所有的子模块。
编辑: 如果你想保留分支结构,我猜你可以创建一个钩子脚本(在.git / hooks /中),它检查每个特定于语言的分支,并在你提交的时候合并来自共享分支的最新提交。所以你有一个共享分支,每个语言都有一个分支,你基本上会对共享语言进行提交,它们会自动合并到其他语言中。我不认为这听起来像是一个很好的解决方案,并没有尝试过。如果你想试一试,请查找有关钩子的信息。我认为子模块更合适。