Как скопировать репо и отфильтровать все описания коммитов

Мы хотели бы открыть исходный код библиотеки, над которой мы работали некоторое время внутри компании.

Проблема в том, что мы используем Phabricator и когда делаются коммиты, их описания содержат подробности о code-review, а иногда и конфиденциальные данные. Сами заголовки коммитов не содержат такой конфиденциальной информации.

Мы хотели бы фактически скопировать весь репозиторий в новый репо и сохранить историю коммитов нетронутой (т. е. названия, авторов, различия и т. д.), но удалить только описания.

Поскольку мы используем Phabricator, у нас есть только одна ветка (master) для начала.

Я полагаю, что мы могли бы использовать git filter-branch с опцией --commit-filter, но на этом мой опыт заканчивается.


person Arjun Mehta    schedule 01.12.2017    source источник
comment
Звучит как частный случай, например. stackoverflow.com/questions/19636750/   -  person Oliver Charlesworth    schedule 01.12.2017


Ответы (1)


Вы можете использовать переключатель --msg-filter git filter-branch. Для каждой фиксации он получает сообщение фиксации через стандартный ввод и применяет к нему заданный «скрипт». В вашем случае вы можете оставить только первую строку сообщения фиксации (заголовок):

$ git filter-branch --msg-filter 'head -1'
person Mureinik    schedule 01.12.2017
comment
Это так просто. Спасибо! - person Arjun Mehta; 01.12.2017