Commit c7b79af3 by Vicent Marti

pack-odb: Check `mtime` instead of folder size

Do not check the folder's size to detect new packfiles at runtime. This
doesn't work on Win32.
parent 7c37aa3a
...@@ -113,7 +113,7 @@ struct pack_backend { ...@@ -113,7 +113,7 @@ struct pack_backend {
git_vector packs; git_vector packs;
struct pack_file *last_found; struct pack_file *last_found;
char *pack_folder; char *pack_folder;
size_t pack_folder_size; time_t pack_folder_mtime;
size_t window_size; /* needs default value */ size_t window_size; /* needs default value */
...@@ -874,7 +874,7 @@ static int packfile_refresh_all(struct pack_backend *backend) ...@@ -874,7 +874,7 @@ static int packfile_refresh_all(struct pack_backend *backend)
if (gitfo_stat(backend->pack_folder, &st) < 0 || !S_ISDIR(st.st_mode)) if (gitfo_stat(backend->pack_folder, &st) < 0 || !S_ISDIR(st.st_mode))
return GIT_ENOTFOUND; return GIT_ENOTFOUND;
if ((size_t)st.st_size != backend->pack_folder_size) { if (st.st_mtime != backend->pack_folder_mtime) {
char path[GIT_PATH_MAX]; char path[GIT_PATH_MAX];
strcpy(path, backend->pack_folder); strcpy(path, backend->pack_folder);
...@@ -884,7 +884,7 @@ static int packfile_refresh_all(struct pack_backend *backend) ...@@ -884,7 +884,7 @@ static int packfile_refresh_all(struct pack_backend *backend)
return error; return error;
git_vector_sort(&backend->packs); git_vector_sort(&backend->packs);
backend->pack_folder_size = (size_t)st.st_size; backend->pack_folder_mtime = st.st_mtime;
} }
return GIT_SUCCESS; return GIT_SUCCESS;
...@@ -1408,7 +1408,7 @@ int git_odb_backend_pack(git_odb_backend **backend_out, const char *objects_dir) ...@@ -1408,7 +1408,7 @@ int git_odb_backend_pack(git_odb_backend **backend_out, const char *objects_dir)
git__joinpath(path, objects_dir, "pack"); git__joinpath(path, objects_dir, "pack");
if (gitfo_isdir(path) == GIT_SUCCESS) { if (gitfo_isdir(path) == GIT_SUCCESS) {
backend->pack_folder = git__strdup(path); backend->pack_folder = git__strdup(path);
backend->pack_folder_size = 0; backend->pack_folder_mtime = 0;
if (backend->pack_folder == NULL) { if (backend->pack_folder == NULL) {
free(backend); free(backend);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment