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


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

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

какие мнения?

26 55

26 ответов:

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

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

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

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

есть компании, которые host SVN repositories.

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

недостатки SVN

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

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

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

слияние может быть сложно

многие люди жалуются на то, как трудно слияние с SVN.

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

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

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

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

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

добавлено в июле 2011 года

многие разработчики рекомендовали Распределенный Контроль Версий как Git или Mercurial.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я определенно рекомендую git

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

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

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

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

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

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

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

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

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

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

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

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

обновление:

с этого поста я использую Mercurial. Она является распределенной СВН. "Распределенный" аспект не может быть непосредственно полезен для единственного разработчика, однако он лучше при слиянии и несколько быстрее. Существует также бесплатный и хороший клиент расширения Проводника Windows -Черепаха Hg.

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

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

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

вы можете использовать Vault из SourceGear,the замена инструмента для visual studio source safe. Среда IDE интегрирована в Visual Studio.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

второй-это то, что:

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

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

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

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

идите куда-нибудь, как Unfuddle, Dreamhost и т. д., и получите хостинг для SVN. Это личное, это быстро, и больше всего - это за пределами площадки. Моя учетная запись dreamhsot, с чем-то сумасшедшим, как 500GB хранения и 1-2TB передачи/месяц стоит около $6/месяц! Есть другие, которые делают SVN хостинг + отслеживания ошибок и т. д. Оглядеться.

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

TFS-это полный, полный перебор для 1 разработчика (или

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

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

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

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

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

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

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

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

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

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

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

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

Я использую Springloops - инструмент контроля версий для разработчиков

  1. контроль версий SVN / Git
  2. автоматическое развертывание на серверах
  3. создать репозитории
  4. пригласить людей
  5. импортировать файлы
  6. большой поддержкой

Итак, попробуйте Springloops

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

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

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

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