作为之前已经提出的detach-subdirectory问题的一个子集,考虑到即使关于拆分和合并git存储库的过程提出了很多问题,找到一个触及子模块出现时分裂的主题。将子模块的子目录拆分到单独的git存储库中
所以在以下情形:
.git/
.gitmodules
folder/
data/
content/
other_data/
submoduleA/
submoduleB/
我想拿到两个库结构如下:
.git/
data/
和
.git/
.gitmodules
content/
other_data/
submoduleA/
submoduleB/
第一种情况是不是问题并且可以用detach-subdirectory中描述的方法容易地解决。
第二不是很多。子模块的存在以及.gitmodules包含folder/content/submoduleA
和folder/content/submoduleB
的完整路径的事实会导致部分历史记录不一致,因为.gitmodules引用了不存在的目录结构(一旦使用了filter-branch)。
所以我想知道是否有办法做到这一点,而不会造成不一致的历史。
使用第二git的过滤分支命令,我能够用SED命令重写.gitmodules,但实际子模块文件夹仍然保持原样(都使用索引过滤器和树型过滤器)。只有子目录过滤器能够改变它们,但是.gitmodules被删除。 git submodule split命令似乎完全按照我的意思去做,但是读取线程时我得到了它有一些问题的印象,所以我不习惯使用它。 – Unode 2010-08-05 16:37:37
@Unode:我明白了。我不认为这个特别的补丁现在正在积极开发中。 – VonC 2010-08-05 16:58:17