summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCsaba Henk <csaba@gluster.com>2010-08-27 20:31:47 +0000
committerJunio C Hamano <gitster@pobox.com>2010-08-27 16:46:26 -0700
commit0f5cdf653b8be5b8fad3fb2a3eaecfb9da80d215 (patch)
tree8352d2f05f1786546bd2bec9515e4b792e84ee67
parent64fdc08dac6694d1e754580e7acb82dfa4988bb9 (diff)
downloadgit-0f5cdf653b8be5b8fad3fb2a3eaecfb9da80d215.tar.gz
bundle: detect if bundle file cannot be created
bundle command silently died with no sign of failure if it could not create the bundle file. (Eg.: its path resovles to a directory, or the parent dir is sticky while file already exists and is owned by someone else.) Signed-off-by: Csaba Henk <csaba@gluster.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--bundle.c6
-rwxr-xr-xt/t5704-bundle.sh7
2 files changed, 11 insertions, 2 deletions
diff --git a/bundle.c b/bundle.c
index ff97adcb89..65ea26bdb8 100644
--- a/bundle.c
+++ b/bundle.c
@@ -372,8 +372,10 @@ int create_bundle(struct bundle_header *header, const char *path,
close(rls.in);
if (finish_command(&rls))
return error ("pack-objects died");
- if (!bundle_to_stdout)
- commit_lock_file(&lock);
+ if (!bundle_to_stdout) {
+ if (commit_lock_file(&lock))
+ die_errno("cannot create '%s'", path);
+ }
return 0;
}
diff --git a/t/t5704-bundle.sh b/t/t5704-bundle.sh
index ddc3dc52f4..728ccd88c3 100755
--- a/t/t5704-bundle.sh
+++ b/t/t5704-bundle.sh
@@ -30,6 +30,13 @@ test_expect_success 'tags can be excluded by rev-list options' '
'
+test_expect_success 'die if bundle file cannot be created' '
+
+ mkdir adir &&
+ test_must_fail git bundle create adir --all
+
+'
+
test_expect_failure 'bundle --stdin' '
echo master | git bundle create stdin-bundle.bdl --stdin &&