使用git维护web应用程序不同版本的工作流程是什么?

3
在我们公司,我们已经使用git几个月了(并且我们对它很满意),但我们仍然没有完全理解git。
我们的主要产品是网站,我们以不同的语言提供前端和后台管理。其中一些网站提供其他网站不应该提供的功能(例如:在给定表单上需要填写的字段类型、不同的验证规则集等)。
由于这些差异非常小,因此我们现在使用配置文件来确定是否应该使用特定元素。但我想当网站之间的差异变大时,这将会导致问题。
我想使用不同的分支将使维护更容易,但如何在一个共享核心的情况下维护不同的分支?我们还没有使用像Capistrano这样的部署工具(但计划这样做),因此目前无法进行无休止的手动从主分支到所有不同分支的挑选。
因此,在这种设置下,分支如何帮助我们?
master
|
- english
|
- german 
|
- french

(为澄清:这不是关于本地化/国际化的问题,而是关于在分支之间共享核心功能)
2个回答

1

1

看起来你需要使用子模块。这将允许您将所有共享功能保留为一个存储库,将各个站点作为自己的存储库,跟踪共享子模块中的更改。有很多不错的(虽然有点简洁,通常是git文档)信息在这里,包括网络研讨会。

从链接页面中:

Git的子模块支持允许存储库包含外部项目的检出作为子目录。子模块维护自己的身份;子模块支持只存储子模块存储库位置和提交ID,因此克隆包含项目(“超级项目”)的其他开发人员可以轻松地克隆所有子模块到相同的修订版。可以进行超级项目的部分检出:您可以告诉Git克隆子模块的任何、一些或全部。

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


看起来很有趣,谢谢。但是我猜在使用分支时没有简单的方法来更新共享代码? - vindia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接