Настройка репозитория SVN для плагина, который зависит от конкретных версий другого приложения - PullRequest
1 голос
/ 27 января 2012

Я разрабатываю плагин для другого компонента программного обеспечения, который, как и большинство программного обеспечения, периодически выпускается в новых версиях (2011,2012, 2013 и т. Д.). Конкретные версии моего плагина будут совместимы только с конкретными версиями родительского приложения.

Как лучше организовать мой SVN-репозиторий, чтобы отслеживать, какая версия совместима с какой?

Я думал о такой структуре:

Repo\MyProject2012\Trunk
Repo\MyProject2012\Branches
Repo\MyProject2012\Tags

Затем, когда будет выпущена версия родительского приложения 2013 года, и мне нужно будет сделать новую версию моего плагина, я скопирую MyProject2012\Trunk в новую папку MyProject2013\Trunk и создам соответствующие MyProject2013\Tags и MyProject2013\Branches папок.

Хотя я не уверен, как обращаться с номерами версий. Если последняя версия версии 2012 моего плагина 2.5, должна ли первая версия 2013 года быть 1.0? 2,6? 3,0

В качестве альтернативы я также думал о том, чтобы иметь одну папку проекта и отслеживать изменение версий моего плагина с 2012 по 2013 годы с помощью тегов в хранилище. Тем не менее, переключение между 2012 и 2013 годами будет серьезным изменением, поскольку это означает, что мой плагин должен будет ссылаться на совершенно новый API родительского приложения. Кроме того, это затруднит исправление ошибки в версии 2012 моего плагина после того, как я начну работать над версией 2013 года, поскольку будет только одна папка ствола.

1 Ответ

1 голос
/ 27 января 2012

Рассмотрим следующую структуру:

project/trunk
...
project/branches/v2012/
project/branches/v2013/
project/branches/v2014/
...
project/tags/v2012.0
project/tags/v2012.1
project/tags/v2012.2
project/tags/v2013.0
project/tags/v2013.1
project/tags/v2014.0
project/tags/v2014.1
project/tags/v2014.2

Рабочий процесс разработки может выглядеть следующим образом:

  1. Версия плагина будет иметь префикс, равный совместимой версииприложения.Например v2014.0 является основным выпуском плагина, совместимого с v2014 приложения.Следующая вспомогательная (например, исправление ошибки) версия плагина будет v2014.1.
  2. Всегда разрабатывайте новую версию на project/trunk.Предположим, например, что вы сейчас разрабатываете версию v2014.
  3. Когда вы делаете основной выпуск, например, v2014 готов к выпуску, создайте ветку project/branches/v2014/ и в то жевремя создания тега из этой ветки: project/tags/v2014.0:

    svn cp project/trunk project/branches/v2014/
    svn cp project/branches/v2014/ project/tags/v2014.0
    
  4. С этого момента ветка релиза project/branches/v2014/ будет использоваться для исправления ошибок в выпущенной версии v2014 иствол project/trunk будет использоваться для разработки новой основной версии v2015

  5. Когда вы хотите выпустить исправленную версию старого выпуска, например, v2014.1 простосоздайте тег из ветки релиза:

    svn cp project/branches/v2014/  project/tags/v2014.1
    
  6. Если вам нужно создать ветвь функций для ствола, создайте ее в project/branches/.Ввести соглашение об именах, чтобы различать ветви функций и ветви релизов:

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