Code

has_sha1_pack(): refactor "pretend these packs do not exist" interface
authorJunio C Hamano <gitster@pobox.com>
Sat, 28 Feb 2009 07:15:53 +0000 (23:15 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 28 Feb 2009 09:06:06 +0000 (01:06 -0800)
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>
builtin-count-objects.c
builtin-fsck.c
builtin-prune-packed.c
cache.h
diff.c
revision.c
sha1_file.c

index 91b5487478998e39bb8ae4a5cb667360cff82c9a..c095e8dd2bc6ce93df39e9f6dbffb73ae8534491 100644 (file)
@@ -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)++;
        }
 }
index 30971ce0ad170350cc6aaa2d213d348c267263db..491375dc59310ad996f280cb1b0c398154f508a4 100644 (file)
@@ -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;
index 10cb8df8457fd5f2ba9be62ecd0f9384e21c3e63..2d5b2cd353a5e80a74e3828aae8e0c7dfa0e1997 100644 (file)
@@ -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)
diff --git a/cache.h b/cache.h
index 42f2f2754b93ff9d93883529778190d35a8ea43a..c1539bf89a620cf8b86ca9cef37238e9df18144f 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -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);
 
diff --git a/diff.c b/diff.c
index f91f256c56e5e4be0b3f162695e1d35e63124569..a34d26c23f2f8e7bc3acb27a4596931fa0a7a7f9 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -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);
index 45fd7a366055d254529c53b21a06c6340427fa49..746eeed972794e7ad50fcc097afd3bf280674e5a 100644 (file)
@@ -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;
index 88035a0cd19d040c8b626684c3ff1f7fdb35e837..ac4375d298eb12602e35337f378fd22278695f7d 100644 (file)
@@ -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;
@@ -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)
 {
@@ -1975,7 +1987,7 @@ 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)
@@ -1983,7 +1995,7 @@ int sha1_object_info(const unsigned char *sha1, unsigned long *sizep)
 
                /* 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);
@@ -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) {
@@ -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);
 }