git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] update cg-Xignore
@ 2005-05-13 22:31 David Greaves
  0 siblings, 0 replies; only message in thread
From: David Greaves @ 2005-05-13 22:31 UTC (permalink / raw)
  To: Petr Baudis; +Cc: GIT Mailing Lists

Update Documentation to Jonas' style
Add -0 to allow null terminated lines (slightly buggy)
Add -t to cope with git-ls-files -t output

Signed-off-by: David Greaves <david@dgreaves.com>

---
commit 2fca920e6d3ccb92e9782bcf02f860b8333e23d9
tree d2490ad0bc8b38647c6baff9da3e72c0f25e9f35
parent fbb4054b80189c58f0b289dc34320f2b2de56d24
author David Greaves <david@dgreaves.com> Fri, 13 May 2005 23:17:18 +0100
committer David Greaves <david@ash.(none)> Fri, 13 May 2005 23:17:18 +0100

 cg-Xignore |   57 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 41 insertions(+), 16 deletions(-)

Index: cg-Xignore
===================================================================
--- 9a39ca9b1e7dd28ddb4a1908ccb59787f432d752/cg-Xignore  (mode:100755)
+++ d2490ad0bc8b38647c6baff9da3e72c0f25e9f35/cg-Xignore  (mode:100755)
@@ -1,14 +1,20 @@
 #!/usr/bin/env bash
 #
-# Takes a list of files on stdin and only passes valid ones agording to .git/ignore
+# Takes a list of files on stdin and only passes valid ones according to .git/ignore
 # Copyright (c) David Greaves, 2005
 #
+# DESCRIPTION
+# -----------
 # This filter implements cogito ignore rules and should typically be used in find pipelines
 #
-# Synopsis
-# cg-Xignore [-debug] [-f] [-h] [-d] < file-list >useful-file-list
 #
-# Options
+# OPTIONS
+# -------
+# -0::
+#     processes null terminated lines
+#     this is buggy and uses \n internally so any files with a \n
+#     in will break it. Tough - don't use shell scripts.
+#
 # -debug::
 #     produce helpful debug output
 #
@@ -24,18 +30,26 @@
 # -h::
 #     passes symbolic links
 #
-# The default is to pass all file types that are not ignored.
+# -t::
+#     cope with files preceded by a 'tag'. eg from git-ls-files -t
+#
+# The default is to pass all file types.
 #
 # Note that the .git/ignore file contains multiple expressions, 1 per line
 # Lines beginning with a '#' are ignored (allowing comments)
 # These are 'bash regular expressions' not glob patterns
 # This allows ignore rules to take the directory into account
-# Suggested contents:
+#
+# Example .git/ignore
+# -------------------
+#
 #   # bash regexps (not globs)
 #   ^\.[^/]
 #   /\.
 #   /$
 #   .*\.o$
+#
+USAGE="cg-Xignore [-0] [-debug] [-q] [-f] [-h] [-d] [-t] < file-list >useful-file-list"
 
 
 # This doesn't allow the -h which is the [ arg for symlinks...
@@ -44,19 +58,22 @@
 
 IGNORE_FILE="$_git/ignore"
 
-if [ "$1" = "-0" ]; then
-    # doesn't work :(
-    zerosep=$'-d "\0"'
-    shift
-fi
 
 # Defaults
 pass_files=0
 pass_dirs=0
 pass_links=0
 pass_all=1
+stripzero='cat'
+rezero='cat'
 while [ $# -gt 0 ]; do
     case $1 in
+	"-0")
+            # doesn't work :(
+	    #zerosep=$'-d \0'
+	    stripzero='tr "\000" "\n"'
+	    rezero='tr "\n" "\000"'
+	    ;;
 	"-f")
 	    pass_all=0
 	    pass_files=1
@@ -75,6 +92,9 @@
 	"-debug")
 	    debug=1
 	    ;;
+	"-t")
+	    tagged=1
+	    ;;
 	esac
     shift
 done
@@ -92,10 +112,15 @@
     exec 4>/dev/null
 fi
 
-
 # Strip out the common leading ./ allowing "find ."
-sed 's:^./::' | \
+$stripzero | sed "s:^./::" | \
 while read $zerosep file; do
+    tag=""
+    if [ $tagged ]; then
+	tag=${file% *}
+	fname=${file#* }
+	file=$fname
+    fi
     echo "consider file: $file" >&4
     ignore=0
     if [ -f $IGNORE_FILE ]; then
@@ -112,7 +137,6 @@
 	    fi
 	done
     fi
-    echo "passing file: $file" >&4
     
     if [ $ignore != "1" \
 	-a \( $pass_all -eq 1 \
@@ -121,6 +145,7 @@
 	   -o \( $pass_links -eq 1 -a -h "$file" \) \
 	   \) \
 	]; then
-	echo "$file"
+	echo "passing file: $file" >&4
+	echo "$tag$file"
     fi
-done
+done | $rezero

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-05-13 22:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-13 22:31 [PATCH 1/2] update cg-Xignore David Greaves

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).