Subgit: избегать синхронизации веток git на svn
Я пытаюсь использовать SubGit, но сталкиваюсь с проблемой с ветками: я хотел бы, чтобы ветви, созданные под Git, жили и умирали только внутри Git. Я нашел это: SubGit: Как исключить ветки?, но это говорит
Проблемы возникают из-за коммитов слияния: если коммит A является результатом слияния ветки foo в master, то SubGit создает ветки /foo на стороне Subversion для соответствующего родителя коммита A. Если вы предпочитаете не включать сгенерированные SubGit ветки в пространство имен branch /*, рассмотрите возможность использования некоторых специальных веток на стороне Subversion.
Я не хочу связываться с SVN, потому что я оцениваю Subgit и не хочу ничего менять в SVN. Я думаю, что я мог бы достичь своей цели (имея в виду, что в SVN добавлялась только объединенная история, а не ветвь git), выполнив ребазинг перед отправкой в репозиторий Git, но я боюсь, что это может привести к конфликтам при фиксации обратно в SVN. Любая идея о том, как я могу обойти это, не дожидаясь SubGit версии 2.1 (утверждал, что делает то, что я хочу, но не в ближайшем будущем - цитата из связанного ответа: it's going to take some time before we implement it
)?
1 ответ
SubGit синхронизирует только те ветки, которые вы указали в конфигурационном файле SubGit. По умолчанию они:
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/*
Поэтому, если вы используете другое пространство имен, например, refs/heads/nosync/*, ветви в нем не будут синхронизированы.
Или вы можете использовать refs / Heads/* для обычных веток (которые не синхронизированы) и настроить специальное пространство имен refs / Heads / Sync / * для синхронизации:
trunk = trunk:refs/heads/sync/master
branches = branches/*:refs/heads/sync/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/sync/*
Обратите внимание, что длинные имена веток (например, refs /heads / sync / master) не приводят к неудобствам, потому что после клонирования такого репозитория Git вы можете назначать свои собственные локальные ветки refs/heads/* с короткими именами, чтобы отслеживать ветки с длинными именами. из того или иного пространства имен. Вот почему я думаю, что это хорошее решение для вас.