[PATCH] Teach git-ls-files about '--' to denote end of options.
Useful if you have a file whose name starts with a dash. Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
af215114f5
commit
500b97e4bb
@ -13,7 +13,7 @@ SYNOPSIS
|
||||
(-[c|d|o|i|s|u|k|m])\*
|
||||
[-x <pattern>|--exclude=<pattern>]
|
||||
[-X <file>|--exclude-from=<file>]
|
||||
[--exclude-per-directory=<file>]
|
||||
[--exclude-per-directory=<file>] [--] [<file>]\*
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -77,6 +77,13 @@ OPTIONS
|
||||
K to be killed
|
||||
? other
|
||||
|
||||
--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
||||
<file>::
|
||||
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
|
||||
|
@ -530,7 +530,7 @@ static void verify_pathspec(void)
|
||||
static const char ls_files_usage[] =
|
||||
"git-ls-files [-z] [-t] (--[cached|deleted|others|stage|unmerged|killed|modified])* "
|
||||
"[ --ignored ] [--exclude=<pattern>] [--exclude-from=<file>] "
|
||||
"[ --exclude-per-directory=<filename> ]";
|
||||
"[ --exclude-per-directory=<filename> ] [--] [<file>]*";
|
||||
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
@ -544,6 +544,10 @@ int main(int argc, const char **argv)
|
||||
for (i = 1; i < argc; i++) {
|
||||
const char *arg = argv[i];
|
||||
|
||||
if (!strcmp(arg, "--")) {
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
if (!strcmp(arg, "-z")) {
|
||||
line_terminator = 0;
|
||||
continue;
|
||||
|
69
t/t3002-ls-files-dashpath.sh
Executable file
69
t/t3002-ls-files-dashpath.sh
Executable file
@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2005 Junio C Hamano
|
||||
#
|
||||
|
||||
test_description='git-ls-files test (-- to terminate the path list).
|
||||
|
||||
This test runs git-ls-files --others with the following on the
|
||||
filesystem.
|
||||
|
||||
path0 - a file
|
||||
-foo - a file with a funny name.
|
||||
-- - another file with a funny name.
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success \
|
||||
setup \
|
||||
'echo frotz >path0 &&
|
||||
echo frotz >./-foo &&
|
||||
echo frotz >./--'
|
||||
|
||||
test_expect_success \
|
||||
'git-ls-files without path restriction.' \
|
||||
'git-ls-files --others >output &&
|
||||
diff -u output - <<EOF
|
||||
--
|
||||
-foo
|
||||
output
|
||||
path0
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'git-ls-files with path restriction.' \
|
||||
'git-ls-files --others path0 >output &&
|
||||
diff -u output - <<EOF
|
||||
path0
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'git-ls-files with path restriction with --.' \
|
||||
'git-ls-files --others -- path0 >output &&
|
||||
diff -u output - <<EOF
|
||||
path0
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'git-ls-files with path restriction with -- --.' \
|
||||
'git-ls-files --others -- -- >output &&
|
||||
diff -u output - <<EOF
|
||||
--
|
||||
EOF
|
||||
'
|
||||
|
||||
test_expect_success \
|
||||
'git-ls-files with no path restriction.' \
|
||||
'git-ls-files --others -- >output &&
|
||||
diff -u output - <<EOF
|
||||
--
|
||||
-foo
|
||||
output
|
||||
path0
|
||||
EOF
|
||||
'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user