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

StackOverflow https://stackoverflow.com/questions/130447

Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

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

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

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

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

Это также упрощает администрирование - учетные записи в одном репозитории, журналы доступа к одному репозиторию и т.д.

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

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

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

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

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

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

Пока в каждом проекте есть теги /trunk / и /branches, все в порядке.Критерием здесь является правильная непрерывная интеграция.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top