4

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

Так какой совет вы все можете дать мне? Заранее спасибо!

3 ответа3

1

Я использую TortoiseSVN для себя с большим успехом. Настроить хранилище (на основе файлов) очень легко, используя пустой новый каталог и опцию «создать хранилище здесь». TortoiseSVN, кажется, обрабатывает всю работу, необходимую для работы с репозиторием, поэтому никаких дополнительных установок не требуется.

0

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

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

Subversion немного сложнее настроить, если сделать это вручную. Тем не менее, существует (бесплатный) пакет под названием VisualSVN, который сделает всю работу за вас, так что вы можете просто использовать SVN, и вам не придется беспокоиться о настройке или настройке.

Если вы интересуетесь интеграцией Visual Studio для SVN, я знаю несколько плагинов: AnkhSVN (бесплатно) и VisualSVN (платно). Последний из той же компании, которая производит бесплатный установочный пакет VisualSVN, упомянутый выше.

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

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

Надеюсь, это поможет.

0

Мне повезло с Mercurial, использующим TortoiseHg для Windows. Это распределенный vcs, но распределенные функции не мешают использовать его как однопользовательский. Я использовал это для личной истории, и некоторых программных проектов, и это работало хорошо. Установка была довольно простой, менее сложной, чем SVN, если я помню, и было довольно легко создавать и синхронизировать резервные копии всего моего хранилища.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .