git extensions linux,GitExtensions 在 Ubuntu 下的配置

最近一直在架设内网的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结果,文件预览界面依然是乱码.

285aeb9c3a87c1f6be1a16f1516a2f9f.gif

这里的原因是下面的文本显示界面,需要一个等宽字体来显示,而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 的源

已知的问题:

285aeb9c3a87c1f6be1a16f1516a2f9f.gif

(*有时间的话在源码里找找原因吧…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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值