Как работают Git пути игнорирования SVN (игнорируя ежедневные теги сборки)?

Я пытаюсь клонировать репозиторий svn, используя git svn. У репозитория есть ежедневные сборки с тегами, которые я хочу игнорировать. Я пытаюсь использовать параметр "игнорировать пути", чтобы сделать это, но я все еще получаю ежедневные теги build как ветки в моем репозитории.

Очень недавний и подобный (но пока не отвеченный) вопрос здесь: Как git svn извлекать только те ветки/теги с определенными шаблонами?

Макет репозитория - https://test.kuali.org/svn/rice

Общая структура репозитория

  • ветки
    • Филиал 1
  • Игнорировать каталог 1
  • Игнорировать каталог 1
  • теги
    • Тег 1
    • Тег 2
    • старый
      • Старый тег 1
      • Старый тег 2
    • строит
      • Ежедневная сборка 1
      • Ежедневная сборка 2
  • багажник

Что я пробовал

Я не так хорош в регулярных выражениях, и они могут быть неправильными, но вот что я пробовал:

Это была просто измененная версия того, что я нашел в документации git svn:

git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="^[^/]+/(?:tags/builds|tags/old|branches)" https://test.kuali.org/svn/rice

Это я пытался упростить:

git svn clone -r15709:HEAD --prefix=svn/ --stdlayout --no-follow-parent --ignore-paths="(old|builds)" https://test.kuali.org/svn/rice rice-full

Отчаяние... (и добавление некоторых других путей, которые мне не нужны)

git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^[^/]+/(?:builds|old)|inactive|rice-functional-tests|sandbox|tools" https://test.kuali.org/svn/rice

Затем я переключился на более новую версию, чтобы закончить ее раньше и попытался игнорировать все ветки и теги для теста. Казалось, что это не получило никаких ветвей и тегов, но это также никогда не заканчивалось. Казалось, он замерз (по крайней мере, он длился дольше, чем я думал, что он должен был получить только день или два истории):

git svn clone -r21846:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags*|^branches*" https://test.kuali.org/svn/rice

Последний, который я пробовал, был:

git svn clone -r15711:HEAD --prefix=svn/ --stdlayout --ignore-paths="^tags/old*|^tags/builds*|^inactive*|^rice-functional-tests*|^sandbox*|^tools*" https://test.kuali.org/svn/rice

Общие мысли и вопросы

  • Я не уверен, что соответствует регулярному выражению ignore-paths. Это относительный путь репозитория svn (теги/сборки/Daily build 1)? Он оценивается для каждого файла в проекте (теги/сборки/Daily build 1/file 1, tags/builds/Daily build 1/file 2) или только на уровне ветки/тега (теги/сборки/Daily build 1)? Включает ли он адрес базы данных репозитория (https://test.kuali.org/svn/rice/tags/builds/Daily build 1)?

  • Есть ли что-то, что я должен делать, кроме --stdlayout (указав регулярное выражение для тегов, которые получат то, что я хочу)?

  • Меня интересуют только багаж и некоторые теги релиза. Есть ли лучший способ получить их? Я пробовал клонирование только с помощью соединительной линии, а затем добавлял в конфигурацию "fetch =", чтобы добавлять только те теги, которые меня волнуют, а затем извлекать ревизию с тегами, но когда я смотрю на результат в git gui (визуализировать все ветки) два тега отображаются как плавающие с одной фиксацией (не привязанной к внешней линии или друг другу).

Не уверен, что он relavant, но я использую msysgit (git версия 1.7.3.1.msysgit.0) на 64-битной машине Windows 7.

Долго вопрос, я знаю... Я просто хотел быть основательным.

Ответы

Ответ 1

Может быть проще просто клонировать багажник и ничего больше (git svn clone -T http://path/to/trunk), а затем добавлять нужные теги и ветки, которые вы хотите, путем изменения файла конфигурации и выполнения git svn fetch es.