我有一个已经从 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/

10-14 18:41