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

Why is "Sparse checkout leaves no entry on working directory" a fatal error?

From
JWJosef Wolf <jw@raven.inka.de>
Date
Oct 8, 2019, 06:45 UTC
Message-ID
<20191008064538.GB30443@raven.inka.de>
Hello,
This is a repost, since the original message seems to have been lost somehow.

I am trying to add a file to an arbitrary branch without touching the current worktree with as little overhead as possible. This should work no matter in which state the current worktree is in. And it should not touch the current WT in any way.

For this, the sparse-checkout feature in conjuntion with the "shared repository" feature seems to be perfect.

The basic idea goes like this:
   TMP=`mktemp -d /var/tmp/test-XXXXXXXXX`
   GD=$TMP/git
   WD=$TMP/wd
   
   git --work-tree $WD --git-dir $GD clone -qns -n . $GD
   git --work-tree $WD --git-dir $GD config core.sparsecheckout true
   echo path/of/file/which/I/want/to/create >>$GD/info/sparse-checkout
   
   git --work-tree $WD --git-dir $GD checkout -b some-branch remotes/origin/some-branch  # !!!
   
   ( cd $WD
     mkdir -p path/of/file/which/I/want/to
     echo huhuh >path/of/file/which/I/want/to/create
     git --work-tree $WD --git-dir $GD add path/of/file/which/I/want/to/create
     git --work-tree $WD --git-dir $GD commit
     git --work-tree $WD --git-dir $GD push
   )
   
   rm -rf $TMP
Unfortunately, the marked command errors out with
   "error: Sparse checkout leaves no entry on working directory"
and won't create/switch to the branch that is to be modified.

Why is this an error? Since there are no matching files, an empty worktree is EXACTLY what I wanted. Why will the "git checkout -b" command error out?

Strange enough, I have some repositories at this machine where the .git/info/sparse-checkout file contains only non-existing files and git happily executes this "git checkout -b XXX remotes/origin/XXX" command leaving the working tree totally empty all the time.

Someone understands this inconsistent behaviour?
Thanks,
-- 
Josef Wolf
jw@raven.inka.de
Next: Elijah Newren
Message 1 of 3 in “Why is "Sparse checkout leaves no entry on working directory" a fatal error?”
  1. Josef WolfOct 8, 2019
  2. Elijah NewrenOct 8, 2019
  3. Josef WolfOct 9, 2019

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.