Как использовать Git SVN только для отслеживания веток? - PullRequest
0 голосов
/ 08 декабря 2010

Я работаю с очень большим хранилищем Subversion, которое имеет довольно грязную историю. У него стандартная структура каталогов, но по одной причине я не могу клонировать его, используя git svn clone. После того, как он оставался включенным в течение ~ 2 дней, он, похоже, зашел в бесконечный цикл, поэтому я отказался от клонирования полного хранилища.

В репозитории есть основная ветка разработки / branchs / dev и несколько ветвей функций от этой ветви. Что я хотел бы сделать, так это отслеживать только ветку dev и ветви функций, используя git master dev для отслеживания веток, а каждая ветвь функции представляет собой обычную git remote ветку.

До сих пор я создавал отдельные репозитории Git для ветки dev и каждой ветки Feature. Я получаю только последние n коммитов из каждой ветви, потому что не вижу необходимости извлекать их все (плюс ветка 'dev' не приходит непосредственно из 'trunk', хотя в теории это должно быть). Вот что я использовал ...

$ git svn init <full svn branch url> <dir name>
$ cd <dir name> 
$ git svn fetch -r <start rev>:HEAD (where <start rev> is either the last or some recent commit on the branch)

Использование этого метода позволяет каждой ветви хорошо работать в изоляции, но это означает, что я не могу использовать git для слияния из dev в ветви функций и наоборот.

Как я могу использовать Git для отслеживания веток 'dev' и компонентов только в одном репозитории?

1 Ответ

1 голос
/ 08 декабря 2010

У меня не было возможности попробовать это, но git svn clone позволяет вам указать магистральный каталог с параметром --trunk= и ветви с --branches=, так что вы должны иметь возможность сделать что-то вроде

git svn clone --trunk=branches/dev --branches=branches/dev/features http://svn.foo.com/svn/project

или как бы то ни было.В справочной странице git-svn также указано, что вы можете использовать несколько тегов --branches на тот случай, если не все ваши ветки попадают в один каталог.

Редактировать.проверьте все, что вы указали в качестве транка, и сделайте это своей основной веткой в ​​репозитории git.Если вы хотите работать с одной из других ветвей функций, вы можете сделать

git checkout -b local/branch_name remote_branch_name

, чтобы получить эту ветку.Опция --branches= для git svn clone просто указывает git, где искать ветви, когда вы выполняете команду, подобную приведенной выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...