Несколько репозиториев SVN или единственного репозитория компании

Вы не можете.

от Ссылка log4net SDK
ОСТОРОЖНОСТЬ Класса

RollingFileAppender

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

52
задан onnodb 19 November 2009 в 00:54
поделиться

11 ответов

Лично я определенно предпочел бы отдельный репозиторий для каждого проекта. Причин несколько:

  1. Номера ревизий . Каждый репозиторий проекта будет иметь отдельную последовательность ревизий.

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

  3. Размер репозитория . Насколько велик ваш проект? Есть ли у него двоичные файлы под контролем версий? Бьюсь об заклад, да. Следовательно, важен размер - каждая ревизия двоичного файла увеличивает размер репозитория. Со временем он становится неуклюжим, и его трудно поддерживать. Должна поддерживаться детализированная политика хранения двоичных файлов и обеспечено дополнительное администрирование. Что касается меня, я все еще могу » Я не нашел, как я мог полностью удалить двоичный файл (совершенный каким-то глупым пользователем) и его историю содержимого из репозитория. С репозиторием для каждого проекта было бы проще.

  4. Организация внутреннего хранилища . Я предпочитаю мелкозернистые, очень организованные, автономные, структурированные репозитории. Существует диаграмма , иллюстрирующая общий (идеальный) подход к процессу обслуживания репозитория. Я думаю, вы согласитесь, что использовать подход «все проекты в одном репо» просто НЕВОЗМОЖНО. Например, моя первоначальная структура репозитория (должна быть у каждого репозитория проекта):

     / project автономные структурированные репозитории. Существует диаграмма  , иллюстрирующая общий (идеальный) подход к процессу обслуживания репозитория. Думаю, вы согласитесь, что использовать подход «все проекты в одном репо» просто НЕВОЗМОЖНО. Например, моя первоначальная структура репозитория (должна быть у каждого репозитория проекта): 

     / project автономные структурированные репозитории. Существует диаграмма  , иллюстрирующая общий (идеальный) подход к процессу обслуживания репозитория. Я думаю, вы согласитесь, что использовать подход «все проекты в одном репо» просто НЕВОЗМОЖНО. Например, моя первоначальная структура репозитория (должна быть у каждого репозитория проекта): 

     / project
     /багажник
     / теги
     / builds
     / PA
     / А
     / B
     / релизы
     / AR
     / BR
     / RC
     / ST
     /ветви
     / экспериментальный
     /поддержание
     / версии
     / платформы
     / релизы
    
  5. Управление репо . «Репозиторий для каждого проекта» имеет больше возможностей в настройке доступа пользователей. Однако это более сложно. Но есть и полезная функция: вы можете настроить репозитории на использование одного и того же файла конфигурации

  6. Поддержка репозитория . Я предпочитаю создавать резервные копии репозиториев отдельно. Кто-то говорит, что в этом случае невозможно слить информацию из одного репо в другое. Зачем тебе это нужно? Случай, когда такое слияние требуется, показывает, что первоначальный подход к управлению версиями неверен. Эволюция проекта предполагает последующее разделение проекта на подмодули, а не наоборот. И я знаю, что для этого есть подход.

  7. SVN: внешние . Подход «репозиторий на проект» поощряет использование svn: externals. Это нормальная ситуация, когда зависимости между проектом и подмодулями устанавливаются через мягкие ссылки, например svn: externals.

    Заключение . Если вы хотите упростить управление исходным кодом, используйте один репозиторий. Если вы хотите сделать управление конфигурацией программного обеспечения ПРАВИЛЬНО:

    1. Используйте 'репозиторий для каждого проекта' подход
    2. Введите отдельную роль менеджера конфигурации программного обеспечения и назначьте для него члена команды
    3. Наймите хорошего администратора, который может справиться со всеми уловками subversion :)

PS. Кстати, несмотря на то, что я работаю с SVN все время и мне это нравится, подход «репозиторий на проект» - вот почему я считаю системы DCVS более привлекательными с точки зрения организации репозитория. В DCVS репо - это проект по умолчанию. Нет даже вопроса «одно против нескольких», это было бы просто чушью.

37
ответ дан 7 November 2019 в 09:16
поделиться

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

Вы заметите, что все примеры в svn book предполагают, что все находится в одном репозитории. 12157] Существует отдельный вопрос, использовать ли / trunk / project1, / trunk / project2, / branch / project1-r1 или использовать / project1 / trunk, / project1 / branch / r1, / проект2 / ствол. Как правило, за вторым легче следить.

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

  • svn / code для разработки всего программного обеспечения, требуется билет jira для фиксации
  • svn / ops для любой конфигурации, сценариев установки, сторонних файлов tars и т.д., jira не требуется
16
ответ дан 7 November 2019 в 09:16
поделиться

Это будет зависеть от того, насколько взаимозависимы ваши приложения / проекты в организации, а также от того, насколько велики кодовые базы. Таким образом, все сводится к тому, как определять «проект» в вашей организации. Общая кодовая база, общие компоненты, общие команды, общие циклы выпуска - все это может повлиять на то, как ваши репозитории должны быть структурированы.

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

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

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

Вы можете рассмотреть все эти факторы, чтобы оценить административные накладные расходы, которые могут возникнуть в результате, на основе вашей конкретной настройки.

При этом, если все проекты небольшие по размеру,

8
ответ дан 7 November 2019 в 09:16
поделиться

Пока очень хорошие, содержательные ответы, но я просто хочу добавить свои два цента:

Я думаю, это зависит от размера вашего проекта. Мы попробовали оба подхода, но в конце концов остановились на одном большом репозитории.

Минусы :

  • Ветвление может быть трудным, так как может быть задействовано много папок и файлов
  • Репозиторий может стать ОГРОМНЫМ
  • Вы необходимо проверить весь репозиторий (или, по крайней мере, отдельные ветви), чтобы построить свое решение
  • Немного меньше контроля над архитектурой проекта (см. плюсы)

Плюсы :

3
ответ дан 7 November 2019 в 09:16
поделиться

Если вы используете Subversion, у вас может быть несколько репозиториев в одном домене с несколькими проектами в каждом.

Таким образом, это выглядит так, как

Project1: svn://svn.company.com/project1
Project2: svn://svn.company.com/project2

Project1 может адресовать внешний код и содержать под -проекты, такие как admin / и web / Project2 будет бэкэнд и будет содержать различные инструменты и приложения для мониторинга

Если вы используете что-то вроде Git, каждый репозиторий должен быть отдельным проектом.

1
ответ дан 7 November 2019 в 09:16
поделиться

Я обнаружил, что наличие одного репозитория Subversion помогает в:

  1. Прозрачности : легче следить за тем, что есть происходит, и найти код даже в проекты, в которых вы, возможно, не принимаете непосредственного участия.
  2. Обслуживание : нет необходимости создавать репозитории каждый раз, когда вы хотите создайте новый проект, и вы сможете удалить проекты целиком, не боясь потерять запись из Subversion.
  3. Техническое обслуживание : необходимо создать резервную копию только одного репозитория.

РЕДАКТИРОВАТЬ: Дополнительные причины:

  • Глобальные идентификаторы ревизий - если идентификаторы ревизий являются глобальными, это:
    1. Легче сообщить (например, в запросе на проверку кода просто укажите версию id, без необходимости указывать, какой проект).
    2. Проще гарантировать атомарность , когда проекты зависят друг от друга.
    3. Легче увидеть порядок коммитов для разных проекты.
39
ответ дан 7 November 2019 в 09:16
поделиться

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

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

1
ответ дан 7 November 2019 в 09:16
поделиться

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

В зависимости от того, какой тип работы выполняет ваша организация, другой вариант - иметь по одному репозиторию на каждый клиент . Там, где я работаю, в настоящее время у нас есть четыре репозитория - один для проектов, которые являются полностью внутренними для нас, один для программного обеспечения, которое мы продаем, и два, которые полностью относятся к конкретным клиентам, для которых мы производим индивидуальное программное обеспечение, применимое только к ним. Это попытка решения «лучшего из обоих миров» - у нас нет одного массивного репозитория, который содержит все и имеет номер редакции в миллиарды (я, очевидно, преувеличиваю!), Но и у нас нет десятков ничтожно маленьких репозиториев. валяется с одним проектом в каждом.

1
ответ дан 7 November 2019 в 09:16
поделиться

У меня был бы репозиторий для проекта, просто для того, чтобы номера ревизий были для каждого проекта. Вы можете настроить обслуживание SVN таким образом, чтобы ко всем проектам можно было получить доступ из одной точки доступа с использованием Apache и DAV SVN (с директивой SVNParentPath).

3
ответ дан 7 November 2019 в 09:16
поделиться

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

0
ответ дан 7 November 2019 в 09:16
поделиться

Я сделал и то, и другое, и в обоих случаях мне иногда жаль, что я выбрал другой метод ...

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

0
ответ дан 7 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: