gpt4 book ai didi

Git:将子目录转换为子模块

转载 作者:太空狗 更新时间:2023-10-29 12:50:13 24 4
gpt4 key购买 nike

我已经成功地能够使用命令将子模块转换为子目录,例如这两个示例中概述的方法:

Submodule->Subdir

Subdir->Submodule

挑战在于在目录上成功实现这一点,并在每次转换时保留其历史
上面概述的这两种方法在简单的实验存储库上运行良好,但不能处理更复杂的存储库。例如,具有任意提交模式的 repo 协议(protocol)。

问题在执行时暴露出来

git filter-branch --subdirectory-filter <lib-directory> -- --all

尝试将目录(以前是子模块)转换为子模块时。如果我理解正确的话。这是 throw :

Rewrite c95281d27e4602e9af50146eefcf7c28f5bb4f35 
(2/11)a989b207d3757f9803fd50fa2d77908a4dc1330e
fatal: failed to unpack tree object
c95281d27e4602e9af50146eefcf7c28f5bb4f35:lib/test_submodule
Could not initialize the index`

其中网上绝对没有类似的结果。
据推测,这是由于在 INDEX 中重复引用子模块,从而在转换子模块时会出现上述错误。

有没有什么方法可以执行 filter-branch这将允许避免这些早期对子模块的引用??

编辑:我又回来看这个问题了,还是没找到解决办法。将 Subdir->Submodule 方法与 git filter-branch 结合使用适用于普通目录;但是当它碰到子模块时崩溃。git 中此部分不断发生的崩溃:

https://github.com/github/git-msysgit/blob/master/git-filter-branch.sh#L300

虽然我不太明白。

最佳答案

对我来说,它在向目录添加尾部斜杠后起作用:

$ git filter-branch --subdirectory-filter htdocs/typo3_src -- --all
Rewrite cbe03e13da071403a2632263f1760b560398cdd3 (1/12) (0 seconds passed, remaining 0 predicted) 004b20fc15023539484c7f5990b99780f54dc0ac
fatal: failed to unpack tree object cbe03e13da071403a2632263f1760b560398cdd3:htdocs/typo3_src
Could not initialize the index

$ git filter-branch --subdirectory-filter htdocs/typo3_src/ -- --all
Rewrite ec6e3c7212f1080fc052c87b1129335ab5bee524 (5/10) (1 seconds passed, remaining 1 predicted)
Ref 'refs/heads/master' was rewritten
Ref 'refs/remotes/origin/master' was rewritten
Ref 'refs/remotes/origin/develop' was rewritten
WARNING: Ref 'refs/remotes/origin/master' is unchanged
WARNING: Ref 'refs/tags/0.0.1' is unchanged

关于Git:将子目录转换为子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com