git有内置的存储库管理策略吗?

时间:2014-01-31 17:49:23

标签: git version-control filesystems perforce multiple-repositories

我目前正在尝试提出一种版本控制策略,用于将公司的代码和文档文件从集中式SCM(Perforce)转移到Git。 Perforce中的内容只是存储所有项目的一个大型仓库,我想将其分解为多个较小的Git存储库,原因有很多。

我现在遇到的问题是如何索引所有这些存储库,以便轻松找到它们。据我所知,Git没有任何用于管理多个存储库的内置工具。

我确实找到了git-submodule,但这听起来像是用其他存储库的内容创建存储库,我不想管理各种存储库的内容但是存储库本身。

最初我在思考我们服务器上的平面文件系统:

/repos
   -repo1.git
   -repo2.git
   -...
   -repoN.git

然后只是一个git命令来查询此目录中的所有存储库名称和有关内容的注释(有点像登录到服务器,转到/repos目录并运行git log )。我以为我可以让/repo本身成为git存储库(存储库的存储库),然后完全按照我刚才说的那样做,但这看起来是...... un-git-y。

所以我的问题是:

  1. 我是否遗漏了用于管理此类多个存储库的任何内置git工具/功能?
  2. 我认为git-submodule 我正在寻找帮助管理的内容是否正确?
  3. 您在此类设置中看到过哪些好的策略?

1 个答案:

答案 0 :(得分:0)

如果你想要一个纯粹的Git解决方案,那么你正在寻找git-submodule

特别是当你说:

  

我以为我可以自己制作/回购一个Git存储库(存储库的存储库)

这正是子模块的原因。

父代表将跟踪单个文件 - .gitmodules,它将路径与其他回购的修订版连接起来。


但是根据我的经验,我得出的结论是Git子模块并不理想,特别是当你处理没有经验的Git用户时。切换分支或在子模块中进行更改时可能会出现问题。一些GUI Git客户端不完全支持子模块。

但是如果你只是想跟踪这些文件夹,你就可以使用子模块了。


另一种方法是忽略主仓库中的这些文件夹,并在这些文件夹中有单独的Git仓库。 Git在这些文件夹中完美运行,无论它们是否属于另一个Git仓库。

此解决方案适用于应用程序项目中的供应商库。您可以使用包/依赖关系管理器来更新它们,或只使用cdgit pull