CentOS 5 上配置 Trac 和 Git

git

VPSee 一直使用 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:

$ git init
$ git add .
$ git commit

上面初始化完成后就可以开始修改 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 

打开浏览器 http://yourdomainname.com/trac/browser 就可以浏览 source code 了。

评论 (8 Comments)

  1. VPSee, svn我觉得性能可以啊。你提到的慢,不知在svn中管理的项目有多少,每个项目的结构是怎样的?

  2. SVN主要慢在通过网络访问时。我一般用mercurial,即使中心代码库是SVN的,我也用mercurial镜像到本地。因为我审查代码的工作比编码的多,经常要对比各个修订版本。

  3. 用 git 主要还是受 github 影响,因为我们很多人都有 github 帐号,都熟悉 git,一些代码也要传到 github,所以 git 方便一些。

  4. 什么时候利用这个做vpsee的admin panel啊?

  5. 我想问一下、你上面提到了可以用插件实现trac+git的多项目代码管理、那个插件是??没找到呀、如果你及时看到了该评论、请发邮件songyun1990@163.com,O(∩_∩)O谢谢

  6. 请问怎么实现trac+git的多项目代码管理?用上面插件?O(∩_∩)O谢谢、、songyun1990@163.com

  7. 如果 A 和 B 对 myproject 里的不同的文件进行了改动,那么可以轻松完成仓库合并;如果 A 和 B 对相同的文件进行了改动,那么合并时会遇到冲突的问题,此时需要手动修改冲突文件,然后将结果提交到本地仓库后再 push 到另外一台机器(或者从另外一台机器 pull)。

  8. 本地局域网 checkout 有时候不到 20K 每秒,一直想找个机会换掉 Subversion。版本控制软件可选的不多,有名的就这么几个:CVS、Subversion、Arch、Bazaar、BitKeeper、Git。Git 是 Linus Torvalds 开发的一套版本控制系统,其初衷是用来替代 BitKeeper。经过一段时间的沉淀,现在 Git 终于开始步入主流,在开源项目里很受欢

发表评论