pph*_*bey 8 git git-submodules
我已经成功地使用命令(例如这两个示例中概述的方法)将子模块转换为子目录:
挑战是在目录上成功实现此目的,通过每次转换保留其历史记录.
上面列出的这两种方法在一个简单的实验存储库上运行良好,但不处理更复杂的存储库.例如,具有任意提交模式的repo.
执行时问题会暴露出来
git filter-branch --subdirectory-filter <lib-directory> -- --all
尝试将目录(以前是子模块)转换为子模块时.如果我理解正确的话.这是扔:
Rewrite c95281d27e4602e9af50146eefcf7c28f5bb4f35
(2/11)a989b207d3757f9803fd50fa2d77908a4dc1330e
fatal: failed to unpack tree object
c95281d27e4602e9af50146eefcf7c28f5bb4f35:lib/test_submodule
Could not initialize the index`
Run Code Online (Sandbox Code Playgroud)
其中绝对没有类似的结果在线.
据认为,这是由于对INDEX中子模块的重复引用而发生的,因此当转换子模块时,会发生上述错误.
有没有办法执行一个filter-branch允许避免这些早期的子模块引用?
编辑:我再次回来看这个问题,我仍然没有找到解决方法.使用Subdir-> Submodule方法git filter-branch可以正常用于普通目录; 但碰到子模块时会崩溃.git中此部分发生的崩溃:
https://github.com/github/git-msysgit/blob/master/git-filter-branch.sh#L300
但是我对此无法理解.
cwe*_*ske 16
对我来说,它在向目录添加尾部斜杠后起作用:
$ 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
Run Code Online (Sandbox Code Playgroud)