Derrick Stolee <derrickstolee@xxxxxxxxxx> writes: > Do we do the same as we unpack from a fetch? We should. We only consider tips of refs and objects that are reachable from them to be "present", and there may be random objects that float in the object store without any guarantee that no the objects that ought to be reachable from them are missing from the object store, but they do not play part in the common ancestor discovery. And then after we unpack, we ensure that the proposed updates to refs made by the fetch operation will not corrupt the repository. This can be guaranteed by making sure that objects to be placed at the updated tip can all reach some existing tips of refs. We trust refs before the operation (in this case, 'git fetch') begins. We ensure that refs after the operation can be trusted before updating them. Where "trust" here means "objects pointed at by them are connected.