Как git svn получать только ветки / теги с определенными шаблонами? - PullRequest
3 голосов
/ 02 августа 2011

Я хочу проверить библиотеку Boost, используя git-svn, и я хочу только извлекать ствол и теги, начиная с версии 1.35, т. Е. Tags / release / Boost_1_35 и выше.Мой конфиг выглядит так:

[svn-remote "svn"]
    ignore-paths = ^tags/release/(?i:(?!boost)|[^/]*(?:beta|rc)|boost_(?:0|1_[1-2]|1_3[0-4]))[^/]*/
    url = https://svn.boost.org/svn/boost
    fetch = trunk:refs/remotes/svn/trunk
    tags = tags/release/*:refs/remotes/svn/tags/*

Тем не менее, git fetch по-прежнему выбирает тонны несвязанных тегов, таких как svn / tags / version_0-9-10 или svn / tags / version_0-9-10 @ 44215.Интересно, как правильно указать пути игнорирования для достижения этого эффекта.

Кстати: я прочитал Как мне выбрать / клонировать только несколько веток, используя git-svn? , ноне звучит масштабируемое решение.

1 Ответ

0 голосов
/ 29 декабря 2014

Мне удалось сделать это для определенных веток, но поскольку теги в svn на самом деле являются ветвями, вероятно, они должны быть одинаковыми:

После git svn init с "-t тегами и -b ветками" я отредактировал .git / config так:

[svn-remote "svn"]
        ... url, fetch and stuff ... 
        branches = branches/rel-2.1/*:refs/remotes/svn/branches/rel-2.1/*
        branches = branches/rel-2.2/*:refs/remotes/svn/branches/rel-2.2/*
        branches = branches/rel-2.3/*:refs/remotes/svn/branches/rel-2.3/*
        branches = branches/rel-2.4/*:refs/remotes/svn/branches/rel-2.4/*
        branches = branches/rel-2.5/*:refs/remotes/svn/branches/rel-2.5/*

Я использовал простой код Python для генерации соответствующих строк и скопировал его в .git / config:

for x in range(1,6):
   print branches = "     branches/rel-2.{0}/*:refs/remotes/svn/branches/rel-2.{0}/*".format(x)

Не такой масштабируемый, как регулярные выражения, но это лучшее, что я смог найти.

...