git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <junkio@cox.net>
To: Petr Baudis <pasky@suse.cz>
Cc: Catalin Marinas <catalin.marinas@gmail.com>,
	Linus Torvalds <torvalds@osdl.org>,
	git@vger.kernel.org, Marco Costalba <mcostalba@yahoo.it>
Subject: [PATCH] Documentation and tests: ls-files exclude pattern.
Date: Fri, 29 Jul 2005 00:51:56 -0700	[thread overview]
Message-ID: <7vack6jbhf.fsf_-_@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <7vack6mcd7.fsf@assigned-by-dhcp.cox.net> (Junio C. Hamano's message of "Thu, 28 Jul 2005 22:04:36 -0700")

Update the tests and documentation to match the new "last one
determines its fate" semantics.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---

 Documentation/git-ls-files.txt     |   27 ++++++++++++++-------------
 t/t3001-ls-files-others-exclude.sh |   23 ++++++++++++++++++-----
 2 files changed, 32 insertions(+), 18 deletions(-)

4ae2315518ee4017c6646a4421cf448297fc6dcc
diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
--- a/Documentation/git-ls-files.txt
+++ b/Documentation/git-ls-files.txt
@@ -115,14 +115,14 @@ An exclude pattern file used by (2) and 
 per line.  A line that starts with a '#' can be used as comment
 for readability.
 
-The list of patterns that is in effect at a given time is
-built and ordered in the following way:
+There are three lists of patterns that are in effect at a given
+time.  They are built and ordered in the following way:
 
- * --exclude=<pattern> and lines read from --exclude-from=<file>
-   come at the beginning of the list of patterns, in the order
-   given on the command line.  Patterns that come from the file
-   specified with --exclude-from are ordered in the same order
-   as they appear in the file.
+ * --exclude=<pattern> from the command line; patterns are
+   ordered in the same order as they appear on the command line.
+
+ * lines read from --exclude-from=<file>; patterns are ordered
+   in the same order as they appear in the file.
 
  * When --exclude-per-directory=<name> is specified, upon
    entering a directory that has such a file, its contents are
@@ -130,11 +130,12 @@ built and ordered in the following way:
    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.  By default, this being
-"exclude" mechanism, the fate is "excluded".  A filename is
-examined against the patterns in the list, and the first match
-determines its fate.
+optionally the fate;n 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
@@ -168,9 +169,9 @@ An example:
     *.[oa]
     $ cat Documentation/.gitignore
     # ignore generated html files,
+    *.html
     # except foo.html which is maintained by hand
     !foo.html
-    *.html
     $ git-ls-files --ignored \
         --exclude='Documentation/*.[0-9]' \
         --exclude-from=.git/ignore \
diff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh
--- a/t/t3001-ls-files-others-exclude.sh
+++ b/t/t3001-ls-files-others-exclude.sh
@@ -14,7 +14,7 @@ rm -fr one three
 for dir in . one one/two three
 do
   mkdir -p $dir &&
-  for i in 1 2 3 4 5
+  for i in 1 2 3 4 5 6 7 8
   do
     >$dir/a.$i
   done
@@ -24,31 +24,44 @@ cat >expect <<EOF
 a.2
 a.4
 a.5
+a.8
 one/a.3
 one/a.4
 one/a.5
+one/a.7
+one/two/a.2
 one/two/a.3
 one/two/a.5
+one/two/a.7
+one/two/a.8
 three/a.2
 three/a.3
 three/a.4
 three/a.5
+three/a.8
 EOF
 
 echo '.gitignore
 output
 expect
 .gitignore
-' >.git/ignore
+*.7
+!*.8' >.git/ignore
 
 echo '*.1
-/*.3' >.gitignore
+/*.3
+!*.6' >.gitignore
 echo '*.2
-two/*.4' >one/.gitignore
+two/*.4
+!*.7
+*.8' >one/.gitignore
+echo '!*.2
+!*.8' >one/two/.gitignore
 
 test_expect_success \
-    'git-ls-files --others --exclude.' \
+    'git-ls-files --others with various exclude options.' \
     'git-ls-files --others \
+       --exclude=\*.6 \
        --exclude-per-directory=.gitignore \
        --exclude-from=.git/ignore \
        >output &&

  parent reply	other threads:[~2005-07-29  7:54 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-21 20:23 [PATCH 1/1] Tell vim the textwidth is 75 Bryan larsen
2005-07-22  2:50 ` Junio C Hamano
2005-07-22 10:37   ` Catalin Marinas
2005-07-22 19:24     ` Sam Ravnborg
2005-07-22 20:39       ` Junio C Hamano
2005-07-22 20:59         ` Petr Baudis
2005-07-24 22:49           ` [RFC] extending git-ls-files --exclude Junio C Hamano
2005-07-24 22:50             ` [PATCH] git-ls-files: --exclude mechanism updates Junio C Hamano
2005-07-24 22:51             ` [PATCH] Documentation: describe git-ls-files --exclude patterns Junio C Hamano
2005-07-25  9:19             ` [RFC] extending git-ls-files --exclude Catalin Marinas
2005-07-25 19:58               ` Junio C Hamano
2005-07-25 20:09                 ` Linus Torvalds
2005-07-25 20:27                   ` Junio C Hamano
2005-07-25 20:51                     ` Catalin Marinas
2005-07-28 15:57                     ` Petr Baudis
2005-07-25 20:59                 ` Catalin Marinas
2005-07-28 15:52             ` Petr Baudis
2005-07-28 16:04               ` A Large Angry SCM
2005-07-28 19:25                 ` Matthias Urlichs
2005-07-29  7:21                   ` Petr Baudis
2005-07-29  7:37                     ` Matthias Urlichs
2005-07-29 13:49                     ` A Large Angry SCM
2005-07-29  5:04               ` Junio C Hamano
2005-07-29  7:36                 ` Petr Baudis
2005-07-29  8:24                   ` Junio C Hamano
2005-07-29  8:41                     ` Petr Baudis
2005-08-01 16:14                     ` Wayne Scott
2005-07-29  7:50                 ` [PATCH] ls-files: rework exclude patterns Junio C Hamano
2005-07-29  7:51                 ` Junio C Hamano [this message]
2005-07-22 21:43         ` [PATCH 1/1] Tell vim the textwidth is 75 Catalin Marinas
2005-07-22 23:07           ` Junio C Hamano
2005-07-23  8:41             ` Catalin Marinas
2005-07-23  9:30               ` Petr Baudis
2005-07-23 10:27                 ` Catalin Marinas
2005-07-23 16:33                   ` Bryan Larsen
2005-07-23 20:52                     ` Catalin Marinas
2005-07-28 19:47                   ` Petr Baudis
2005-07-29  2:24                     ` Junio C Hamano
2005-07-29  2:59                       ` Linus Torvalds
2005-07-29  9:55                     ` Catalin Marinas
2005-07-29 11:10                       ` Petr Baudis
2005-07-29 12:34                         ` Catalin Marinas
2005-07-30  2:11                         ` Junio C Hamano
2005-07-23  9:04             ` Petr Baudis
2005-07-24  1:13               ` Junio C Hamano
2005-07-22 21:00       ` Catalin Marinas
2005-07-22 20:41     ` Petr Baudis
2005-07-22 21:16       ` Junio C Hamano
2005-07-22 21:27         ` Petr Baudis
2005-07-22 23:24           ` Junio C Hamano
2005-07-22 23:50             ` Petr Baudis
2005-07-23 10:32             ` Catalin Marinas
2005-07-26  0:18             ` Updating diff-raw status letter to 'A' for added files Junio C Hamano
2005-07-26  0:20               ` [PATCH 1/2] Use symbolic constants for diff-raw status indicators Junio C Hamano
2005-07-26  0:21               ` [PATCH 2/2] diff-raw: Use 'A' instead of 'N' for added files Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vack6jbhf.fsf_-_@assigned-by-dhcp.cox.net \
    --to=junkio@cox.net \
    --cc=catalin.marinas@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=mcostalba@yahoo.it \
    --cc=pasky@suse.cz \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).