2

我想在我自己的 repo 中跟踪一个大型 git repo 的两个不同分支作为子模块。例如,来自https://github.com/nixos/nixpkgs-channelsnixos-unstable的andnixos-19.03分支。

有没有办法添加子模块,以便 git 避免两次获取 repo 并避免在本地存储它的两个副本?

4

1 回答 1

2

似乎没有任何真正好的方法可以做到这一点。

有一种相当老套的方法有效,但有一个明显的缺陷:

$ git submodule add ssh://[url] p1/repo
Cloning into ... [snippage]
Resolving deltas: 100% (173/173), done.
$ git submodule add --reference p1/repo ssh://[url] p2/repo
Cloning into [path]
$ 

请注意消息之外完全没有活动cloning into。两个子模块现在都存在,但一个有一个objects/info/alternates包含另一个路径的文件:

$ cat .git/modules/p2/repo/objects/info/alternates
[path]/.git/modules/p1/repo/objects

以便从存储库的对象数据库中p2/repo检索其基础对象。p1/repo.git/modules/p1/repo/objects

明显的缺陷是,这种安排不会在未来的克隆操作中保留,也不会自动发生,永远。每次都必须手动构建。

于 2019-05-13T21:20:26.700 回答