Прочитав несколько «Почему DVCS лучше», вы получите ответы на несколько вопросов о программистах. Все они, похоже, говорят, что в целом DVCS лучше, так как у вас нет гонки коммитов в больших проектах, IE коммит, устарел, так обновить, зафиксировать, снова устареть, зафиксировать, все еще устареть и т.д.
DVCS ограничивают это концепцией толчка. Однако в очень крупных проектах не будет «гонка толчка», особенно в конце дня? Я знаю, что в Git это несколько исправлено постоянным ветвлением для всего, но в Mercurial вы не ветвитесь, вы создаете новую голову.
Я вижу проблему
- Пользователь пытается нажать
- Устаревший (Mercurial не позволит вам выдвинуть, если ваш локальный репо устарел), поэтому вы извлекаете и объединяете локальные изменения
- Пользователь пытается нажать еще раз, но когда он сливался, кто-то другой нажал, поэтому он снова устарел
- Потяните и снова объедините
- Все еще устарел
- Повторение
Звучит знакомо?
Это реальная проблема с очень большими и популярными ртутными репозиториями? Как насчет внутри компании, когда каждый делает свой последний толчок дня?
hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
--close-branch
при фиксации - и у mercurial есть названные ветки, вам не нужно клонировать новый каталогОтветы:
Насколько мне известно, большинство крупных проектов с открытым исходным кодом, использующих DVCS, используют «выталкивающие запросы» вместо «толкающих», то есть пользователь запрашивает, чтобы проект извлекал данные из своей ветви, и проект может выполнить эти пул-запросы в любом порядке. , если вообще. Это устраняет необходимость в «гонке толчка», как вы ее назвали.
В других компаниях я не могу поручиться за процесс, но там, где я работаю, это не проблема.
Видите ли, когда вы работаете над делом, вы работаете над веткой всего репо, поэтому ваши push-запросы отправляются в удаленную версию основной ствола. Когда вы хотите интегрировать свое (законченное) изменение в ствол, вы загружаете ствол, тянете, объединяете, толкаете.
Время от времени ( очень редко) два человека пытаются сделать это одновременно (обычно из-за некоторого недопонимания). В этом случае тот, кто «проигрывает», просто должен будет снова потянуть, объединить, подтолкнуть. Поскольку в 17:00 нет спешки для фиксации в центральном репозитории, описанная вами проблема на самом деле отсутствует.
В этом и заключается прелесть DVCS: ветвление безболезненно, поэтому каждый может работать над своей ветвью.
РЕДАКТИРОВАТЬ
О, я только что заметил ваш комментарий "В Mercurial вы не разветвляетесь ...": Да, вы делаете. Вы не должны этого делать, но так как это легко сделать, а выгоды от этого перевешивают, если не делать этого очень сильно, вы, как правило, часто просто разветвляете репо.
источник
Нет, нет гонок на пуш, потому что работа ведется в тематических ветках . Мастер слияния управляет (относительно меньшей) сложностью объединения ветвей в интеграционную ветвь . Обычно это делается непрерывно. Для получения дополнительной информации о распределенных рабочих процессах управления версиями, то первый источник будет рот лошади:
man gitworkflows
, онлайн здесь . Mercurial рабочие процессы делают использование ветвление , несмотря на ваши требования и методы аналогичны.источник