Может ли git не хранить историю определенных папок при работе с git-svn? - PullRequest
1 голос
/ 15 июня 2010

Короче говоря: есть ли способ отключить хранение полной истории для определенных папок в репозитории git-svn?

У нас довольно большой репозиторий SVN с большой выпиской.Я хотел бы перенести его в Git для локального развития, потому что Git ускоряет update и status команды на порядки.

Когда я просто выполняю git svn clone, это создает очень большое репо.Достаточно большой, чтобы быть больше, чем весь мой жесткий диск.Проблема заключается в двоичных каталогах, для которых история слишком велика.
Для правильной локальной сборки требуются последние двоичные файлы, но история вообще не требуется для моего процесса разработки.Я никогда не буду менять их сам.
Я хотел бы хранить только последние версии для определенных папок или может быть историей, но не более недели.

Я мог бы найти только filter дляgit svn fetch, что исключает определенные папки вообще.Это не совсем то, что мне нужно.

Со мной нормально, когда у меня есть задача Cron, которая удаляет историю из определенных папок, но я не знаю, как ее создать.Также Cron не решает проблему первой git svn clone.

PS Структура хранилища SVN не может быть изменена никакими средствами.

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Я получил следующее решение:

  1. Есть три папки с бинарными файлами, поэтому я добавил их в игнорируемые папки git-svn, чтобы они вообще не сохранялись в git
  2. Вручную добавить эти папки в рабочее пространство git с помощью контроля версий SVN
  3. Составлен скрипт, который обновляет эти папки сразу cron

Теперь у меня довольно странное рабочее пространство, где некоторые папки управляются svn, а другие - git, но на данный момент похоже, что это рабочее решение.

0 голосов
/ 16 июня 2010

Вы можете сделать поверхностную копию, указав, сколько svn истории нужно клонировать.например:

$ git svn clone -s -r534:HEAD http://some/svn/repo

это клонирует только историю начиная с версии 534. Вам просто нужно выяснить правильный номер для вашего хранилища и вытащить, например, последние 6 версий.Просто укажите число на 6 меньше, чем текущая ревизия.

Обновление:

Подумав немного больше о вашей проблеме, я думаю, что мелкие клоны не совсем подходятпуть, потому что вы не можете вставить / объединить их - они предназначены только для того, чтобы вы отправляли им патчи по электронной почте.

Вы пытались пометить соответствующие файлы как двоичные, прежде чем выполнить git-svn clone?Вы можете сделать это, добавив следующую строку в файл .gitattributes (в корне хранилища) после запуска git init:

*.jpg binary

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

...