git-daemon shallow checkout fail
- From
Bob Proulx <bob@proulx.com>
- Date
- Jan 29, 2017, 00:29 UTC
- Message-ID
- <20170129002932.GA19359@dismay.proulx.com>
I am trying to understand a problem with shallow checkouts through the git-daemon. The server side fails trying to create a shallow_XXXXXX file in the repository. But of course it can't due to no permissions from the git-daemon user.
However the problem driving me crazy is that this only fails this way on one machine. Unfortunately failing on the machine I need to use. If I try this same setup on any other machine I try then there is no failure and it works okay. Therefore I conclude that in the failing case it is trying to write a shallow_XXXXXX file in the repository but in all of the passing cases it does not. I browsed through the git-daemon source but couldn't deduce the flow yet.
Does anyone know why one system would try to create shallow_XXXXXX files in the repository while another one would not?
Trying to be unambiguous here is my test case:
mkdir /run/git chmod 755 /run/git chown nobody:root /run/git cd /run/git && env -i HOME=/run/git PATH=/usr/local/bin:/usr/bin:/bin su -s /bin/sh -c "git-daemon --export-all --base-path=/srv/git --verbose" nobody [18340] Ready to rumble
That sets up the test case. Have any bare git repository in /srv/git for use for cloning.
git clone --depth 1 git://localhost/test-project.git Cloning into 'test-project'... fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed
And the server side says:
[26071] Request upload-pack for '/test-project.git' [26071] fatal: Unable to create temporary file '/srv/git/test-project.git/shallow_xKwnvZ': Permission denied [26055] [26071] Disconnected (with error)
Of course git-daemon running as nobody can't create a temporary file shallow_XXXXXX in the /srv/git/test-project.git because it has no permissions by design. But why does this work on other systems and not work on my target system?
git --version # from today's git clone build git version 2.11.0.485.g4e59582
Thanks! Bob