2

作为个人项目的一部分,我已经开始使用 git 而不是 subversion,也许我正在从中学到一些新东西。

设置存储库相当容易,配置我的 Web 服务器以提供 git 文件就像一个魅力;提交,克隆,这里没问题。

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

project.git
\- mobileapp
\- artwork
\- backend
\- website

website并且mobileapp应该在backend一切正常后进行通信。

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

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

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

4

2 回答 2

3

您是对的,没有特别简单的方法可以签出部分 Git 存储库。(从 1.7.0 开始,Git 支持稀疏检出,但这可能无法满足您的需求。)

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

一种方法是使用Git 子模块。这会在父 Git 存储库中添加元数据,该存储库教 Git 如何签出子存储库的适当版本。然后,您通过进行会影响元数据的单个提交来管理关系。

另一种是使用外部工具,如 Android 的repo工具。Repo 也针对多个子存储库维护自己的状态,但与非常关注修订的子模块不同,它repo更关注分支。

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

于 2012-12-26T19:04:48.410 回答
1

使用submodule

$ git submodule -h

例如

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

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

于 2012-12-26T18:59:43.267 回答