Я занят преобразованием всех моих существующих репозиториев SVN в Git, и в то же время также пользуюсь возможностью использовать способность Git легко переписать некоторую историю. Для этого я также использую git filter-repo, чтобы избавиться от ненужных файлов и выполнить стандартное переименование с помощью скриптов. (примечание: все они являются сольными репозиториями, в которых работаю только я, поэтому никаких заявлений об отказе от ответственности, изменяющих историю, не требуется, я знаю предостережения :))
filter-repo
работает прекрасно (с возможностями сценариев Python, а также намного быстрее, чем filter-branch), но создает коммиты замены. Как только реструктуризация репо будет завершена, я хотел бы снова избавиться от всех этих коммитов замены, чтобы действительно сохранить измененную историю. И желательно через скрипт, так как у меня много репозиториев с кучей коммитов. Однако я оказался с пустыми руками, когда гуглил, как это сделать...
Причина этого: моего клиента командной строки Git это не беспокоит, но мой графический интерфейс (SmartGit для Windows) продолжает ныть, что он не поддерживает замену коммитов (он обнаружил refs/replace-refs, как он говорит). В любом случае он отображает содержимое репо в порядке, и я могу продолжить заполнение отсутствующих сообщений фиксации, выполнить дополнительную очистку и т. Д., Но я еще не смотрел дальше, так что кто знает, что это в конечном итоге сломается?
Я уже нашел обходной путь, отправив каждое репо в пустое репо, добавленное на локальный сервер Gitea, а затем просто удалив локальное репо и клонировав его обратно на локальный. Хотя я могу жить с этим до конца моего пути к конверсии, я продолжаю задаваться вопросом, мог ли я сделать это более эффективно?
git filter-repo
не имеет возможности для этого (я был бы немного удивлен, если нет, но это все еще продолжается, и я на самом деле не смотрел ), вы можете просто запустить окончательный вариант в основном без операций (без фильтров, кроме --tag-name-filter, если у вас есть имена тегов)git filter-branch
в конце, чтобы закрепить все замены. - person torek   schedule 09.10.2020