commit 4e8cda5531c5c4065304f6e9372113dc81a870b0 from: Stefan Sperling date: Fri Jan 19 17:14:44 2018 UTC We only support plain objects as delta base for now. commit - eef6493a8d08ef874a8060f8966241d8c1337168 commit + 4e8cda5531c5c4065304f6e9372113dc81a870b0 blob - 86f4debca99a0996d1ad5d5ee01f1073caaa503e blob + 4e2e9d2db6ac7e5051f17ad50bcdcdd6274f5659 --- lib/pack.c +++ lib/pack.c @@ -458,6 +458,23 @@ open_offset_delta_object(struct got_object **obj, stru if (err) return err; + /* + * XXX We currently only support plain objects as a delta base, + * i.e. deltas cannot be chained. Is this a problem? + * If so, we would have to resolve a plain object base type here. + */ + switch (base_type) { + case GOT_OBJ_TYPE_COMMIT: + case GOT_OBJ_TYPE_TREE: + case GOT_OBJ_TYPE_BLOB: + case GOT_OBJ_TYPE_TAG: + break; + case GOT_OBJ_TYPE_OFFSET_DELTA: + case GOT_OBJ_TYPE_REF_DELTA: + default: + return got_error(GOT_ERR_NOT_IMPL); + } + *obj = calloc(1, sizeof(**obj)); if (*obj == NULL) return got_error(GOT_ERR_NO_MEM);