Как лучше использовать SVN в этой ситуации? - PullRequest
6 голосов
/ 08 декабря 2010

Нужен совет о том, как мне следует использовать SVN при разработке моего продукта.

В данный момент я работаю над версией 2.2 моего продукта и начал использовать SVN с затмением, чтобы отслеживатьмой кодОднако я должен начать работу над версией 3 продукта, которая по сути идентична 2.2 с несколькими крупными изменениями и некоторыми новыми функциями.

Проблема в том, что 2.2 все еще будет исправляться, иНесколько незначительных функций / твиков, возможно, еще 2-3 релиза, прежде чем он станет канцелярским, и больше над ним не будет сделано - надеюсь, вовремя для выпуска версии 3.Так что в данный момент, если мой багажник 2.2 со стабильным тегом в данный момент, куда я могу пойти отсюда?Имейте в виду, что я ожидаю, что 3 будет ответвлением от этого тега в стволе, но так как 2.2 и 3 имеют схожие классы, если я сделаю небольшое изменение или исправление ошибки, я хочу, чтобы это было исправлено в версии 3, а не для реализацииисправление ошибки дважды, как в v2.2 (транк), так и в ветке v3.

Стоит также отметить, что в моей ветке v3 могут быть ветки для «экспериментальных» функций, которые могут не войти в первую стабильную версию этого.Конкретный продукт.

Буду очень признателен за любые идеи по передовой практике в этой ситуации.

Ответы [ 4 ]

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

Основной подход заключается в том, чтобы иметь отдельную ветку svn для каждой функциональной ветви разработки.

Одним из примеров этого было бы создание ветки 2.x, в которой вы будете выполнять всю свою разработку для серии 2.2, 2.3, 2.4, .... Это будет зависеть от того, где вы сейчас находитесь, и вы можете использовать теги для обозначения каждой из точек выпуска. Вы также можете создавать новые ветки для исправлений критических выпусков в будущем, если они появятся (например, 2.3.x). Тогда вы могли бы продолжить свое первичное развитие на транке.

Конечно, вы бы использовали svn merge (как описано в http://svnbook.red -bean.com / ru / 1.5 / svn.branchmerge.html ) для обработки слияния между ветвями, если это будет необходимо. Я настоятельно рекомендую использовать последнюю версию Subversion (скажем, 1.5), поскольку более старые версии требовали, чтобы вы вручную отслеживали изменения, которые уже были объединены, тогда как более новые версии обрабатывают отслеживание этой информации для вас.

Чтобы справиться с простыми исправлениями ошибок, которые вы хотите объединить между ветвями вниз или вверх, вы можете использовать cherry-picking для перемещения только этих изменений между ветвями.

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

Рассмотрим этот репозиторий

    ROOT
    |-- trunk
    |-- tags
    |   `-- 2.2 => copy of branches/version_2
    `-- branches
        |-- version_2 => copy of trunk at 2.2
        |-- version_3_experimental => copy of trunk at 2.2
        `-- version_3 => copy of trunk at 2.2

Вы делаете каждую разработку для вашей версии 3 в транке, и любое исправление ошибки делается в ветке version_2. Если что-то разработанное для версии 2 должно быть в версии 3, вы объединяете это в транк. После этого вы объединяете свой ствол в ветках / version_3. Таким образом, ваш ствол продолжает расти в соответствии с версией 3.

Когда вы закончите свою версию 2, создайте теги из ветви version_2.

Надеюсь, это поможет.

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

Ваша разработка будет выглядеть примерно так:

                                              branch
                                              2.x -------------->
                                               |             |bring some more
                                               |  trunk 3.0  |changes if necessary
   trunk   --------------------------------------------------------------->
    2.2 stable        |      |      |        |  *     incorporated
       |              |      |      |        |  |Merge
   create branch     periodically bring      |  |branch 3 back
       |              | changes from trunk   |  |to trunk
       *              *      *      *        *  |
       branch------------------------------------X branch ends
         3                                            here

Я предлагаю отложить создание ветки 2.x непосредственно перед слиянием 3.x с транком.Так что количество слияний может быть уменьшено.

Любые изменения с этого момента могут быть внесены в транк (3.x), но никак не иначе.Это типичный подход, когда вы отказываетесь от 2.x в пользу 3.x.

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

Вы можете использовать svn merge для объединения веток кода.

...