【问题标题】:Best way to maintain multiple related projects in one git repository?在一个 git 存储库中维护多个相关项目的最佳方法?
【发布时间】:2012-12-26 18:56:17
【问题描述】:

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

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

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

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

一旦一切正常,websitemobileapp 应该与 backend 通信。

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

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

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

【问题讨论】:

  • 子模块可能有用
  • 不如只做你现在做的事情,克隆到服务器上的某个位置,然后使用一个 post-hook 将后端复制到生产区域,然后重新启动任何必要的服务器进程?

标签: git version-control repository multi-project


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    使用submodule:

    $ git submodule -h
    

    例如

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

    那么你也可以把backend当作一个单独的项目。

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2016-07-14
      • 1970-01-01
      • 2013-05-08
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      相关资源
      最近更新 更多