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

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

Можем ли мы:

  1. Смешивать ветки выпуска и ветки проекта вместе?
  2. Создать папку релизов? Если да, то что может быть лучше, чем релизы?
  3. Создать папку проектов и переместить туда текущие ветки? Если да, то что может быть лучше, чем проекты? Я видел «песочницу» и «спайк» в других репозиториях.
  4. Что-то еще?
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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», а не просто «ветки». Таким образом, в вашем случае ветки проекта будут находиться во временных ветвях, а релизные ветки (созданные во время релиза, конечно) - в релизных ветках.

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

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

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

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

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

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