hash-object: support --stdin-paths with --no-filters
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Acked-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
be2fb164ec
commit
a9f979093d
@ -10,7 +10,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git hash-object' [-t <type>] [-w] [--path=<file>|--no-filters] [--stdin] [--] <file>...
|
'git hash-object' [-t <type>] [-w] [--path=<file>|--no-filters] [--stdin] [--] <file>...
|
||||||
'git hash-object' [-t <type>] [-w] --stdin-paths < <list-of-paths>
|
'git hash-object' [-t <type>] [-w] --stdin-paths [--no-filters] < <list-of-paths>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -33,6 +33,8 @@ static void hash_object(const char *path, const char *type, int write_object,
|
|||||||
hash_fd(fd, type, write_object, vpath);
|
hash_fd(fd, type, write_object, vpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int no_filters;
|
||||||
|
|
||||||
static void hash_stdin_paths(const char *type, int write_objects)
|
static void hash_stdin_paths(const char *type, int write_objects)
|
||||||
{
|
{
|
||||||
struct strbuf buf = STRBUF_INIT, nbuf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT, nbuf = STRBUF_INIT;
|
||||||
@ -44,7 +46,8 @@ static void hash_stdin_paths(const char *type, int write_objects)
|
|||||||
die("line is badly quoted");
|
die("line is badly quoted");
|
||||||
strbuf_swap(&buf, &nbuf);
|
strbuf_swap(&buf, &nbuf);
|
||||||
}
|
}
|
||||||
hash_object(buf.buf, type, write_objects, buf.buf);
|
hash_object(buf.buf, type, write_objects,
|
||||||
|
no_filters ? NULL : buf.buf);
|
||||||
}
|
}
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
strbuf_release(&nbuf);
|
strbuf_release(&nbuf);
|
||||||
@ -60,7 +63,6 @@ static const char *type;
|
|||||||
static int write_object;
|
static int write_object;
|
||||||
static int hashstdin;
|
static int hashstdin;
|
||||||
static int stdin_paths;
|
static int stdin_paths;
|
||||||
static int no_filters;
|
|
||||||
static const char *vpath;
|
static const char *vpath;
|
||||||
|
|
||||||
static const struct option hash_object_options[] = {
|
static const struct option hash_object_options[] = {
|
||||||
@ -100,8 +102,6 @@ int cmd_hash_object(int argc, const char **argv, const char *prefix)
|
|||||||
errstr = "Can't specify files with --stdin-paths";
|
errstr = "Can't specify files with --stdin-paths";
|
||||||
else if (vpath)
|
else if (vpath)
|
||||||
errstr = "Can't use --stdin-paths with --path";
|
errstr = "Can't use --stdin-paths with --path";
|
||||||
else if (no_filters)
|
|
||||||
errstr = "Can't use --stdin-paths with --no-filters";
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (hashstdin > 1)
|
if (hashstdin > 1)
|
||||||
|
@ -65,10 +65,6 @@ test_expect_success "Can't use --path with --stdin-paths" '
|
|||||||
echo example | test_must_fail git hash-object --stdin-paths --path=foo
|
echo example | test_must_fail git hash-object --stdin-paths --path=foo
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "Can't use --stdin-paths with --no-filters" '
|
|
||||||
echo example | test_must_fail git hash-object --stdin-paths --no-filters
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success "Can't use --path with --no-filters" '
|
test_expect_success "Can't use --path with --no-filters" '
|
||||||
test_must_fail git hash-object --no-filters --path=foo
|
test_must_fail git hash-object --no-filters --path=foo
|
||||||
'
|
'
|
||||||
@ -141,6 +137,20 @@ test_expect_success 'check that --no-filters option works' '
|
|||||||
git config --unset core.autocrlf
|
git config --unset core.autocrlf
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'check that --no-filters option works with --stdin-paths' '
|
||||||
|
echo fooQ | tr Q "\\015" >file0 &&
|
||||||
|
cp file0 file1 &&
|
||||||
|
echo "file0 -crlf" >.gitattributes &&
|
||||||
|
echo "file1 crlf" >>.gitattributes &&
|
||||||
|
git config core.autocrlf true &&
|
||||||
|
file0_sha=$(git hash-object file0) &&
|
||||||
|
file1_sha=$(git hash-object file1) &&
|
||||||
|
test "$file0_sha" != "$file1_sha" &&
|
||||||
|
nofilters_file1=$(echo "file1" | git hash-object --stdin-paths --no-filters) &&
|
||||||
|
test "$file0_sha" = "$nofilters_file1" &&
|
||||||
|
git config --unset core.autocrlf
|
||||||
|
'
|
||||||
|
|
||||||
pop_repo
|
pop_repo
|
||||||
|
|
||||||
for args in "-w --stdin" "--stdin -w"; do
|
for args in "-w --stdin" "--stdin -w"; do
|
||||||
|
Loading…
Reference in New Issue
Block a user