Я могу успешно запустить 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.