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

Error when "git mv" file in a sparsed checkout

From
JWJosef Wolf <jw@raven.inka.de>
Date
Nov 7, 2023, 13:03 UTC
Message-ID
<20231107130303.GS7041@raven.inka.de>
Hello,

I have used the procedure described below for many years. In fact, this procedure is part of a script which I am using for about 10 years. This procedure was definitely working with git-2-25-1 and git-2.26.2.

Now, with git-2.34.1 (on a freshly installed ubuntu-22.04), this procedure fails.

Here is what I do:

I want to rename a file on a branch which is not currently checked out without messing/touching my current working directory.

For this, I first create a clone of the repo with shared git-directory:
  $ SANDBOX=/var/tmp/manage-scans-X1pKZQiey
  $ WT=$SANDBOX/wt
  $ GIT=$SANDBOX/git
  $ mkdir -p $SANDBOX
  $ git --work-tree $WT --git-dir $GIT clone -qns -n ~/upstream-repo $GIT

Then, I do a sparse checkout in this clone, containing only the file that is to be renamed:

  $ cd $WT
  $ echo 'path/to/old-filename' >>$GIT/info/sparse-checkout
  $ git --work-tree $WT --git-dir $GIT config core.sparsecheckout true
  $ git --work-tree $WT --git-dir $GIT checkout -b the-branch remotes/origin/the-branch
  Switched to a new branch 'the-branch'
Next step would be to "git mv" the file:
  $ mkdir -p /path/to  # already exists, but should do no harm
  $ git --work-tree $WT --git-dir $GIT mv path/to/old-filename path/to/new-filename
  The following paths and/or pathspecs matched paths that exist
  outside of your sparse-checkout definition, so will not be
  updated in the index:
  path/to/new-filename
  hint: If you intend to update such entries, try one of the following:
  hint: * Use the --sparse option.
  hint: * Disable or modify the sparsity rules.
  hint: Disable this message with "git config advice.updateSparsePath false"
This error is something I have not expected.

Error message suggests, there already exists a file named "new-filename". This is not true at all. There is no file named "new-filename" in the entire repository. Not in any directory of any branch.

-- 
Josef Wolf
jw@raven.inka.de
Next: Elijah Newren
Message 1 of 4 in “Error when "git mv" file in a sparsed checkout”
  1. Josef WolfNov 7, 2023
  2. Elijah NewrenNov 8, 2023
  3. Josef WolfNov 8, 2023
  4. Elijah NewrenNov 10, 2023

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.