【发布时间】:2014-02-24 12:58:30
【问题描述】:
我目前正在尝试提出一种版本控制策略,用于将我们公司的代码和文档文件从集中式 SCM (Perforce) 迁移到 Git。 Perforce 中的内容只是一个存储所有项目的大型 Depot,出于多种原因,我想将其分解为多个较小的 Git 存储库。
我现在遇到的问题是如何索引所有这些存储库,以便可以轻松找到它们。据我所知,Git 没有任何用于管理多个存储库的内置工具。
我确实找到了git-submodule,但听起来那是为了创建一个包含其他存储库内容的存储库,我不想管理各种存储库的内容,而是管理存储库本身.
最初我想在我们的服务器上安装一个平面文件系统:
/repos
-repo1.git
-repo2.git
-...
-repoN.git
然后只需一个 git 命令来查询此目录中的所有存储库名称和有关内容的注释(有点像登录服务器,转到 /repos 目录并运行 git log)。我在想我可以让/repo 本身成为git 存储库(存储库的存储库),然后完全按照我刚才所说的去做,但这似乎是...... un-git-y。
所以我的问题是:
- 我是否缺少任何用于管理多个存储库的内置
git工具/功能? - 我认为
git-submodule不是我正在寻找帮助管理此问题的想法是否正确? - 对于此类设置,您有什么好的策略吗?
【问题讨论】:
-
最接近的可能是子模块。您可以拥有一个(可能是空的)根存储库,它引用所有其他存储库,这些存储库仍然是独立的,可以单独克隆和处理。另一种选择是用于 Android 的 Google 的 Repo 工具(但与它无关),但我更喜欢子模块。
-
Perforce 有一个工具可以让您将所有代码保存在 Perforce 存储库中,但使用 git 作为客户端。这样您的开发人员就可以使用 git,但您的管理员可以方便地管理单个存储库。
-
这是一个在小表中的简单查找,这里只需要一个平面文件。
curl u://r/l | grep ^projecta.
标签: git version-control filesystems perforce multiple-repositories