Должен ли я хранить все проекты в одном или нескольких хранилищах? - PullRequest
38 голосов
/ 25 сентября 2008

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

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

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

Спасибо.

Ответы [ 11 ]

31 голосов
/ 25 сентября 2008

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

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

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

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

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

8 голосов
/ 25 сентября 2008

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

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

6 голосов
/ 25 сентября 2008

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

Да, иногда это означает, что у вас есть огромное репо для проекта, который содержит огромное количество компонентов, но люди могут работать с поддеревьями репо, и это заставляет их думать о «целом проекте», когда они вносят изменения в Сделки рЕПО.

5 голосов
/ 25 сентября 2008

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

4 голосов
/ 25 сентября 2008

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

3 голосов
/ 25 сентября 2008

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

2 голосов
/ 25 сентября 2008

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

0 голосов
/ 25 сентября 2008

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

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

0 голосов
/ 25 сентября 2008

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

0 голосов
/ 25 сентября 2008

Да, поместите все в систему контроля версий.

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

...