git-svn: как создать тег / ветку для подпроекта SVN - PullRequest
2 голосов
/ 29 ноября 2011

База на хите из ответов ниже. Я нашел решение.

  1. Клон SVN:
    $ git svn clone http://foo.net/code/design --trunk=trunk/proj1 --tags=tags/forProj1 --branches=branches/forProj1 localProjName

  2. Затем тег можно создать с помощью простой команды
    $ git svn tag -n -m "test tag" test_v1

Примечания: Это также можно сделать, взломав .git / config в локальном клоне git, изменив его на

[svn-remote "svn"]
     url = http://foo.net/code/design
     fetch = trunk/proj1:refs/remotes/trunk
     tags = tags/forProj1/*:refs/remotes/tags/*
     branches = branches/forProj1/*:refs/remotes/branches/*


Оригинальный вопрос
Моя структура сервера SVN выглядит следующим образом:

http://foo.net/code/design/
                          |-- trunk/
                          |        |-- proj1
                          |        |-- proj2
                          |-- tags/
                          |       |-- forProj1
                          |       |-- forProj2
                          |-- branches/
                          |           |-- forProj1

Я проверяю proj1:

$ git svn clone http://foo.net/code/design/trunk/proj1 proj1

и я хочу создать тег для proj1 и поместить этот тег в http://foo.net/code/design/tags/forproj1

Я пытался:

$ git svn tag -m "test tag for proj1" test_tag_1

Я получил сообщение об ошибке, в котором сказано, что я должен поставить "--destination". Но я не знаю, как должен выглядеть пункт назначения?

Может кто-нибудь дать мне подсказку, как я могу создать тег или базу ответвлений по вышеуказанному сценарию?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Во-первых, используйте переключатель -n для пробного запуска, чтобы вы могли убедиться, что команда выполняет то, что вам нужно.С SVN, в противном случае, это может привести к путанице.

Далее, ваш макет проекта не является стандартным, поэтому git не будет знать, куда будет идти тег для проекта1.В стандартном макете транк и теги были бы родными, в этом случае вы могли бы использовать такую ​​команду:

git svn tag "project1_v12" -m "Version 1.2"

Поскольку тег SVN может выполняться непосредственно на сервере (даже без проверки svn), мойВ этом случае можно напрямую запустить команду svn, например:

svn cp svn_url/trunk/proj1 svn_url/tags/forproj1/v1.2

, а затем обычный git fetch обновил бы тег v1.2 в локальном git в удаленном пространстве имен svn..

0 голосов
/ 29 ноября 2011

Посмотрите на значения, которые вы получаете, когда вы делаете:

git config --get-all svn-remote.svn.tags

После того, как они будут соответствовать желаемому местоположению тега.

Укажите, что для --destination

...