Stefan Beller | d88f9fd | 2018-04-11 17:21:05 -0700 | [diff] [blame] | 1 | #ifndef REPLACE_OBJECT_H |
| 2 | #define REPLACE_OBJECT_H |
| 3 | |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 4 | #include "oidmap.h" |
| 5 | #include "repository.h" |
Stefan Beller | c3c36d7 | 2018-04-11 17:21:08 -0700 | [diff] [blame] | 6 | #include "object-store.h" |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 7 | |
Stefan Beller | d88f9fd | 2018-04-11 17:21:05 -0700 | [diff] [blame] | 8 | struct replace_object { |
| 9 | struct oidmap_entry original; |
| 10 | struct object_id replacement; |
| 11 | }; |
| 12 | |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 13 | /* |
| 14 | * This internal function is only declared here for the benefit of |
| 15 | * lookup_replace_object(). Please do not call it directly. |
| 16 | */ |
Stefan Beller | 5643557 | 2018-04-11 17:21:17 -0700 | [diff] [blame] | 17 | extern const struct object_id *do_lookup_replace_object(struct repository *r, |
| 18 | const struct object_id *oid); |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 19 | |
| 20 | /* |
| 21 | * If object sha1 should be replaced, return the replacement object's |
| 22 | * name (replaced recursively, if necessary). The return value is |
| 23 | * either sha1 or a pointer to a permanently-allocated value. When |
| 24 | * object replacement is suppressed, always return sha1. |
| 25 | */ |
Stefan Beller | 90e777f | 2018-04-11 17:21:18 -0700 | [diff] [blame] | 26 | static inline const struct object_id *lookup_replace_object(struct repository *r, |
| 27 | const struct object_id *oid) |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 28 | { |
Jeff King | 6ebd1ca | 2018-07-18 16:45:20 -0400 | [diff] [blame] | 29 | if (!read_replace_refs || |
Stefan Beller | 90e777f | 2018-04-11 17:21:18 -0700 | [diff] [blame] | 30 | (r->objects->replace_map && |
| 31 | r->objects->replace_map->map.tablesize == 0)) |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 32 | return oid; |
Stefan Beller | 90e777f | 2018-04-11 17:21:18 -0700 | [diff] [blame] | 33 | return do_lookup_replace_object(r, oid); |
Stefan Beller | 47f351e | 2018-04-11 17:21:06 -0700 | [diff] [blame] | 34 | } |
| 35 | |
Stefan Beller | d88f9fd | 2018-04-11 17:21:05 -0700 | [diff] [blame] | 36 | #endif /* REPLACE_OBJECT_H */ |