Fix 'git hash-object --stdin -w' to actually write the object, just as
'git hash-object -w --stdin' does.
Reported by Josh Triplett through
http://bugs.debian.org/464432
Signed-off-by: Gerrit Pape <redacted>
---
hash-object.c | 8 +++++---
t/t5303-hash-object.sh | 19 +++++++++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
create mode 100755 t/t5303-hash-object.sh
diff --git a/hash-object.c b/hash-object.c
index 0a58f3f..ff60f0f 100644
--- a/hash-object.c
+++ b/hash-object.c
@@ -41,6 +41,7 @@ int main(int argc, char **argv)
const char *prefix = NULL;
int prefix_length = -1;
int no_more_flags = 0;
+ int hashstdin = 0;
git_config(git_default_config);
@@ -64,9 +65,8 @@ int main(int argc, char **argv)
}
else if (!strcmp(argv[i], "--help"))
usage(hash_object_usage);
- else if (!strcmp(argv[i], "--stdin")) {
- hash_stdin(type, write_object);
- }
+ else if (!strcmp(argv[i], "--stdin"))
+ hashstdin = 1;
else
usage(hash_object_usage);
}@@ -79,5 +79,7 @@ int main(int argc, char **argv)
no_more_flags = 1;
}
}
+ if (hashstdin)
+ hash_stdin(type, write_object);
return 0;
}
diff --git a/t/t5303-hash-object.sh b/t/t5303-hash-object.sh
new file mode 100755
index 0000000..23dcfcb
--- /dev/null
+++ b/t/t5303-hash-object.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+test_description=git-hash-object
+
+. ./test-lib.sh
+
+test_expect_success \
+ 'git hash-object -w --stdin saves the object' \
+ 'echo foo | git hash-object -w --stdin &&
+ test -r .git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99 &&
+ rm -f .git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99'
+
+test_expect_success \
+ 'git hash-object --stdin -w saves the object' \
+ 'echo foo | git hash-object --stdin -w &&
+ test -r .git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99 &&
+ rm -f .git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99'
+
+test_done
--
1.5.4.1