最近一直在架设内网的GitLab,和成套的适用工具.(之前架GitLab的总结)对于ubuntu平台下使用的GUI,一直没有找到什么特别满意的(某个乌贼强制要求登录帐号,SourceTree是Mac上的东西…),之后决定采用 GitExtensions 作为 Windows/Ubuntu 平台下统一的 Git GUI(利用mono来在*nix下跑).
在初步尝试后发现是可行的,不过对于中文的支持并不是太好,之后查阅了许多资料,解决了这个问题.主要有以下几个需要注意的地方:
1.Mono本身的中文支持.环境变量LANG决定着Mono将外部读入的文件视为什么编码,如果没有设置妥当,GitExtensions的多语言支持无法正常工作.需要更改gitext.sh为:
Shell
#!/bin/bash
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
export LANG
export LANGUAGE
mono GitExtensions.exe "\$@" &
1
2
3
4
5
6
#!/bin/bash
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
exportLANG
exportLANGUAGE
monoGitExtensions.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的环境,我是写了一个配置脚本…也在这里分享一下喽(轻喷)
Shell
#! /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文件
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"|sudotee/etc/apt/sources.list.d/mono-official.list
echo"deb http://data.SourceManage.moe/git trusty main"|sudotee/etc/apt/sources.list.d/git-core-ppa-trusty.list
echo"deb http://data.SourceManage.moe/ubuntu2 trusty main restricted universe multiverse"|sudotee/etc/apt/sources.list.d/Infko-local.list
sudorm-r/var/lib/apt/lists/*
sudoapt-getupdate
#本地源的配置
sudoapt-get--force-yesinstallmono-complete
sudoapt-get--force-yesinstallgit
sudoapt-get--force-yesinstallkdiff3
#安装必要的依赖
unzipGitExtensions-2.50.00-Mono.zip
#解压 GitExtensions
sudomkdir/usr/share/fonts/YaHei
sudocpYaHeiMono.ttf/usr/share/fonts/YaHei/YaHeiMono.ttf
CURRENT_PATH=$(pwd);
cd/usr/share/fonts/YaHei
sudomkfontscale
sudomkfontdir
sudofc-cache-fv
cd${CURRENT_PATH}
#安装字体
cdGitExtensions
sudochmoda+xgitext.sh
CURRENT_PATH=$(pwd);
cat<tmp.txt
[DesktopEntry]
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
sudocptmp.txt/usr/share/applications/GitExtensions.desktop
sudochmod477/usr/share/applications/GitExtensions.desktop
rmtmp.txt
#创建快速启动
sudormgitext.sh
cat<gitext.sh
#!/bin/bash
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
exportLANG
exportLANGUAGE
monoGitExtensions.exe"\$@"&
EOF
sudochmoda+xgitext.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