2011-03-03 33 views
3

我刚刚升级了我的Trac系统,因此我们可以处理多个存储库。我开始收到一些浏览器错误,并将其跟踪到GitPlugin(当我禁用它时,所有的错误消失了,当然我的版本控制跟踪也是如此)。将trac从0.11升级到0.12后git裸存储库的问题

在每一页上,我得到:

'Warning: Error with navigation contributor "BrowserModule"' 

和时间表页面上我得到:

Trac detected an internal error: 

TypeError: 'NoneType' object is unsubscriptable 

日志给我准备这个时间表页出“主”的:

Internal Server Error: Traceback (most recent call last): File "/usr/local 
/lib/python2.6/dist-packages/Trac-0.12-py2.6.egg/trac/web/main.py", line 513, in 
_dispatch_request dispatcher.dispatch(req) File "/usr/local/lib/python2.6/dist-packages 
/Trac-0.12-py2.6.egg/trac/web/main.py", line 235, in dispatch resp = 
chosen_handler.process_request(req) File "/usr/local/lib/python2.6/dist-packages/Trac- 
0.12-py2.6.egg/trac/timeline/web_ui.py", line 142, in process_request available_filters += 
event_provider.get_timeline_filters(req) or [] File "/usr/local/lib/python2.6/dist-packages 
/Trac-0.12-py2.6.egg/trac/versioncontrol/web_ui/changeset.py", line 861, in 
get_timeline_filters repositories = rm.get_real_repositories() File "/usr/local 
/lib/python2.6/dist-packages/Trac-0.12-py2.6.egg/trac/versioncontrol/api.py", line 588, in 
get_real_repositories repos = self.get_repository(reponame) File "/usr/local/lib/python2.6 
/dist-packages/Trac-0.12-py2.6.egg/trac/versioncontrol/api.py", line 526, in 
get_repository repos = connector.get_repository(rtype, rdir, repoinfo.copy()) File 
"/usr/lib/python2.6/dist-packages/tracext/git/git_fs.py", line 159, in get_repository 
shortrev_len=self._shortrev_len) File "/usr/lib/python2.6/dist-packages/tracext 
/git/git_fs.py", line 177, in __init__ Repository.__init__(self, "git:"+path, None, log) 
File "/usr/local/lib/python2.6/dist-packages/Trac-0.12-py2.6.egg/trac/versioncontrol 
/api.py", line 730, in __init__ self.reponame = params['name'] TypeError: 'NoneType' 
object is unsubscriptable 

并且这适用于“Chrome”中的所有页面:

Error with navigation contributor BrowserModule: TypeError: 'NoneType' object is unsubscriptable 

在升级此系统之前,我设置了一些测试环境,它们都使用多个存储库和git,但有两个主要区别:它们从0.12开始,而存储库不是裸存储库。

我的问题是这样的:我升级时是否搞乱了某些东西,需要从全新的环境开始,我是否需要将我的存储库切换为非裸机,还是我完全缺少某些内容并需要执行其他操作?

+2

我已经设法在我的测试机器上复制错误,裸仓库就是失败。显然,在trac 0.11和0.12之间的某处gitPlugin打破了裸仓库。我已经考虑过一个解决它的工作,其中涉及使用git钩子。我会公布结果。 – 2011-03-10 19:51:53

+0

这很奇怪......我正在debian上运行trac 0.12.3,并获取这个确切的问题。在工作中,我们拥有相同的设置,除了它在bitnami下的windows上运行,我不明白! – 2012-08-05 16:09:04

回答

6

好的,所以我设法得到了一个有效的工作。

进入服务器并创建一个新目录。

git克隆该新目录中裸露的远程存储库。

进入老仓库和(/ git的下钩)变更后收到钩是:

#!/bin/sh 
pushd /path/to/new/repo > /dev/null 
unset $(git rev-parse --local-env-vars) 
git pull -q 
popd > /dev/null 

如果没有后得到公正创建与文件名的文件。

现在转到您的trac.ini并指向任何存储库引用到新的存储库目录和poof!有用。

注意:推送的人仍然推送到旧的存储库。该脚本仅仅调用“新”存储库中的一个拉。