Skip to content
/ git Public
forked from git/git

Commit

Permalink
has_sha1_pack(): refactor "pretend these packs do not exist" interface
Browse files Browse the repository at this point in the history
Most of the callers of this function except only one pass NULL to its last
parameter, ignore_packed.

Introduce has_sha1_kept_pack() function that has the function signature
and the semantics of this function, and convert the sole caller that does
not pass NULL to call this new function.

All other callers and has_sha1_pack() lose the ignore_packed parameter.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
gitster committed Feb 28, 2009
1 parent 2478dc8 commit cd673c1
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 13 deletions.
2 changes: 1 addition & 1 deletion builtin-count-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ static void count_objects(DIR *d, char *path, int len, int verbose,
hex[40] = 0;
if (get_sha1_hex(hex, sha1))
die("internal error");
if (has_sha1_pack(sha1, NULL))
if (has_sha1_pack(sha1))
(*packed_loose)++;
}
}
Expand Down
2 changes: 1 addition & 1 deletion builtin-fsck.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ static void check_reachable_object(struct object *obj)
* do a full fsck
*/
if (!obj->parsed) {
if (has_sha1_pack(obj->sha1, NULL))
if (has_sha1_pack(obj->sha1))
return; /* it is in pack - forget about it */
printf("missing %s %s\n", typename(obj->type), sha1_to_hex(obj->sha1));
errors_found |= ERROR_REACHABLE;
Expand Down
2 changes: 1 addition & 1 deletion builtin-prune-packed.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ static void prune_dir(int i, DIR *dir, char *pathname, int len, int opts)
memcpy(hex+2, de->d_name, 38);
if (get_sha1_hex(hex, sha1))
continue;
if (!has_sha1_pack(sha1, NULL))
if (!has_sha1_pack(sha1))
continue;
memcpy(pathname + len, de->d_name, 38);
if (opts & DRY_RUN)
Expand Down
3 changes: 2 additions & 1 deletion cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,8 @@ extern int check_sha1_signature(const unsigned char *sha1, void *buf, unsigned l

extern int move_temp_to_file(const char *tmpfile, const char *filename);

extern int has_sha1_pack(const unsigned char *sha1, const char **ignore);
extern int has_sha1_pack(const unsigned char *sha1);
extern int has_sha1_kept_pack(const unsigned char *sha1, const char **ignore);
extern int has_sha1_file(const unsigned char *sha1);
extern int has_loose_object_nonlocal(const unsigned char *sha1);

Expand Down
2 changes: 1 addition & 1 deletion diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -1743,7 +1743,7 @@ static int reuse_worktree_file(const char *name, const unsigned char *sha1, int
* objects however would tend to be slower as they need
* to be individually opened and inflated.
*/
if (!FAST_WORKING_DIRECTORY && !want_file && has_sha1_pack(sha1, NULL))
if (!FAST_WORKING_DIRECTORY && !want_file && has_sha1_pack(sha1))
return 0;

len = strlen(name);
Expand Down
3 changes: 2 additions & 1 deletion revision.c
Original file line number Diff line number Diff line change
Expand Up @@ -1485,7 +1485,8 @@ enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit)
{
if (commit->object.flags & SHOWN)
return commit_ignore;
if (revs->unpacked && has_sha1_pack(commit->object.sha1, revs->ignore_packed))
if (revs->unpacked &&
has_sha1_kept_pack(commit->object.sha1, revs->ignore_packed))
return commit_ignore;
if (revs->show_all)
return commit_show;
Expand Down
32 changes: 25 additions & 7 deletions sha1_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -1874,7 +1874,8 @@ int matches_pack_name(struct packed_git *p, const char *name)
return 0;
}

static int find_pack_entry(const unsigned char *sha1, struct pack_entry *e, const char **ignore_packed)
static int find_pack_ent(const unsigned char *sha1, struct pack_entry *e,
const char **ignore_packed)
{
static struct packed_git *last_found = (void *)1;
struct packed_git *p;
Expand Down Expand Up @@ -1934,6 +1935,17 @@ static int find_pack_entry(const unsigned char *sha1, struct pack_entry *e, cons
return 0;
}

static int find_pack_entry(const unsigned char *sha1, struct pack_entry *e)
{
return find_pack_ent(sha1, e, NULL);
}

static int find_kept_pack_entry(const unsigned char *sha1, struct pack_entry *e,
const char **ignore_packed)
{
return find_pack_ent(sha1, e, ignore_packed);
}

struct packed_git *find_sha1_pack(const unsigned char *sha1,
struct packed_git *packs)
{
Expand Down Expand Up @@ -1975,15 +1987,15 @@ int sha1_object_info(const unsigned char *sha1, unsigned long *sizep)
struct pack_entry e;
int status;

if (!find_pack_entry(sha1, &e, NULL)) {
if (!find_pack_entry(sha1, &e)) {
/* Most likely it's a loose object. */
status = sha1_loose_object_info(sha1, sizep);
if (status >= 0)
return status;

/* Not a loose object; someone else may have just packed it. */
reprepare_packed_git();
if (!find_pack_entry(sha1, &e, NULL))
if (!find_pack_entry(sha1, &e))
return status;
}
return packed_object_info(e.p, e.offset, sizep);
Expand All @@ -1995,7 +2007,7 @@ static void *read_packed_sha1(const unsigned char *sha1,
struct pack_entry e;
void *data;

if (!find_pack_entry(sha1, &e, NULL))
if (!find_pack_entry(sha1, &e))
return NULL;
data = cache_or_unpack_entry(e.p, e.offset, size, type, 1);
if (!data) {
Expand Down Expand Up @@ -2395,17 +2407,23 @@ int has_pack_file(const unsigned char *sha1)
return 1;
}

int has_sha1_pack(const unsigned char *sha1, const char **ignore_packed)
int has_sha1_pack(const unsigned char *sha1)
{
struct pack_entry e;
return find_pack_entry(sha1, &e);
}

int has_sha1_kept_pack(const unsigned char *sha1, const char **ignore_packed)
{
struct pack_entry e;
return find_pack_entry(sha1, &e, ignore_packed);
return find_kept_pack_entry(sha1, &e, ignore_packed);
}

int has_sha1_file(const unsigned char *sha1)
{
struct pack_entry e;

if (find_pack_entry(sha1, &e, NULL))
if (find_pack_entry(sha1, &e))
return 1;
return has_loose_object(sha1);
}
Expand Down

0 comments on commit cd673c1

Please sign in to comment.