我有一些依赖工作的树。据我所知,git的子模块会执行以下操作:Git子模块的替代?
- 使用它(主)
- 主资料库复制从奴隶 的所有信息在每个工作树的子目录,每个工作树(从)的副本
我不介意回购越来越大,但拥有这些副本对我来说是相当不可接受的。这会迫使我重新组织所有的项目,这样副本就会被链接起来。而且,编辑错误的文件很容易导致混淆。
我已经有了另一个想法:
- 每个主存储其所有从站的列表。
- 主人不需要其他信息。
- 在主设备中进行每次提交时,都会创建从设备中的“snapshot-commit”。
- “快照提交”是工作树当前状态的快照,它忽略了索引的当前状态(在丢弃一些未被改变的更改之前,我已经使用“快照提交”)。
- “snapshot-commits”被收集到一个分支中,该分支的名字源自主人的名字。提交消息包含主提交的哈希。 (恕我直言,这比淹没成千上万的标签要好。)
- 结帐工作正常,除非需要递归到奴隶。
我能看到的唯一的问题如下:
- 在奴隶的提交将积累,永远不会被删除,即使主承诺不再存在。
- 在提交中的提交不是自包含的,您可以删除在主服务器中引用的提交。但我认为它不可能偶然发生,所以我可以忍受它。
- 我无法想象,其他git命令如何支持这一点。但再一次,我可以忍受它。
我在问是否有人已经实现它(或者如果这是一个坏主意)。
你的意思是,我错了我的句子“主存储库复制了所有从属的信息” ?这很可能,但是,我主要担心的是每棵主树中的每个从属树的副本是否存在(或者我错了吗?)。 – maaartinus
@maaartinus:有一个物理副本(因为它检出了一定的差异),但是所有的父回购保持是对检出的提交的引用。请参阅“子模块的真实性质”:http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC
@maaartinus:但是,确实如此,每个父代回购将检出子模块,意思是所述子模块的几个副本将在任何给定时间存在。 – VonC