| 201 | } |
| 202 | |
| 203 | static int add_recent_object(const struct object_id *oid, |
| 204 | struct object_info *oi, |
| 205 | void *cb_data) |
| 206 | { |
| 207 | struct recent_data *data = cb_data; |
| 208 | struct object *obj; |
| 209 | |
| 210 | if (!want_recent_object(data, oid) || |
| 211 | !obj_is_recent(oid, *oi->mtimep, data)) |
| 212 | return 0; |
| 213 | |
| 214 | switch (*oi->typep) { |
| 215 | case OBJ_TAG: |
| 216 | case OBJ_COMMIT: |
| 217 | obj = parse_object_or_die(the_repository, oid, NULL); |
| 218 | break; |
| 219 | case OBJ_TREE: |
| 220 | obj = (struct object *)lookup_tree(the_repository, oid); |
| 221 | break; |
| 222 | case OBJ_BLOB: |
| 223 | obj = (struct object *)lookup_blob(the_repository, oid); |
| 224 | break; |
| 225 | default: |
| 226 | die("unknown object type for %s: %s", |
| 227 | oid_to_hex(oid), type_name(*oi->typep)); |
| 228 | } |
| 229 | |
| 230 | if (!obj) |
| 231 | die("unable to lookup %s", oid_to_hex(oid)); |
| 232 | if (obj->flags & SEEN) |
| 233 | return 0; |
| 234 | |
| 235 | add_pending_object(data->revs, obj, ""); |
| 236 | if (data->cb) { |
| 237 | if (oi->whence == OI_PACKED) |
| 238 | data->cb(obj, oi->u.packed.pack, oi->u.packed.offset, *oi->mtimep); |
| 239 | else |
| 240 | data->cb(obj, NULL, 0, *oi->mtimep); |
| 241 | } |
| 242 | |
| 243 | return 0; |
| 244 | } |
| 245 | |
| 246 | int add_unseen_recent_objects_to_traversal(struct rev_info *revs, |
| 247 | timestamp_t timestamp, |
nothing calls this directly
no test coverage detected