I've been experimenting with git and gitweb, but I've reached deadend. Maybe someone can help?
Short Version:
In sub git_get_type in gitweb.cgi, this line: open my $fd, "-|", "$gitbin/git-cat-file -t $hash" or return;
results in: error: unable to find e71b869f3333ad10a492251e099ed9176248a420 fatal: git-cat-file e71b869f3333ad10a492251e099ed9176248a420: bad file
BUT, from the shell: $ git-cat-file -t e71b869f3333ad10a492251e099ed9176248a420 commit
Longer explanation:
Initially I created the git repository using git-cvsimport as described in the cvs-migration document. I also installed gitweb.cgi and everything seemed to be fine. In particular the refs/heads/* files referred to the tips of current branches in cvs. I was quite pleased.
A few days later, I ran git-cvsimport again, with -i. This imported just the recent changes, but the view from gitweb didn't change. :(
At first, I thought that the git-cvsimport hadn't worked. But, git-whatchanged clearly showed the new changes. (I later learned that git-rev-list also returned the tip-of-branch commits.) After reading gitweb.cgi, I realized that the refs/heads/* files had not been changed, so they still referred to the tip-of-branch for the initial import. (I expected the refs/heads/* to point to the last commit on each branch. Was that wrong?)
Anyway, I tried to make a new head that actually pointed to what I expected:
$ echo `git-rev-list tip --max-count=1` > refs/heads/mytest $ git-cat-file -t `cat refs/heads/mytest` commit
No problem. But, this same task doesn't seem to work from gitweb.cgi:
$ ./gitweb.cgi http://localhost/cgi-bin/gitweb.cgi?p=test\;a=heads > /dev/null error: unable to find e71b869f3333ad10a492251e099ed9176248a420 fatal: git-cat-file e71b869f3333ad10a492251e099ed9176248a420: bad file
How can this be? Have I messed something up, or am I just totally confused?
-chris
ps. please cc, not subscribed.