Игнорировать каталоги в git-svn (добавление каталогов в разреженную проверку)

При использовании git svn, редкая проверка центрального хранилища может быть достигнута чем-то вроде

git clone -s URL-to-root --include-paths 'dir1|dir2|dir3'

После использования этой настройки в течение некоторого времени я хотел бы добавить еще один каталог dir4 для отслеживаемых. Этот каталог существовал во многих коммитах, которые я уже проверил. Редактирование переменной svn-remote.svn.include-paths с помощью команды

git config --edit

не оказывает желаемого эффекта на git fetch (только файлы, измененные в будущих коммитах, будут извлечены при их изменении; не сразу), и следующее также не проверяет dir4:

git svn fetch --include-paths dir4

Я думаю, что следующее будет работать, но будет очень неэффективно из-за повторной установки всех ревизий, начиная с первой ревизии, в которой dir4 появился впервые (назовем это REV):

git svn reset -r REV
git svn fetch --include-paths dir4
git svn rebase

Каков будет лучший способ отслеживания dir4? Что делать, если меня не волнует история dir4?

Есть ли лучший способ сделать начальную разреженную проверку с помощью git-svn, если я подозреваю, что позже захочу изменить список отслеживаемых каталогов? Я также попытался начать с перечисления directoreis, которые не нужно извлекать в исходном коммите, но я не знаю, как их игнорировать позже:

git svn fetch --ignore-paths dir4

Но как мне сказать Git перестать игнорировать dir4 когда я решу, что тоже хочу это проверить?

1 ответ

reset В разделе справочной страницы git-svn https://git-scm.com/docs/git-svn/1.9.1#git-svn-emresetem говорится следующее:

... если вы измените опцию --ignore-paths, выборка может завершиться ошибкой с "not found in commit" (файл не виден ранее) или "несоответствие контрольной суммы" (пропущено изменение). Если проблемный файл нельзя игнорировать вечно (с --ignore-paths), единственный способ восстановить репозиторий - использовать сброс.

Я думаю, причина в следующем: Git создает отдельный коммит git (определяемый его контрольной суммой) для каждого коммита svn в истории svn. Добавляя каталог в историю, контрольные суммы обязательно должны измениться, поэтому нет другого пути, кроме как перестроить всю историю.

Каталог не может быть добавлен даже без воссоздания истории. Коммит, добавляющий его, должен быть создан локально, и при попытке svn dcommit это, есть ошибка Item already exists in filesystem...

Другие вопросы по тегам