背景:目前的项目使用的版本控制是SVN。只建立了一个svn库并使用bdb模式。项目开始了3个月,svn的版本号就突破了7000,svn库在服务器端有9GB。而在windows下用TortoiseSVN检出所有的东西,总共近50GB大小(.svn目录貌似保留了所有的历史),居然需要3个小时以上!实在忍不了了,准备换分布式VC。目前暂时选择Mercurial。
首先需要把svn转换为Mercurial,同时还要把svn库分离一下,系统是ubuntu-10.04 server amd64:
#apt-get install mercurial meld python-subversion #svnadmin dump ./repos/ > svn.dump#wget http://bakacsin.ki.iif.hu/~kissg/project/svn/svngrep
#./svngrep '^dev\/core\b' svn.dump > core.dump
svngrep有重大问题,导致其导出的不全,改用svndumpfilter#cat svn.dump | svndumpfilter include dev/core --drop-empty-revs --renumber-revs > core.dump #svnadmin create core/ #sed -r -e 's/^Node-path: dev\//^Node-path: /' core.dump > core.dump.new #svnadmin load core < core.dump.new # cat /root/.hgrc [extensions] hgext.convert = #hg convert file:///data/test/core/ #mkdir -p /var/mercurial/ #mv /data/test/core-hg /var/mercurial/ #chown -R www-data:www-data /var/mercurial/ #chmod -R 700 /var/mercurial/
然后建立Mercurial:
# mkdir /var/www/cgi-bin/ # cp /usr/share/doc/mercurial/examples/hgweb.wsgi /var/www/cgi-bin/ # cat /var/www/cgi-bin/hgweb.config [web] style = coal allow_push = * push_ssl = false [paths] / = /data/mercurial/** #chmod +x /var/www/cgi-bin/hgwebdir.wsgi修改 /var/www/cgi-bin/hgwebdir.wsgi 文件,最后一行的“application = hgwebdir(‘hgweb.config’)“修改为:
application = hgwebdir('/var/www/cgi-bin/hgweb.config')配置apache2,使之运行wsgi模式的Mercurial:
#apt-get install libapache2-mod-wsgi在需要加入的VirtualHost里加入:
WSGIScriptAliasMatch ^(.*)$ /var/www/cgi-bin/hgwebdir.wsgi$1 <Directory "/data/mercurial/"> Options FollowSymlinks DirectoryIndex index.html AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Directory> <Directory "/var/www/cgi-bin"> Options ExecCGI FollowSymlinks AddHandler wsgi-script .wsgi AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Directory>重启apache2,然后就开始使用吧。
[…] 从走在前面的3D引擎的开发状况看,需要有一个良好的bug管理系统来管理bug、记录需求等,于是决定用一个项目管理工具来实施,直接上Trac,并且要做到和我们的开发的版本管理工具Mercurial完全集成,Mercurial的安装见链接。 […]