Subject: Re: Error cloning from Git Repository

From: Michael J Gruber <[email-masked]>
Date: Tue, 12 May 2009 09:11:43 +0200

[I'm putting the list back on cc:, I assume that's in your interest.]

kanagesh radhakrishnan venit, vidit, dixit 12.05.2009 05:19:
> Hello Michael and all,
> 
> Thank you for the response.
> 
> The version of git on the client machines that I have tried on are
> 1.5.4.3 and 1.6.2.1.
> 
> Please see my replies inline.
> 
> Thanks and regards,
> Kanagesh
> 
> On Fri, May 8, 2009 at 1:20 PM, Michael J Gruber
> <[email-masked]> wrote:
>> kanagesh radhakrishnan venit, vidit, dixit 08.05.2009 06:05:
>>> Hello All,
>>>
>>> I am trying to setup a git repository and then publish it using
>>> git-daemon and inetd for other developers in the network to access the
>>> sources.
>>>
>>> Server Setup
>>> -------------------
>>> Host system running on Fedora Core 8
>>> Git version 1.5.4.3
>>>
>>> A summary of what I have done to setup the Git server is as follows:
>>> $ mkdir /home/kanagesh/test-repo
>>> $ cd test-repo
>>> $ vi test.c <insert text, save, quit>
>>> $ git-init-db
>>> $ git-config user.name kanagesh
>>> $ git-config user.email [email-masked]
>>> $ git-add test.c
>>> $ git-commit -a -m"Initial Commit"
>>>
>>> # mkdir -p /var/cache/git
>>
>> I assume you're doing a "cd /var/cache/git" before the next lines ;)
> 
> Yes, indeed.  I am doing that :-)
> 
>>> # ln -s /home/kanagesh/test-repo/.git test-repo
>>> # ls -l
>>>    test-repo -> /home/kanagesh/test-repo/.git
>>
>> Does "nobody" have access to /var/cache/git and /home/kanagesh/test-repo/?
> 
> The only user who seems to have access to these folders is 'kanagesh'
> However, a git-clone command issued by user kanagesh also results in
> the same failure.

Do you mean git-clone with a remote URL (git://ip/...)? In that case
your local user does not matter at all: git-clone talks to git-daemon,
git-daemon runs as "nobody" (per your inetd config), and "nobody" has no
access to the repo. If you use git-daemon you need to make sure that the
user which git-daemon runs as can access the repo.

For a quick check you can run git-daemon as kanagesh and restart it. The
real solution is to make the repo accessible to "nobody", or better yet
to a dedicated user "gitdaemon" or such which you create and which would
be the user to run git-daemon.

> 
> How can I provide you with more information for this?
> 
>>
>>>
>>> xinetd has been setup to listen for git requests on port 9418 and
>>> spawn git-daemon.  This has been done by placing a config file named
>>> 'git' under /etc/xinetd.d.  The contents of the config file is as
>>> follows:
>>>
>>> service git
>>> {
>>>        disable        = no
>>>        type            = UNLISTED
>>>        port             = 9418
>>>        socket_type = stream
>>>        wait             = no
>>>        user            = nobody
>>>        server          = /usr/local/bin/git-daemon
>>>        server_args     = --inetd --export-all
>>> --base-path=/var/cache/git --syslog --verbose
>>>        log_on_failure  += USERID
>>> }
>>>
>>>
>>> Clone from the Server
>>> -------------------------------
>>> When I attempt to clone the source from the Git server, I end up with
>>> the following error:
>>>
>>> [kanagesh@localhost test]$ git-clone git://192.168.13.171/test-repo
>>
>> What is the git version on the client?
>>
>>> Initialized empty Git repository in /home/kanagesh/work/test/test-repo/.git/
>>> fatal: The remote end hung up unexpectedly
>>> fetch-pack from 'git://192.168.13.171/test-repo' failed.
>>>
>>> On checking the log messages in /var/log/messages, I see the following:
>>>
>>> May  7 17:29:19 localhost xinetd[17108]: START: git pid=17128
>>> from=::ffff:192.168.13.171
>>> May  7 17:29:19 localhost git-daemon: [17128] Connection from
>>> 192.168.13.171:42360
>>> May  7 17:29:19 localhost git-daemon: [17128] Extended attributes (21
>>> bytes) exist <host=192.168.13.171>
>>> May  7 17:29:19 localhost git-daemon: [17128] Request upload-pack for
>>> '/test-repo'
>>> May  7 17:29:19 localhost xinetd[17108]: EXIT: git status=255
>>> pid=17128 duration=0(sec)
>>>
>>> Can anyone tell me what I am doing incorrectly?  Any pointers on how
>>> to get a more verbose log from git-daemon would also be very helpful.
>>>
>>> Thanks in advance.
>>>
>>> Regards,
>>> Kanagesh
>>
>>