Git: изменение авторства коммитов
В продолжение предыдущей заметки о миграции из SVN.
Имеющийся репозиторий крутился под управлением Visual SVN Server и всем сотрудникам почему-то были выданы уродские логины вида Ivan_Petrov, не учитывавшие, к тому же, e-mail автора.
При переносе истории изменений в Git с той же командой можно немного схитрить, изменив авторство коммитов при помощи вот такого шелл-скрипта:
#!/bin/sh git filter-branch --force --env-filter ' an="$GIT_AUTHOR_NAME" # автор коммита am="$GIT_AUTHOR_EMAIL" # e-mail автора коммита cn="$GIT_COMMITTER_NAME" # коммитер cm="$GIT_COMMITTER_EMAIL" # e-mail коммитера if [ "$GIT_AUTHOR_NAME" = "Ivan_Petrov" ] then cn="Ivan Petrov" cm="[email protected]" an="Ivan Petrov" am="[email protected]" fi export GIT_AUTHOR_NAME="$an" export GIT_AUTHOR_EMAIL="$am" export GIT_COMMITTER_NAME="$cn" export GIT_COMMITTER_EMAIL="$cm" '
На что нужно обратить внимание:
ключ --force, который может потребоваться, если историю репозитория уже переписывали (см. пост про смену корневой папки)
переменные cn, cm, an, am. В небольших коллективах автор коммита и коммитер может являться одним и тем же человеком, в больших проектах коммитить может специалист с определенными полномочиями, в то время как авторство кода может принадлежать другому программисту.
if-then-блоков может быть неограниченное количество, хватит на всех членов команды
для проверки авторства доступна переменная $GIT_AUTHOR_EMAIL
Источник: GitHub













