Импорт истории из SVN в Git - Изменить информацию об коммиттере - PullRequest
2 голосов
/ 29 октября 2009

Я работаю над преобразованием некоторых репозиториев Subversion в Git с помощью инструмента git-svn. Я заметил, что, хотя он правильно импортирует информацию об авторе, информация о коммитере не совпадает с информацией об авторе (например, дата коммиттера - это дата / время, когда я запускал инструмент git-svn).

Есть ли способ сделать так, чтобы информация о коммитере соответствовала информации об авторе при импорте из Subversion? Если нет, как я могу использовать git-filter-branch для перезаписи коммитов, чтобы исправить это (то есть скопировать информацию об авторе в информацию о коммиттере для каждого коммита)?

Спасибо!

--- UPDATE ---

Git-svn не вызывает эту проблему, я! Я перебираю историю Subversion, и это меняет дату коммиттера. Итак, может ли кто-нибудь использовать git-filter-branch для изменения этого (то есть скопировать информацию об авторе в информацию о коммиттере для каждого коммита)?

1 Ответ

1 голос
/ 29 октября 2009

Вы ищете режим --env-filter ответвления фильтра. Соответствующие переменные среды: GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL и GIT_COMMITTER_DATE.

Ваша команда будет выглядеть примерно так:

git filter-branch --env-filter '
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' -- --all

--all указывает, что это должно работать во всех ветвях. Ваши исходные ссылки будут сохранены в пространстве имен ссылок / оригиналов на случай, если вы ошибетесь.

И, конечно, я не могу публиковать что-либо подобное без предупреждения об опасности для тех, кто может случиться с ним. От man git-filter-branch:

ВНИМАНИЕ! Переписанная история будет иметь разные имена объектов для всех объектов и не будет сходиться с исходной ветвью. Вы не сможете легко перемещать и распространять переписанную ветку поверх оригинальной ветви. Пожалуйста, не используйте эту команду, если вы не знаете всех последствий, и избегайте ее использования в любом случае, если для решения вашей проблемы будет достаточно простого коммита. (Обратитесь к разделу «ВОССТАНОВЛЕНИЕ ИЗ РЕБАЗЫ UPSTREAM» в git-rebase (1) для получения дополнительной информации о перезаписи опубликованной истории.)

...