Окремий репозиторій на файловій системі для кожного користувача в розрізі кожної версії-кандидату. Отримання інформації про конфлікти з Gerrit.
Підхід базується на використанні окремого локального репозиторію для кожного користувача в розрізі окремої версії-кандидату.
Synchronisation scheduler
Scheduler відповідальний за:
-
rebase on master (актуалізація змін)
-
fetch changes from ref (отримання змін, що внесені іншими користувачами)
Актуалізація змін може буде виконана шляхом виклику відповідного Gerrit RestAPI методу |
Кожна операція синхронізації буде примінена для кожного з локальних репозиторіїв на файловій системі.
Кожен запит на збереження змін від користувача призведе до створення нового Patchset в Gerrit Merge Request, що відповідає версії-кандидату, в рамках якої відбуваються зміни. TODO: investigate how many patchsets we can have in MR? |
Кожен новий Patchset в Gerrit Merge Request не може конфліктувати з попередніми Patchset в цьому ж MR. Якщо новий Patchset має конфліктуючі зміни з попереднім Patchset, то автоматично використовуються зміни, що знаходяться в останньому Patchset. В розрізі організації роботи в amin-portal дана поведінка може призвести до перетирання одним користувачем попередні зміни інших користувачів в рамках однієї версії-кандидату. |
Pros
-
Механізм максимально сумісний з існуючим механізмом організації роботи з репозиторіями на файловій системі та Gerrit.
-
Шляхом використання репозиторію для кожного окремого користувача механізм дозволяє використовувати lock на репозиторій в цілому і не мати залежності між користувачами при внесенні ними змін одночасно.