Какова хорошая структура репозитория для выпусков и проектов в Subversion?

У нас стандартный макет ствола / веток / тегов Subversion. У нас есть несколько веток для средне- и долгосрочных проектов, но пока ни одной для релиза. Это быстро приближается.

Можем ли мы:

  1. Смешивать ветки выпуска и ветки проекта вместе?
  2. Создать папку релизов? Если да, то что может быть лучше, чем релизы?
  3. Создать папку проектов и переместить туда текущие ветки? Если да, то что может быть лучше, чем проекты? Я видел «песочницу» и «спайк» в других репозиториях.
  4. Что-то еще?
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Можете ли вы объяснить разницу между ngOnInit и конструктором в Angular?
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
4
0
2 011
7

Ответы 7

Релизы - это то же самое, что и теги ... У вас есть несколько проектов внутри вашего багажника? В этом случае я бы скопировал те же папки внутри тегов.

Так

trunk
     fooapp
         stuff...
     barapp
         stuff...
tags
     fooapp
         1.0.0
         1.0.1
     barapp 
         1.0.0

Вы никогда не задумывались, почему общепринятое название «ствол», а не «стволы»? У вас точно есть «стволы». Как это работает с клиентами Subversion, которые пытаются обеспечить абстракцию над тегами и ветвлениями?

bendin 01.06.2009 14:27

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

Michael H. 26.08.2009 23:07

Когда мы хотим подготовиться к выпуску, скажем, версии 3.1, мы создаем ветку branch / 3.1-Release и объединяем отдельные коммиты из основной ветки по своему усмотрению (наши ветки выпуска обычно получают только самые критические исправления из основного ветка развития).

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

Что вы также можете сделать после того, как ваши DVD-диски нажаты или загружен ваш пакет для загрузки, - это пометить ветку выпуска как выпущенную, чтобы вы могли легко перестроить из той же самой ревизии, если вам понадобится позже.

Карл

Мы уже используем теги, хотя у нас есть структура «один большой проект», а не несколько маленьких проектов, которые вы обрисовали в общих чертах.

В этом случае нам нужно пометить, например 1.0.0, но также и ветвь, например 1.0. Меня беспокоит смешивание веток проекта и веток выпуска, например

branches
    this-project
    that-project
    the-other-project
    1.0
    1.1
    1.2
tags
    1.0.0
    1.0.1
    1.1.0
    1.2.0
    1.2.1

Я рекомендую следующий макет по двум причинам: - все, что связано с данным проектом, находится в одной части дерева; делает людям легче понять - таким образом можно упростить обработку разрешений

И между прочим: это хорошая идея с несколькими репозиториями вместо многих, потому что история изменений обычно лучше сохраняется таким образом (история изменений исчезает, если вы перемещаете файлы между репозиториями, если вы не предпринимаете специальных и несколько сложных действий). В большинстве настроек должно быть только два репозитория: основной репозиторий и репозиторий песочницы для людей, экспериментирующих с Subversion.

project1
   trunk
   branches
     1.0
     1.1
     joes-experimental-feature-branch
   tags
     1.0.0
     1.0.1
     1.0.2
project2
   trunk
   branches
     1.0
     1.1
   tags
     1.0.0
     1.0.1
     1.0.2

Как соотносятся ветки и теги в вашем примере? Все ли теги 1.0. * Являются копиями различных ревизий ветки 1.0?

abeger 16.03.2011 22:02

@abeger: Да. Благо, речь идет о дешевых копиях: svnbook.red-bean.com/en/1.5/…

Troels Arvin 21.03.2011 18:07

Там, где я работаю, у нас есть каталоги «temp-branch» и «release-branch», а не просто «ветки». Таким образом, в вашем случае ветки проекта будут находиться во временных ветвях, а релизные ветки (созданные во время релиза, конечно) - в релизных ветках.

Исходя из того, что говорили другие, у нас довольно жесткая структура перехода от альфы к бета-версии и к производству. Альфа-код - это то, что является заголовком ствола, и по большей части сохраняется стабильным, но не всегда. Когда мы готовы к выпуску, мы создаем «ветку выпуска», которая эффективно замораживает этот код, и к нему применяются только исправления ошибок. (Они переносятся обратно в багажник). Кроме того, теги периодически создаются как кандидаты на выпуск, и это бета-версии. Как только код переходит в производство, ветвь выпуска остается открытой для поддержки, безопасности и исправления ошибок, а второстепенные версии помечаются и выпускаются вне этого.

Как только конкретная версия больше не поддерживается, мы закрываем ветку. Это позволяет нам четко различать, какие ошибки были исправлены в каких выпусках, а затем они перемещаются в основной продукт.

Крупные, долгосрочные или массовые изменения, которые нарушат работу системы на длительные периоды времени, также получают отдельную ветку, но они намного короче, и в них нет слова «выпуск».

Еще одно важное соображение - когда переходить, а когда закрывать - это зависит от вашего графика выпуска, но также и от того, сколько времени у вас уйдет на тестирование и выпуск. По моему опыту, это требует большого управления с точки зрения обеспечения того, чтобы каждый в команде знал, что такое план и когда что использовать, чему способствовало документирование всего этого в вики-версии.

Не совсем тот ответ, который вы ищете, но я думаю, что после того, как вы разберетесь со структурой, для которой у вас уже было много хороших предложений, следующая задача - держать команду в курсе и следить за ее ходом.

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