Какие ваши любимые системы контроля версий? [закрыто]

41

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

Итак, что вы считаете лучшей системой контроля версий?

Fishtoaster
источник
1
en.wikipedia.org/wiki/Comparison_of_revision_control_software - отличная таблица сравнения именно для этого. Вопрос для обсуждения ... сообщество вики?
Крис
4
Первый, кто публикует имя, получает ответ… Это должно быть сообщество вики.
принимает
Не заметил, это уже вики сообщества .
принимает

Ответы:

81

ртутный

Из-за его сложной способности ветвиться и объединять код, это лучшее, что я использовал. Вся парадигма DVCS имеет столько смысла. Я не использовал Git, но я полагаю, что он также подходит.

оборота эпоттер
источник
Мне нужно попробовать Mercurial некоторое время, так как я уже попробовал 2 из 3 больших. И так как Google Code поддерживает это ...
TheLQ
2
Mercurial сладок, если вы используете Netbeans. Интеграция с IDE идеальна.
Сеун Осева
4
Я предпочитаю Mercurial просто потому, что TortoiseHg более зрелый, чем TortoiseGit :-) (весь опыт работы с Windows намного лучше и в Mercurial)
Дин Хардинг
+1, я предлагаю сделать Mercurial более жирным и крупным (как это сделал Гаурав в своем ответе)
Тим Пост
Mercurial довольно сладкий. Я и моя команда использовали его около 2 месяцев, и это глоток свежего воздуха по сравнению с SVN.
Гэри Уиллоуби
72

Гит

Git просто фантастический, и я бы особенно рекомендовал его всем, кто работает над проектами с открытым исходным кодом: гораздо проще внести небольшое одноразовое изменение в проект на Git, особенно если он размещен на GitHub, чем когда он занимается электронной рассылка патчей с SVN.

Одно большое предостережение для пользователей Windows: инструменты Git для Windows, хотя и безусловно пригодные для использования, не совсем готовы. Когда я был вынужден некоторое время использовать Windows, я попробовал интерфейс Windows Mercurial с помощью инструмента интеграции Hg-Git, чтобы я мог использовать свои репозитории Git, и обнаружил, что его намного проще использовать.

Gaurav
источник
5
Я думаю, что важно сказать, что мерзавец это сложно. Я действительно люблю это, но это не то, что вы можете использовать, изучая это за пару дней. Вы должны использовать это некоторое время и злиться, пока вы не поменяете сознание ... ;-)
Khelben
1
@ Khelben - Да, в этом есть доля правды. Тем не менее, он также, кажется, имеет наибольшее количество литературы / статей / учебных пособий в сети, посвященной этому. Я регулярно нахожу выходящие книги по Git, Mercurial - не так много (здесь используется Mercurial для сравнения, так как он во многом похож на Git). Не могу сказать, хорошо это или плохо, но кажется, что люди его используют.
Ладья
2
msysgit можно использовать под Windows.
1
Я предполагаю, что Git, Mercurial и т. Д. Все довольно хороши, но я пошел на Git в основном потому, что на GitHub. GitHub чувствует себя лучше, чем сопоставимые сайты, и многие важные проекты размещены там. GitHub снижает барьер, чтобы внести большой вклад в Open Source.
LennyProgrammers
2
Mercurial не нужна книга.
Уоррен П
24

Предупреждение: С этого поста я нашел Mercurial и люблю его намного лучше, чем SVN. Так что этот пост немного устарел с комментариями Pro SVN и общей анти-DVCS, но анти-мерзавцы все еще актуальны


Я фанат SVN над Git.

Зачем? Потому что SVN был намного проще для одного разработчика или небольшой команды, а git (в частности, msysgit) оставил мне неприятный вкус во рту.

Когда я проходил практику в небольшом магазине, меня познакомили с git на Windows. Я сразу заметил, сколько работы потребовалось, чтобы заставить его работать с Github. Сначала мне нужно было сгенерировать закрытый ключ ssh, вставить открытый ключ в Github, затем открыть страницу и открыть свой закрытый ключ каждый раз, когда я захотел нажать кнопку, что было очень неприятно.

И мне никогда не нравилось, что я сносил весь репозиторий. Я признаю, что я никогда не работал с чем-то огромным, но я бы боялся загрузить репозиторий KDE в Git, если весь репозиторий и его ревизии находятся на моем HD.

Затем был запутанный процесс, чтобы сделать коммит. ТМК, мне пришлось сначала «подготовить» все файлы, которые я хотел зафиксировать (что было ужасно, когда у вас было много файлов, мне потребовалось некоторое время, чтобы найти ручную команду для выполнения всех этапов), затем выполнить фиксацию, а затем перейти к главному РЕПО (почему это отдельная операция ?!).

У вас также были не очень (!) Очень полезные данные коммитов. О, смотри, это коммит 14f74433245ae17aeeaa часть дерева 2167a4934d0a4a7db0de и родительский d7042abb4821d3faf600. Черт, это значит? Я должен быть в состоянии понять вещи довольно быстро и не должен обращаться к какой-то странной документации.

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

Что касается коммитов, то единственное, что мне не понравилось, это отсутствие номеров версий. Теперь я знаю, что это из-за дизайна git, но любому программному обеспечению нужен номер версии. Я до сих пор помню маркерные коммиты, которые выскакивали со словами «Изменена версия на 1.8.6» или что-то подобное, но вы все равно не могли сделать числа сборки. Для меня наличие версии 1.8.6.5164 (последняя часть - номер редакции) говорит мне гораздо больше, чем просто 1.8.6, и заметка о том, что что-то незначительное изменилось, попробуйте

Что касается программного обеспечения, то основной программой для Windows является msysgit, ужасный интерфейс. Он несколько раз зависал от меня, имел ужасный интерфейс, и интеграция CLI-GUI была в лучшем случае сомнительной. Наркоманы из командной строки вокруг меня ненавидели графический интерфейс еще больше.


Теперь давайте посмотрим на SVN. И так как я на Windows и имею учетную запись Google, в частности TortoiseSVN и Google Code.

Во-первых, полная интеграция с оболочкой, чтобы сделать все в хранилище (и для вас, пользователей Linux, RabbitVCS делает то же самое), основной графический интерфейс не требуется. Получить репозиторий легко, как извлечение, SSH не нужен (не помню, если Github требовался SSH для пуллов), и нет всего репо + все прошлые коммиты сидя на вашем HD.

Фиксация очень проста, в основном потому, что не требуется SSH или подготовка. Вы просто проверяете все нужные файлы, используя очень полезную опцию select all, которая в моей версии msysgit была недоступна, вводите сообщение коммита и нажимаете commit. Затем Google Code запрашивает вашу регистрационную информацию (которую хранит большинство клиентов) и готово. Просто, легко и без SSH

Номера версий? С помощью некоторого простого кода вы можете добавить номер версии и номер фиксации ко всем извлечениям, что значительно упрощает процесс. Вы также получаете полезные номера версий, которые действительно показывают изменения, например, 1.8.6.5165 новее, чем 1.8.6.5164.

Документация? Ну, сложно сказать. Черепаха задокументирована, но я не обращался к официальной документации так долго, что не могу судить. Чтения простого вступительного руководства мне было достаточно.

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


Какой из них я бы порекомендовал? Хорошо в больших командах, у git есть свои преимущества, главным образом, в нелинейном цикле разработки. В другом проекте я видел, как 4 программиста запускались в отдельных ветвях, а затем сливали весь код очень странным образом, который каким-то образом трансформировался в конечную главную ветку. У Github и msysgit был действительно хороший инструмент визуализации для всего проекта, который мне очень понравился.

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

TheLQ
источник
6
Слияние с SVN довольно рискованно (по сравнению с git). Это одна вещь, которую важно отметить при любом сравнении.
Хелбен
5
Зачем вам каждый раз «поднимать представление»? Это ключевой агент. Вы должны поднять его только один раз, когда войдете в свою машину. Вы добавляете свой ключ, и все готово . (И вы можете сделать это еще проще, связав ваш ключевой файл с Pageant и добавив его в свою папку автозагрузки. Войдите в систему, появится диалоговое окно с предложением
ввести
3
@Thorbjoern @Frank Shearer: Я думаю, сам факт того, что вы говорите «вы можете сделать это, или вы можете сделать это, и у вас нет этих проблем», подчеркивает: это решение проблемы или проблемы. Это не проблема с некоторыми другими VCS.
Стивен Эверс
4
Этот ответ вызывает у меня много жалоб и стонов по поводу чего-то, что плакат явно не нашел времени, чтобы понять. Я провел много времени в git и svn, как в linux, так и в windows, и буду свидетельствовать о том, что git значительно превосходит svn по концепции, модели данных, понятности и полезности.
gahooa
4
@TheLQ Нет. Это совсем не "твой менталитет Linux". Это простая вещь для настройки, она хорошо документирована, PuTTY - отличный набор приложений для Windows, который делает вещи действительно простыми в использовании. И вам действительно следует шифровать передачу кода, если вы работаете через какую-либо общедоступную сеть. И пользователям Windows оскорбительно полагать, что они слишком глупы, чтобы узнать, как использовать инструменты, которые они должны использовать. Я не прошу людей вкладываться в вещи. Я прошу их зашифровать их важную информацию.
Фрэнк Шиарар
22

Следующая цитата из Q4TD в значительной степени подводит итог для меня:

«Я любил Git, пока не попробовал. Теперь я люблю Mercurial.

        - Tor Norbye, Подкаст Java Posse

Кроме того, hgsubversion делает довольно хороший клиент Subversion для Linux (где я обычно использую командную строку, в отличие от Windows, где я обычно использую TortoiseSVN). Самое большое преимущество: нет .svnподпапок в каждой папке, только .hgна верхнем уровне.

Обновление: В ответ на просьбу Алекса в комментариях «рассказать больше о том, почему git не работает для вас, и как Mercurial работал лучше»:

Я бы не сказал, что Git не работает для меня, но Murcurial работает лучше IMO.

Короче говоря, это Mercurial:

альтернативный текст

а это Git:

альтернативный текст

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

По общему признанию, я использовал Git только изредка, но программистское сообщество спорило над такими языками, как Ruby и Python, частично из-за их краткости и элегантности, в то время как Git ощущается как верблюд, созданный комитетом верблюдов.

Ба, теперь посмотри, что ты наделал? Там повсюду разглагольствования. Двигайся, ничего не видно ... нечего видеть ...

Обновление 2: И еще один твит, о котором я только что узнал:

«Git становится легче, когда вы понимаете, что ветви - это гомеоморфные эндофункторы, отображающие подмногообразия гильбертова пространства».

Эван
источник
Вы когда-нибудь пробовали RabbitVCS?
TheLQ
Нет, но я использую KDE, а не Gnome, так что в любом случае это меня не устроит. Время от времени я буду использовать графический клиент SVN в Linux, но только в том случае, если я делаю что-то немного эзотерическое, например, исследование репозитория или сравнение предыдущих версий. Не для простого добавления / удаления / фиксации / регистрации. Командная строка быстрее.
Эван
2
Не могли бы вы рассказать подробнее о том, почему git у вас не работает и как Mercurial работает лучше? Это было бы довольно интересно читать.
Алекс Фейнман
Я почти уверен, что в описании Git отсутствует 6-дюймовая прямая бритва ...
Тим Пост
2
@Tim: ребаз? Это, вероятно, на другой стороне.
Алан Пирс
14

У меня нет единой «лучшей» системы контроля версий, а есть единственная лучшая парадигма VCS.

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

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

Йорг Миттаг
источник
3
Это отличный ответ. Не существует одной "лучшей" VCS, но я полностью согласен с тем, что следует использовать DVCS.
Ник Ходжес
Сделайте мою DVCS, но держите гомеоморфные эндофункторы, отображающие подмногообразия гильбертова пространства, пожалуйста. Ergo, Mercurial.
Уоррен П
11

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

Вальтер
источник
7

Я бы не сказал лучшего, но с очень интересными особенностями и концепциями.

Fossil - это распределенный контроль версий, отслеживание ошибок и вики-проект, построенный на базе данных SQLite в качестве хранилища.

Maniero
источник
5

Team Foundation Server

Потому что:

  1. Это хороший, солидный VCS . (Я бы не стал считать это лучшим, но у него есть приятные дополнения.)
  2. Его встроенное отслеживание задач и ошибок, которое интегрируется в Visual Studio, помогает мне оставаться сосредоточенным и знать, что мне нужно для работы со всеми в одном месте (автоматическое применение проверки к ошибке или задаче и ее закрытие довольно хорошо, хотя вы можете получите плагины для других систем / eclipse / etc, чтобы сделать это.)
  3. Он интегрирует задачи / отслеживание ошибок / проекты непосредственно в Project Server, поэтому мне редко приходится обновлять планы проектов или расписания. Обновления для Project в Project Server автоматически фильтруются как задачи в TFS и в Visual Studio, чтобы я мог их видеть автоматически.
Райан Хейс
источник
2
Мне любопытно, как вы относитесь к тому, что ваш рабочий процесс ограничивается исключительно Visual Studio для практически всех разработок. Кроме того, вам нужно было выполнить какие-либо настройки инфраструктуры для TFS? Таким образом, мой опыт был противоположен вашему: # 1 - VCS было непростым в использовании, часто было нестабильным, а автономный режим создавался самим сатаной. # 2 Встроенное отслеживание задач и ошибок было громоздким по сравнению с другими инструментами, поэтому # 3 было для нас неактуально и создавало дублирующую работу. Я использовал это 3 разных раза сейчас с одинаковыми плохими результатами каждый раз.
Джордан
1. Согласен с офлайновым режимом сосания. Хотя у меня не было много проблем в Интернете, но я всегда на связи. Многие элементы управления VCS, особенно с переназначением папок, на самом деле скрыты глубоко в меню. Это проблема у вас? 2. Это определенно более громоздко, но в целом экономит работу для моей команды, интегрированной с Project Server. 3. Как это создает дублирующую работу? Вы дублируете задачи на сервере проекта и в TFS? Существует плагин с открытым исходным кодом для 2007 года и бета-версия для 2010 года, которая позволяет им синхронизироваться друг с другом.
Райан Хейс
1
Это сковало меня с VS, но мы полностью .NET магазин. Я использую TFS с моими проектами Java дома, все же. Попробуйте SVNBridge на svnbridge.codeplex.com, который позволяет вам использовать Черепаху с TFS. Если вы используете Tortoise (как большинство Java, ruby, non-.net), то это должно помочь вам в вашем рабочем процессе в других проектах.
Райан Хейс
4

За свою долгую историю я использовал множество систем контроля версий:

  • RPPT - (рулоны перфорированной бумажной ленты). В обувной коробке. Я не шучу.
  • PVCS - (Система контроля версий Polytron). Первый настоящий VCS, который я использовал.
  • SCCS - так давно, я не помню ничего исключительно хорошего или плохого в этом.
  • RCS - как уже отмечали другие, скорее будет сосать потные ослиные яйца.
  • CVS - это было только боль при использовании более чем с 2 программистами. лучшая особенность: rcs2cvs.
  • VSS - он работает, кроме как во вторник, когда он повреждает весь ваш репозиторий.
  • Perforce - стоит дороже, чем моя машина. Сама VCS приемлема, но глупые ИТ-специалисты, которые контролируют каждый аспект ее использования, никогда не попадут в мой «предпочтительный» список.
  • SVN - ветвление и слияние это сука, но в целом это лучше, чем любой из предыдущих. Не так хорошо с большим количеством крошечных выдающихся изменений, ожидающих рассмотрения.
  • Mercurial - какой маленький опыт у меня есть с этим, мне нравится. Я мог бы попробовать это на моем следующем проекте.
  • Git - никогда не было возможности его использовать.

Хотя пара была ужасом, большинство было "хорошо". Они не мешали мне. Пока инструмент не делает мою жизнь значительно сложнее , я не против.

Реальная вещь состоит в том, чтобы понять сильные и слабые стороны каждого. Понять целевую среду:

  • распределенный или местный
  • маленькая команда или большая
  • хостинг vcs сервис или нет
  • простая интеграция в другие инструменты

Джоэл также выступил с важным замечанием: изучить инструмент и его истинную модель использования. Он изо всех сил пытался заставить Mercurial вести себя как Subversion.

оборота бреттмджонсон
источник
1
Если бы только комментарий к VSS был шуткой ... избегайте как чумы.
DevSolo
Ах, PVCS, воспоминания, которые возвращают :) Какой кусок мусора это было.
Генри
Этот список напомнил мне язык, основанный на «стрельбе в ногу». +1
Orbling 12.12.10
Я помню плохие вещи о SCCS, но в целом это можно было использовать. Я помню, как пытался одновременно работать с файлами с SCCS и другими программистами, и именно поэтому я влюбился в CVS, когда увидел его.
Дэвид Торнли
Visual SourceSafe, VCS специально для программистов, которые хотят выбить глаза ложками.
Марк Бут
2

Одна из более новых систем, которую мы используем в моем офисе, это Plastic SCM (http://www.plasticscm.com/). Это очень хорошо работает для нашей небольшой команды и дает нам отличный контроль над каждым аспектом управления исходным кодом.

Том А
источник
1

SCCS .

Или, если вы случайно не жили в пещере последние 38 лет, CSSC .

Серьезно, моя компания использует TeamWare , которая является своего рода псевдо-DVCS на основе SCCS.

Нет, я не шучу.

Sun перешла на Mercurial из TeamWare всего несколько лет назад. Теперь вы должны понять, почему Java, казалось, двигался так медленно.

Джеффри Чжэн
источник
1

MPW: Ну, я не могу дать ему обзор, несмотря на мои усилия.

Это было еще тогда, когда я изучал программирование в старшей школе, и единственным действительно бесплатным компилятором C ++ был Macintosh Programming Workbench, который я держал на zip-диске и вставлял в любой доступный Performa в лаборатории.

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

Это была моя первая кисть с ВК, и последняя на долгое время. Теперь я использую Git для всего.

SingleNegationElimination
источник
Проектор! На неполной работе в колледже я использовал (обманутую) версию этого. Хорошие времена.
RyanWilcox
0

RCS - Ревизионная система управления

Индивидуальное кодирование сделано так просто.

Jé Queue
источник
Вы шутите, верно, Xepoch? Пожалуйста, бог шутит.
Марк Вт
Вы, ребята, заставляете меня смеяться. На самом деле я использую RCS, но ТОЛЬКО для своих личных веб-сайтов и т. Д. Я на полпути шутил об использовании его для крупной разработки, НО я видел, что он используется исключительно (вместо CVS) в системах Unix для совместной разработки. Честно говоря, у нас не было никаких проблем с этим вообще, но он не поддается ничему, кроме функции одного сервера.
Jé Queue
1
@Xepoch, вам лучше изучить Git или Mercurial - DCVS отлично подходит для индивидуальной разработки.
Fishtoaster
1
Вы знаете, что действительно хорошего в RCS? Вы можете поместить все свои файлы RCS, v в правильную структуру каталогов, и у вас есть готовый к работе репозиторий CVS. Существует множество инструментов для преобразования из CVS в любую современную систему, например, Mercurial.
Дэвид Торнли
@Xepoch, простота резервного копирования распределенных vcs'ов непобедима.
0

Не ClearCase, по крайней мере для системы Unix / Linux (возможно, с Windows, установщик проще). Мне было легче освоить новый инструмент Perforce, чем обновлять наш сервер ClearCase.

В настоящее время я использую Perforce на работе, и мне это нравится, но я понятия не имею, является ли он лучшим. Настроить среду командной строки и сервер Perforce немного неудобно, но использовать Visual Client довольно просто. Мне нравится думать, что пользователям довольно легко справляться с повседневными задачами; это просто начальная настройка требует некоторой работы.

шанс
источник
0

Я использовал Visual SourceSafe и ненавидел его, но это было лучше, чем ничего, но ненамного. Последние пару лет использовал что-то под названием QCVS от Qumasoft.com, написанное, принадлежащее и поддерживаемое программистом Джимом Ворисом. Простой графический интерфейс, дешевая цена, хорошая поддержка.

Просто делает работу.

crosenblum
источник