我目前正在尝试提出一种版本控制策略,用于将公司的代码和文档文件从集中式SCM(Perforce)转移到Git。 Perforce中的内容只是存储所有项目的一个大型仓库,我想将其分解为多个较小的Git存储库,原因有很多。
我现在遇到的问题是如何索引所有这些存储库,以便轻松找到它们。据我所知,Git没有任何用于管理多个存储库的内置工具。
我确实找到了git-submodule,但这听起来像是用其他存储库的内容创建存储库,我不想管理各种存储库的内容但是存储库本身。
最初我在思考我们服务器上的平面文件系统:
/repos
-repo1.git
-repo2.git
-...
-repoN.git
然后只是一个git命令来查询此目录中的所有存储库名称和有关内容的注释(有点像登录到服务器,转到/repos
目录并运行git log
)。我以为我可以让/repo
本身成为git
存储库(存储库的存储库),然后完全按照我刚才说的那样做,但这看起来是...... un-git-y。
所以我的问题是:
git
工具/功能?git-submodule
不我正在寻找帮助管理的内容是否正确?答案 0 :(得分:0)
如果你想要一个纯粹的Git解决方案,那么你正在寻找git-submodule
。
特别是当你说:
我以为我可以自己制作/回购一个Git存储库(存储库的存储库)
这正是子模块的原因。
父代表将跟踪单个文件 - .gitmodules
,它将路径与其他回购的修订版连接起来。
但是根据我的经验,我得出的结论是Git子模块并不理想,特别是当你处理没有经验的Git用户时。切换分支或在子模块中进行更改时可能会出现问题。一些GUI Git客户端不完全支持子模块。
但是如果你只是想跟踪这些文件夹,你就可以使用子模块了。
另一种方法是忽略主仓库中的这些文件夹,并在这些文件夹中有单独的Git仓库。 Git在这些文件夹中完美运行,无论它们是否属于另一个Git仓库。
此解决方案适用于应用程序项目中的供应商库。您可以使用包/依赖关系管理器来更新它们,或只使用cd
和git pull
。