Не удается запустить GIT GUI с помощью Cygwin на Windows - PullRequest
66 голосов
/ 22 февраля 2012

Раньше я без проблем запускал git gui в консоли cygwin, но после обновления cygwin у меня появилось следующее сообщение об ошибке:

$ git gui
Application initialization failed: no display name and no $DISPLAY environment variable
Error in startup script: invalid command name "tk_messageBox"
    while executing
"tk_messageBox  -icon error  -type ok  -title "git-gui: fatal error"  -message $err"
    invoked from within
"if {[catch {package require Tcl 8.4} err]
 || [catch {package require Tk  8.4} err]
} {
        catch {wm withdraw .}
        tk_messageBox \
                -icon error \
                -typ..."
    (file "/usr/lib/git-core/git-gui" line 34)

Кто-нибудь, кто знает, как решить эту проблему?

Ответы [ 7 ]

122 голосов
/ 23 февраля 2012

Редактировать : обновлено в марте 2016 года для учета переименованных пакетов и т. Д.

Для Cygwin's gitk и git gui требуется X11. Это означает, что вам нужно установить некоторые пакеты Cygwin X11 и настроить их так, чтобы можно было открывать графический интерфейс.

Это должно заставить вас работать:

  1. Запустите программу установки Cygwin еще раз (при необходимости загрузите соответствующую настройку - *. Exe ).
  2. В списке пакетов выберите «xinit» для установки в категорию X11. Нажмите кнопку Далее, примите все зависимости и установите.
  3. В меню «Пуск» Windows должна появиться новая группа: Cygwin-X. Оттуда запустите XWin Server.
  4. В вашей оболочке Cygwin запустите export DISPLAY=:0.0.

Вам нужно будет повторять шаг 3 при каждой перезагрузке компьютера, а шаг 4 - каждый раз, когда вы открываете новую оболочку Cygwin (или просто запускаете echo "export DISPLAY=:0.0" >>~/.profile, чтобы она запускалась автоматически при создании новой оболочки).

В комментариях кажется, что некоторые люди получают ошибки, утверждающие, что «не удалось подключиться к дисплею»: 0.0 ». Если вы получили это, наведите курсор мыши на X, который должен был появиться в вашем системном трее (вам может потребоваться нажать на маленький значок вверх, если значок X был скрыт); заголовок всплывающего окна должен выглядеть примерно так: «Cygwin / X Server: 1.0». Используйте это «: 1.0» (или что вы видите) в качестве значения для DISPLAY на шаге 4, а не «: 0.0», обязательно указав двоеточие.

Если у вас есть другие проблемы с запуском X-сервера, вы, вероятно, обнаружите, что у вас есть файл с именем ~/.xsession-errors; проверьте содержание этого для того, что идет не так, как надо. Также проверьте, есть ли у вас файл ~/.startxwinrc, и попробуйте удалить его и посмотреть, решит ли это проблему.

Для интересующихся причина, по которой пакеты X11 не устанавливаются автоматически, заключается в том, что они не являются технически необходимыми : возможно с помощью некоторых запутанных способов использовать сервер X11, отличный от того, который устанавливает Cygwin, когда Вы устанавливаете пакет "xinit".

9 голосов
/ 12 февраля 2015

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

Самым большим предупреждением является необходимость установки Git для Windows, загрузка дляэто можно найти здесь .

Теперь для всей работающей части gitk.Git для windows включает в себя папку cmd, в которой есть gitk.cmd файл команд windows.Это все, что вам нужно для вызова gitk.

$ [path-to-git]/cmd/gitk.cmd

В моей системе путь к Git находится в «C: \ Program Files (x86) \ Git», поэтому команда будет выглядеть так:

$ "/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"

В моем ~ /.bash_profile Я добавил функцию для обработки этого вызова, которая выглядит следующим образом:

gitk() {
  "/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"
}

Надеюсь, это поможет кому-то другому попытаться разобраться в этом.

6 голосов
/ 10 февраля 2015

Избегайте X11 и добавьте поддержку git gui в cygwin

Если вы хотите избежать X11 (а кто нет?):

  1. УстановитьGit для Windows (не Cygwin) http://git -scm.com / download / win
  2. Откройте командную оболочку C:\Program Files (x86)\Git\Git Bash
  3. Запустите git gui

(необязательно) Если вы хотите остаться в Cygwin для запуска git gui, добавьте функцию в ~/.bashrc, чтобы сделать это.Единственное предостережение: не называть функцию git из-за рекурсии и путаницы с аргументами, и тот факт, что вы используете оболочку Git для Windows, также может добавлять ту же функцию при запуске.Вы также можете столкнуться с проблемами путей, поэтому будьте осторожны с правильной настройкой путей.

# call git gui from Git For Windows path with `ggui`
    gg() { 
    command "/cygdrive/c/Program Files (x86)/Git/bin/git" gui  2>/dev/null;


    }

Когда вы закончите редактирование .bashrc, обновите настройки:

source ~./bashrc

итогда просто:

gg
6 голосов
/ 14 июня 2012
echo "export DISPLAY=:0.0" >>~/.profile

или

echo "export DISPLAY=:0.0" >>~/.bash_profile

в моем случае

2 голосов
/ 22 сентября 2015

Вот что у меня сработало:

cat >> ~/.bash_profile <<< "export DISPLAY=:0.0"

Из диспетчера пакетов cygwin сделайте следующее:

install xorg-server и некоторые шрифты xorg, xorg-x11-fonts-Type1 особенно

Затем создайте ссылку на папки шрифтов Windows, чтобы git gui использовал

ln -s /cygdrive/c/Windows/Fonts /usr/share/fonts/win-fonts

Закройте терминал Cygwin и снова откройте его, затем введите

startxwin &> /dev/null &

git gui &

2 голосов
/ 31 марта 2015

После выполнения 4-х шагов, указанных me_and и tititou36, у вас могут остаться проблемы с XWin, которые просто умирают после запуска XwinServer.

Причина в том, что он опирается на терминал / консоль CygWin, которыйхост и Xwin умирают, если нет консоли CygWin.

Решение для этого:

Запустите консоль Cygwin.(вы можете запустить его автоматически, поместив команду mintty в файл .startxwinrc в вашем домашнем каталоге cygwin.

0 голосов
/ 08 февраля 2016

На основании ответа AndrewD: используйте cygwin git, но используйте Windows Git gitk и git gui. Другими словами, удалите пакеты git-gui и gitk из cygwin (если установлены). Тогда which gitk должен указывать на файл Windows, а не на бинарный файл cygwin в /usr/bin.

...