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

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

Очень недавний и похожий (но пока без ответа) вопрос: Как 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

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

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

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

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

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

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

14
задан Community 23 May 2017 в 12:00
поделиться