И снова добрый день.
Как возможно, некоторые помнят, у моего проекта на гитхабе есть коллективный перевод на сервисе Hosted Weblate. Недавно я получил предупреждение о конфликте слияния репозитория перевода с основным. Weblate предлагает «типичный рабочий процесс» для устранения конфликтов слияния:
Коммит всех ожидающих изменений и блокировка переводимого компонента.
wlc commit; wlc lock
Добавить экспортированный посредством Weblate репозиторий как дистанционный.
git remote add weblate https://hosted.weblate.org/git/doublecontact/translations/ ; git remote update weblate
Объединить изменения Weblate и разрешить любые конфликты.
git merge weblate/master
(*)
Отправить изменения в вышестоящий репозиторий.
git push origin master
Теперь Weblate должен видеть обновленный репозиторий, и вы сможете разблокировать его.
wlc pull ; wlc unlock
(*) В помеченном месте очевидно, и надо исправить нестыковки во всех конфликтных файлах и сделать git commit
. Авторы инструкции этого не написали, видимо, сочли это очевидным - hobbit
В целом эта инструкция оказалась правильной. Я ожидал, честно говоря, подлянок со стороны git (ибо побаиваюсь всяких страшных слов вроде merge, stash и rebase), но как раз git меня приятно удивил, молча отработав. Зато возникла пара нюансов со стороны wlc — консольного клиента самого Weblate.
Первое. Для установки wlc предлагается два способа: через docker и через pip3. Я сначала зачем-то полез в docker. Подключился к докерхабу, с помощью docker search
нашёл нужную строчку weblate/wlc
… вот только попытка её скачать через docker pull
возвращает ошибку «manifest unknown». Я в докере нуб, и теоретически возможно, что я что-то недонастроил. Но например, пример демонстрационного веб-сервера от Prakhar Srivastav, описанный на хабре (prakhar1989/static-site), у меня успешно грузится и запускается. Если кто-то знает, где собака порылась — welcome в комментарии.
Зато pip3 мигом поставил мне нужную утилиту. С ней я дальше и работал.
Второе. Запись wlc commit
и др. предполагает, что wlc на машине разработчика сконфигурирован и настроен на нужный проект. Пример конфига приведён в той же инструкции, но он не совсем удачен. Ну то, что вместо APIKEY в секции keys надо подставить 16-ричное число из своего профиля — догадаться нетрудно. А вот как правильно заполнить параметр translation из секции weblate, я гадал долго (в примере из доки написано weblate/master). Правильный вариант - «проект/компонент». В моём случае это компонент «переводы», т.е.
https://hosted.weblate.org/api/
translation = doublecontact/translations
После этого других проблем не было, я успешно провёл слияние и разблокировал репу.
Надеюсь, кому-нибудь пригодится.