File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -302,6 +302,10 @@ static void add_cmd_list(struct cmdnames *cmds, struct cmdnames *old)
302302#define SIMILARITY_FLOOR 7
303303#define SIMILAR_ENOUGH (x ) ((x) < SIMILARITY_FLOOR)
304304
305+ static const char bad_interpreter_advice [] =
306+ N_ ("'%s' appears to be a git command, but we were not\n"
307+ "able to execute it. Maybe git-%s is broken?" );
308+
305309const char * help_unknown_cmd (const char * cmd )
306310{
307311 int i , n , best_similarity = 0 ;
@@ -326,6 +330,14 @@ const char *help_unknown_cmd(const char *cmd)
326330 int cmp = 0 ; /* avoid compiler stupidity */
327331 const char * candidate = main_cmds .names [i ]-> name ;
328332
333+ /*
334+ * An exact match means we have the command, but
335+ * for some reason exec'ing it gave us ENOENT; probably
336+ * it's a bad interpreter in the #! line.
337+ */
338+ if (!strcmp (candidate , cmd ))
339+ die (_ (bad_interpreter_advice ), cmd , cmd );
340+
329341 /* Does the candidate appear in common_cmds list? */
330342 while (n < ARRAY_SIZE (common_cmds ) &&
331343 (cmp = strcmp (common_cmds [n ].name , candidate )) < 0 )
You can’t perform that action at this time.
0 commit comments