1. "fsck_ref_report" should not be refactored to accept `NULL`. There would be only one situation where it will be a little bad (the content of a ref does not end with a newline). In the other situations, the message part will be useful, such as: refs/heads/garbage-branch: trailingRefContent: ' garbage'. refs/heads/escape: escapeReferent: referent 'xxx' is outside. Although for some messages, only use fsck message id is enough. But we could also specify the message. It's not harmful anyway. 2. The mapping from fsck message id to error case should be one to one. This is essentially important because the user could set the fsck error levels. If we use multiple to one, we will give the user a bad experience. We should avoid this. I will wait for more comments to ensure the next version will be better. Thanks, Jialuo