我可以成功运行git filter-branch
一些代码,例如将另一个 repo 合并到子目录 [1]:
git filter-branch --index-filter '
git ls-files -s |
perl -pe "s{\t\"?}{$&helper/}" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info &&
mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE
' remotes/helper/master
但是现在,我也很想扩展每个提交的消息以包含其以前的 ID(SHA 哈希),因为这些提交可能在 GitHub 上有没有被转移的评论/对话。
例如添加这样的额外行(bob/helpers
预先硬编码/已知的位置):
[COPIED FROM bob/helpers@76c7c080b3bd2f93dc78e4864899d668a57cd9f9]
据我所知,Gitmsg-filter
只给了我原始消息,而 Gitenv-filter
不包含提交 ID(SHA 有)作为输入变量。那么这可能吗?
谢谢!
[1] 通过这篇很棒的文章,使用此电子邮件线程中的 Perl 过滤器来解决 Mac OS X 上的错误。