bar_1

contents_map

2017年7月6日木曜日

Mac環境でGit GUI経由でgitkを使ったときに発生するエラー: unknown color name "lime"の解決

SourceTreeの品質がおかしくなって以降、GitのGUIツールの代替えアプリをいくつか試してきた. Github Desktop, SmartGitやGitKrakenなどを使ってみた後, GitKrakenに落ち着いたが, 最近処理が重くなってきたのと, ライセンス関連がうざくなってきたので, 代替えの調査を兼ねて, git (Xcode Command Line Toolsではなく, brewでインストールした方) が標準で用意しているGUIを試してみた.

git guiコマンドでGit Gui.app経由でgitkを起動したとき, Mac OS X El Capitan (10.11.6)環境ではエラーが発生しうまく動かない現象があったが, 解決した. /usr/local/bin/gitkのコードは, いじらなくていい.

(以下の記事は, brewとbrew caskの環境が整っていることを前提としている)


現象


  • brewでインストールしたgitを使っているが, GUIを使おうとするとエラー(unknown color "lime"といったエラー・メッセージ)が出る
  • コマンドラインからgitk単体で起動すると、エラーは起きない.
  • コマンドラインから`git gui`経由でgitkを起動する(ファイル>全てのブランチの履歴を見る)と、エラー(unknown color name "lime").


解析


  • `gitk` と `Git Gui.app` 両者のTcl/Tk環境に齟齬がある?
  • gitkのバックアップを取り, 冒頭に`puts "DEBUG: ver. [info patchlevel] $tcl_version/$tk_version"`を組み込んだgitkを作り, 起動されたときのwishのバージョンを確認してみる.
  • gitkで起動したときはbrewでインストールしたtcl(wish) 8.6が使用され, `git gui` (Git Gui.app) からgitkを起動したときはMac OS Xのシステム標準として用意されているtcl(wish)8.5が使われていることが判明した.


$ gitk
DEBUG: ver. 8.6.4 8.6/8.6

$ git gui
DEBUG: ver. 8.5.9 8.5/8.5
Error in startup script: unknown color name "lime"
    (processing "-fore" option)
    invoked from within
"$ctext tag conf m2 -fore [lindex $mergecolors 2]"
    (procedure "makewindow" line 347)
    invoked from within
"makewindow"
    (file "/usr/local/bin/gitk" line 12552)
    invoked from within
"source $AppMain_source"
    (file "/usr/local/Cellar/git/2.13.2/share/git-gui/lib/Git Gui.app/Contents/Resources/Scripts/AppMain.tcl" line 29)

解決策

ActiveTclの再インストール(念のため)と, gitのソースコードからの再ビルドを行う.

$ brew cask uninstall tcl
$ brew uninstall --force git

$ brew cask install tcl
$ brew install --build-from-source git


0 件のコメント:

コメントを投稿

何かありましたら、どうぞ: