X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=Documentation%2Fgit-ls-files.txt;h=87cc362ad88a4e65e7216d7db78b3219ddf65df8;hb=500b97e4bb184c954a52550843e6314ecf97a208;hp=14ca6953176cf5577a0323db6cd23a43805522a5;hpb=f1a7eb36b017c62d9a007b6b8660bdeec3f94f97;p=git.git diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt index 14ca6953..87cc362a 100644 --- a/Documentation/git-ls-files.txt +++ b/Documentation/git-ls-files.txt @@ -1,6 +1,5 @@ git-ls-files(1) =============== -v0.1, May 2005 NAME ---- @@ -10,10 +9,11 @@ git-ls-files - Information about files in the cache/working directory SYNOPSIS -------- 'git-ls-files' [-z] [-t] - (--[cached|deleted|others|ignored|stage|unmerged])\* - (-[c|d|o|i|s|u])\* + (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])\* + (-[c|d|o|i|s|u|k|m])\* [-x |--exclude=] [-X |--exclude-from=] + [--exclude-per-directory=] [--] []\* DESCRIPTION ----------- @@ -32,6 +32,9 @@ OPTIONS -d|--deleted:: Show deleted files in the output +-m|--modified:: + Show modified files in the output + -o|--others:: Show other files in the output @@ -45,6 +48,11 @@ OPTIONS -u|--unmerged:: Show unmerged files in the output (forces --stage) +-k|--killed:: + Show files on the filesystem that need to be removed due + to file/directory conflicts for checkout-cache to + succeed. + -z:: \0 line termination on output @@ -54,10 +62,10 @@ OPTIONS -X|--exclude-from=:: exclude patterns are read from ; 1 per line. - Allows the use of the famous dontdiff file as follows to find - out about uncommitted files just as dontdiff is used with - the diff command: - git-ls-files --others --exclude-from=dontdiff + +--exclude-per-directory=:: + read additional exclude patterns that apply only to the + directory and its subdirectories in . -t:: Identify the file status with the following tags (followed by @@ -65,8 +73,17 @@ OPTIONS H cached M unmerged R removed/deleted + C modifed/changed + K to be killed ? other +--:: + Do not interpret any more arguments as options. + +:: + Files to show. If no files are given all files which match the other + specified criteria are shown. + Output ------ show files just outputs the filename unless '--stage' is specified in @@ -80,12 +97,100 @@ detailed information on unmerged paths. For an unmerged path, instead of recording a single mode/SHA1 pair, the dircache records up to three such pairs; one from tree O in stage 1, A in stage 2, and B in stage 3. This information can be used by -the user (or Cogito) to see what should eventually be recorded at the -path. (see read-cache for more information on state) +the user (or the porcelain) to see what should eventually be recorded at the +path. (see git-read-tree for more information on state) + + +Exclude Patterns +---------------- + +'git-ls-files' can use a list of "exclude patterns" when +traversing the directory tree and finding files to show when the +flags --others or --ignored are specified. + +These exclude patterns come from these places: + + (1) command line flag --exclude= specifies a single + pattern. + + (2) command line flag --exclude-from= specifies a list of + patterns stored in a file. + + (3) command line flag --exclude-per-directory= specifies + a name of the file in each directory 'git-ls-files' + examines, and if exists, its contents are used as an + additional list of patterns. + +An exclude pattern file used by (2) and (3) contains one pattern +per line. A line that starts with a '#' can be used as comment +for readability. + +There are three lists of patterns that are in effect at a given +time. They are built and ordered in the following way: + + * --exclude= from the command line; patterns are + ordered in the same order as they appear on the command line. + + * lines read from --exclude-from=; patterns are ordered + in the same order as they appear in the file. + + * When --exclude-per-directory= is specified, upon + entering a directory that has such a file, its contents are + appended at the end of the current "list of patterns". They + are popped off when leaving the directory. + +Each pattern in the pattern list specifies "a match pattern" and +optionally the fate; either a file that matches the pattern is +considered excluded or included. A filename is matched against +the patterns in the three lists; the --exclude-from list is +checked first, then the --exclude-per-directory list, and then +finally the --exclude list. The last match determines its fate. +If there is no match in the three lists, the fate is "included". + +A pattern specified on the command line with --exclude or read +from the file specified with --exclude-from is relative to the +top of the directory tree. A pattern read from a file specified +by --exclude-per-directory is relative to the directory that the +pattern file appears in. + +An exclude pattern is of the following format: + + - an optional prefix '!' which means that the fate this pattern + specifies is "include", not the usual "exclude"; the + remainder of the pattern string is interpreted according to + the following rules. + + - if it does not contain a slash '/', it is a shell glob + pattern and used to match against the filename without + leading directories (i.e. the same way as the current + implementation). + + - otherwise, it is a shell glob pattern, suitable for + consumption by fnmatch(3) with FNM_PATHNAME flag. I.e. a + slash in the pattern must match a slash in the pathname. + "Documentation/*.html" matches "Documentation/git.html" but + not "ppc/ppc.html". As a natural exception, "/*.c" matches + "cat-file.c" but not "mozilla-sha1/sha1.c". + +An example: + + $ cat .git/ignore + # ignore objects and archives, anywhere in the tree. + *.[oa] + $ cat Documentation/.gitignore + # ignore generated html files, + *.html + # except foo.html which is maintained by hand + !foo.html + $ git-ls-files --ignored \ + --exclude='Documentation/*.[0-9]' \ + --exclude-from=.git/ignore \ + --exclude-per-directory=.gitignore + See Also -------- -link:read-cache.html[read-cache] +gitlink:git-read-tree[1] Author @@ -98,5 +203,5 @@ Documentation by David Greaves, Junio C Hamano and the git-list