Thread (24 messages) flat view 24 messages, 3 authors, 2016-06-15

Re: [PATCHv9 1/9] receive-pack.c: shorten the execute_commands loop over all commands

From: Duy Nguyen <hidden>
Date: 2016-06-15 23:03:23

On Sat, Jan 3, 2015 at 9:20 AM, Jonathan Nieder [off-list ref] wrote:
quoted
-     if (shallow_update && !checked_connectivity)
-             error("BUG: run 'git fsck' for safety.\n"
-                   "If there are errors, try to remove "
-                   "the reported refs above");
+     if (shallow_update)
+             check_shallow_bugs(commands, si);
In the same spirit of saving the reader from having to look at the
body of check_shallow_bugs, would it make sense for the part that reacts
to an error to be kept in the caller?  E.g.:

        if (shallow_update && warn_if_skipped_connectivity_check(commands, si))
                error("BUG: run 'git fsck for safety.\n"
                      "If there are errors, try removing the refs reported above");

Is this error possible, by the way?
That code is to prevent bugs in future. The whole operation is spread
out in many functions/steps and people may overlook.
update() does not return success
unless it has reached the bottom block in the function.  In the
!is_null_sha1(new_sha1) case that means it calls update_shallow_ref(),
which performs the connectivity check.  In the is_null_sha1(new_sha1)
case, update_shallow_info() does not set cmd->index and
si->shallow_ref[cmd->index] cannot be set.

Perhaps this error message could be written in a way that makes it
clearer that we really expect it not to happen, like

                die("BUG: connectivity check skipped in shallow push???");

(die() instead of error() to prevent refs from updating and pointing
to a disconnected history).
If connectivity test is not done, we don't know if history is really
disconnected. But yeah die() may be better (err on the safe side).
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help