Git filter-branch: можно ли обновлять сообщения коммитов, чтобы они ссылались на старые идентификаторы коммитов?

Я могу успешно запустить git filter-branchдля некоторого кода, например. объединить другое репо в подкаталог [1]:

git filter-branch --index-filter '
  git ls-files -s |
  perl -pe "s{\t\"?}{$&helper/}" |
    GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info &&
  mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE
' remotes/helper/master

Но теперь я также хотел бы расширить сообщение каждого коммита, чтобы включить его прежний идентификатор (хэш SHA), поскольку эти коммиты могли иметь комментарии/разговоры на GitHub, которые не t переводится.

добавьте дополнительную строку, подобную этой (где bob/helpersжестко запрограммировано/известно заранее):

[COPIED FROM bob/helpers@76c7c080b3bd2f93dc78e4864899d668a57cd9f9]

Насколько я могу судить, Git msg-filterдает мне только оригинал сообщение, а Git env-filterне содержит идентификатор коммита (SHA есть) в качестве входной переменной. Тогда это возможно или нет?

Спасибо!

[1] Через эту замечательную статьюс фильтром Perl из этой ветки электронной почтыдля обхода ошибки в Mac OS X.

8
задан Aseem Kishore 20 April 2012 в 15:17
поделиться