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

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

Мне было интересно, будет ли это хорошей идеей для меня просто переместить их все в один большой репозиторий и разделить их на папки проектов? Что делают все остальные?

В настоящий момент ни один из них не имеет общего кода, но может и в будущем. Будет ли проще управлять, если они все вместе.

Спасибо.

Ответ 1

Зависит от того, что вы подразумеваете под "проектом".

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

Если "проект" означает "назначение из класса" или "сценарии, которые я использую для вождения моего TiVo", или "мой прогресс в изучении нового языка", то создание репозиториев в проекте кажется немного ненужным меня. Опять же, это тоже ничего не стоит. Поэтому, я думаю, я бы сказал, не измените, что вы делаете. Если вам действительно не нужен опыт реорганизации репозиториев, в этом случае измените то, что вы делаете: -)

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

Обмен кодом между отдельными репозиториями - это не проблема, как вы могли бы подумать, так как svn имеет довольно прекрасную функцию "svn: externals". Это позволяет указывать каталог вашего репозитория в каталоге в другом репозитории и проверять, что все это происходит автоматически вместе с вашими материалами. Смотрите, как всегда, книгу SVN для деталей.

Ответ 2

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

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

Ответ 3

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

Ответ 4

Мое правило состоит в том, чтобы объединить вещи, которые поставляются вместе. Другими словами, если вы могли бы поставлять проект X и проект Y отдельно, то помещайте их в отдельные репозитории.

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

Ответ 5

Лично я предпочитаю каждый проект в своем собственном репозитории

Ответ 6

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

Ответ 7

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

Ответ 8

Пока у каждого проекта есть /trunk/tags и/branch, вы хороши. Здесь правильное непрерывное интегрирование.

Ответ 9

Да, поставьте все в исходное управление.

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

Ответ 10

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

Ответ 11

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

Однако, когда я начинаю переносить свои проекты на Mercurial, я переключился на создание репозитория для каждого проекта, потому что он просто берет "hg init" для создания нового на своем месте, и я могу использовать hg forest, чтобы легко выполнять операции с вложенными репозиториями. Subversion имеет svn: externals, которые несколько похожи, но требуют больше административных издержек.