Opened 7 years ago

Closed 2 years ago

#7381 closed defect (wontfix)

Reported by: Owned by: dima2 Herbert Valerio Riedel highest GitPlugin blocker Git control files 0.11

Description

How to Reproduce

While doing a GET operation on /, Trac issued an internal error.

Request parameters:

{}


User agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6

System Information

 Trac 0.12 Genshi 0.6 GIT 1.5.6.5 mod_python 3.3.1 pysqlite 2.4.1 Python 2.6.2 (r262:71600, Sep 8 2009, 13:06:43)  [GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] setuptools 0.6c9 SQLite 3.3.6 jQuery 1.4.2

Enabled Plugins

 TracGit 0.12.0.2dev-r7757

Python Traceback

Traceback (most recent call last):
File "build/bdist.linux-i686/egg/trac/web/main.py", line 513, in _dispatch_request
dispatcher.dispatch(req)
File "build/bdist.linux-i686/egg/trac/web/main.py", line 200, in dispatch
chosen_handler)
File "build/bdist.linux-i686/egg/trac/web/main.py", line 346, in _pre_process_request
chosen_handler = filter_.pre_process_request(req, chosen_handler)
File "build/bdist.linux-i686/egg/trac/versioncontrol/api.py", line 330, in pre_process_request
repo = self.get_repository(reponame)
File "build/bdist.linux-i686/egg/trac/versioncontrol/api.py", line 526, in get_repository
repos = connector.get_repository(rtype, rdir, repoinfo.copy())
File "build/bdist.linux-i686/egg/tracext/git/git_fs.py", line 186, in get_repository
shortrev_len=self._shortrev_len)
File "build/bdist.linux-i686/egg/tracext/git/git_fs.py", line 205, in __init__
git_bin=git_bin).getInstance()
File "build/bdist.linux-i686/egg/tracext/git/PyGIT.py", line 120, in __init__
i = Storage(repo, log, git_bin)
File "build/bdist.linux-i686/egg/tracext/git/PyGIT.py", line 194, in __init__


comment:1 Changed 7 years ago by anonymous

what happened? help plz...

comment:2 Changed 7 years ago by anonymous

Trac Release: 0.11, same 0.12

comment:3 Changed 7 years ago by Steffen Hoffmann

Component: SELECT A HACK → GitPlugin Git control files added changed from anonymous to Herbert Valerio Riedel 0.12 → 0.11

What happend? You didn't select the proper component, and since you're not a registered user with this site you're not allowed to change it afterwards.

comment:4 Changed 7 years ago by Antti Kaihola

I have the same problem with Trac 0.12.1, GitPlugin 0.12 r7757 and python-subversion 1.6.6dfsg-2ubuntu1. From the log file:

2010-10-14 17:35:46,836 Trac[PyGIT] DEBUG: requested PyGIT.Storage instance 28793744 for '/home/akaihola/test.git'
2010-10-14 17:35:46,836 Trac[git_fs] INFO: enabled CachedRepository for '/home/akaihola/test.git'
2010-10-14 17:35:46,837 Trac[PyGIT] ERROR: GIT control files missing in '/home/akaihola/trac/git'
2010-10-14 17:35:46,837 Trac[chrome] ERROR: Error with navigation contributor BrowserModule: GitError: GIT control files not found, maybe wrong directory?


The directory /home/akaihola/test.git is a bare repository created with git init --bare, and I've pushed several commits into it. All directories and files are owned by me and I run tracd as myself.

Modifications I've made to the default trac.ini:

[trac]
repository_dir = /home/akaihola/test.git
repository_type = git

[git]
cached_repository = true
persistent_cache = true
shortrev_len = 7
git_bin = /usr/bin/git

[components]
tracext.git.* = enabled


I've also tried without the settings in the [git] section. Same error.

comment:5 Changed 7 years ago by Antti Kaihola

This might help: I ran tracd in the Python debugger, and evaluated these at trac/versioncontrol/api.py:526:

ipdb> import pprint;pprint.pprint(self.get_all_repositories())
{'': {'dir': u'/home/akaihola/repos/test.git',
'id': 2,
'name': ''},
u'/home/akaihola/repos/test': {u'dir': u'/home/akaihola/trac/git',
'id': 1,
u'name': u'/home/akaihola/repos/test',
u'type': u''}}
ipdb> self
<trac.versioncontrol.api.RepositoryManager object at 0x26ab150>


comment:6 Changed 7 years ago by Antti Kaihola

Solved: the trac-admin repository add command adds invalid entries into the database. Fixed them directly with sqlite3 and all works correctly.

comment:7 Changed 7 years ago by anonymous

What exactly was your trac-admin repository add command in the first place btw?

comment:8 Changed 7 years ago by Antti Kaihola

I tried to reproduce the problem, without success. I was messing around with both the [trac]/repository_dir and [trac]/repository_type settings and the trac-admin test repository add test /home/akaihola/test.git git or similar commands, and the repository table ended up containing entries with strange paths.

It's confusing that for some reason I ended up having the key repository_dir with a value like git:/home/akaihola/test.git instead of dir and /home/akaihola/test.git in the repository table. It looks like this has something to do with specifying the repository in trac.ini.

Sorry for not being able to reproduce exactly what happened before.

comment:9 Changed 7 years ago by anonymous

thx for trying to reproduce :-)

do you remember if you could have fixed that problem also by using the repository section within the trac admin pages, instead of having to directly fix the sqlite database?

comment:10 Changed 7 years ago by dan@…

I had this same error... looking closely at my trac.ini, I found an error in the path to the Git repo. So, the 'maybe wrong directory' hint was right on! Once fixed & resynced, all was fine!

comment:11 follow-up:  13 Changed 7 years ago by sai.giridhar@…

I recently had done two installation of the git plugin and i have come across this error on both of them. I have solved it by doing

sudo chown -R git:www-data git-repository


and make sure that the group user has a read access to the repository. Hope this helps :)

comment:12 Changed 6 years ago by anonymous

Thanks for the permissions hint - I've moved my repositories during Lenny to Squeeze upgrade, and lost the group permission, causing this error to appear.

comment:13 in reply to:  11 Changed 6 years ago by anonymous

sudo chown -R git:www-data git-repository

In case of usage with gitolite: remember to setup a post receive hook. By default the ownership changes with each commit back to git:git.

comment:14 Changed 6 years ago by anonymous

for me, it's really because I was not using a bare repo/not pointing to .git.

comment:15 Changed 6 years ago by track-hacks@…

One more hint: If you are running trac with apache and mod-python, remember to restart apache after adding the apache user (www-data on debian/ubuntu) to a group with permissions to your git repository. This is not needed if the apache user is the actual owner of the repository, only if it is a group member.

comment:16 Changed 4 years ago by Walkman

I had the same issue. Deleting and readding the repository in Trac admin solved the issue. I did that based on comment:6, thank you!

comment:17 Changed 4 years ago by Ryan J Ollos

At least for the case of non-bare repositories, a similar issue was fixed in trac:#11297. For a non-bare repository, the Repository path must point to a .git directory (at least prior to [trac 12225], which using TracGit that is part of the Trac core). There is also trac:#11371, which might be responsible for some issues.

comment:18 Changed 2 years ago by Ryan J Ollos

Resolution: → wontfix new → closed