func pruneCheckVerified(prunableObjects []string, reachableObjects, verifiedObjects tools.StringSet) { // There's no issue if an object is not reachable and missing, only if reachable & missing var problems bytes.Buffer for _, oid := range prunableObjects { // Test verified first as most likely reachable if !verifiedObjects.Contains(oid) { if reachableObjects.Contains(oid) { problems.WriteString(fmt.Sprintf(" * %v\n", oid)) } else { // Just to indicate why it doesn't matter that we didn't verify tracerx.Printf("UNREACHABLE: %v", oid) } } } // technically we could still prune the other oids, but this indicates a // more serious issue because the local state implies that these can be // deleted but that's incorrect; bad state has occurred somehow, might need // push --all to resolve if problems.Len() > 0 { Exit("Abort: these objects to be pruned are missing on remote:\n%v", problems.String()) } }