File tree Expand file tree Collapse file tree 1 file changed +12
-0
lines changed Expand file tree Collapse file tree 1 file changed +12
-0
lines changed 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)
302
302
#define SIMILARITY_FLOOR 7
303
303
#define SIMILAR_ENOUGH (x ) ((x) < SIMILARITY_FLOOR)
304
304
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
+
305
309
const char * help_unknown_cmd (const char * cmd )
306
310
{
307
311
int i , n , best_similarity = 0 ;
@@ -326,6 +330,14 @@ const char *help_unknown_cmd(const char *cmd)
326
330
int cmp = 0 ; /* avoid compiler stupidity */
327
331
const char * candidate = main_cmds .names [i ]-> name ;
328
332
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
+
329
341
/* Does the candidate appear in common_cmds list? */
330
342
while (n < ARRAY_SIZE (common_cmds ) &&
331
343
(cmp = strcmp (common_cmds [n ].name , candidate )) < 0 )
You can’t perform that action at this time.
0 commit comments