Чи страждають великі сховища ртутних спостережень від "гонки"?


9

Прочитавши декілька "Чому DVCS краще" відповідає на кілька запитань програмистів. Здається, всі вони говорять про те, що взагалі DVCS краще, оскільки у вас немає гонки на фіксацію великих проектів. оновити, здійснити, застаріти знову, здійснити, все ще застарілий тощо.

DVCS обмежують це концепцією поштовху. Однак у дуже великих проектах не відбудеться "гонка", особливо наприкінці дня? Я знаю, що в Git це дещо виправляється постійним розгалуженням для всього, але в Mercurial ви не розгалужуєтесь, ви створюєте нову голову.

Проблема, яку я бачу

  1. Користувач намагається натиснути
  2. Застарілий (mercurial не дозволить вам натиснути, якщо ваше місцеве репо-застаріле), тож ви потягнете та об'єднаєте свої локальні зміни
  3. Користувач намагається знову натиснути, але, поки вони зливали когось іншого, натиснули, тож вони знову застаріли
  4. Потягніть і з’єднайте знову
  5. Ще застаріла
  6. Повторіть

Звучить знайомо?

Це актуальна проблема з дуже великими і популярними репортажами про вбивство? А як же всередині компанії, коли кожен робить свій останній потік дня?


хто не розгалужується в меркуріалі? hg branch myfeature; hg ci -m "Starting feature branch"; hg push --new-branch
Карсон Майєрс

@Carson В гітці git дешево. У ртутних вони набагато постійніші. Як правило, я чув, що в git ви розгалужуєте роботу над певною функцією, а в mercurial ви створюєте нову голову або клонуєте до іншого каталогу.
TheLQ

добре, ви можете додати, --close-branchколи вчиняєте - і mercurial назвав гілки, вам не доведеться клонуватись до нового каталогу
Carson Myers

@Carson Я не кажу, що ти не можеш або що це неможливо, я просто кажу, що я завжди чув, що конвенція полягала в клонуванні чи створенні нової голови, а не гілки. Більшість ртутних репостів, яких я бачив, мають лише кілька гілок, в той час як у git repos є купа
TheLQ

Я не впевнений, я ніколи не використовував git
Карсон Майєрс

Відповіді:


8

Наскільки я знаю, більшість великих проектів з відкритим кодом, що використовують DVCS, використовують "тягнути запити" замість натискань, тобто користувач вимагає, щоб проект виводив із своєї філії, і prject може вибрати ці запити на витяг у будь-якому порядку , якщо взагалі. Це виключає потреби в «гонці push», як ви її назвали.

В інших компаніях я не можу поручитися за процес, але там, де я працюю, це не проблема.

Дивіться, коли ви працюєте над справою, ви працюєте на гілці всієї репо, тому ваші запити про натискання переходять до віддаленої версії основного магістралі. Коли ви хочете інтегрувати свою (закінчену) зміну в магістраль, ви завантажуєте магістраль, тягнете, зливаєте, штовхаєте.

Інколи ( дуже періодично) дві людини намагатимуться робити це одночасно (як правило, через деяку невдачу). У цьому випадку, хто «програє», доведеться просто знову тягнути, зливатися, штовхати. Оскільки в 17:00 не потрібно поспішати скористатися центральним сховищем, проблема, яку ви окреслили, насправді не існує.

У цьому і полягає краса DVCS: розгалуження безболісне, тому кожен може працювати на своїй гілці.

EDIT

О, я щойно помітив твій коментар "У курсантів ти не відділяєшся ...": Так, так. Вам не доведеться, але оскільки це так просто, і переваги від цього переважують, не роблячи це дуже, ви, як правило, багато філій репостів.


Я завжди чув, що ви клонуєте працювати над експериментальними особливостями, а не за галуззю. Більшість причин, які я чув, - це те, що в ртутних відділеннях набагато більше, ніж у Git. Я можу помилитися, проте
TheLQ

Це річ, що стосується меркуріалу, клон - це гілка, ви все ще можете зробити майже все, що можете зробити зі стандартною "головою" (та ще деякими речами!), Але у вас є додаткова розкіш тягнення / рівень натискання на відстань від магістралі. Я не впевнений, що ви маєте на увазі щодо постійності, коли ви закінчите з своїм клоном, ви можете просто видалити його.
Ед Джеймс

Чому так, що немає поштовхів у 5 вечора?
Cem Catikkas

Як я вже говорив, більшість часу кожен працює над своєю власною галуззю (ти навряд чи працюєш над тим самим питанням, що й інша людина), тож, хоча в кінці робочого дня всі підштовхують до різних галузей. Плюс, у мене на роботі є гнучкий час, тому це швидше пік з 16:00 до 18:00;)
Ед Джеймс,

1

Ні, немає гоночних змагань, оскільки робота проводиться в тематичних галузях . Майстер злиття управляє (відносно нижчою) складністю об'єднання гілок в гілку інтеграції . Зазвичай це робиться постійно. Для отримання додаткової інформації про розподілених робочих процесах управління версіями, то перше джерело буде рот коня: man gitworkflows, онлайн тут . Mercurial робочі процеси роблять використання розгалуження , незважаючи на ваші вимоги і методи аналогічні.


ОП розрізняє тут git та hg, але ваша відповідь спрямована на git (наприклад, перша посилання дуже орієнтована на git). Це правильна відповідь (оскільки оригінальне неправильне тлумачення розгалуження в hg OP призводить до самого питання), але варто зазначити, що це однаково і для hg.
Ед Джеймс

@Ed Добрий момент, оновлений, щоб уточнити, що відповідь стосується як git, так і mercurial.
Рейн Генріхс

див. сховище git.git, це хороший приклад об’єднання за допомогою DVCS. Є багато точок злиття. Одночасно може бути більше 10 тимчасових відділень, перш ніж остаточно об'єднатися в основну гілку.
зв’язати
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.