JOSM – розв’язання конфліктів

Редакція 2016-09-27

Іноді, коли ви намагаєтесь в JOSM завантажити результати вашої кропіткої праці на сервер, ви можете побачити це неприємне повідомлення про виникнення конфліктів в даних.
conflict detected
То що ж відбувається? Ви завантажуєте з сервера частину даних, що містить, наприклад, точку А. Потім, поки ви змінюєте вашу копію даних, хтось інший також завантажує дані з точкою А, змінює її, та надсилає зміна назад до OpenStreetMap. тепер, коли ви пробуєте завантажити вашу версію точки А, вона є відмінною від тої, що зберігалась до цього на сервері. Отже JOSM не знає до якої версії точки А потрібно внести зміни.

Конфлікти

Іноді, JOSM може з’ясувати що робити у випадку появи конфлікту в даних самостійно і видасть вам повідомлення схоже на це:
resolved automatically
Це означає, що JOSM автоматично вирішив, що елементи у вашій локальній копії даних не будуть завантажені до головного сервера тому що вони вже були вилучені іншим мапером. Але деякі конфлікти не мають простих способів розв’язання, які JOSM може застосувати самотужки, тож JOSM залишає право вибору дій за мапером, для вибору найкращого варіанту. Це означає, що вам доведеться розв’язувати конфлікти в даних самим.

Цей діалог каже нам, що нам треба переглянути всі конфлікти в даних Шарі 1:
warning unresolved

Це вікно містить попередження про те, що у вас можуть виникнути конфлікти у вашій копії даних. Якщо ви оновити вашу копію даних даними з сервера, ви зможете виправити конфлікти, яки можуть з’явитись:
check on server

Це вікно сповіщає про те, що JOSM не вдалося вилучити точку, через те що вона залишається пов’язаною з лінією. Щоб виправити цей випадок, вам потрібно повернутись в JOSM та розв’язати конфлікти перед надсиланням даних до сервера.
still in use

Розв’язання конфліктів

Розв’язувати конфлікти в JOSM, насправді, не так вже і складно, як це може здаватись з першого погляду. В основному, для кожного конфлікту JOSM запропонує вам два варіанти: або залишити вашу версію, або ж застосувати версію даних, що зберігається на сервері. Вам треба буде зробити вибір, або залишити вашу версію змін, або оновлену версію даних з сервера.
Ви можете подумати, “звісно ж, моя версія краща!” І, можливо, ви праві. Але повернімось назад, на початок цього розділу. Поки ви були зайняті внесенням власних змін, інший мапер додав багато іншої інформації до однієї з точок з вашої копії даних. Якщо ви оберете залишити вашу версію, замість версії іншого мапера, ви можете втратити важливі дані, додані ним. Отже, вам краще подумати про те, як залишити його версію та поєднати його зміни з вашими.
Коли у вас з’явиться повідомлення про конфлікт, вам краще натиснути кнопку “Синхронізувати …” (“Synchronize … only”). Вам, можливо, доведеться зробити це для кількох об’єктів, але краще розв’язувати конфлікти по одному.
synchronize node
Після натискання на цю кнопку з’явиться вікно, в якому детально описується ваш конфлікт. Повідомлення про помилку може виглядати складно, але це воно досить просте. Ви знатимете, який тип конфлікту у вас виник по червоному квадрату на верхній вкладці. Конфлікт у наведеному нижче прикладі стосується властивостей, таких як розташування та існування об’єкта. Ось чому тут містяться координати та згадується стан.

Типи конфліктів:

  • Властивості: Об’єкт було посунуто (координати) або вилучено
  • Теґи: Теґи відрізняються
  • Точки: Лінія в різних версіях складається із різних точок
  • Члени: Зв’язок в різних версіях складається з різних членів
    properties with conflicts

Конфлікти виникають тільки між двома змінами за раз. Якщо у вас три чи більше конфліктів, вам доведеться розв’язати їх ланцюжки. Все одно, вам треба обирати або вашу, або чужу версію, або ж зливати їх між собою, але не більше ніж для двох версій за раз.

У прикладі вище, у вас немає варіанта поєднати дві версії. Натисніть на перший стовпець, або Моя версія, якщо ви бажаєте зберегти її. Клацніть Версія з сервера, якщо ви вирішите, що зміни інших є кращими.
conflicts resolved

Після того, як ви оберете яка версія краще, натисніть на кнопку “Застосувати…” (“Apply Resolution”). У вас може з’явитись ще кілька попереджень про конфлікти перед тим, як ви нарешті зможете завантажити ваші дані на сервер. Внесіть ваші зміни та натисніть на кнопку “Надіслати”. У вас може з’явитись повідомлення:
command stack

На панелі діалогів, меню Панель ‣ Конфлікти, ви можете побачити перелік наявних конфліктів. Загальна кількість нерозв’язаних конфліктів показується в заголовку панелі. Ви можете виділити та розв’язати конфлікт клацнувши на ньому. Корисно мати цю панель під рукою, коли вам треба розв’язати велику кількість конфліктів.
one unresolved
Ви не зможете надіслати ваші зміни на сервер доки не очистите цей список.

Шляхи щодо уникнення конфліктів

Частіше надсилання змін на сервер

Для мінімізації випадків виникнення конфліктів, а також мінімізації їх кількості, рекомендується регулярно надсилати ваші зміна на сервер. Конфлікти виникають частіше у тих, хто тяжіє до створення власної копії даних та несвоєчасному їх надсиланню на сервер. Найкращим способом уникнення конфліктів є завантаження невеликої ділянки, внесення змін в дані та негайне надсилання цих змін на сервер. Чим довший проміжок часу між завантаженням даних та їх зворотнім надсиланням на сервер, тим більше ймовірність, що хто-небудь інший змінить їх за цей час. Якщо ви берете участь у Мапатоні та редагуєте, наприклад, довгу дорогу, є шанс, що хтось інший змінює її в іншому місці пороч з вами також; завантажуйте ваші зміни частіше, принаймні кожні 6 правок!

Редагування тільки в межах завантаженої області

Редагування лише в межах завантаженої ділянки зменшує ризик виникнення конфліктів. Переконайтесь що ви не вносите зміни поза межами завантаженої ділянки. Ви можете легко ідентифікувати території, дані для яких ще не були завантажені по спеціальній заливці діагональним штрихованням.

edit outside area

Підсумки

Коли ви вносите зміни за допомогою JOSM, у вас є ризик виникнення конфліктів в даних. Конфлікти виникають, коли один об’єкт змінюється двома маперами одночасно. Розуміючи природу конфліктів даних, ви зможете правильно їх розв’язати та надіслати ваші правки на сервер OpenStreetMap.