Смена нескольких авторов в большом репозитории Git

У меня очень большой репозиторий Git (почти 20 000 коммитов, 3 ГБ +, 10+ авторов), который я перемещаю из Subversion в Github. Я уже переместил репо, используя svn2git nirvdrum (а не svn2git on gitorious), однако у меня не было файла авторов, настроенного для сопоставления авторов. Никто еще не использует это репо, и никто еще не клонировал его, и я сказал всем, что вношу изменения, которые сломают любой клон.

Итак, что я хочу сделать, так это переписать электронные письма авторов в истории коммитов, чтобы Github правильно связывался с этими пользователями Github.

Я не хочу переписывать их по одному (как предлагает Изменить имя автора и коммиттера, а также адрес электронной почты нескольких коммитов в Git и Переписать автора коммитов Git), потому что это занимает около 30 минут на каждого автора (я уже сделал один автор таким образом), и я хочу делать все коммиты во всех ветвях репо, а не только в текущей ветке.


person Nate    schedule 23.06.2014    source источник


Ответы (1)


Расширен этот ответ на Перепишите автора коммитов Git, чтобы включить в репо несколько авторов и все исправления.

git filter-branch --env-filter '
  if [ $GIT_AUTHOR_EMAIL = [email protected] ];
    then [email protected];
  fi;
  if [ $GIT_AUTHOR_EMAIL = [email protected] ];
    then [email protected];
  fi;
  if [ $GIT_AUTHOR_EMAIL = [email protected] ];
    then [email protected];
  fi;
  export GIT_AUTHOR_EMAIL' -- --all
person Nate    schedule 23.06.2014