Stefan Beller <sbeller@xxxxxxxxxx> writes: > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > object-store.h | 8 ++++++++ > replace-object.c | 17 +++++++---------- > replace-object.h | 9 +++++++++ > 3 files changed, 24 insertions(+), 10 deletions(-) > create mode 100644 replace-object.h With this, the relationship between an object X and another object Y that replaces the object X is defined only within the scope of a single repository. The exception in reachability rule around these replacement objects is also local to a repository (i.e. if traversal from refs reaches X, then both X and Y are reachable and need to be kept from gc), so I think this is a reasonable way to arrange things.