Ответ 1
Может быть проще просто клонировать багажник и ничего больше (git svn clone -T http://path/to/trunk
), а затем добавлять нужные теги и ветки, которые вы хотите, путем изменения файла конфигурации и выполнения git svn fetch
es.
Я пытаюсь клонировать репозиторий svn, используя git svn. У репозитория есть ежедневные сборки с тегами, которые я хочу игнорировать. Я пытаюсь использовать параметр "игнорировать пути", чтобы сделать это, но я все еще получаю ежедневные теги build как ветки в моем репозитории.
Очень недавний и подобный (но пока не отвеченный) вопрос здесь: Как git svn извлекать только те ветки/теги с определенными шаблонами?
Общая структура репозитория
Я не так хорош в регулярных выражениях, и они могут быть неправильными, но вот что я пробовал:
Это была просто измененная версия того, что я нашел в документации 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.
Долго вопрос, я знаю... Я просто хотел быть основательным.
Может быть проще просто клонировать багажник и ничего больше (git svn clone -T http://path/to/trunk
), а затем добавлять нужные теги и ветки, которые вы хотите, путем изменения файла конфигурации и выполнения git svn fetch
es.