Система управления исходным кодом для одного разработчика

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

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

Любые мнения?

Ответ 1

Я бы использовал 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 года

Многие разработчики рекомендовали Distributed Version Control, например Git или Mercurial.

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

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

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

Joel Spolsky написал учебник о Mercurial, который, безусловно, стоит прочитать.

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Отлично подходит для больших и малых команд. Единственным недостатком является низкая поддержка родных окон. Хотя это работает отлично для меня в Cygwin. Существует также родной порт Windows.

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

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

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

Ответ 4

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

Ответ 5

Перейдите для подрывной деятельности и tortoiseSVN, вам не нужно настраивать ее на сервере.

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

Ответ 6

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

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

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

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

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

Update:

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

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

Ответ 7

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

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

Ответ 8

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

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

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

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

Ответ 9

Вы можете использовать Vault из SourceGear, инструмента для визуального восстановления исходной видео студии. IDE интегрирована в Visual Studio.

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

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

Ответ 10

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

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

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

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

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

Ответ 11

Система управления версиями не волнует, если задействован только один разработчик:)

Я бы порекомендовал вам использовать систему управления версиями, которую вы использовали раньше и любили.
Если вам нравится интеграция системы управления версиями vs 2008, я бы пошел с TFS, хотя у меня никогда не было опыта, чтобы установить его но это не должно быть так сложно.

Другая возможность - использовать svn (вы найдете некоторые серверы в google) и использовать Tortoisesvn, который интегрируется в оболочку Windows и с ней приятно работать.

Ответ 12

Несколько должностей защищают помещение хранилища на сервере, поскольку оно обеспечивает избыточность. Я не думаю, что это все, что полезно для одного пользователя. Использование отдельной серверной машины значительно усложняет работу, но она не покупает много избыточности: если вы потеряете серверную машину, у вас все еще есть текущие источники на вашей машине разработки, но вы, возможно, потеряли всю свою историю. Помещение репозитория на сервер имеет смысл, если этот сервер регулярно резервируется. Использование службы exernal-хостинга для репозитория может обеспечить избыточность хранения, но вы находитесь во власти внешней службы. И вам нужно подключение к Интернету для доступа к репозиторию. Если вы используете внешний хост, делайте частые резервные копии репозитория, которым вы управляете!

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

Ответ 13

Я бы порекомендовал две вещи:

Сначала, этот другой сервер - что произойдет, если ваша машина умрет? дом горит? и т.д. Наличие на другой машине является хорошей идеей с точки зрения избыточности.

Второй - ЧТО:

Если вы хорошо знакомы с визуальным источником (un) safe, подумайте о SourceGearVault. Это ОЧЕНЬ красивый, очень быстрый и очень значительно улучшенный "клон" VSS (т.е. работает одинаково с пользователями POV, а не под капотом). Требуется SQL-сервер и windows tho (это .NET + SQL-сервер). Бесплатно для 1 пользователя.

Из вас нет, то я предлагаю вам сделать одну из двух вещей:

Сначала получите VisualSVN. Это здорово, хорошо работает с VS2008. Во-вторых, если вы ДОЛЖНЫ запустить его локально, получите сервер VisualSVN (бесплатно!). Удостоверьтесь, что у вас хороший план резервного копирования. Работает на XP/2003/2008/Vista и т.д. Это просто Apache + SVN, под капотом, поэтому он просто сохраняет вас при настройке - мне потребовалось 5 минут для установки и его запуска.

ИЛИ, и я предпочитаю это:

пойти куда-нибудь, как Unfuddle, Dreamhost и т.д., и получить хостинг для SVN. Это частное, это быстро, и больше всего - это OFFSITE. Моя мечта - это счет, с чем-то сумасшедшим, как 500 ГБ хранения и 1-2 ТБ перевода/месяц стоит около 6 долларов США в месяц! Есть и другие, которые делают SVN-хостинг + отслеживание ошибок и т.д. Посмотрите вокруг.

Но да - SVN - это schizzzznit.you может создать локальный репозиторий, но мне нравится иметь удаленный резервный сервер.

TFS является полным, полный избыток для 1 разработчика (или < 5 IMO)

Ответ 14

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

Ответ 15

Bazaar - хорошая система контроля версий. Мне нравится использовать его для моих конфигураций linux, потому что вам не нужно создавать отдельное репо.

Ответ 16

В то время как назад я сделал практическое сообщение в блоге по использованию SVN только с одним разработчиком. Я назвал его Единичное управление источником

Ответ 17

Ну, для начала вам не нужно распространять один:) Я не уверен, что означает эта физическая часть, потому что вы могли бы свести svn-сервер на свою собственную машину с небольшими проблемами.

С другой стороны, NetBeans имеет локальный модуль истории, который регистрирует все локальные изменения файла. Может быть, что-то вроде этого будет достаточно для вас, если Visual Studio что-то похожее.

Ответ 18

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

Похоже, что многие люди используют http://svnrepository.com/ для своего хостинга. Он поставляется с Trac и даже Git, если вам это нужно позже.

Ответ 19

Некоторые хорошие ответы здесь.

Я хочу повторить попытку использовать отдельный компьютер для размещения сервера управления версиями, хотя он не обязательно должен быть выделенной машиной. Это может быть ваш Windows Home Server или другой сервер, который вы уже используете. Или это может быть виртуальная машина, размещенная на каком-то другом сервере. Как бы то ни было, просто отделите его от машины, где вы пишете код.

Я также хочу предложить вам получить хорошую резервную дисциплину для вашего сервера. Что-то ночное по крайней мере; ежечасно, если можете. Вернитесь к выделенному устройству (например, к внешнему жесткому диску) или чему-то удаленному (сервер в вашем доме кузена в другом состоянии) или в облаке (Amazon S3). Помните, что ваш исходный код является вашим ключевым активом; позаботься об этом!

Ответ 20

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

Ответ 21

Руки вниз Я бы использовал git, и я считаю, что многие причины, по которым один разработчик хотел бы использовать git, намекают или описываются в git магия

Ответ 23

Я не понимаю, почему тот факт, что ваш один разработчик ничего не меняет в проблеме с источником. Я буду следовать той же системе (на самом деле я занимаюсь своими сольными проектами). Я использую wush.net (svn и trac) в этих случаях. Он быстро настраивается и не требует, чтобы вы сами делали или знали какие-либо проблемы с сервером. Я рекомендую вам использовать что-то вроде этого.

Ответ 24

Я бы рекомендовал использовать subversion. Многие рекомендовали использовать отдельный блок в качестве сервера, в случае, если ваш Dev-машина умирает. Что происходит, когда сервер SVN умирает? Ответ здесь заключается в том, что независимо от того, где вы решите запустить сервер, убедитесь, что вы всегда делаете частые резервные копии, возможно, ежедневно с автоматическим ежедневным доступом к некоторым вторичным, предпочтительным внешним серверам.

Ответ 25

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

Ответ 26

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