立即更改从 svn 导入的 git 回购中的所有作者姓名
change all author names in git repo imported from svn at once
我想复制一个大型 SVN 存储库并散列所有 committer/author 个名称,因为它们是机密的。我想维护工作回购,包括所有修订,并能够区分每个提交者,但使用散列(或模糊)的作者姓名。
到目前为止,我已经使用 git-svn 将 repo 复制到 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
git-svn 有一个 --authors-file
选项,您可以在其中告诉 git 作者在 git 上的值对于给定的 svn 修订提交者来说是什么。所以这是一个非常简单的文件。
svnauthor1 = Author Name 1 <author1@mail.com>
svnauthor2 = Author Name 2 <author2@mail.com>
我想复制一个大型 SVN 存储库并散列所有 committer/author 个名称,因为它们是机密的。我想维护工作回购,包括所有修订,并能够区分每个提交者,但使用散列(或模糊)的作者姓名。
到目前为止,我已经使用 git-svn 将 repo 复制到 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
git-svn 有一个 --authors-file
选项,您可以在其中告诉 git 作者在 git 上的值对于给定的 svn 修订提交者来说是什么。所以这是一个非常简单的文件。
svnauthor1 = Author Name 1 <author1@mail.com>
svnauthor2 = Author Name 2 <author2@mail.com>