LINUX.ORG.RU

Устраняем конфликты слияния в Weblate

 , weblate,


0

1

И снова добрый день.

Как возможно, некоторые помнят, у моего проекта на гитхабе есть коллективный перевод на сервисе 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

После этого других проблем не было, я успешно провёл слияние и разблокировал репу.

Надеюсь, кому-нибудь пригодится.

★★★★★

Последнее исправление: hobbit (всего исправлений: 2)

нашёл нужную строчку weblate/wlc… вот только попытка её скачать через docker pull возвращает ошибку «manifest unknown».

docker pull weblate/wlc:edge

Если не указать тег, скачиваться будет weblate/wlc:latest, а у них тега latest нет. Только edge.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Очень сильное колдунство!

hobbit ★★★★★
() автор топика
3 декабря 2021 г.

Интересно, что год спустя, когда мне потребовалось повторно решить ту же проблему, wlc отказался работать, мотивировав это отсутствием некоего модуля. Система та же (Manjaro KDE), головной модуль wlc в ~/.local/bin присутствовал. Я на интуиции вызвал pip3 install wlc, проблема решилась.

hobbit ★★★★★
() автор топика
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.