Яка різниця між реєстрацією та замовленням?


14

Під час викладання класів SCM учням, які не знайомі з Управлінням конфігурацією програмного забезпечення, трапляється таке питання, як " What's the difference between checkin and checkout?".

Різновидом є те, що такі студенти плутаються в цих концепціях SCM (вони розуміють їх як навпаки).

Отже, яку метафору ви можете використати для пояснення цієї важливої ​​концепції SCM перед такою аудиторією?


замовлення = замок; checkin = розблокувати; Ви берете ексклюзивний замок для редагування відповідного об'єкта на гілці, на якій ви виконуєте операцію.
Ірі Клоуда

Відповіді:


8

Щоб комусь щось пояснити, спробуйте порівняти це з тим, з чим вони (сподіваємось) вже знайомі.

Тому я просто відповідаю на таке запитання, як:

Подумайте про це як про прибуття в місце проживання (готель, курорт тощо):

  • дуже перший , що ви робите (коли ви приїдете) це checkin.
  • дуже остання річ , яку ви робите (якщо ви залишаєте) це checkout.

Подібна концепція SCM застосовується, коли ви хочете застосувати зміни до компонентів програмного забезпечення ... за винятком того, що вона застосовується навпаки :

  • дуже перший , що ви робите (при запуску) є checkout(або думати про нього , як запозичення його).
  • дуже остання річ , яку ви робите (коли ви закінчите) є checkin(або думати про нього , як віддавати його).

Примітка : це стосується централізованих систем (таких, як ті, що використовуються в середовищі мейнфреймів ...). У таких системах, як checkout поняття " " має зовсім інше значення (що також IMO, чому в цих системах навряд чи є плутанина щодо обох понять).


Можливо, код більше схожий на бібліотечну книгу, ніж на готельний номер?
Toby Speight

Це досить наївна, непрофесійна відповідь. Я десятиліття працював над внутрішніми системами управління джерелами, тому я додав трохи більш поглиблений відповідь на ваше запитання.
Jiri Klouda

6

Важливо відзначити, що терміни "реєстрація" та "замовлення" мають різні значення залежно від типу системи SCM.

Централізовані системи, такі як TFVC, Subversion та Clearcase, використовують "ексклюзивні" каси. Це схоже на метафору книги П'єра, де лише один користувач може перевірити файл за один раз.

Розподілені системи, такі як git, мають команду "checkout", але це означає щось зовсім інше. git checkoutвикористовується для перемикання між гілками під час роботи з локальним сховищем.


Добрий момент Дейв про розподілені системи! Власне, тому і сам спочатку (коли я вперше дізнався про GIT) був жахливо розгублений. Щоб не визнати недійсною вашу відповідь (адаптувавши моє запитання), я уточнив власну відповідь, щоб трохи її уточнити.
Pierre.Vriens

Я повинен уточнити: git checkout використовується для перевірки об’єктів із сховища. Це може бути гілка або один файл.
Дейв Сверський

4

У централізованих системах думайте про це як про технічну бібліотеку. (може бути розтягнення уяви, як функціонує ця гіпотетична бібліотека ...)

Якщо ви автор документа, ви можете checkoutскопіювати бібліотеку, внести зміни, повернути її check it back inв бібліотеку, щоб побачити світ.

Це може стати проблемою, якщо бібліотека має цифрові копії, а я checkoutдокумент, хтось ще й checks outдокумент, ми обидва внесемо зміни, виникне конфлікт (конфлікт злиття), який може бути важко вирішити. Тоді початкове "виправлення" для цього - ексклюзивна checkoutфункціональність ...


Звичайно, для великих проектів шанси на вирішення конфліктного питання злиття (люди працюватимуть у різних частинах системи), тому checkout/ checkinмайже не потрібно. Оскільки розподілені системи за дизайном дещо вимагають хорошої функціональності злиття, а також багатьох інших переваг, ця концепція насправді не існує в git та інших DVCS


Це ще один спосіб поглянути на це. Хоча з мого досвіду, я не думаю, що це гарна ідея також додавати такі речі, як "конфлікти" та "злиття" (якщо вони навіть не відчувають себе комфортно ще при оформленні каси та реєстрації).
Pierre.Vriens

Справедливо, я додав це тому, що головна причина того, що каса / чек існує, про що я міг придумати. І відчувати, як зрозуміти поняття надзвичайно складно, якщо ти не знаєш, для чого ця концепція насправді корисна.
Тимін

2

З репозитария SCM в якості основного об'єкта , потім »

  • виписка отримує зміни ПОЗА з локального або віддаленого сховища (в локальному робочому каталозі).
  • чекін повертає зміни в локальний або віддалений сховище (з місцевого робочого каталогу).

Мерсі за цю відповідь також . Це справді спосіб пояснити це, хоча мені все ще цікаво, чи можна придумати якусь "метафору" (як у моєму питанні). Наприклад, щоб пояснити це тому, кого ви навчали, хто навіть не має поняття, що таке місцеве або віддалене сховище .
Pierre.Vriens

Щоправда, якщо вони не мають поняття про те, що сховище, то намагаються навчити чекінг і каси будуть безглуздими. Тепер для метафори управління джерелами взагалі ви можете порівняти її з фінансовим обліку / бухгалтерією. Він принципово відстежує зміни у вартості активів. Ви записуєте або окремі індивідуальні зміни, або групи змін (наприклад, "Подорож з А до Б", а не квиток на таксі + автобус-билет + квиток на поїзд + ...), хоча не надто великі групи (наприклад, "Усі витрати на понеділок"). Аналогічно сховище відстежує зміни вихідного коду, окремих чи не надто великих груп.
hlovdal

1
  • Оформити замовлення - це ексклюзивний замок для зміни гілки об'єкта у сховищі.
  • Checkin - це випуск ексклюзивного замка.

Існує два види систем управління джерелами залежно від того, яка найменша одиниця розгалуження.

1) За розгалуження сховища (CVS, SVN, GIT, Perforce, ... тощо)

У продуктах, де ви здійснюєте відділення всього сховища, каси зазвичай створюють або вмикають зміни в локальній філії (копії) всього сховища. У цих продуктах checkin часто не використовується і стає частиною операції фіксації , яка є одразу замовленням віддаленого відділення, застосовуючи локальний патч та реєстрацію віддаленого відділення за одну операцію. Ви не приїзду в місцеве відділення , як це постійно перевірили. (Примітка. У GIT ви не зобов’язуєтесь віддалену гілку, ви підштовхуєте її до місцевої комісії. Суворо синтаксична різниця. )

2) За розгалуженням об'єктів (ClearCase, AccuRev, Oracle ADE)

У продуктах, де ви розгалужуєте окремі об'єкти, як-от каталоги, файли тощо. Поняття оформлення замовлення та реєстрації застосовується для кожного об'єкта на галузь. Ви заблокуєте об'єкт, щоб змінити його під замовленням та звільнити його за допомогою реєстрації . У цих продуктах ви часто працюєте на приватній гілці, де блокування не перешкоджає нікому працювати, а під час об'єднання вашої місцевої гілки в спільну гілку об'єкти також перевіряються на осколковій гілці (головна, головна, гілка функції тощо) ) Вирішуються конфлікти злиття та перевіряється об'єкт у спільній гілці. Це дозволяє декільком людям одночасно "вчиняти" спільну гілку до тих пір, поки вони не змінюють однакові об'єкти.


Гей Джирі, мерсі за вашу відповідь. З цих двох видів, які ви згадали, я погодився б. Але в інструментах SCM у світі мейнфреймів (чи був мій досвід) ніхто не враховує "блокування" ... Чи можете ви придумати спосіб додати 3-й вид до своєї відповіді?
Pierre.Vriens

Чи можете ви надати мені приклад товару, який не входить у ці дві категорії? Я можу тобі сказати, який із двох підходить, або додати третій, якщо він дійсно є. Каса та реєстрація - це операції на філії, що дають та звільняють від права її змінювати. Отже, розділення на те, які галузки продукту (ціле сховище чи окремі об'єкти) є природним для цього питання. Я не знаю, чи є щось середнє, що б це було? Розгалуження підрядів, як у Perforce та Subgit, по суті є першою категорією. Блокування - це лише інша назва «ексклюзивного права на».
Jiri Klouda

BTW Метафора бібліотеки, як згадувалося раніше, справді хороша. Оформивши замовлення книги, ви отримуєте ексклюзивне право на неї. Ви берете його додому і робіть з ним як завгодно. Читайте її або навіть записуйте нотатки на полях, і ніхто більше не може змінювати книгу, поки ви це перевірили. Як видалити деякі його сторінки або виділити деякі рядки. Перевіряючи книгу, люди можуть її прочитати у бібліотеці, де пильне око бібліотекаря не дозволяє будь-яких модифікацій (вандалізму) або перевірити її та віднести додому. Це серіалізує зміни до цієї книги.
Jiri Klouda

Щоб продовжити аналогію, в іншому відділенні бібліотеки одна і та сама книга може бути там із різними модифікаціями або зовсім не змінена або взагалі не бути. Хтось ще може одночасно перевірити його там (тобто замовлення здійснюється за галуззю). Зараз оригінальний автор працює над другим виданням, головним відділенням, так би мовити. Він міг читати нотатки з декількох гілок, зливати їх разом, перевіряти головну гілку та перевіряти друге видання. Кожне відділення бібліотеки оновить свій примірник, придбавши друге видання. Вони можуть відкинути 1-шу або скопіювати корисні нотатки з поля до нового видання.
Ірі Клоуда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.