Оформить заказ на удаленную ветку с помощью git svn

188

Я проверил хранилище SVN с помощью GIT SVN. Теперь мне нужно проверить одну из веток и отследить ее. Какой лучший способ сделать это?

markovuksanovic
источник

Ответы:

355

Стандартный макет Subversion

Создайте git-клон, включающий ваш ствол Subversion, теги и ветви с

git svn clone http://svn.example.com/project -T trunk -b ветки -t теги

--stdlayoutВариант хороший ярлык , если хранилище Subversion использует типичную структуру:

git svn clone http://svn.example.com/project --stdlayout

Сделайте ваш git-репозиторий игнорирующим все, что делает репозиторий Subversion:

git svn show-ignore >> .git / info / exclude

Теперь вы должны увидеть все ветви Subversion на стороне git:

git branch -r

Скажем, название ветви в Subversion waldo. На стороне мерзавца, вы бы запустить

git checkout -b Waldo-SVN Remotes / Waldo

Суффикс -svn позволяет избежать предупреждений вида

предупреждение: refname 'waldo' неоднозначно.

Чтобы обновить ветку git waldo-svn, запустите

Git Checkout Waldo-SVN
git svn rebase

Начиная с проверки только в багажнике

Чтобы добавить ветку Subversion в клон только для ствола, измените ваш репозиторий git так, .git/configчтобы он содержал

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remotes / mybranch

Вам нужно выработать привычку бегать

git svn fetch --fetch-all

обновить все, что git svnдумает, отдельные пульты. На этом этапе вы можете создавать и отслеживать ветви, как указано выше. Например, чтобы создать ветку git, соответствующую mybranch, запустите

git checkout -b mybranch-svn пульты / mybranch

Для ветвей, от которых вы намереваетесь git svn dcommit, сохраните их истории линейными!


Дальнейшая информация

Вам также может быть интересно прочитать ответ на связанный вопрос .

Грег Бэкон
источник
Это не работает для меня, так как я проверил транк с помощью git svn clone ... Я не устанавливал ветки для проверки ... Я думаю, что сначала мне нужно это сделать.
markovuksanovic
Дело в том, что я использовал git svn clone svn.example.com/project/trunk И теперь я не знаю, как настроить другие ветви для отслеживания без потери моего текущего репо ...
markovuksanovic
20
Я бы посоветовал предоставить префикс для ваших SVN пультов. (добавить --prefix=svn/при выполнении git-svn initили git-svn clone) Это избавит от необходимости добавлять суффикс в ваши локальные филиалы.
jasonkarns
Если у вас есть несколько веток, не забудьте выполнить команду «git checkout master», прежде чем позаботиться о другой ветке
Eildosa
Если show-ignoreошибки выходят, попробуйтеgit svn show-ignore -i trunk
Антти Хаапала