diff options
author | Shawn Pearce <spearce@spearce.org> | 2006-02-28 21:43:33 -0500 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-03-01 01:15:31 -0800 |
commit | 9debe63d10e476b96ff550d550df344a68b240e8 (patch) | |
tree | 2a4366f0983c0df1436def2bb7ab530b39df1aa0 /Documentation/git-checkout-index.txt | |
parent | 858cbfbabe4ede5f5eba32041eb7448319e53e2a (diff) | |
download | git-9debe63d10e476b96ff550d550df344a68b240e8.tar.gz |
Teach git-checkout-index to read filenames from stdin.
Since git-checkout-index is often used from scripts which
may have a stream of filenames they wish to checkout it is
more convenient to use --stdin than xargs. On platforms
where fork performance is currently sub-optimal and
the length of a command line is limited (*cough* Cygwin
*cough*) running a single git-checkout-index process for
a large number of files beats spawning it multiple times
from xargs.
File names are still accepted on the command line if
--stdin is not supplied. Nothing is performed if no files
are supplied on the command line or by stdin.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'Documentation/git-checkout-index.txt')
-rw-r--r-- | Documentation/git-checkout-index.txt | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt index 2a1e526c6a..b0b65889ac 100644 --- a/Documentation/git-checkout-index.txt +++ b/Documentation/git-checkout-index.txt @@ -10,7 +10,9 @@ SYNOPSIS -------- [verse] 'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>] - [--stage=<number>] [--] <file>... + [--stage=<number>] + [-z] [--stdin] + [--] [<file>]\* DESCRIPTION ----------- @@ -45,6 +47,15 @@ OPTIONS Instead of checking out unmerged entries, copy out the files from named stage. <number> must be between 1 and 3. +--stdin:: + Instead of taking list of paths from the command line, + read list of paths from the standard input. Paths are + separated by LF (i.e. one path per line) by default. + +-z:: + Only meaningful with `--stdin`; paths are separated with + NUL character instead of LF. + --:: Do not interpret any more arguments as options. @@ -64,7 +75,12 @@ $ find . -name '*.h' -print0 | xargs -0 git-checkout-index -f -- which will force all existing `*.h` files to be replaced with their cached copies. If an empty command line implied "all", then this would -force-refresh everything in the index, which was not the point. +force-refresh everything in the index, which was not the point. But +since git-checkout-index accepts --stdin it would be faster to use: + +---------------- +$ find . -name '*.h' -print0 | git-checkout-index -f -z --stdin +---------------- The `--` is just a good idea when you know the rest will be filenames; it will prevent problems with a filename of, for example, `-a`. |