我有一个已经从 Subversion 克隆的存储库。我一直在以 Git 形式在这个存储库中做一些工作,我不想通过再次克隆而丢失该结构。
但是,当我最初克隆存储库时,我未能正确指定 svn.authors
属性(或语义相似的选项)。
既然存储库是完全 Git 化的,有什么方法可以指定 SVN 作者映射吗?
最好,我想更正所有旧的提交作者以代表 Git 作者而不是原始 SVN 用户名。
最佳答案
首先查看您必须清理的内容:
git shortlog -s
对于这些名称中的每一个,在脚本中创建一个条目,如下所示(假设您希望所有作者和提交者都相同):
#!/bin/sh
git filter-branch --env-filter '
n=$GIT_AUTHOR_NAME
m=$GIT_AUTHOR_EMAIL
case ${GIT_AUTHOR_NAME} in
user1) n="User One" ; m="[email protected]" ;;
"User Two") n="User Two" ; m="[email protected]" ;;
esac
export GIT_AUTHOR_NAME="$n"
export GIT_AUTHOR_EMAIL="$m"
export GIT_COMMITTER_NAME="$n"
export GIT_COMMITTER_EMAIL="$m"
'
这基本上是我最近用于 large rewrite 的脚本,与您描述的非常相似(除了我有大量作者)。
编辑 使用 π 指出了我脚本中的引用问题。谢谢!
关于svn - 使用 Git SVN 追溯纠正作者?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/392332/