X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=sha1_file.c;h=7fdc46969d718096f6492f08489ae20b9693c64b;hb=b5c367f75c2990650119749a1add5216871ca47a;hp=f0590049098b5371bc72855acc5736f9d5f61e2b;hpb=d06b689a933f6d2130f8afdf1ac0ddb83eeb59ab;p=git.git diff --git a/sha1_file.c b/sha1_file.c index f0590049..7fdc4696 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -416,7 +416,7 @@ int use_packed_git(struct packed_git *p) return 0; } -struct packed_git *add_packed_git(char *path, int path_len) +struct packed_git *add_packed_git(char *path, int path_len, int local) { struct stat st; struct packed_git *p; @@ -444,6 +444,7 @@ struct packed_git *add_packed_git(char *path, int path_len) p->pack_base = NULL; p->pack_last_used = 0; p->pack_use_cnt = 0; + p->pack_local = local; return p; } @@ -484,7 +485,7 @@ void install_packed_git(struct packed_git *pack) packed_git = pack; } -static void prepare_packed_git_one(char *objdir) +static void prepare_packed_git_one(char *objdir, int local) { char path[PATH_MAX]; int len; @@ -506,7 +507,7 @@ static void prepare_packed_git_one(char *objdir) /* we have .idx. Is it a file we can map? */ strcpy(path + len, de->d_name); - p = add_packed_git(path, len + namelen); + p = add_packed_git(path, len + namelen, local); if (!p) continue; p->next = packed_git; @@ -522,11 +523,11 @@ void prepare_packed_git(void) if (run_once) return; - prepare_packed_git_one(get_object_directory()); + prepare_packed_git_one(get_object_directory(), 1); prepare_alt_odb(); for (alt = alt_odb_list; alt; alt = alt->next) { alt->name[0] = 0; - prepare_packed_git_one(alt->base); + prepare_packed_git_one(alt->base, 0); } run_once = 1; } @@ -1238,11 +1239,14 @@ int move_temp_to_file(const char *tmpfile, char *filename) * won't be able to check collisions, but that's not a * big deal. * + * The same holds for FAT formatted media. + * * When this succeeds, we just return 0. We have nothing * left to unlink. */ - if (ret == EXDEV && !rename(tmpfile, filename)) + if ((ret == EXDEV || ret == ENOTSUP) && !rename(tmpfile, filename)) return 0; + ret = errno; } unlink(tmpfile); if (ret) {