path: root/Documentation/git-checkout-index.txt
diff options
authorShawn Pearce <>2006-03-01 02:43:33 (GMT)
committerJunio C Hamano <>2006-03-01 09:15:31 (GMT)
commit9debe63d10e476b96ff550d550df344a68b240e8 (patch)
tree2a4366f0983c0df1436def2bb7ab530b39df1aa0 /Documentation/git-checkout-index.txt
parent858cbfbabe4ede5f5eba32041eb7448319e53e2a (diff)
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 <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-checkout-index.txt')
1 files changed, 18 insertions, 2 deletions
diff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt
index 2a1e526..b0b6588 100644
--- a/Documentation/git-checkout-index.txt
+++ b/Documentation/git-checkout-index.txt
@@ -10,7 +10,9 @@ SYNOPSIS
'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
- [--stage=<number>] [--] <file>...
+ [--stage=<number>]
+ [-z] [--stdin]
+ [--] [<file>]\*
@@ -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.
+ 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.
+ 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`.