Подтвердить что ты не робот

Почему распределенный контроль источника считается более сложным?

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

Концептуально проще настроить репозиторий DCVS с помощью git init (или в зависимости от того), без проблем при настройке внешнего репозитория в случае SVN.

И базовая функциональность между SVN, Git, Mercurial, Bazaar использует практически идентичные команды для фиксации, просмотра diff и т.д. Что все новичок действительно будет делать.

Небольшая разница в способе Git требует, чтобы изменения были явно добавлены до того, как они были совершены, в отличие от политики SVN "совершить все", концептуально проста и, если я не ошибаюсь, даже не проблема, когда используя Mercurial или Bazaar.

Итак, почему SVN считается проще? Я бы сказал, что это просто не так.

4b9b3361

Ответ 1

Распространенная система управления версиями - это A Very Good Thing (tm), но я нахожу основной барьер для принятия, обучая пользователей новым возможностям, которые дает новый SCM.

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

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

Моя мысль: начните с того, что расскажите людям, что они получают (а не просто "эй, посмотри эту новую классную игрушку" ), и подготовьте их к тому, что использование командной строки - это путь, и это частая ветвь с постоянным временем хорошая вещь.

Многие системы, такие как mercurial, поставляются с полной системой патчей-очередей, а это означает, что с точки зрения непрерывной интеграции вы знаете, что все, что входит в производство, было одобрено QA. Подобные вещи трудно выполнить с помощью CVS или SVN.

С Mercurial люди будут иметь частные репозитории для своей текущей работы, и все разработчики совместно используют дерево разработчика на сервере. Система CI контролирует дерево разработчиков и извлекает все изменения, строит и выполняет unittests. Если все проходит, он распространяет изменения на дерево тестирования, откуда создается результат для лиц QA. Каждый добавленный набор изменений добавляет токен. Когда QA считает, что функция должна быть полной, они аннотируют дерево тестирования с помощью этого токена, и связанные с ним изменения автоматически распространяются на Дерево продукции.

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Вся концепция автоматического разветвления, нескольких головок, когда и когда не сливается, полностью ускользает от них, не говоря уже о том, что у них есть проблемы с освобождением от "фиксации/проверки с менталитетом $somecore", что приводит к полной путанице, когда они видят нажатие между двумя проверенными копиями.

(Некоторое время была проблема, когда кто-то неоднократно сливал 2 ветки, которые не должны были сливаться, потому что они не могли понять концепцию.)

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

изменить/отметить Самое большое различие Mercurials, которое я отметил vs Git, что делает более трудным использование ртути для новичков, - это поведение по умолчанию для mercurials для push/pull похоже на выполнение Git push -all/Git pull -all, который может распространять частные ветки и добавлять много путаницы (особенно когда появляется новая ветка, ртуть замерзает от страха и спрашивает, как обращаться с ней, а не просто продолжать грузоперевозки), а также как средство разрешения слияния/разрешения по умолчанию на Mac, просто вслепую один набор изменений вслепую.

Ответ 5

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

Ответ 6

Я бы сказал, что создание репозитория с помощью DVCS практически проще, но концептуально сложнее. В конце концов, с централизованным VCS пользователи не настраивают свой собственный репозиторий, они просто создают учетную запись на Assembla или настраивают для них репо.

Ответ 7

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

Ответ 8

Мы стараемся сделать это как можно проще на Codice, но это всегда немного сложнее объяснить, конечно, это зависит от аудитории.

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

Ответ 9

Это плохой маркетинг, простой в этом. Слишком много представлений DVCS сосредоточены на командной строке и говорят "ничего себе, разве это не фантастика, вы можете сделать слияние, просто набрав hg merge", полностью не обращая внимания на то, что многие люди (особенно в Windows land) боятся командная строка. Да, Джоэл Спольский, я смотрю на ваш собственный hginit.com здесь - нам нужна версия TortoiseHg, пожалуйста!

Возможно, это было два года назад, когда у них были плохие возможности графического интерфейса, но в последнее время они появились в прыжках. TortoiseHg теперь находится в версии 1.0, и хотя это может быть не что-то, что можно написать дома о визуально, оно довольно прочное, стабильное и простое в использовании. TortoiseGit также прочный, и он отлично справляется с устранением всех сложностей командной строки git.