Skip to content

Commit 3157c88

Browse files
peffgitster
authored andcommitted
sha1_file: drop free_pack_by_name
The point of this function is to drop an entry from the "packed_git" cache that points to a file we might be overwriting, because our contents may not be the same (and hence the only caller was pack-objects as it moved a temporary packfile into place). In older versions of git, this could happen because the names of packfiles were derived from the set of objects they contained, not the actual bits on disk. But since 1190a1a (pack-objects: name pack files after trailer hash, 2013-12-05), the name reflects the actual bits on disk, and any two packfiles with the same name can be used interchangeably. Dropping this function not only saves a few lines of code, it makes the lifetime of "struct packed_git" much easier to reason about: namely, we now do not ever free these structs. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 77023ea commit 3157c88

File tree

3 files changed

+0
-32
lines changed

3 files changed

+0
-32
lines changed

cache.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1410,7 +1410,6 @@ extern unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t
14101410
extern void close_pack_windows(struct packed_git *);
14111411
extern void close_all_packs(void);
14121412
extern void unuse_pack(struct pack_window **);
1413-
extern void free_pack_by_name(const char *);
14141413
extern void clear_delta_base_cache(void);
14151414
extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local);
14161415

pack-write.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,6 @@ void finish_tmp_packfile(struct strbuf *name_buffer,
354354
die_errno("unable to make temporary index file readable");
355355

356356
strbuf_addf(name_buffer, "%s.pack", sha1_to_hex(sha1));
357-
free_pack_by_name(name_buffer->buf);
358357

359358
if (rename(pack_tmp_name, name_buffer->buf))
360359
die_errno("unable to rename temporary pack file");

sha1_file.c

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -891,36 +891,6 @@ void close_pack_index(struct packed_git *p)
891891
}
892892
}
893893

894-
/*
895-
* This is used by git-repack in case a newly created pack happens to
896-
* contain the same set of objects as an existing one. In that case
897-
* the resulting file might be different even if its name would be the
898-
* same. It is best to close any reference to the old pack before it is
899-
* replaced on disk. Of course no index pointers or windows for given pack
900-
* must subsist at this point. If ever objects from this pack are requested
901-
* again, the new version of the pack will be reinitialized through
902-
* reprepare_packed_git().
903-
*/
904-
void free_pack_by_name(const char *pack_name)
905-
{
906-
struct packed_git *p, **pp = &packed_git;
907-
908-
while (*pp) {
909-
p = *pp;
910-
if (strcmp(pack_name, p->pack_name) == 0) {
911-
clear_delta_base_cache();
912-
close_pack(p);
913-
free(p->bad_object_sha1);
914-
*pp = p->next;
915-
if (last_found_pack == p)
916-
last_found_pack = NULL;
917-
free(p);
918-
return;
919-
}
920-
pp = &p->next;
921-
}
922-
}
923-
924894
static unsigned int get_max_fd_limit(void)
925895
{
926896
#ifdef RLIMIT_NOFILE

0 commit comments

Comments
 (0)