git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

Next: Johannes Schindelin
Message 1 of 9 in “git-daemon shallow checkout fail”
  1. Bob ProulxJan 29, 2017
  2. Johannes SchindelinJan 30, 2017
  3. Bob ProulxFeb 7, 2017
  4. Jeff KingJan 30, 2017
  5. Duy NguyenFeb 2, 2017
  6. Bob ProulxFeb 7, 2017
  7. Bob ProulxFeb 7, 2017
  8. Duy NguyenFeb 7, 2017
  9. Bob ProulxFeb 7, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.