一直使用 Subversion 来管理自己和其他人的项目,甚至文档和资料也是通过 Subversion 来管理的。最近大家对 Subversion 抱怨变多,主要是因为慢,特别是 merge 速度很慢,checkout 也很慢,从本地局域网 checkout 有时候不到 20K 每秒,一直想找个机会换掉 Subversion。版本控制软件可选的不多,有名的就这么几个:CVS、Subversion、Arch、Bazaar、BitKeeper、Git。Git 是 Linus Torvalds 开发的一套版本控制系统,其初衷是用来替代 BitKeeper。经过一段时间的沉淀,现在 Git 终于开始步入主流,在开源项目里很受欢迎,Linux Kernel、Perl、Gnome、Ruby on Rails、Android、Fedora、Debian、X.org 等都是用 Git 来做版本控制的,Digg 最近也在考虑从 Subversion 移到 Git。Git 是分布式版本控制,与 Subversion 集中式控制不同,刚开始接触 Git 可能有点不适应,一旦熟悉以后就会发现 Git 特别方便,简单实用,而且速度超快。Trac 和 Subversion 组合起来很强大,通过 Git Plugin for Trac 插件 也可以把 Trac 和 Git 组合起来,而且还不需要额外的类似 Apache + mod_svn 的支持。 安装和使用 Git
安装过程很简单:
# yum install git增加 Git 用户:
$ git config --global user.name "vpsee" $ git config --global user.email "admin@vpsee.com"创建一个项目目录,把所有想被版本控制的文件、目录拷贝进来:
$ mkdir myproject $ cd myproject/
在 myproject 目录里初始化 git,并把想要加入到 git 的内容做标记,最后 commit 到 git:
上面初始化完成后就可以开始修改 myproject 目录里的内容,修改完毕后执行下面命令就提交到 git 仓库中:
$ vi file1 $ git add file1 $ git commit如果 A(192.168.0.2)想在下载 B (192.168.0.1)机器上的 myproject 到本地,则需要在 A 机器上执行:
$ git-clone vpsee@192.168.0.1:~/myprojectB myprojectA如果想 A 修改了 myprojectA 里面的文件以后,B 想合并到自己的 myprojectB,需要在 B 上执行:
$ git pull vpsee@192.168.0.2:~/myprojectA如果 A 和 B 对 myproject 里的不同的文件进行了改动,那么可以轻松完成仓库合并;如果 A 和 B 对相同的文件进行了改动,那么合并时会遇到冲突的问题,此时需要手动修改冲突文件,然后将结果提交到本地仓库后再 push 到另外一台机器(或者从另外一台机器 pull)。
安装 Trac 和 GitPlugin安装 Trac,需要安装 MySQL、Lighttpd 等,具体参考 CentOS 5 上配置 Trac 和 Subversion 一文,忽略 Subversion 和 Apache 部分。
Git Plugin for Trac 有 0.10 和 0.11 两个版本,分别对应不同的 Trac 版本号,下载后安装:
# unzip gitplugin-r6411.zip # cd gitplugin # Python setup.py install如果安装的是 0.10 版本,需要做如下修改,注意下面的 repository_dir 是 myproject/.git 不是 myproject:
# vi trac/conf/trac.ini [trac] repository_dir = /home/myproject/.git repository_type = git [components] gitplugin.* = enabled如果是 0.11,需要做如下修改:
# vi trac/conf/trac.ini [trac] repository_dir = /home/myproject/.git repository_type = git [git] cached_repository = true persistent_cache = true shortrev_len = 6 [components] tracext.git.* = enabled