Pang Yan Han <pangyanhan@xxxxxxxxx> writes: > +/* For invalid refs */ > +static struct command **invalid_delete; > +static size_t invalid_delete_nr; > +static size_t invalid_delete_alloc; Do you have to have these separately only to keep track of the corner case errors? I would have expected that it would be more natural to mark them by adding a single bitfield to "struct command". > @@ -447,6 +467,8 @@ static const char *update(struct command *cmd) > if (!parse_object(old_sha1)) { > rp_warning("Allowing deletion of corrupt ref."); > old_sha1 = NULL; > + if (!ref_exists((char *) name)) > + invalid_delete_append(cmd); This is not an "invalid" delete but deleting a non-existing ref. Perhaps you would want to move the warning and optionally reword it as well, e.g. if (!parse_object(old_sha1)) { old_sha1 = NULL; if (ref_exists(name)) { rp_warning("Allowing deletion of corrupt ref."); } else { rp_warning("Deleting a ref that does not exist."); cmd->did_not_exist = 1; } ... -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html