git-gui命令在macOS Sierra上崩溃
更新到macOS Sierra之后, git-gui
命令崩溃,并显示错误消息:
希望[23862:202062] ***终止应用程序由于未捕获的exception“CALayerInvalidGeometry”,原因:“CALayer位置包含NaN:[0南]' ***第一个投掷堆栈: ( 0 CoreFoundation 0x00007fff8cd9252b __exceptionPreprocess + 171 1 libobjc.A.dylib 0x00007fffa146acad objc_exception_throw + 48 2 CoreFoundation 0x00007fff8ce10a0d + [NSException raise:format:] + 205 3 QuartzCore 0x00007fff92938980 _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb + 152 4 QuartzCore 0x00007fff92938af5 - [CALayer setPosition:] + 44 5 QuartzCore 0x00007fff9293914b - [CALayer setFrame:] + 644 6 CoreUI 0x00007fff986e2112 _ZN20CUICoreThemeRenderer26MakeOrUpdateScrollBarLayerEPK13CUIDescriptoraPP7CALayer + 1284 7 CoreUI 0x00007fff986de317 _ZN20CUICoreThemeRenderer19CreateOrUpdateLayerEPK13CUIDescriptorPP7CALayer + 1755 8 CoreUI 0x00007fff986604d1 _ZN11CUIRenderer19CreateOrUpdateLayerEPK14__CFDictionaryPP7CALayer + 175 9 CoreUI 0x00007fff98663185 CUICreateOrUpdateLayer + 221 10 AppKit 0x00007fff8b3c7623 - [NSCompositeAppearance _callCoreUIWithBlock:options:] + 226 11 AppKit 0x00007fff8aa74a9d - [NSAppearance _createOrUpdateLayer:options:] + 76 12 AppKit 0x00007fff8aced143 - [NSScrollerImp _animateToRolloverState] + 274 13 AppKit 0x00007fff8acacb79 __49- [NSScrollerImp _installDelayedRolloverAnimation] _block_invoke + 673 14 AppKit 0x00007fff8ab73331 - [NSScrollerImp _doWork:] + 15 15基金会0x00007fff8e770c88 __NSFireDelayedPerform + 417 16 CoreFoundation 0x00007fff8cd11e14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20 17 CoreFoundation 0x00007fff8cd11a9f __CFRunLoopDoTimer + 1071 18 CoreFoundation 0x00007fff8cd115fa __CFRunLoopDoTimers + 298 19 CoreFoundation 0x00007fff8cd09021 __CFRunLoopRun + 2065 20 CoreFoundation 0x00007fff8cd085b4 CFRunLoopRunSpecific + 420 21 Tcl 0x0000000101834b43 Tcl_WaitForEvent + 314 22 Tcl 0x00000001018045cd Tcl_DoOneEvent + 274 23 Tk 0x0000000101672f4f Tk_MainLoop + 33 24 Tk 0x000000010167ea5b Tk_MainEx + 1566 25希望0x0000000101658542希望+ 9538 26 libdyld.dylib 0x00007fffa1d48255 start + 1 ) libc ++ abi.dylib:以NSExceptiontypes的未捕获exception终止 错误:git-gui死于信号6
有没有人有这个相同的问题和解决scheme?
不要使用默认的MacOS tcl-tk
,而应使用Homebrew中最新的tcl-tk(8.6.6),然后强制链接它,例如:
brew install tcl-tk brew link tcl-tk --force
MacOS Sierra上的Tk 8.5有一个问题。 你可以用Tk Wish 8.4replaceTk Wish 8.5
cp / System / Library / Frameworks / TK.framework / Versions / 8.4 / Resources / Gui.app/Contents/MacOS/
来源: https : //github.com/git/git-scm.com/issues/853
UPD:注意用当前版本replacecp
path中的git版本
试试: git config --local --unset gui.geometry
由于Tk几何pipe理器不起作用,由于较旧的版本或如果它已损坏发生此错误。
如果上述命令不起作用,请尝试更新xcode: xcode-select --install
我的解决scheme,应该从https://git-scm.com/下载git
brew install homebrew/dupes/tcl-tk
cd到/usr/local/git/share/git-gui/lib/Git Gui.app/Contents/MacOS
备份原始的Wish
cp /usr/local/Cellar/tcl-tk/8.6.6/bin/wish8.6 /usr/local/git/share/git-gui/lib/Git Gui.app/Contents/MacOS/Wish
升级到macOS 10.12.2修复了这个问题。
参考文献:
无法从Apple更改日志中了解原因: https : //support.apple.com/zh-CN/HT207307 。
我从这里汇集了一堆答案,因为我通过brew
使用GIT 和 TCL:
-
cd "/usr/local/Cellar/git/2.10.2/share/git-gui/lib/Git Gui.app/Contents/MacOS"
-
mv Wish Wish.bkp
-
ln -vs /usr/local/Cellar/tcl-tk/8.6.6/bin/wish8.6 Wish
随着时间的推移,版本号可能会有所不同
我认为以下目标是构成问题的完整解决scheme:
-
“摆脱轨道”的确定性,以一种整齐线性的方式解决这个问题
-
不要结束从传统的苹果Tcl / Tk丑陋的字体
-
从Apple发货的Tcl / Tk中解耦你的git gui
- 依靠你的Tcl / Tk安装的自制软件
下面你会发现一个一步一步的实现:
-
从Homebrew获取重复的Tcl / Tk
brew install tcl-tk
-
在破碎的Apple实施之前,将未破坏的Tcl / Tk安装添加到path中
- 这假设您的自制path优先于您的系统path
- 这应该是在正常的家酿安装的情况下
- 如果您的其他已安装的自制软件配方存在冲突的文件,这将失败
- 例如
the_platinum_searcher
提供了pt
,这与冲突有关 -
我build议ripgrep绕过这个案子
brew link --force tcl-tk
-
通过重新安装非破坏性的Homebrew版本来修复你的gitk安装
-
这可能没有必要,但是参考文献。 上面第一个规定的目标
brew reinstall git
-
-
将您的Homebrew Tcl / Tk安装中的新愿望二进制文件复制到Git Gui.app软件包
-
这一味地依赖于
homebrew info <package>
的输出不能改变cp "$(which wish)" "$(brew info git | grep Cellar | cut -d' ' -f1)/share/git-gui/lib/Git Gui.app/Contents/MacOS/Wish"
-
最后一点可能是聪明的,把你的~/.bashrc
和/或等价物放进一个别名,因为每当你从Homebrew得到一个新的git版本时,它都必须重复。
alias fix-gitgui='cp "$(which wish)" "$(brew info git | grep Cellar | cut -d" " -f1)/share/git-gui/lib/Git Gui.app/Contents/MacOS/Wish"'
我不完全确定为什么上面使用的剪切的字段分隔符的引用是这样的,所以谨慎使用这个别名,因为这可能非常依赖于确切的bash版本。
它适用于我:下载并安装最新版本的TCL(我使用8.6.4) http://www.activestate.com/activetcl/downloads
我也下载并安装了git的最新版本(2.10.1) https://git-scm.com/
检查gitk窗口在resize后不会崩溃。
@ sbondaryev的回答(39966704)对我不起作用,我还没有尝试@ ssahu's(40119030)。 然而我在这里描述的这个诀窍对于我来说要less得多(10%的时间)。 而且这让我摆脱不了太多的东西 – 希望问题能很快得到妥善解决。
- 调整窗口大小(90%的时间)似乎发生崩溃。 但是我发现它太小而不能工作,并想调整它的大小。
-
vi .git/config
- 编辑
GUI geography
来创build一个可用的窗口大小。 我仍然保持小,虽然我怀疑会有一个大小的崩溃总是会发生
我的Sierra(从10.11.6升级)的Tcl / Tk Current指向8.5,我在升级后观察到同样的错误,我们的Python程序使用了Tkinter。 我没有使用愿望。 我没有从Python 2.7 32位安装连接到Tcl / Tk 8.4的帮助,因为那个没有“瓦”。 所以我酝酿了我的Python,将它与Tcl / Tk 8.6:
这是酿造使用预编译的瓶子,而不是从源头build设,除非另有特别指示,所以不是真的造成这个问题:
xcode-select --install
然后安装Tcl / Tk:
brew install homebrew/dupes/tcl-tk
如果你最初没有用–with-tcl-tk来安装Python,那么:
brew uninstall python
最后:
brew install python --with-tcl-tk
在此之后,我有Python链接到Tcl / Tk 8.6,看起来像我摆脱了错误。
经过很多的努力,这个解决scheme解决了我的问题:
$ brew upgrade tcl-tk
如果它是最新的,这不起作用,请尝试:
$ brew uninstall tcl-tk $ brew install tcl-tk
我已经尝试了networking中的每个解决scheme,但只有这样才能解决问题。 干杯!
这已经在macOS Sierra(10.12.2及以上)的最新补丁上得到了解决,不需要采取进一步的行动。
在高山脉(10.13),我和git gui有同样的问题。
我已经通过从2.7.0更新到2.14.2解决了这个问题
brew upgrade git