git-svn: как мне создать новую ветку svn через git? - PullRequest
193 голосов
/ 05 ноября 2008

У меня есть git-репозиторий, который отслеживает svn-репозиторий. Я клонировал его, используя --stdlayout.

Я создал новую локальную ветку через git checkout -b foobar

Теперь я хочу, чтобы эта ветка оказалась в …/branches/foobar в хранилище svn.

Как мне это сделать?

(отрезал много следственного текста. См. Историю вопроса, если вам не все равно)

Ответы [ 3 ]

279 голосов
/ 16 декабря 2009

Я знаю, что на этот вопрос был дан ответ некоторое время назад, но после прочтения я мог бы помочь добавить примеры конкретной команды git svn branch и связать ее с типичным рабочим процессом.

Как ответил Кч, используйте git svn branch. Вот полный пример (обратите внимание на -n для пробного запуска):

git svn branch -n  -m "Branch for authentication bug" auth_bug

Если все идет хорошо, сервер отвечает следующим образом:

Копирование https://scm -server.com / svn / portal / trunk на r8914 в https://scm -server.com / svn / portal / филиалы / auth_bug ...

И без ключа -n сервер, вероятно, добавляет что-то вроде:

Найдена возможная точка ветвления: https://scm -server.com / svn / portal / trunk => https://scm -server.com / portal / филиалы / auth_bug , 8914

Найден родительский филиал: (Ссылки / пультов ДУ / auth_bug) * * тысяча тридцать два

d731b1fa028d30d685fe260f5bb912cbf59e1971

Следующий родитель с do_switch

Успешно подписан родитель r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

* * +1039 (ссылки / пультов ДУ / auth_bug)

Самое приятное, теперь вы можете создать локальную ветку на основе вашей удаленной ветки, например:

git checkout -b local/auth_bug auth_bug

Что означает «проверить и создать локальную ветвь с именем auth_bug и заставить ее следовать за удаленной ветвью (последний параметр) auth_bug

Проверьте, работает ли ваш локальный филиал в этом удаленном филиале, используя dcommit с --dry-run (-n):

git svn dcommit -n

И сервер SVN должен ответить новым именем ветки:

Обязательство https://scm -server.com / svn / portal / branch / auth_bug ...

64 голосов
/ 05 ноября 2008

по состоянию на git v1.6.1, git svn branch доступно.

Из Git Docs:

    branch
        Create a branch in the SVN repository.

        -m, --message
            Allows to specify the commit message.

        -t, --tag
            Create a tag by using the tags_subdir instead of the branches_subdir
            specified during git svn init.

Предыдущие версии git не предоставляют способ создания ветки svn.

4 голосов
/ 08 декабря 2008

@ kch Я только что (7 декабря 2008 г.) скомпилировал тег git v1.6.1-rc1, и он содержит команду git svn branch и документацию для нее. Таким образом, выпуск git v1.6.1 должен (надеюсь) содержать эту команду.

...