上午接到一个小任务,老师让给点云小组在Trac上添加一个SVN仓库和项目管理平台。虽然我们组在Trac上已经工作了一年多了,但是之前的配置工作都是由唐大牛来做的,我只是做做版本控制。现在大牛毕业了,实验室另一位新生代大牛又不愿意管,老师找到了我,于是我决定试试。
用ssh登录到服务器上(操作系统为Ubuntu Server),然后用locate找到了其他项目组的SVN仓库的存放目录: /var/lib/svn/xxx,于是我就先创建一个新的空的SVN仓库:
$ sudo svnadmin create /var/lib/svn/pointset
然后再用locate找到了每个小组的Trac文件存放目录: /var/trac/xxx,于是为pointset创建Trac环境:
$ sudo trac-admin /var/trac/pointset initenv
程序会问你项目名称是什么(pointset),想把文件存放到哪里(/var/trac/pointset),所用的数据库是什么(SQLite),项目所用的版本控制软件是什么(SVN),以及模板文件所在的路径(默认)。填完之后,程序输出一条 “Congratulations!"
没想到这么快就搞定了,于是赶紧把Gauss给我的pointset现有代码拷贝到本地,然后在这个目录下建立一个指向服务器SVN版本库的本地SVN仓库:
$ cd ~/workspace/pointset
$ svn checkout http://dev.cgcad.com/svn/pointset
接下来把现有的代码加入本地仓库,再提交到服务器:
$ svn add *
$ svn commit -m "Init commit by copying files from Gauss."
碰到了一个问题,服务器说没有权限往svn/目录下拷贝东西,原来我忘记把相应的目录权限设置成apache能读写了,于是登录服务器,补上这一步,顺便把Trac的也补上:
$ sudo chown -R www-data:www-data /var/lib/svn/pointset/
$ sudo chown -R www-data:www-data /var/trac/pointset
现在svn commit终于成功了。
接下来是一些扫尾的工作,根据实验室要求,一个小组的成员不能看到其他组的代码,也不能访问其他组的trac(除非他同时参加了多个项目),所以要设置一下相应的权限。先在服务器上建立相应的pointset组:
$ sudo addgroup pointset
然后编辑/etc/group文件,在包含pointset那一行添加该组的成员名单:
pointset:x:1011:tom,jack,lucy
接下来在apache的配置文件中加入相应的权限控制。编辑/etc/apache2/conf.d/trac.conf,添加如下几行:
Require group pointset
类似地,在/etc/apache2/mods-enabled/dav_svn.conf中添加:
Require group pointset
搞定!现在http://dev.cgcad.com/svn/pointset和http://dev.cgcad.com/trac/pointset就只有该组的成员可以访问了。
由于服务器上的SVN+Trac环境已经搭好了,所以上面没有提到一开始的安装和配置等问题。这里和这里分别有Linux下和Windows下搭建svn+Trac的方法,感兴趣的朋友可以去看看。