LINUX.ORG.RU

Как настроить git gui так, чтобы он везде использовал UTF-8?

 , , , ,


0

1

Пародоксальная ситуация: утилита git gui корректно работает у пользователей на Windows. И только у меня в Debian Linux 9 с локалью ru_RU.UTF-8 я вижу вот эта:

http://i.piccy.info/i9/7e8dfa3a5133ce7e2a71d0b67d4ccb40/1580307158/22150/1353...

Проблема не в том, что это окно ошибки, а в том, что текст внутри окна состоит из кракозябр. И так было и Debian 7 и 8 кстати. Пришло время разобраться!

Пробовал следующую команду:

git config --global gui.encoding utf-8

Толку никакого. Где что еще надо докрутить, чтобы видеть нормальные русскоязычные сообщения Git?

★★★★★
Ответ на: комментарий от grem

А разве это описание коммитов? Это кажется текстовка собственно ошибки. Этот текст не пользователи писали.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Тогда ему нужно что-то вроде этого: https://m.habr.com/ru/post/74839/

Сообщение ему сервер возвращает и или локальный клиент?

Если локальный, то опять вопрос - в какой кодировке коммиты на сервере?

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)

утилита git gui корректно работает у пользователей на Windows

Где что еще надо докрутить, чтобы видеть нормальные русскоязычные сообщения Git?

git config --global gui.encoding windows-1251

не?

vtVitus ★★★★★
()

Судя по скриншоту, тебе ответ от сервера приходит в кодировке, отличной от UTF-8.

trex6 ★★★★★
()
Ответ на: комментарий от Deleted

А разве это описание коммитов? Это кажется текстовка собственно ошибки. Этот текст не пользователи писали.

Это русскоязычные сообщения локального git, отображенные в окне Tcl/Tk.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от beastie

Хотя на скриншоте у тебя win-1252 интерпетированный как utf-8.

Это русскоязычные сообщения локального git, отображенные в окне Tcl/Tk.

Причем локаль системы ru_RU.UTF-8.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от trex6

Судя по скриншоту, тебе ответ от сервера приходит в кодировке, отличной от UTF-8.

Это русскоязычные сообщения локального git, отображенные в окне Tcl/Tk.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от grem

Да, в терминале все в порядке и по-русски.

Вот например:

$ git commit
На ветке master
Ваша ветка обновлена в соответствии с «origin/master».
Изменения, которые не в индексе для коммита:
        изменено:      src/check_tree_model.cpp

нет изменений добавленных для коммита

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от grem

В git log все тоже по-русски:

$ git log
commit 3bdda9e1d98bb4a8b246a4c1753fc12beac01be8
Merge: d84dab9 72d15f5
Author: xintrea <xintrea@gmail.com>
Date:   Wed Jan 29 17:25:57 2020 +0300

    Merge branch 'master' of ssh://xintrea@192.168.1.251:/home/git/logging_module.git

commit d84dab988a654fb54d755573e424e276575f5da1
Author: xintrea <xintrea@gmail.com>
Date:   Wed Jan 29 17:03:58 2020 +0300

    Переименован конфиг messages.xml в logging_messages.xml

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от grem

Проблема не в отображении содержимого файлов исходников. Проблема в отображении консольного вывода git в окошке Tcl/Tk.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

На первоначальном скриншоте ж вывод ошибки при попытке отправить коммит на сервер? Из терминала нормально рушится тот же коммит, который не отправляется из gui?

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

На первоначальном скриншоте ж вывод ошибки при попытке отправить коммит на сервер? Из терминала нормально рушится тот же коммит, который не отправляется из gui?

Да, в терминале нормально рушится, и сообщения на русском.

Xintrea ★★★★★
() автор топика

Проще выкинуть Git Gui и никогда им не пользоваться. Зачем он вообще нужен? Мало того, что он на древнем и глючном Tk/TCL, так ещё и выглядит так, как будто это: Вышла EasyGG 0.1 — новая графическая оболочка для Git

Чем тебя не устраивает интеграция Git в твою IDE? В Qt Creator неплохая интеграция, в IDEA и даже MS Visual Studio тоже отличная.

Там и перемещение по истории, и человеческий Git Blame, и нормальные diff’ы. Так зачем вообще нужен Git Gui? На крайний случай есть TortoiseGit, но он тоже я считаю, что не нужен.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

древнем Tk/TCL

Tcl/Tk 8.6.10 (Nov 21, 2019), но не исключаю, что конкретно тот guiна очень старой версии

глючном

на недоделанном wayland что-ли?

grem ★★★★★
()
Ответ на: комментарий от EXL

Чем тебя не устраивает интеграция Git в твою IDE? В Qt Creator неплохая интеграция, в IDEA и даже MS Visual Studio тоже отличная.
Там и перемещение по истории, и человеческий Git Blame, и нормальные diff’ы. Так зачем вообще нужен Git Gui? На крайний случай есть TortoiseGit, но он тоже я считаю, что не нужен.

Просто я вижу, как мои напарники свободно пользуются git gui под Windows, делают слияния, управляются с ветками, все у них хорошо. И делают они это достаточно интуитивно, даже не особенно разбираясь в Git. Для них git gui - это наше все.

В то же время я, луноход, храню коллекцию консольных команд, на все случаю жизни разбираюсь с опциями, каждое действие в консоли (помимо commit/pull/push) - это целая история приключений. Напарники могли бы меня научить работать с git gui, чтобы у меня наработались моторные навыки, но не могут сделать этого в Linux. Потому что при каждом нестандартном случае невозможно даже прочитать в чем проблема.

Мне непонятно, почему за столько лет в Linux стандартная программа git gui, созданная по всем канонам открытого кода, до сих пор показывает кракозябры.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от grem

А какая всё-таки кодировка у файлов и самое главное, какой шрифт в настройках указан этого git gui?

Поставил git gui; добавил в mc файлы с текстом на кирилице и именем на кирилице; в git gui увидел их, добавил в staged и закоммитил; всё нормально отображается в том числе в визуализации ветки master, где был сделан коммит.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Интересная ситуация. Обычно те люди, которые пользуются Git’ом из терминала, учат своих «виндовых» напарников, а не наоборот.

Мне непонятно, почему за столько лет в Linux стандартная программа git gui, созданная по всем канонам открытого кода, до сих пор показывает кракозябры.

Потому что она не снискала популярности у разработчиков. Допиливать её до юзабельного состояния просто некому. Ибо одно большинство использует Git из коробки в любимом терминале, а другое большинство использует интеграцию Git в свою любимую IDE или редактор кода. Полезность отдельного интерфейса для Git сомнительна.

И делают они это достаточно интуитивно, даже не особенно разбираясь в Git. Для них git gui - это наше все.

Так и зачем ты хочешь делать как они? Для них каждое нажатие кнопки – какая-то там магия «под капотом», тогда как для пользователя текстового интерфейса каждое выполнение команды – осознанное действие. Лучше хорошенько разберись в Git и его командах, в этом тебе поможет отличная официальная книга Pro Git, а дальше разберись с интеграцией Git в то окружение, в котором ты ведёшь разработку и пишешь код. После этого коллеги-виндовозы, у которых палец к мышке прирос и которые не могут ничего сделать без Git Gui, будут выглядеть дико.

EXL ★★★★★
()
Ответ на: комментарий от grem

Поставил git gui; добавил в mc файлы с текстом на кирилице и именем на кирилице; в git gui увидел их, добавил в staged и закоммитил; всё нормально отображается в том числе в визуализации ветки master, где был сделан коммит.

Ну так сделай какую-нибудь проблему в git, и сразу увидишь ошибку.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Какую проблему?

Пушить в свой гитхаб левые коммиты я не буду, а локальные на русском нормально отображаются и создаются там же.

Суть проблемы пока не понятна: все сообщения и отображение кириллицы кракозабрами или только в случае подобной ошибки? Что именно приводит к ошибке?

Почему пуш то rejected был?

То есть, отображается ли вообще текст на кириллице в окошках: текст в файлах, имена файлов, текст коммитов? Какая кодировка самих файлов?

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 2)
Ответ на: комментарий от EXL

тогда как для пользователя текстового интерфейса каждое выполнение команды – осознанное действие. Лучше хорошенько разберись в Git и его командах, в этом тебе поможет отличная официальная книга Pro Git

Меня эти «осознанные действия», честно говоря, уже достали.

Проблемы возникают один раз в несколько месяцев. Помнить все эти команды нет никакого желания, они просто тупо не запоминаются. Каждый раз вспоминать «так, что мы тут делали, где была проблема, какими командами разрулили, какие были особенности синтаксиса и опций три месяца назад» - это слишком.

Да, я могу сконструировать нужную последовательность команд, но потрачу на это кучу времени. В то время как в git gui люди понатыкают все что надо за пару минут.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от grem

Суть проблемы пока не понятна: все сообщения и отображение кириллицы кракозабрами или только в случае подобной ошибки? Что именно приводит к ошибке?

Ну вот сделай два рабочих каталога и один репозитарий, засинхрись везде.

В первом сделай изменения и закоммить.

Во втором сделай изменения (не принимая изменения с сервера) и попробуй закоммить. Получишь ошибку.

Она у тебя нормально отображается?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Давай минимальный воспроизводимый пример с шагами для повторения, а не пять страниц пространных обсуждений, которые ни к чему осознаному не приведут.

Из того, что я вижу на твоём скрине – репозиторий выплюнул ошибку rejected, которая где-то там прошла цепочку Win-1252 => UTF-8.

Из всех твоих постов я так и не понял, в Gut Gui у тебя такая же проблема только с такими ошибками rejected или даже русскоязычный git log отображается коряво.

EXL ★★★★★
()
Ответ на: комментарий от grem

Пушить в свой гитхаб левые коммиты я не буду

$ mkdir repo1 && cd repo1 && git init && touch file && git add -A && git commit -m "Init" && cd ..
$ git clone repo1 repo2

$ cd repo1 && touch file1 && git add -A && git commit -m "Add 1" && cd ..
$ cd repo2 && touch file2 && git add -A && git commit -m "Add 2" && cd ..

$ cd repo2
$ LANG=ru_RU.UTF-8 git gui

Внешние репозитории => Отправить... => Отправить

Вот так проверь. У меня всё нормально, но так как в системе локаль en_US, git мне просто плюётся английским, я проблему не могу воспроизвести.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от EXL

Ну… если до компа доползу.

Но интерфейс у этого гуи наркоманский. По крайней мере после tortoisehg workbench.

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

Но интерфейс у этого гуи наркоманский.

Ну так я об этом и говорю. Там Tcl/TK со времён когда было модно к консольным Unix’овым программам делать GUI-оболочки на нём. Оно наверное даже libgit2 не использует, как многие IDE, а просто парсит текстовый выхлоп git’а из внутреннего bash-сеанса, отсюда и подобные ошибки.

Может всё банальнее и у него в настройках шрифт не поддерживающий кириллицу.

Нет, судя по кракозябрам там Win1252 воспринимается как UTF-8.

EXL ★★★★★
()
Ответ на: комментарий от xDShot

GitKraken в помощь

Мне нужен такой клиент, который есть всегда везде во всех репозитариях.

На сайте https://www.gitkraken.com/ я даже не могу нажать на «Other Platforms», представить не могу что там напутали с версткой. Разбираться что криворукие специалисты по юзабилити сделали с сайтом нет никакого желания.

Кстати, а в GitKraken русскоязычный интерфейс есть?

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Я его о шрифтах и отображении других сообщений в интерфейсе спрашиваю, а он мне «у меня utf8» ….

Facepalm

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

Ты на вопросы можешь ответить об отображении кириллицы?

На какие конкретно? Я на все твои вопросы ответил.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

То есть, отображается ли вообще текст на кириллице в окошках: текст в файлах, имена файлов, текст коммитов? Какая кодировка самих файлов?

grem ★★★★★
()
Ответ на: комментарий от EXL

Давай минимальный воспроизводимый пример с шагами для повторения, а не пять страниц пространных обсуждений, которые ни к чему осознаному не приведут.

Процитирую сам себя:


Ну вот сделай два рабочих каталога и один репозитарий, засинхрись везде.
В первом сделай изменения и закоммить.
Во втором сделай изменения (не принимая изменения с сервера) и попробуй закоммить. Получишь ошибку.
Она у тебя нормально отображается?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от EXL

Может тогда win1252 поставить? Я не знаю что именно сообщение об ошибке генерирует локальный клиент по вернувшемуся коду или сервер отправляет его текст, а клиент отображает то, что пришло.

А про наркоманский интерфейс я скорее о том, что чтобы список коммитов увидеть, нужно лезть в менюшки. Тулкит не так важен

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 2)
Ответ на: комментарий от grem

То есть, отображается ли вообще текст на кириллице в окошках: текст в файлах, имена файлов, текст коммитов?

Да, отображается. Когда все идет хорошо, различный текст с кириллицей виден. Такое впечатление, что криво русифицированы только некоторые окошки, возможно именно окошко которое показывается с ошибкой. Но внешне окошки почти все одинаковые.


Какая кодировка самих файлов?

UTF-8.


Вот как я гарантированно могу увидеть кракозябры. Ничего не делаю в репозитарии. Просто нажимаю «Внешние репозитарии» - «Отправить». Вижу вот это:

http://i.piccy.info/i9/0f0d3dfb3e5c483b03dd31b1fdbe9420/1580679567/17236/1340...

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от grem

Может тогда win1252 поставить?

Ставил я CP-1251 в настройках git gui «Кодировка содержания файла по умолчанию». Другой настройки связанной с кодировкой в интерфейсе нет. Току от этой настройки никакого, вернул на UTF-8.

Я не знаю что именно сообщение об ошибке генерирует локальный клиент по вернувшемуся коду или сервер отправляет его текст, а клиент отображает то, что пришло.

Повтори эксперимент «Внешние репозитарии» - «Отправить» и скажи что у тебя получилось.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Создал локальную репу, склонировал, сделал коммит и попытался отправить из запущенного как LC_MESSAGES=ru_RU.UTF-8 git gui, вывалился текст, действительно кракозябрами о том, что запрещено пушить в мастер. Два сайта по определению кодировки сообщили, что текст отображается в кодировке ISO-8859-1 вместо UTF-8.

У немцев и прочих те же проблемы.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от grem

Нужно зарепортить тогда.

Странно, что я не могу повторить. У меня Git на LC_MESSAGES=ru_RU.UTF-8 git status или LANG=ru_RU.UTF-8 git status не реагирует и отвечает в en_US. Может быть файлов локализаций нет, лень ковыряться.

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

Я сходу багзиллу их не нашёл, только зеркало на гитхабе, но там подозрительно мало багов.

На сам гит гуй они и забить давно могли, но можно действительно попробовать создать баг или найти аналогичный, если есть.

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

это не зеркало:

https://github.com/prati0100/git-gui

The project is currently maintained by Pratyush Yadav over at https://github.com/prati0100/git-gui. Even though the project is hosted at GitHub, the development does not happen over GitHub Issues and Pull Requests. Instead, an email based workflow is used. The Git mailing list git@vger.kernel.org is where the patches are discussed and reviewed.

в issues можно зарепортить, мейнтейнер там отвечает (6 дней назад, например)

https://github.com/prati0100/git-gui/issues/27#issuecomment-579392205

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