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

问题描述:

在我的公司,我们现在使用了git几个月了(我们很高兴),但是我们仍然没有得到 git的完整100%。使用git维护webapp的不同版本的工作流程?

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

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

我想使用不同的分支将使这更容易维护,但你如何维护不同的分支与一个共享的核心?我们目前还没有使用像Capistrano这样的部署工具(但正在计划这样做),因此无法从主服务器到所有不同的分支机构进行无休止的手动选择,现在不是一种选择。

因此,考虑到这种设置,分支机构如何帮助我们?

master 
| 
- english 
| 
- german 
| 
- french 

(为了澄清:这是不是本地化/国际化,而是共享分支之间的核心功能)

其他人都试了一下,说:“always ship trunk

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

从链接页面:

Git的子模块支持允许 存储库包含作为 子目录,一个 外部项目的结算。子模块维护自己的身份 ;子模块 支持只是存储的子模块 仓库的位置和提交ID,所以 谁克隆 含项目(“上层项目”)其他开发商 可以轻松克隆所有子模块在 同一版本。部分结账 的超级项目是可能的:你可以告诉Git克隆没有,一些或 所有的子模块。

编辑: 如果你想保持分支结构,我想你可以创建一个钩子脚本(在git的/钩/),检查了每个特定语言的分支和合并的最新从共享提交任何时候你承诺的分支。所以你应该有一个共享分支,并且每个语言都有一个分支,并且你基本上会向共享分支提交提交,并且它们会自动合并到其他分支中。我不认为这听起来像是一个很好的解决方案,但还没有尝试过。如果你想放手一下,找一下关于钩子的信息。我认为子模块更合适。

+0

这看起来很有趣,谢谢。但我想在使用分支来轻松更新共享代码时没有办法? – vindia 2010-08-26 12:06:04

+0

@vjo:见编辑答案 – Felixyz 2010-08-26 16:36:03