Система контроля версий для одного разработчика - PullRequest
55 голосов
/ 05 сентября 2008

Какая система управления исходным кодом рекомендуется для очень маленькой команды (одного разработчика)?

Цена не имеет значения. Клиент заплатит: -)
Я работаю на Vista32 с VS 2008 в C ++ и позже в C # и с WPF. Настройка дополнительного (физического) сервера для этого кажется мне излишней.

Есть мнения?

Ответы [ 26 ]

62 голосов
/ 05 сентября 2008

Я бы использовал Subversion (на самом деле я его использую) [ update : июль 2014 года - я использую Git - см. Конец ответа]. SVN это:

  • бесплатно,
  • достаточно хорошо (см. Недостатки ниже),
  • просто,
  • отлично работает на Windows (и Linux тоже),
  • многие люди используют его, поэтому легко получить помощь,
  • может интегрироваться с большинством IDE, например Visual Studio (т.е. ankhsvn или VisualSVN - , дополнительная информация ) или Eclipse (то есть Subclipse - здесь кто-то спросил об этом).

Я бы настоятельно рекомендовал выделить отдельный компьютер для сервера контроля версий. В лучшем случае где-то на облаке . Преимущества:

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

Есть компании, которые размещают SVN-репозитории .

Здесь - ссылки на пакеты SVN (клиент и сервер) для различных операционных систем.

Недостатки SVN

Я использую SVN на Windows-машине около 5 лет и обнаружил, что у SVN есть несколько недостатков:).

Медленно на больших репозиториях

SVN (или его клиент - TortoiseSVN) имеет один большой недостаток - он ужасно медленный (при обновлении или фиксации) в больших (тысячи файлов) репозиториях, если у вас нет SSD Драйв.

Слияние может быть трудным

Многие люди жалуются на трудность слияния с SVN.

Я делаю слияния около 4 лет (включая около 2 лет в CVS - это было ужасно, но выполнимо) и около 2 лет с SVN.

И лично мне не сложно - с другой стороны - любое объединение легко после объединения веток в CVS:).

Я делаю слияние большого репозитория (фактически два репозитория) один раз в неделю, и редко возникают конфликты, которые трудно разрешить (большинство конфликтов разрешаются автоматически с помощью программного обеспечения diff , которое я использую).

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

  • часто меняются слияния,
  • избегайте активного развития в разных отраслях одновременно.

Добавлено в июле 2011

Рекомендуется много разработчиков Управление распределенной версией подобно Git или Mercurial .

С точки зрения одного разработчика есть только несколько важных преимуществ DVCS над SVN:

  • DVCS может быть быстрее.
  • Вы можете зафиксировать локальный репозиторий без доступа к центральному.
  • DVCS - популярная вещь, и ей интересно пользоваться / учиться (если кто-то платит за ваше обучение).

И я не думаю, что слияние является проблемой в случае одного разработчика.

Джоэл Спольски написал учебник о Mercurial , который определенно стоит прочитать.

Итак, несмотря на многие преимущества DVCS, я бы остановился на SVN, если слияние или скорость не являются проблемой.

Или попробуйте Mercurial, который согласно this и this SO вопросов, лучше поддерживается (в июле 2011 г.) в Windows.

Добавлено в июле 2014 года

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

Сегодня инструментарий Git для Windows намного, намного лучше, чем 2 или более лет назад. Вы можете использовать удаленное репо (например, GitHub или ProjectLocker и многие другие), чтобы сохранить скопируйте свой проект с вашей рабочей станции без лишних усилий / денег.

Однако я использую клиент GUI только для просмотра различий (и иногда для выбора файлов для фиксации), так что лучше не бояться командной строки - это действительно приятно.

Так что на сегодняшний день я бы пошел с Git.

58 голосов
/ 05 сентября 2008

Я бы также порекомендовал Mercurial. Этот набор команд очень похож на тот, который есть в Subversion, поэтому кривая обучения не такая крутая. Как упоминалось ранее, он предназначен для локального запуска, но также легко обмениваться / объединять изменения между компьютерами или даже просто отправлять их на удаленный сервер для резервного копирования.

Он предлагает отличные инструменты, такие как TortoiseHG , и имеет хорошие плагины для NetBeans и Eclipse. Он также работает на Win32, как написано на Python.

Если вы не хотите настраивать сервер самостоятельно (например, для резервного копирования), доступны бесплатные хостинг-провайдеры; Полный список The Mercurial Wiki .

21 голосов
/ 05 сентября 2008

Я бы определенно рекомендовал мерзавец

Прекрасно работает как для больших, так и для маленьких команд. Единственный недостаток - плохая поддержка родных окон. Хотя у меня в Cygwin все работает нормально. Также существует собственный порт Windows .

Некоторые из его преимуществ:

  • Отличная поддержка нелинейного рабочего процесса. Его ветвление и слияние намного лучше, чем, например, Subversion.
  • Хорошие инструменты для навигации по вашему хранилищу
  • Хорошо справляется с крупными проектами.
  • Невозможно изменить историю без изменения криптографической подписи вашего хранилища
  • Благодаря не монолитному дизайну, его легко написать.

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

13 голосов
/ 05 сентября 2008

Перейти на Subversion и tortoiseSVN, вам не нужно настраивать его на сервере.

  • Затраты равны нулю
  • Документация по Subversion - это здорово и интересно читать
  • tortoiseSVN - очень удобный клиент
12 голосов
/ 05 сентября 2008

Subversion имеет очень низкий барьер для входа.

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

Хранилище может быть просто каталогом где-то на вашем ПК или на сетевом диске. Резервное копирование просто означает архивирование этого каталога

Есть несколько плагинов для Visual Studio для Subversion, AnkSvn - это один из тех, что я использовал, он бесплатный и хорошо интегрируется (т. Е. Он будет хорош при перемещении и удалении файлов и т. Д.)

Subversion - хороший выбор для одного разработчика.

Обновление:

С этого поста я использую Mercurial. Это распределенный SVN. «Распределенный» аспект не может быть непосредственно полезным для отдельного разработчика, однако он лучше при слиянии и несколько быстрее. Существует также бесплатный и хороший клиент расширения для Windows Explorer - Tortoise Hg .

Итак, если вы относитесь к тому типу людей, которые будут работать во многих филиалах одновременно (делать пики и т. Д.) Или если вы работаете на нескольких ПК одновременно и хотели бы иметь полный автономный доступ к истории регистрации на обоих, тогда Mercurial . Если вам просто нужно простое отслеживание и хорошо зарекомендовавшее себя решение, тогда Subversion .

12 голосов
/ 05 сентября 2008

Хранилище Sourcegear - отличный вариант, оно работает на SqlServer и существует уже много лет. Я бы не стал использовать любую версию VSS (Visual Source Safe).

11 голосов
/ 06 сентября 2008

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

В дополнение к управлению исходным кодом, действительно стоит завершить цикл и настроить сервер символов и исходный сервер , чтобы у вас была простая отладка всего, что вы отправлен (например, больше не ищет pdbs или источник, соответствующий бинарному файлу). И исходный, и символьный сервер полностью бесплатны и поддерживаются в VS с 2005 года.

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

Я использую Mercurial . Он работает отдельно в моей системе разработки Vista без каких-либо других зависимостей. Я использую командную строку, но есть также TortoiseHG для интеграции с Explorer.

Два комментария:

  1. Существуют и другие инструменты, которые, вероятно, лучше интегрируются с VS. Я думаю, что у Subversion есть отличные плагины против VS.
  2. Преимущество отдельного сервера заключается в том, что он является хорошей резервной копией всей вашей работы на тот случай, если ваш жесткий диск умирает от вас и т. Д., Поэтому не стоит его иметь.

Редактировать: @Slartibartfast - если вы просто хотите запустить управление исходным кодом на одной машине, то инструмент управления распределенным исходным кодом, такой как git или Mercurial, идеален, поскольку он предназначен для запуска полных репозиториев на машина без нагрузки на сервер. Тот факт, что вы никогда не соединяете свой репозиторий с чьими-либо изменениями, не означает, что этот инструмент не будет правильным.

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

Вы можете использовать Vault от SourceGear, инструмент для замены для источника Visual Studio Safe Safe. Среда интегрирована в Visual Studio.

Инструмент бесплатен для одного пользователя.

Дополнительная информация: http://www.sourcegear.com/vault/index.html

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

Существует два возможных решения вашей проблемы: централизованная VCS или распределенная VCS (DVCS).

Централизованный VCS, такой как Subversion, удовлетворит вас функцией фиксации и просмотра журнала. Это также позволяет вам безопасно хранить свой репозиторий на другом компьютере, что должно быть одной из ваших основных целей, поскольку сбой жесткого диска всегда возможен. Однако при использовании Subversion история все еще находится только в центральном местоположении, что делает ее уязвимой, и вы заявили, что не хотите иметь другой сервер.

Распределенные системы контроля версий (DVCS), такие как Mercurial и Git, позволяют выполнять более сложные операции с хранилищем. С обоими этими инструментами весь репозиторий находится на одном и том же компьютере, что упрощает создание резервных копий и использование репозитория на другом компьютере, например. ноутбук. Хотя Mercurial на первый взгляд может показаться сложным, операции, которые вы будете использовать с Subversion, в значительной степени совпадают с Mercurial. Поэтому нет никаких дополнительных затрат, чтобы начать работу, если вы уже знакомы с Subversion и позже вы можете легко использовать более продвинутые функции Mercurial.

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

Моя рекомендация - Mercurial с TortoiseHg.

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