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
Jonathan Nieder <jrnieder@gmail.com>
Date
Apr 1, 2013, 04:48 UTC
Message-ID
<20130401044816.GI11704@elie.Belkin>
In-Reply-To
<1364637753-18785-1-git-send-email-pclouds@gmail.com>
Hi,
Nguyễn Thái Ngọc Duy wrote:
Show 7 quoted lines
> "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.

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?

[...]
Show 16 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.

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.

What do you think?

Thanks, Jonathan

Previous: Nguyễn Thái Ngọc DuyNext: Junio C Hamano
Message 11 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.