我想复制一个大型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
答案 0 :(得分:1)
git-svn有一个--authors-file
选项,您可以告诉git对于给定的svn版本提交者git的作者值是多少。因此,这是一个非常简单的文件。
svnauthor1 = Author Name 1 <author1@mail.com>
svnauthor2 = Author Name 2 <author2@mail.com>