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/* с короткими именами, чтобы отслеживать ветки с длинными именами. из того или иного пространства имен. Вот почему я думаю, что это хорошее решение для вас.

Другие вопросы по тегам