Кто-нибудь? Этот вопрос, возможно, также был лучше на SO. Поэтому, если у вас есть такая возможность, пожалуйста, не стесняйтесь.
Я собираюсь установить новый ноутбук и в процессе перехода на новую систему контроля версий в рамках общей очистки. В настоящее время я использую централизованную систему контроля версий (да это VSS, и да , я знаю все про и против этой системы, но как единая система пользователя она работает хорошо для меня). У меня очень мало требований к новой системе, и я свободен выбирать среди любого из нынешних основных игроков, но ограничения по стоимости подтолкнут меня к oss. Некоторые из моих требований:
- Работает на одной машине (то есть на ноутбуке) под Windows
- Я не делюсь вещами с другими разработчиками или работниками - это больше для моих собственных исторических выгод.
- Я хочу, чтобы версия исходного кода, документации и двоичных файлов
- У меня есть большая иерархия проектов, которые не связаны (см. Ниже)
- У меня есть файлы в иерархии, которые не нужно контролировать (но может быть)
- Некоторые проекты используют Visual Studio, поэтому некоторая интеграция может быть полезной.
- Там может быть некоторый обмен файлами между заданиями.
- Обычно мне нужно лишь немного о ветвлении в файлах кода.
Иерархия каталогов, которая у меня есть на данный момент, выглядит примерно так:
Root
|
|--Customer #1
| |
| |--Job #1
| | |
| | |--Data files received from Customer for Job (not controlled)
| | |--Documentation files (controlled)
| | |--Project information files (not controlled - but could be)
| | |--Software Project Files (controlled)
| | |--Scratch dir for job (not controlled)
| |
| |--Job #2
| | (same structure as above)
|
|--Customer #2
| |..
|
|--Cusmtomer #n
|..
В настоящее время у меня около 22 клиентов с разным количеством проектов под ними.
На данный момент у меня есть один репозиторий VSS, основанный на корне структуры каталогов. Если я использую централизованную систему (например, SVN), я считаю, что я должен придерживаться того же подхода и продолжить работу с одним репозиторием, основанным на корневом каталоге. Это правильный подход?
Однако, если я перейду к распределенному инструменту, я не уверен, как мне справиться с ситуацией. Сначала я предполагаю, что у меня не должно быть хранилища, основанного на корне всей моей структуры каталогов, но это предположение, поэтому я действительно не знаю, насколько оно корректно.
Должен ли я предлагать распределенный подход на уровне корневого каталога, клиента, задания или подкатегории?
Кроме того, что мне неясно с распределенными инструментами (и, возможно, с SVN), так это то, могу ли я разветвлять части репозитория. Например, я могу рассматривать ветвление исходного кода в программных проектах как полезное, но ветвление моей документации как бесполезное. Так что, если я поставлю репозиторий на уровне задания, могу ли я просто разветвлять файлы проекта программного обеспечения? Или все файлы в этой работе будут разветвленными?
Каждый раз, когда я смотрю на распределенные инструменты, я чувствую, что они не соответствуют моему стилю установки. Мне неловко от мысли, что в моей иерархии каталогов приходится вручную устанавливать что-то вроде 50–80 отдельных репозиториев (если я выберу на уровне «Работа» или 20+ на уровне «Заказчик»). Это чувство распространяется и на то, что все эти репозитории также разбросаны - однако у меня есть стратегия резервного копирования, которой я доверяю, так что это последнее чувство довольно необоснованно.
Так какой совет вы все можете дать мне? Заранее спасибо!