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

Re: [PATCH v2] checkout: add --no-widen for restoring files in sparse checkout mode

From
Duy Nguyen <pclouds@gmail.com>
Date
Apr 1, 2013, 05:13 UTC
Message-ID
<CACsJy8BVcu2VwxgQ9URViHMx2+6436npcYSHyZ5Mj0aVhVFtug@mail.gmail.com>
In-Reply-To
<20130401044816.GI11704@elie.Belkin>
On Mon, Apr 1, 2013 at 11:48 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 22 quoted lines
> Hi,
>
> Nguyễn Thái Ngọc Duy wrote:
>
>> "git checkout -- <paths>" is usually used to restore all modified
>> files in <paths>. In sparse checkout mode, this command is overloaded
>> with another meaning: to add back all files in <paths> that are
>> excluded by sparse patterns.
>>
>> Add "--no-widen" option to do what normal mode does: restore all
>> modified files and nothing else.
>
> In an ideal world, I would like "git checkout --widen" to modify the
> .git/info/sparse-checkout file, to be able to do:
>
>         git clone --sparse-checkout=Documentation git://repo.or.cz/git.git
>         cd git
>         git checkout --widen -- README COPYING INSTALL
>
> and hack on a tree with Documentation/, README, COPYING, and INSTALL
> present with no actual code to distract.  And "git checkout --no-widen"
> could be a way to ask to respect the existing sparse pattern.

In an ideal world, I would spend more time on this and add --edit-sparse, which opens up $EDITOR, lets you edit the patterns and reapplies the patterns after $EDITOR exits (catching faults if possible). Unfortunately I don't use sparse checkout as much as before and therefore have little motivation to do it. I would really like narrow clone to replace sparse checkout, but I haven't made much progress on that front either. I'll try to get back on that once pathspec-magics topic is settled.

> This patch isn't about tweaking the sparse-checkout pattern; instead,
> it's about how "git checkout" interacts with the skip-worktree bit.
> Maybe a good name would be --respect-skip-worktree?
I'm bad at naming. If nobody objects, I'll take this as the new option name.
Show 25 quoted lines
>> --- a/Documentation/git-checkout.txt
>> +++ b/Documentation/git-checkout.txt
>> @@ -180,6 +180,17 @@ branch by running "git rm -rf ." from the top level of the working tree.
>>  Afterwards you will be ready to prepare your new files, repopulating the
>>  working tree, by copying them from elsewhere, extracting a tarball, etc.
>>
>> +--no-widen::
>> +     In sparse checkout mode, `git checkout -- <paths>` would
>> +     update all entries matched by <paths> regardless of sparse
>> +     patterns. This option only updates entries matched by <paths>
>> +     and sparse patterns.
>> +
>> +--widen::
>> +     Revert the effect of `--no-widen` if specified and make
>> +     `git checkout -- <paths>` update all entries matched by
>> +     <paths> regardless of sparse patterns.
>
> Perhaps, combining the descriptions of the positive and negative forms:
>
>         --respect-skip-worktree::
>                 By default, `git checkout -- <paths>` creates or updates files
>                 matching <paths> regardless of the skip-worktree bit.  This
>                 option makes 'git checkout' skips entries with the
>                 skip-worktree bit set, which can be useful in sparse checkout
>                 mode.
OK
> I'm afraid I can't imagine when --no-respect-skip-worktree would be
> useful.  That can easily be a failure of my imagination, though.

There may be scripts that expect "git checkout -- foo" to reset everything in "foo". Or maybe you just want to check out a single file and do not bother to edit sparse patterns as you won't need it for long.

Previous: Junio C HamanoNext: Jonathan Nieder
Message 13 of 17 in “Hard reset of a subdirectory in a sparse checkout setting”
  1. Kirill MüllerMar 22, 2013
  2. Duy NguyenMar 23, 2013
  3. Kirill MüllerMar 23, 2013
  4. checkout: add --sparse for restoring files in sparse checkout modeNguyễn Thái Ngọc Duy, Mar 24, 2013
  5. Eric SunshineMar 24, 2013
  6. Jonathan NiederMar 24, 2013
  7. Kirill MüllerMar 24, 2013
  8. Duy NguyenMar 25, 2013
  9. Jonathan NiederMar 25, 2013
  10. checkout: add --no-widen for restoring files in sparse checkout modeNguyễn Thái Ngọc Duy, Mar 30, 2013
  11. Jonathan NiederApr 1, 2013
  12. Junio C HamanoApr 1, 2013
  13. Duy NguyenApr 1, 2013
  14. Jonathan NiederApr 1, 2013
  15. checkout: add --ignore-skip-worktree-bits in sparse checkout modeNguyễn Thái Ngọc Duy, Apr 12, 2013
  16. Müller KirillMay 14, 2013
  17. Duy NguyenMay 14, 2013

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.