Кто-нибудь? Этот вопрос, возможно, также был лучше на 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+ на уровне «Заказчик»). Это чувство распространяется и на то, что все эти репозитории также разбросаны - однако у меня есть стратегия резервного копирования, которой я доверяю, так что это последнее чувство довольно необоснованно.
Так какой совет вы все можете дать мне? Заранее спасибо!
