Commit db535d0a7dfa3e5c2ded4a408234623b0241de00

lhchavez 2017-01-01T12:45:02

Delete temporary packfile in indexer This change deletes the temporary packfile that the indexer creates to avoid littering the pack/ directory with garbage.

diff --git a/src/indexer.c b/src/indexer.c
index a3a8669..27f4947 100644
--- a/src/indexer.c
+++ b/src/indexer.c
@@ -151,6 +151,12 @@ cleanup:
 	if (fd != -1)
 		p_close(fd);
 
+	if (git_buf_is_allocated(&tmp_path))
+		(void)p_unlink(git_buf_cstr(&tmp_path));
+
+	if (idx->pack != NULL)
+		(void)p_unlink(idx->pack->pack_name);
+
 	git_buf_free(&path);
 	git_buf_free(&tmp_path);
 	git__free(idx);
@@ -1084,6 +1090,9 @@ void git_indexer_free(git_indexer *idx)
 
 	git_vector_free_deep(&idx->deltas);
 
+	/* Try to delete the temporary file in case it was not committed. */
+	(void)p_unlink(idx->pack->pack_name);
+
 	if (!git_mutex_lock(&git__mwindow_mutex)) {
 		git_packfile_free(idx->pack);
 		git_mutex_unlock(&git__mwindow_mutex);