Оформити замовлення віддаленого відділення за допомогою git svn


188

Я перевірив сховище svn за допомогою git svn. Тепер мені потрібно перевірити одну з гілок і відстежити її. Який найкращий спосіб це зробити?

Відповіді:


355

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

Створіть клон git, який включає ваш магістраль Subversion, теги та гілки

клон git svn http://svn.example.com/project -T магістраль -b гілки -t теги

Ця --stdlayoutопція є хорошим ярликом, якщо ваш сховище Subversion використовує типову структуру:

клон git svn http://svn.example.com/project --stdlayout

Зробіть так, щоб ваше сховище git ігнорувало все, що робить підривна робота:

git svn show-ignore >> .git / info / виключити

Тепер ви зможете побачити всі гілки Subversion на стороні git:

git гілка -r

Скажіть, назва філії в Subversion є waldo. На стороні git, ви біжите

git checkout -b waldo-svn віддалений / waldo

Суфікс -svn полягає у униканні попереджень форми

попередження: перейменування "waldo" неоднозначне.

Щоб оновити гілку git waldo-svn, запустіть

git checkout waldo-svn
git svn rebase

Починаючи з каси лише для багажника

Щоб додати гілку Subversion до клона лише для магістралі, змініть .git/configвміст вашого сховища git

[svn-віддалений "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / Remotes / mybranch

Вам потрібно буде виробити звичку бігати

git svn fetch --fetch-all

оновити все, що git svnдумає, окремі віддалені. У цей момент ви можете створювати та відслідковувати гілки, як зазначено вище. Наприклад, щоб створити гіт-гіт, який відповідає моїй галузі, запустіть

git checkout -b mybranch-svn віддалений / mybranch

Для галузей, з яких ви маєте намір git svn dcommit, зберігайте їхні історії лінійними!


Додаткова інформація

Можливо, вам буде цікаво прочитати відповідь на пов’язане питання .


Це не працює для мене, оскільки я перевірив магістраль за допомогою клона git svn .. Я не встановив гілки для перевірки ... Я думаю, що мені потрібно це зробити спочатку.
markovuksanovic

Справа в тому, що я використовував git svn клон svn.example.com/project/trunk І тепер я не знаю, як встановити інші гілки, які слід відслідковувати, не втрачаючи мою поточну репо ...
markovuksanovic

20
Я б запропонував надати префікс для своїх віддалених файлів svn. (додати --prefix=svn/під час виконання git-svn initабо git-svn clone) Це позбавить від необхідності додавати суфікс на локальних гілках.
jasonkarns

Якщо у вас є декілька відділень, не забудьте зробити "майстра
виїзної

Якщо show-ignoreпомилки виходять, спробуйтеgit svn show-ignore -i trunk
Антті Хаапала
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.