最近一直在架设内网的GitLab,和成套的适用工具.(之前架GitLab的总结)对于ubuntu平台下使用的GUI,一直没有找到什么特别满意的(某个乌贼强制要求登录帐号,SourceTree是Mac上的东西…),之后决定采用 GitExtensions 作为 Windows/Ubuntu 平台下统一的 Git GUI(利用mono来在*nix下跑).
在初步尝试后发现是可行的,不过对于中文的支持并不是太好,之后查阅了许多资料,解决了这个问题.主要有以下几个需要注意的地方:
1.Mono本身的中文支持.环境变量LANG决定着Mono将外部读入的文件视为什么编码,如果没有设置妥当,GitExtensions的多语言支持无法正常工作.需要更改gitext.sh为:
1 2 3 4 5 6 |
#!/bin/bash LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh export LANG export LANGUAGE mono GitExtensions.exe "\$@" & |
2.字体的中文支持.在设置好环境变量之后,虽然提交信息,界面等位置的中文都可以正常显示了,不过在Diff结果,文件预览界面依然是乱码.
这里的原因是下面的文本显示界面,需要一个等宽字体来显示,而Ubuntu自带的中文显示字体,是不等宽的.
于是需要手动安装一个等宽的字体,来供代码显示使用.这里个人当时选择的是Microsoft YaHei Mono 字体,可供参考.
对于中文显示主要是上面两个坑,不过在配置过程中,也遇到了许多其他的问题,也在此记录一下:
1.配置好本地源后,最好 rm -r /var/lib/apt/lists/* 以避免受到之前的list缓存影响.
2.mono-complete 同时也依赖于 ubuntu main 里面的包,所以要镜像个ubuntu的源才能完全本地化
3.GitExtensions 所推荐的diff工具 kdiff3 在 universe 包里面
4.加 Desktop Entry 别忘了设置Path(工作目录)
5.ubuntu 源里面的mono,git版本都太低,需要用 ppa 和 mono-offical 的源
已知的问题:
(*有时间的话在源码里找找原因吧…x)
为了自动配置GitExtensions的环境,我是写了一个配置脚本…也在这里分享一下喽(轻喷)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#! /bin/sh echo "deb http://data.SourceManage.moe/mono trusty main" | sudo tee /etc/apt/sources.list.d/mono-official.list echo "deb http://data.SourceManage.moe/git trusty main" | sudo tee /etc/apt/sources.list.d/git-core-ppa-trusty.list echo "deb http://data.SourceManage.moe/ubuntu2 trusty main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/Infko-local.list sudo rm -r /var/lib/apt/lists/* sudo apt-get update #本地源的配置 sudo apt-get --force-yes install mono-complete sudo apt-get --force-yes install git sudo apt-get --force-yes install kdiff3 #安装必要的依赖 unzip GitExtensions-2.50.00-Mono.zip #解压 GitExtensions sudo mkdir /usr/share/fonts/YaHei sudo cp YaHeiMono.ttf /usr/share/fonts/YaHei/YaHeiMono.ttf CURRENT_PATH=$(pwd); cd /usr/share/fonts/YaHei sudo mkfontscale sudo mkfontdir sudo fc-cache -fv cd ${CURRENT_PATH} #安装字体 cd GitExtensions sudo chmod a+x gitext.sh CURRENT_PATH=$(pwd); cat << EOF > tmp.txt [Desktop Entry] Version=1.0 Name=GitExtensions Exec=${CURRENT_PATH}/gitext.sh Path=${CURRENT_PATH} Terminal=false Icon=${CURRENT_PATH}/git-extensions-logo-final-256.ico Type=Application Categories=Development EOF sudo cp tmp.txt /usr/share/applications/GitExtensions.desktop sudo chmod 477 /usr/share/applications/GitExtensions.desktop rm tmp.txt #创建快速启动 sudo rm gitext.sh cat << EOF > gitext.sh #!/bin/bash LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh export LANG export LANGUAGE mono GitExtensions.exe "\$@" & EOF sudo chmod a+x gitext.sh #设置启动时的环境变量 cp ./../GitExtensions.exe.config ./GitExtensions.exe.config #将IsPortable设为True,使GitExtensions读取程序目录下的settings文件 cp ./../GitExtensions.settings ./GitExtensions.settings #已经设置好使用的自己为Microsoft YaHei的settings文件 |
(*这里不知道为什么…apt-get的force-yes好像没用…?)
PS:f7(eiki)喜欢!!!!
PS2:最后是因为想到”如果是编码问题,一个中文字应该对应两个方框的”,才把注意力转移到字体的….
PS3:单纯经验的积累….
PS4:之后迁移到腾讯云还是sakura呢…感觉自己的网站被墙的挺严重的T T