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

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

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

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

1 ответ

Решение

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

git filter-branch --env-filter '
  if [ $GIT_AUTHOR_EMAIL = old_email1@whatever.com ];
    then GIT_AUTHOR_EMAIL=new_email1@whatever.com;
  fi;
  if [ $GIT_AUTHOR_EMAIL = old_email2@whatever.com ];
    then GIT_AUTHOR_EMAIL=new_email2@whatever.com;
  fi;
  if [ $GIT_AUTHOR_EMAIL = old_email3@whatever.com ];
    then GIT_AUTHOR_EMAIL=new_email3@whatever.com;
  fi;
  export GIT_AUTHOR_EMAIL' -- --all
Другие вопросы по тегам