Perforce+Trac 0.11安装笔记(附一些问题解决方法如中文乱码问题)
网上有很多svn+Trac的安装配置文档,但是有人给做了Trac的后端版本控制扩展,是Trac的应用不再限于svn版本库,在这儿就尝试着给Trac安装一个Perforce后端版本库一下。
Trac是使用Python编写的,因此首先要个机器安装Python环境
安装Python
-
wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
-
tar -xzvf Python-2.5.2.tgz
-
cd Python-2.5.2
-
./configure
-
make
-
make install
为Python安装easyinstall
-
wget http://peak.telecommunity.com/dist/ez_setup.py
-
python ez_setup.py
安装PyProtocol
-
wget http://peak.telecommunity.com/dist/PyProtocols-0.9.3.tar.gz
-
tar -xzvf PyProtocols-0.9.3.tar.gz
-
cd PyProtocols-0.9.3
-
python setup.py install
安装SQLite3
-
wget http://www.sqlite.org/sqlite-amalgamation-3.6.2.tar.gz
-
tar -xzvf sqlite-amalgamation-3.6.2.tar.gz
-
cd sqlite-3.6.2/
-
./configure
-
make
-
make install
安装 PySqlite
-
wget http://oss.itsystementwicklung.de/download/pysqlite/2.5/2.5.0/pysqlite-2.5.0.tar.gz
-
tar -xzvf pysqlite-2.5.0.tar.gz
-
cd pysqlite-2.5.0
-
python setup.py install
安装Trac
-
wget http://ftp.edgewall.com/pub/trac/Trac-0.11.1.tar.gz
-
tar -xzvf Trac-0.11.1.tar.gz
-
cd Trac-0.11.1
-
python setup.py install
官方安装配置页面 http://trac.edgewall.org/wiki/TracInstall
采用简单的独立服务启动,没有使用mod_python和fastcgi等方式
-
trac-admin /var/trac/test initenv
-
tracd –port 8080 /var/trac/test
可以测试trac运行正常
-
svn co http://trac-hacks.org/svn/zoomquiettranslation/trunk/0.11.x
-
trac-admin /var/trac/test wiki load default-pages/
-
cp ZhTracGuideToc.py /var/trac/test/plugins
在trac.ini中添加如下内容
[mainnav] wiki.href = /wiki/ZhWikiStart [metanav] help.href = /wiki/ZhTracGuide
添加Perforce版本库支持
Python的Perforce支持PyPerforce
-
wget http://downloads.sourceforge.net/pyperforce/PyPerforce-0.4.zip?modtime=1186240132&big_mirror=0
-
unzip PyPerforce-0.4.zip
-
cd PyPerforce-0.4
-
python setup.py install
-
LD_LIBRARY_PATH=/usr/local/ssl/lib python setup.py install
下载安装Perforce Plugin
-
unzip perforceplugin_trunk.zip
-
cd perforceplugin/trunk
-
python setup.py bdist_egg
-
python setup.py install
配置PerforcePlugin
修改 /var/trac/test/conf/trac.ini 文件,在trac这一节中添加如下一些内容
[trac] repository_type = perforce repository_dir = / [perforce] port = perforce:1666 user = p4trac password = test unicode = 0
建议在 Perforce 的配置中添加一个 只读权限并且不过期的账号,然后在Trac的配置中使用这个账号,并使用Perforce的Ticket来替代Password验证,达到不透露账号密码做保护的目的。
安装过程碰到的问题以及解决
- 安装Python包过程中碰到 ImportError: No module named _md5
- 安装Trac是碰到global name ‘sqlite’ is not defined
- 使用Perforce时提示 Unsupported version control system “perforce”
- Trac 显示中文乱码
-
cs = CharSet(self._connection.charset)
-
if cs is CharSet.UTF_8:
-
self._codec = 'utf8'
-
elif cs is CharSet.NOCONV:
-
self._codec = 'iso-8859-1'
-
else:
-
raise NotImplementedError("Charset '%s' not supported" % str(cs))
-
cs = CharSet(self._connection.charset)
-
if cs is CharSet.UTF_8:
-
self._codec = 'utf8'
-
elif cs is CharSet.NOCONV:
-
self._codec = 'gbk'
-
else:
-
raise NotImplementedError("Charset '%s' not supported" % str(cs))
- 单击数字rev号时,提示previous_rev() takes exactly 2 arguments (3 given)
-
def previous_rev(self, rev, path=''):
-
if self.has_linear_changesets:
-
return self._next_prev_rev('<', rev, path)
-
else:
-
return self.repos.previous_rev(rev, path)
-
def previous_rev(self, rev, path=''):
-
if self.has_linear_changesets:
-
return self._next_prev_rev('<', rev, path)
-
else:
-
return self.repos.previous_rev(rev)
- 登陆时提示Authentication information not available.
-
/usr/local/apache/bin/htpasswd -c /var/trac/.passwd test
-
tracd –port 8080 –basic-auth=*,/var/trac/.passwd,test.com /var/trac/test
网上查找问题,发现是openssl 版本低的原因(0.9.7a),升级Openssl 库到0.9.8g,修改 /etc/ld.so.conf 文件,添加一行 /usr/local/ssl/lib ,ldconfig -v 问题解决 缺少ld的搜索路径,修改 /etc/ld.so.conf 文件,添加一行 /usr/local/lib ,然后再 ldconfig -v 一下,正常 经过n多次尝试和网上查找资料后发现只要在trac.ini中添加如下一段,正常。 1. 文件中的中文乱码 2. Browse 中的文件名列表和changelist中的中文文字乱码 替换成
然后重新安装一下perforceplugin,不要忘记将trac工作环境重新做一下,要不然修订信息还会是乱码,为了这个折腾了我好长时间(我的猜想:这个应该和sqlite中存放的数据编码格式有关系)。 将Trac的versioncontrol目录下cache.py中 修改为
为了不重新安装Trac,可以直接修改site-packages目录下的Trac中的文件 lib/python2.5/lib/site-packages\Trac-0.1….egg/trac/versioncontrol/cache.py 因为是StandAlone的Tracd运行,缺少apache那样的basic auth,所以要按照Tracd的要求来建立验证文件。 修改Trac的启动命令,添加basic_auth参数
官方完整的tracd配置说明
LD_LIBRARY_PATH=/usr/local/ssl/lib python setup.py install
[components]
p4trac.* = enabled
通过修改 trac.ini 中过的 default_charset = utf-8 就可以了,当然如果自己的文件是其他格式的,则需要修改为其他编码,如果文件内容中的编码有两种以上,那就比较麻烦了。
修改perforceplugin的repos.py文件,将
使用apache的htpasswd制作验证文件
Popularity: 5% [?]
Related
Comments
2 Responses to “Perforce+Trac 0.11安装笔记(附一些问题解决方法如中文乱码问题)”
[...] 之前安装好了Trac,Perforce+Trac 0.11安装笔记(附一些问题解决方法如中文乱码问题) 设置default_charset=utf-8 使默认的版本库中的源码文件以utf-8编码显示中文,但是还有一些类型的文件是使用gbk编码的,这样就对这部分文件中的中文就显示不正常了,出现乱码。 经过对Trac源码的研究,发现Trac输出版本库中文件内容时采用的是 mimeviewer 插件,而mimeviewer插件是可以对mime类型做设置的,这样我们就可以通过mime类型来设置文件的字符编码类型。 在trac.ini 中添加如下内容 [mimeviewer] mime_map=text/plain; charset=gbk:c:txt:TXT,text/x-php; charset=utf-8:php tab_width=4 [...]
[...] 服务http://www.sunnyu.com/?p=86 为了做trac配置时的参数调整重新启动,特别做了这个启动脚本。 [...]