Домашнее хозяйство в хранилище git - PullRequest
0 голосов
/ 22 ноября 2018

У меня очень большой репозиторий Subversion (> 200 000 коммитов), который мы недавно перешли на git.

В течение многих лет многие люди допускали крошечные ошибки, такие как добавление пакетов iso или msi, добавление папок, которые не должны были быть добавлены и т. Д. Мы очистили это, удалив файлы / папки и подтвердили.Хранилище росло, но это не было проблемой, так как SVN делал хорошие редкие проверки.

Теперь на git клиенту нужно вытащить всю историю, а локальный клон теперь составляет около 50 ГБ.Время для некоторой уборки ...

Есть ли способ удалить все файлы из истории, которые были удалены в прошлом?Или создать новый репозиторий и переместить все те файлы, которые существуют в последнем коммите?

Я работал с командой git filter-branch, которая помогла.Но только для тех файлов, для которых я знаю путь.Я также использовал git log --diff-filter=D --summary, чтобы получить список всех удалений, но их тысячи…

ОК, в конце концов, я могу просто запустить новый репозиторий и скопировать в него последние файлы.Тогда я потеряю историю, но могу сохранить исходное большое репо в качестве архивного репо для просмотра истории при необходимости.

Я действительно надеюсь, что есть лучшие подходы ...

1 Ответ

0 голосов
/ 23 ноября 2018

Я обнаружил, что это слишком сложно достичь после перехода на git.Но я могу достичь этого раньше.

Я сделал это:

svnadmin dump …

, чтобы создать файл дампа.

svndumpfilter exclude …

, чтобы исключить все вещи, которые мне больше не нужны.Чтобы получить полный список репозитория, включая удаленные элементы, я сделал следующее:

svndumpfilter exclude "*" …

Круто то, что svndumpfilter перечисляет все файлы, которые он исключил, в структурированном отсортированном выводе.Поскольку я исключил все, я получил полный каталог.

Я несколько раз запускал svndumpfilter, чтобы удалить все ненужные вещи.Затем повторно импортируйте хранилище Subversion в качестве нового хранилища и затем используйте его для перехода на git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...