使用Git命名空间来托管多个repos

问题描述 投票:2回答:1

来自https://git-scm.com/docs/gitnamespaces

Git支持将单个存储库的ref分成多个名称空间,每个名称空间都有自己的分支,标签和HEAD。 Git可以将每个命名空间公开为一个独立的存储库,以便在共享对象存储时从中拉出并推送,并将所有引用公开给git-gc等操作。

我想通过在单个统一存储库下存储单独的,不相关的存储库来利用此功能。例如,我想为我的团队托管一个包含小型Python库的存储库,每个库都有自己的set branches / tags。我想我能够通过像git --namespace=library_n push --all unified_repo这样的东西将各个存储库中的分支推送到统一存储库中。这似乎在大多数情况下都能正常工作。我在这里缺少的是新命名空间中没有指定的HEAD。所以,如果我然后运行像git --namespace=library_n clone unified_repo.git local_library_n这样的东西,我得到:

警告:远程HEAD是指不存在的ref,无法结帐。

虽然新的克隆功能很好,但是克隆后没有立即检出的默认HEAD很烦人。我接近这个错误吗?有没有正确的方法克隆/推送到统一仓库,以便每个命名空间包含一个正确的HEAD?

git version-control
1个回答
0
投票

我想为我的团队托管一个包含小型Python库的存储库,每个库都有自己的set branches / tags

使用submodules会更容易。

你的主要回购将引用subrepos

git submodule add /url/of/lib1
git submodule add /url/of/lib2
git submodule add /url/of/lib3
© www.soinside.com 2019 - 2024. All rights reserved.