#include "tree.h"
#include "blob.h"
#include "tag.h"
-#include "delta.h"
#define REACHABLE 0x0001
static int show_root = 0;
static int show_tags = 0;
static int show_unreachable = 0;
-static int show_max_delta_depth = 0;
static int keep_cache_objects = 0;
static unsigned char head_sha1[20];
-static void expand_deltas(void)
-{
- int i, max_depth = 0;
-
- /*
- * To be as efficient as possible we look for delta heads and
- * recursively process them going backward, and parsing
- * resulting objects along the way. This allows for processing
- * each delta objects only once regardless of the delta depth.
- */
- for (i = 0; i < nr_objs; i++) {
- struct object *obj = objs[i];
- if (obj->parsed && !obj->delta && obj->attached_deltas) {
- int depth = 0;
- char type[10];
- unsigned long size;
- void *buf = read_sha1_file(obj->sha1, type, &size);
- if (!buf)
- continue;
- depth = process_deltas(buf, size, obj->type,
- obj->attached_deltas);
- if (max_depth < depth)
- max_depth = depth;
- }
- }
- if (show_max_delta_depth)
- printf("maximum delta depth = %d\n", max_depth);
-}
-
static void check_connectivity(void)
{
int i;
struct object_list *refs;
if (!obj->parsed) {
- if (obj->delta)
- printf("unresolved delta %s\n",
- sha1_to_hex(obj->sha1));
- else
- printf("missing %s %s\n",
- obj->type, sha1_to_hex(obj->sha1));
+ printf("missing %s %s\n",
+ obj->type, sha1_to_hex(obj->sha1));
continue;
}
}
if (show_unreachable && !(obj->flags & REACHABLE)) {
- if (obj->attached_deltas)
- printf("foreign delta reference %s\n",
- sha1_to_hex(obj->sha1));
- else
- printf("unreachable %s %s\n",
- obj->type, sha1_to_hex(obj->sha1));
+ printf("unreachable %s %s\n",
+ obj->type, sha1_to_hex(obj->sha1));
continue;
}
return fsck_commit((struct commit *) obj);
if (obj->type == tag_type)
return fsck_tag((struct tag *) obj);
- if (!obj->type && obj->delta)
- return 0;
return -1;
}
show_root = 1;
continue;
}
- if (!strcmp(arg, "--delta-depth")) {
- show_max_delta_depth = 1;
- continue;
- }
if (!strcmp(arg, "--cache")) {
keep_cache_objects = 1;
continue;
}
fsck_sha1_list();
- expand_deltas();
-
heads = 0;
for (i = 1; i < argc; i++) {
const char *arg = argv[i];