在一个git存储库中维护多个相关项目的最佳方法?

时间:2012-12-26 18:56:17

标签: git version-control repository multi-project

作为个人项目的一部分,我开始使用git而不是颠覆,也许我正在从中学习新东西。

设置存储库非常简单,配置我的Web服务器以提供git文件就像一个魅力;承诺,克隆,这里没问题。

但是,我在存储库中的项目设置存在一些问题。目前它看起来像这样:

project.git
\- mobileapp
\- artwork
\- backend
\- website
一旦一切正常,

websitemobileapp应该与backend进行通信。

我现在的问题是部署:当我想在我的服务器上部署backend时,目前我需要签出整个存储库并将内容从backend复制到我的webroot DIR。

由于似乎无法检查project.git/backend的内容,我正在考虑将四个子项目分成四个git存储库,并增加了维护四个存储库的开销。

有没有更简单的方法来解决我的问题?

2 个答案:

答案 0 :(得分:2)

你是正确的,没有特别简单的方法来检查部分Git存储库。 (截至1.7.0,Git支持sparse checkout,但这可能无法满足您的需求。)

典型的建议是将每个逻辑上独立的模块放入一个单独的存储库中。管理这些模块之间的关系有点困难。

一种方法是使用Git submodules。这会在父Git存储库中添加元数据,该存储库教授Git如何签出适当版本的子存储库。然后,您可以通过单独提交来破坏元数据来管理关系。

另一种方法是使用Android'} repo工具之类的外部工具。 Repo也保留了自己关于多个子库的状态,但与子模块不同,后者非常注重修订,repo更注重分支。

这两种方法都是可行的,并且在如何思考模块之间的关系方面显示出哲学上的差异。这不一定是更简单的"当然,解决问题的方法。

答案 1 :(得分:1)

使用submodule

$ git submodule -h

E.g。

$ git submodule add git@github.com:<username>/backend.git backend

然后您还可以将backend视为一个单独的项目。