Subject: Re: [RFD] git glossary: define pathspec

From: Jonathan Nieder <[email-masked]>
Date: Mon, 29 Nov 2010 10:27:58 -0600

Nguyễn Thái Ngọc Duy wrote:

> --- a/Documentation/glossary-content.txt
> +++ b/Documentation/glossary-content.txt
> @@ -278,6 +278,17 @@ This commit is referred to as a "merge commit", or sometimes just a
>  	of the logical predecessor(s) in the line of development, i.e. its
>  	parents.
>  
> +[[def_pathspec]]pathspec::
> +	Pathspec in its simplest form is a literal path to address a
> +	file or a blob.
> +	Pathspec can end with a slash. Such pathspec is considered a
> +	directory prefix and will match everything under matched
> +	directory.
> +	Pathspec can contain wildcards such as '*', '?'... Such
> +	pathspecs, after being matched literally against the entire
> +	path, will be matched against the entire path using
> +	fnmatch(3).
> +

Perhaps worth mentioning that these are path specifiers?

 pathspec::
	Pattern used to specify paths.

	Pathspecs are used on the command line of "git ls-files", "git
	ls-tree", "git grep", "git checkout", and many other commands to
	limit the scope of operations to some subset of the tree or
	worktree.  See the documentation of each command for whether
	paths are relative to the current directory or toplevel.  The
	pathspec syntax is as follows:

	. any path matches itself
	. the pathspec up to the last slash represents a
	  directory prefix.  The scope of that pathspec is
	  limited to that subtree.
	. the rest of the pathspec is a pattern for the remainder
	  of the pathname.  Paths relative to the directory
	  prefix will be matched against that pattern using fnmatch(3);
	  in particular, '*' and '?' _can_ match directory separators.

	For example, Documentation/*.jpg will match all .jpg files
	in the Documentation subtree,
	including Documentation/chapter_1/figure_1.jpg.

Of course, I am making the semantics up. :)

Hope that helps,
Jonathan