一次更改从svn导入的git repo中的所有作者名称

时间:2019-03-07 14:04:53

标签: git logging svn text-manipulation

我想复制一个大型SVN存储库,并对所有提交者/作者的名字进行加密,因为它们是机密的。我希望维护工作版本,并进行所有修订,并能够区分每个提交者,但使用散列的(或模糊的)作者名称。

到目前为止,我已经使用git-svn将仓库复制到git了,我正在考虑使用git filter-branch --env-filter来做到这一点。但是,似乎更适合代替一位特定作者而不是所有作者(可能有数百位)。我想更改所有名称,而不必在if语句中手动输入每个名称。

有人可以给我有关如何解决此问题的建议吗?我不确定如何最好地进行。

以下是我知道的脚本,但是需要每个作者的手动处理:

 #!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

1 个答案:

答案 0 :(得分:1)

git-svn有一个--authors-file选项,您可以告诉git对于给定的svn版本提交者git的作者值是多少。因此,这是一个非常简单的文件。

svnauthor1 = Author Name 1 <author1@mail.com>
svnauthor2 = Author Name 2 <author2@mail.com>