我正在努力将存储库从cvs转换为git。由于cvs单独处理存储库子文件夹,因此多个存储库实际上依赖于主存储库中的某个子文件夹。
我发现我认为的确切答案是我需要的Rewrite history git filter-branch create / split into submodules / subprojects
不幸的是,当我尝试运行它时,我收到错误
git commit-tree: Syntax error: "(" unexpected
could not write rewritten commit
我不知道如何调试此问题。我试图将变量回显到终端和文件,但没有看到任何创建。如何打印在过滤器定义内定义的变量(终端或文件)?
答案 0 :(得分:2)
Git filter-branch commit-filter在./.git-rewrite下的临时目录中运行(除非-d选项将其指向别处)。脚本的输出应该是新提交的sha1,使其不适合调试消息。但是,您仍然可以将错误流用于此目的,例如:
echo $ my_var>& 2
提交过滤器未使用的错误流的>&2
表达式redirects output。
答案 1 :(得分:0)
实际上,filter-branch中的命令参数始终使用eval命令在shell上下文中进行求值,因此您可以在命令参数中添加“set -x”,然后在执行命令时将打印详细信息。例如:
git filter-branch --force --env-filter '
set -x
test="aaa"
echo $test
' --tag-name-filter cat -- --branches --tags
所以会打印如下信息:
Rewrite 91e9265bad17dfd71c335bbc4c1a0c422982fc50 (1/1) (1 seconds passed, remaining 0 predicted) ++ test=aaa
++ echo aaa
aaa
FYI。