help_unknown_cmd() will need to look into repository's config, in order to collect all possible commands/aliases and give a suggestion. So, repository must be set up before this function is called. As it is now, because - alias handling will always be done before help_unknown_cmd() - alias handling code will search and set up repository if found - alias handline code will not undo repository setup These ensure that repository will always be set up (or attempted to set up) before help_unknown_cmd(), so there is no issue. But the setup dependency here is subtle. It may break some day if someone reorders the loop, for example. Make a note about this. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> Reviewed-by: Jonathan Nieder <jrnieder@xxxxxxxxx> Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- git.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/git.c b/git.c index 43cebd7..1fb478f 100644 --- a/git.c +++ b/git.c @@ -555,6 +555,13 @@ int main(int argc, const char **argv) exit(1); } if (!done_help) { + /* + * help_unknown_cmd() requires that a repository has been + * searched for and set up if found. + * Luckily, the alias handling code already took care of this. + */ + if (!startup_info->have_run_setup_gitdir) + die("internal error: handling unknown command"); cmd = argv[0] = help_unknown_cmd(cmd); done_help = 1; } else -- 1.7.0.rc1.541.g2da82.dirty -- 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