зеркало из https://github.com/microsoft/git.git
Merge branch 'gp/hash-stdin'
* gp/hash-stdin: hash-object: cleanup handling of command line options
This commit is contained in:
Коммит
b82b096b8c
|
@ -41,6 +41,7 @@ int main(int argc, char **argv)
|
||||||
const char *prefix = NULL;
|
const char *prefix = NULL;
|
||||||
int prefix_length = -1;
|
int prefix_length = -1;
|
||||||
int no_more_flags = 0;
|
int no_more_flags = 0;
|
||||||
|
int hashstdin = 0;
|
||||||
|
|
||||||
git_config(git_default_config);
|
git_config(git_default_config);
|
||||||
|
|
||||||
|
@ -65,13 +66,20 @@ int main(int argc, char **argv)
|
||||||
else if (!strcmp(argv[i], "--help"))
|
else if (!strcmp(argv[i], "--help"))
|
||||||
usage(hash_object_usage);
|
usage(hash_object_usage);
|
||||||
else if (!strcmp(argv[i], "--stdin")) {
|
else if (!strcmp(argv[i], "--stdin")) {
|
||||||
hash_stdin(type, write_object);
|
if (hashstdin)
|
||||||
|
die("Multiple --stdin arguments are not supported");
|
||||||
|
hashstdin = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
usage(hash_object_usage);
|
usage(hash_object_usage);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const char *arg = argv[i];
|
const char *arg = argv[i];
|
||||||
|
|
||||||
|
if (hashstdin) {
|
||||||
|
hash_stdin(type, write_object);
|
||||||
|
hashstdin = 0;
|
||||||
|
}
|
||||||
if (0 <= prefix_length)
|
if (0 <= prefix_length)
|
||||||
arg = prefix_filename(prefix, prefix_length,
|
arg = prefix_filename(prefix, prefix_length,
|
||||||
arg);
|
arg);
|
||||||
|
@ -79,5 +87,7 @@ int main(int argc, char **argv)
|
||||||
no_more_flags = 1;
|
no_more_flags = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (hashstdin)
|
||||||
|
hash_stdin(type, write_object);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description=git-hash-object
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'git hash-object -w --stdin saves the object' \
|
||||||
|
'obname=$(echo foo | git hash-object -w --stdin) &&
|
||||||
|
obpath=$(echo $obname | sed -e "s/\(..\)/\1\//") &&
|
||||||
|
test -r .git/objects/"$obpath" &&
|
||||||
|
rm -f .git/objects/"$obpath"'
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'git hash-object --stdin -w saves the object' \
|
||||||
|
'obname=$(echo foo | git hash-object --stdin -w) &&
|
||||||
|
obpath=$(echo $obname | sed -e "s/\(..\)/\1\//") &&
|
||||||
|
test -r .git/objects/"$obpath" &&
|
||||||
|
rm -f .git/objects/"$obpath"'
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'git hash-object --stdin file1 <file0 first operates on file0, then file1' \
|
||||||
|
'echo foo > file1 &&
|
||||||
|
obname0=$(echo bar | git hash-object --stdin) &&
|
||||||
|
obname1=$(git hash-object file1) &&
|
||||||
|
obname0new=$(echo bar | git hash-object --stdin file1 | sed -n -e 1p) &&
|
||||||
|
obname1new=$(echo bar | git hash-object --stdin file1 | sed -n -e 2p) &&
|
||||||
|
test "$obname0" = "$obname0new" &&
|
||||||
|
test "$obname1" = "$obname1new"'
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'git hash-object refuses multiple --stdin arguments' \
|
||||||
|
'! git hash-object --stdin --stdin < file1'
|
||||||
|
|
||||||
|
test_done
|
Загрузка…
Ссылка в новой задаче