Сведения о вопросе

MAT

01:44, 16th August, 2020

Теги

Номер версии Subversion для нескольких проектов

Просмотров: 546   Ответов: 17

При использовании Subversion (svn) для управления версиями с несколькими проектами я заметил, что число версий увеличивается во всех каталогах моих проектов. Чтобы проиллюстрировать мой макет svn (используя вымышленные имена проектов):

    /NinjaProg/branches
              /tags
              /trunk
    /StealthApp/branches
               /tags
               /trunk
    /SnailApp/branches
             /tags
             /trunk

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

Вопрос заключается в следующем: является ли общепринятой практикой при обслуживании нескольких проектов с помощью одного сервера Subversion увеличение числа ревизий несвязанных проектов во всех проектах? Или я делаю это неправильно и должен создавать отдельные репозитории для каждого проекта? Или это что-то совсем другое?

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

Должен ли я хранить все проекты в одном репозитории или в нескольких?

Один SVN репозиторий или много?



  Сведения об ответе

park

01:27, 13th August, 2020

Я удивлен, что никто не упомянул, что это обсуждается в системе управления версиями с Subversion, которая доступна бесплатно онлайн, здесь .

Я читал об этом некоторое время назад, и это действительно кажется вопросом личного выбора, здесь есть хороший пост в блоге на эту тему . EDIT: поскольку блог, похоже, не работает ( архивная версия здесь), вот некоторые из того, что Марк Фиппард должен был сказать по этому вопросу.

Таковы некоторые преимущества подхода с единым хранилищем.

  1. Упростить администрирование. Один набор крючков для развертывания. Один репозиторий для резервного копирования. и т.д.
  2. Гибкость ветви / тега. С кодом все в одном репозитории это облегчает создание ветви или тега, включающего несколько проектов.
  3. Перемещение кода легко. Возможно, вы хотите взять часть кода из одного проекта и использовать его в другом или превратить его в библиотеку для нескольких проектов. Легко переместить код в один и тот же репозиторий и сохранить историю кода в этом процессе.

Вот некоторые из недостатков подхода с одним репозиторием, преимущества подхода с несколькими репозиториями.

  1. Размер. Возможно, будет проще иметь дело со многими меньшими хранилищами, чем с одним большим. Например, если вы удаляете проект, вы можете просто заархивировать репозиторий в media и удалить его с диска, освободив хранилище. Возможно, вам нужно сбросить/загрузить репозиторий по какой-то причине, например, чтобы воспользоваться новой функцией Subversion. Это проще сделать и с меньшим воздействием, если это меньший репозиторий. Даже если вы в конечном итоге захотите сделать это со всеми своими репозиториями, это будет иметь меньшее влияние, чтобы делать их по одному за раз, предполагая, что нет острой необходимости делать их все сразу.
  2. Глобальный номер редакции. Несмотря на то, что это не должно быть проблемой, некоторые люди воспринимают ее как таковую и не хотят видеть, как номер ревизии продвигается по репозиторию, а неактивные проекты имеют большие пробелы в своей истории ревизий.
  3. Контроль доступа. Хотя механизм authz Subversion позволяет ограничить доступ по мере необходимости к частям репозитория, все же это проще сделать на уровне репозитория. Если у вас есть проект, к которому должны иметь доступ только избранные люди, это проще сделать с помощью одного репозитория для этого проекта.
  4. Административная гибкость. Если у вас есть несколько репозиториев, то проще реализовать различные сценарии хуков, основанные на потребностях repository/projects. если вы хотите единообразные сценарии хуков, то один репозиторий может быть лучше, но если каждый проект хочет свой собственный стиль фиксации email, то проще иметь эти проекты в отдельных репозиториях

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


  Сведения об ответе

lourence

17:59, 20th August, 2020

Я думаю, что настоятельно рекомендуется создавать отдельные репозитории для каждого проекта. Хотя бы для того, чтобы избежать сценария, о котором вы говорите.

С помощью управления версиями, особенно Subversion, вы можете легко проверить фрагменты репозитория в другой рабочей копии, а затем зафиксировать их обратно в соответствующие репозитории. Это позволяет вам держать их четко разделенными и отчетливыми, давая вам большую гибкость. Как только вы попадете в SVN немного больше (я предполагаю, что вы новичок.) вы можете начать использовать крючки, и я мог бы увидеть, где это может быть трудно с вашей установкой. Если для вас важны разрешения, то создание одного репозитория может оказаться более сложным, чем это необходимо.

Кроме того, если вы обеспокоены тем, что потребуется много времени для настройки каждого репозитория, загляните в переменную SVNParentPath для файла конфигурации Apache. (Опять же, я предполагаю, что вы используете Apache.)


  Сведения об ответе

lourence

05:20, 24th August, 2020

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


  Сведения об ответе

prince

17:24, 3rd August, 2020

Номер редакции на самом деле должен быть только идентификатором для конкретной версии. Является ли это последовательным для проекта или нет, не должно иметь значения. Тем не менее, я могу понять, что это далеко не идеально.

Большинство проектов, с которыми я сталкивался, были настроены в одном репозитории, и идентификаторы ревизий ведут себя именно так. Я не знаю ни одного варианта конфигурации SVN, чтобы изменить это поведение,и IMHO, поддержание нескольких репозиториев кажется ненужной накладной.


  Сведения об ответе

Chhiki

02:10, 16th August, 2020

У нас просто есть один репозиторий со всем, что в нем есть, почти точно так же, как в вашем примере.

Я не вижу в этом ничего плохого - единственное требование к номеру редакции-это то, что он есть

  • Уникальный
  • Атомный
  • Больше, чем было при последней проверке

Для меня не имеет значения, увеличивается ли он на 1 или 50 с каждым коммитом.

@grom:

Затем всякий раз, когда я начинаю новый проект, я просто запускаю его:

svnadmin create /var/www/svn/myproject

Я вижу, что это работает нормально, если у вас есть только 1 или 2 разработчика, но что произойдет, если люди, которые создают новые проекты, не имеют доступа shell на сервере SVN, чтобы иметь возможность создавать каталоги под /var/www ?


  Сведения об ответе

lesha

00:25, 14th August, 2020

Рекомендуется использовать отдельный репозиторий для каждого проекта. В моем каталоге Apache conf.d у меня есть subversion.conf, который содержит:

<Location /svn>
  DAV svn
  SVNParentPath /var/www/svn

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /var/www/svn/password
  Require valid-user
</Location>

Затем всякий раз, когда я начинаю новый проект, я просто запускаю его:

svnadmin create /var/www/svn/myproject


  Сведения об ответе

lats

03:58, 13th August, 2020

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


  Сведения об ответе

padenie

15:53, 19th August, 2020

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

Тем не менее, я лично не вижу проблемы с увеличением числа версий при каждом обновлении. Номера ревизий могут пропускать простые и четные числа и все равно делать то, что он должен делать. Сделайте так, чтобы было легко добраться до конкретной редакции.


  Сведения об ответе

davran

08:52, 6th August, 2020

Если вас беспокоит изменение номеров редакций на основе других проектов, то поместите проекты в отдельные репозитории. Это единственный способ сделать номера ревизий независимыми.

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


  Сведения об ответе

PROGA

14:08, 21st August, 2020

Может быть, лучше не обязательно делать один РЕПО на "project", а один РЕПО на "solution" (если использовать термины Visual Studio). Если у вас есть куча "projects" в разных папках, но они связаны друг с другом, то поместите их в один РЕПО.


  Сведения об ответе

lool

18:09, 5th August, 2020

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

Я только начинаю добавлять сервер сборки CI (CruiseControl.NET), поэтому мне придется посмотреть, как это все работает, но если мои сценарии сборки верны, это не должно быть проблемой.

Однако, помимо внешнего вида, это действительно вопрос предпочтения (на мой взгляд).


  Сведения об ответе

SKY

11:08, 12th August, 2020

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

На самом деле, если вы создаете код Microsoft и используете номера версий svn как часть строки версии, то вы можете выйти из строя. Компилятор Microsoft выдаст ошибку, если какая-либо часть строки версии больше 65535.... В нашем случае у нас есть массивное хранилище в редакции 68876, и мы просто ударились об эту стену.


  Сведения об ответе

repe

13:35, 18th August, 2020

Один репозиторий на проект.

Комментарий Стивена Муравски по поводу CC.NET весьма интересен. Мне было бы интересно услышать, как это работает, если вам нужно указать несколько репозиториев системы управления версиями.


  Сведения об ответе

baggs

07:40, 7th August, 2020

@Daniel Fone: SVN docs рекомендуют один проект на репозиторий, так что это определенно тот путь, который задумали его создатели. Поскольку у вас может быть один сервер (apache или svnserve), поддерживающий несколько репозиториев, я никогда не сталкивался с проблемой слишком больших накладных расходов. С сервером VisualSVN установка сервера apache и настройка нескольких репозиториев-это просто.


  Сведения об ответе

PROGA

10:26, 5th August, 2020

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


  Сведения об ответе

P_S_S

01:12, 1st August, 2020

У меня была такая же проблема в моей предыдущей компании, у них было около 50 проектов, работающих в одном репозитории, и это был кошмар работать над теми же проектами, потому что при выполнении svn обновлений другие будут curse....lol...

Одна вещь, которую я узнал, что всегда получается лучше всего, один проект One Repo....you никогда не пожалеет об этом.


  Сведения об ответе

ASER

07:08, 19th August, 2020

Ревизионные числа не имеют никакого семантического значения. Единственное, что они находятся в последовательном порядке. Если вы дампируете свой проект и импортируете его в другой репозиторий, ваши версии могут получить новые номера ревизий. Поэтому NEVER используйте номера ревизий, чтобы отметить свои релизы или подобные вещи. Сделайте теги для релизов (копии соответствующей редакции).


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться