Re: [PATCHv9 1/9] receive-pack.c: shorten the execute_commands loop over all commands
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Jan 3, 2015, 09:53 UTC
- Message-ID
- <CACsJy8DGS2KN5Vd=UY2nUBH1Nc9rMiTt84HNB9K=8z2H0m4zVg@mail.gmail.com>
- In-Reply-To
- <20150103022004.GI29365@google.com>
On Sat, Jan 3, 2015 at 9:20 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 16 quoted lines
>> - 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.
Show 14 quoted lines
> 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