Я пытаюсь клонировать svn-репозиторий, используя git svn. Хранилище помечено ежедневными сборками, которые я хочу игнорировать. Я пытаюсь использовать опцию «ignore-paths» для этого, но я все еще получаю ежедневные теги сборки в качестве веток в моем хранилище.
Очень недавний и похожий (но пока без ответа) вопрос здесь:
Как git svn получать только ветки / теги с определенными шаблонами?
Общая структура репозитория
- филиалы
- Игнорировать каталог 1
- Игнорировать каталог 1
- теги
- тег 1
- Tag 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 (теги / сборки / ежедневная сборка 1)? Оценивается ли он для каждого файла в проекте (теги / сборки / ежедневная сборка 1 / файл 1, теги / сборки / ежедневная сборка 1 / файл 2) или только на уровне ветви / тега (теги / сборки / ежедневная сборка 1)? Включает ли он базовый URL хранилища (https://test.kuali.org/svn/rice/tags/builds/Daily build 1)?
Есть ли что-то, что я должен делать, кроме --stdlayout (с указанием регулярного выражения для тегов, которые будут получать то, что я хочу)?
Меня интересуют только транк и некоторые метки выпуска. Есть ли лучший способ получить их? Я попытался клонировать только с транком, затем добавив «fetch =» в конфигурацию, чтобы добавить только те теги, которые мне нужны, а затем получить ревизию, из которой были отмечены теги, но когда я смотрю на результат в git gui (визуализируйте все ветви ) эти два тега отображаются как плавающие с одним коммитом (не привязанным к транку или друг к другу).
Не уверен, что он релевантен, но я использую msysgit (git version 1.7.3.1.msysgit.0) на 64-битной машине с Windows 7.
Длинный вопрос, я знаю ... Я просто хотел быть тщательным.