[PATCH v2 1/1] bundle: cleanup lock files on error
- From
- Gaël Lhez via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Nov 14, 2018, 15:25 UTC
- Message-ID
- <c88887f05a145709be9e86d56f4c1e620eb5ea89.1542209112.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.79.v2.git.gitgitgadget@gmail.com>
From: =?UTF-8?q?Ga=C3=ABl=20Lhez?= <gael.lhez@gmail.com>
When an user tries to create an empty bundle via `git bundle create <bundle> <revlist>` where `<revlist>` resolves to an empty list (for example, like `master..master`), the command fails and warns the user about how it does not want to create empty bundle.
However, the `.lock` file was still open and on Windows that means that it could not be deleted properly. This patch fixes that issue.
This closes https://github.com/git-for-windows/git/issues/790
Signed-off-by: Gaël Lhez <gael.lhez@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- bundle.c | 7 ++++--- t/t5607-clone-bundle.sh | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/bundle.c b/bundle.c index 1ef584b93b..4e349feff9 100644 --- a/bundle.c +++ b/bundle.c @@ -457,10 +457,11 @@ int create_bundle(struct bundle_header *header, const char *path, object_array_remove_duplicates(&revs.pending); ref_count = write_bundle_refs(bundle_fd, &revs); - if (!ref_count) - die(_("Refusing to create empty bundle.")); - else if (ref_count < 0) + if (ref_count <= 0) { + if (!ref_count) + error(_("Refusing to create empty bundle.")); goto err; + } /* write pack */ if (write_pack_data(bundle_fd, &revs)) { diff --git a/t/t5607-clone-bundle.sh b/t/t5607-clone-bundle.sh index 348d9b3bc7..f84b875950 100755 --- a/t/t5607-clone-bundle.sh +++ b/t/t5607-clone-bundle.sh @@ -71,4 +71,8 @@ test_expect_success 'prerequisites with an empty commit message' ' git bundle verify bundle ' +test_expect_success 'try to create a bundle with empty ref count' ' + test_expect_code 1 git bundle create foobar.bundle master..master +' + test_done
-- gitgitgadget