Распределенный контроль версий "приложений-убийц" - PullRequest
11 голосов
/ 10 октября 2010

Учитывая переход на Mercurial или Git?Мы тоже.В настоящее время я изучаю преимущества DVCS, которые оказываются огромными, похотливыми и обязательными.

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

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

Я думаю, что такой список может помочь людям, обращающимся к команде с предложением DVCS.Этот вопрос - вики сообщества, очевидно.

Ответы [ 7 ]

19 голосов
/ 10 октября 2010

Единственная реальная функция фактического убийцы - это ...

слияние

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

11 голосов
/ 10 октября 2010

Отделение от публикации

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

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

5 голосов
/ 11 октября 2010

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

У нас будет репозиторий DEV, который все разработчики проталкивают в него. QA-репозиторий примет push от репозитория DEV и создаст свою версию кода для тестирования. После завершения тестирования они отправляют код в производственное хранилище (QA-хранилище - единственное, которое может вносить изменения в производственное хранилище), из которого будет производиться «производственный» выпуск.

Это кратко изложено в hginit Джоэла (в нижней части страницы) .

Я обновлю этот пост, как только мы фактически осуществим описанную выше настройку.

3 голосов
/ 11 октября 2010

Для проектов OSS :

низкий барьер входа для участия

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

Во-вторых, вам не нужно коммитный бит , чтобы иметь возможность внести свой вклад.Просто клонируйте репозиторий проекта, и вы сможете использовать всю мощь DVCS.Затем вы можете отправлять патчи, или запрос на извлечение, или отправку в ветку 'mob';Есть много возможностей.

Это также преимущество для сопровождающего (ых) проекта: ему / ей не нужно беспокоиться о том, кому он может доверять, чтобы предоставить «бит коммита», то есть доступ к репозиторию,как это имеет место в CVCS.Карл Фогель написал в Создание ПО с открытым исходным кодом.Как запустить успешный проект свободного программного обеспечения. чтобы он счел лучшим для проекта, чтобы ограничения, такие как контроль доступа, были скорее социальными, чем технологическими;DVCS идет дальше благодаря тому, что не требуется решать, предоставлять ли разрешение на коммит.

2 голосов
/ 28 октября 2011

Большинство функций доступно в автономном режиме

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

  • история чтения
  • извлечение старых версий
  • фиксация
  • создание веток

возможно только при подключении к центральному серверу.

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

Хотя это, вероятно, неважно, если вывсегда в сети (например, в офисе), это может быть важно, если вам часто приходится работать в автономном режиме, например, во время путешествий или дома с ненадежным соединением.

Я начал использовать git специально, потому что я часто работаюна дороге и обычно не имеют (надежного) соединения.

1 голос
/ 10 октября 2010

Похоже, что «приложение-убийца» представляет собой распределенные группы : вместо привязки к центральному серверу (через медленное или ненадежное соединение) каждая команда может иметь свой собственный репозиторий и при необходимости вносить изменения.

0 голосов
/ 28 октября 2011

Обмен изменениями с другими без публикации

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

  • Алиса начинает работу над функцией, но Бобу нужносделайте что-нибудь перед выпуском.
  • Боб принимает изменения Алисы напрямую, заканчивает работу над функцией.У Алисы и Боба может быть что-то между ними.
  • Чарли, парень по контролю качества, берет изменения Боба и Алисы от одного из них.Проверяет их.Они в порядке!Он выталкивает всю партию на главный сервер.Все остальные теперь могут получить эту функцию - завершенную и протестированную.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...