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

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

Ответ 1

Стандартный макет 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 вы запустите

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

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


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

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