- if (!strncmp(arg, "exec-path", 9)) {
- arg += 9;
- if (*arg == '=')
- exec_path = arg + 1;
- else {
- puts(exec_path);
- exit(0);
- }
- }
- else if (!strcmp(arg, "version")) {
- printf("git version %s\n", GIT_VERSION);
- exit(0);
- }
- else if (!strcmp(arg, "help"))
- show_help = 1;
- else if (!show_help)
- cmd_usage(NULL, NULL);
+ /*
+ * "git-xxxx" is the same as "git xxxx", but we obviously:
+ *
+ * - cannot take flags in between the "git" and the "xxxx".
+ * - cannot execute it externally (since it would just do
+ * the same thing over again)
+ *
+ * So we just directly call the internal command handler, and
+ * die if that one cannot handle it.
+ */
+ if (!strncmp(cmd, "git-", 4)) {
+ cmd += 4;
+ argv[0] = cmd;
+ handle_internal_command(argc, argv, envp);
+ die("cannot handle %s internally", cmd);