22.3 Topgit的安装

Topgit用shell脚本语言开发,可以安装在所有的类Unix环境中,例如Linux、Mac OS X,以及Windows下的Cygwin。下面的官方网站链接介绍了Topgit的安装和使用方法:http://repo.or.cz/w/topgit.git?a=blob;f=README。

1.Linux下安装Topgit

安装官方的Topgit版本,直接克隆官方的版本库,执行make即可:


$git clone git://repo.or.cz/topgit.git

$cd topgit

$make

$make install


默认会把Topgit的可执行文件tg安装在$HOME/bin(用户主目录下的bin目录)下,如果没有将~/bin加入环境变量$PATH中,就可能无法执行tg命令。

如果具有root权限,可以在编译和安装时向make命令传递prefix变量,将Topgit安装在系统目录中。


$make prefix=/usr

$sudo make prefix=/usr install


我对Topgit做了一些增强和改进[1],在后面的章节将予以介绍。如果想安装改进后的版本,需要预先安装Quilt补丁管理工具,然后进行如下操作。


$git clone git://github.com/ossxp-com/topgit.git

$cd topgit

$QUILT_PATCHES=debian/patches quilt push-a

$make prefix=/usr

$sudo make prefix=/usr install


如果用的是Ubuntu或Debian Linux操作系统,还可以这么安装。

(1)先安装Debian/Ubuntu打包依赖的相关工具软件。


$sudo aptitude install quilt debhelper\

build-essential fakeroot dpkg-dev


(2)再调用dpkg-buildpackage命令,编译出DEB包,再安装。


$git clone git://github.com/ossxp-com/topgit.git

$cd topgit

$dpkg-buildpackage-b-rfakeroot

$sudo dpkg-i../topgit_*.deb


(3)安装完毕后,重新加载命令行补齐,可以更方便地使用tg命令。


$./etc/bash_completion


2.Mac OS X下安装Topgit

在Mac OS X下安装官方版本的Topgit,在使用中会遇到各种各样的问题。这是因为Mac OS X下部分shell命令的行为和相应的GNU命令的行为不一致,例如echo、paste和sed命令等。

在Mac OS X下可以使用Homebrew安装所需的GNU工具。如下:


$brew install gnu-sed

$brew install quilt


然后别忘了安装改造后的Topgit。


$git clone git://github.com/ossxp-com/topgit.git

$cd topgit

$QUILT_PATCHES=debian/patches quilt push-a

$make prefix=/usr

$sudo make prefix=/usr install


3.Windows下安装Topgit

Windows下的msysGit因为缺乏Topgit依赖的命令行工具(如fgrep、install、make、mkfifo、mktemp、tsort等),安装和运行Topgit会遇到困难。从安装好的MSYS[2]或MSYS-CN[3]中提取所需要的软件到msysGit环境中,可以实现Topgit在msysGit中的安装和运行。

Windows下的Cygwin拥有一个完整的POSIX环境,当安装了所需的工具(make、quilt[4]等)后,就可以正常地编译和使用Topgit。

注意如果克隆Topgit版本库后工作区文件的换行符是DOS格式换行符(CRLF),在安装过程中会遇到麻烦。克隆改进的Topgit则不会出现类似问题,这是因为在工作区根目录下存在一个.gitattributes[5]文件,可以保证检出的工作区文件采用Unix格式的换行符(LF)。

在Cygwin下安装改进后的Topgit使用如下方法:


$git clone git://github.com/ossxp-com/topgit.git

$cd topgit

$QUILT_PATCHES=debian/patches quilt push-a

$make prefix=/usr

$make prefix=/usr install


[1]我对Topgit的改进采用了Topgit的开发模式,如果大家发现我的改动没有及时地跟上上游代码,用户可以自行使用Topgit将改动迁移到最新的上游版本。还要提醒的是,不要把我的错误算到上游开发者头上。

[2]http://www.mingw.org/wiki/msys

[3]http://code.google.com/p/msys-cn/

[4]如果要安装改进后的Topgit。

[5]参见第8篇第40章“40.3 换行符问题”。