Оформить заказ на удаленную ветку с помощью git svn - PullRequest
180 голосов
/ 13 июля 2010

Я извлек svn-репозиторий, используя git svn.Теперь мне нужно проверить одну из веток и отследить ее.Какой лучший способ сделать это?

1 Ответ

343 голосов
/ 13 июля 2010

Стандартная раскладка Subversion

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

git svn clone http://svn.example.com/project -T trunk -b branches -t tags

Опция --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 предназначен для избежания предупреждений вида

warning: refname 'waldo' is ambiguous.

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

git checkout waldo-svn
git svn rebase

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

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

[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 remotes/mybranch

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


Дополнительная информация

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

...