@@ -429,6 +429,26 @@ static int run_status(struct add_i_state *s, const struct pathspec *ps,
return 0;
}
+static int run_help(struct add_i_state *s, const struct pathspec *unused_ps,
+ struct file_list *unused_files,
+ struct list_options *unused_opts)
+{
+ color_fprintf_ln(stdout, s->help_color, "status - %s",
+ _("show paths with changes"));
+ color_fprintf_ln(stdout, s->help_color, "update - %s",
+ _("add working tree state to the staged set of changes"));
+ color_fprintf_ln(stdout, s->help_color, "revert - %s",
+ _("revert staged set of changes back to the HEAD version"));
+ color_fprintf_ln(stdout, s->help_color, "patch - %s",
+ _("pick hunks and update selectively"));
+ color_fprintf_ln(stdout, s->help_color, "diff - %s",
+ _("view diff between HEAD and index"));
+ color_fprintf_ln(stdout, s->help_color, "add untracked - %s",
+ _("add contents of untracked files to the staged set of changes"));
+
+ return 0;
+}
+
struct print_command_item_data {
const char *color, *reset;
};
@@ -474,9 +494,11 @@ int run_add_i(struct repository *r, const struct pathspec *ps)
N_("What now"), command_prompt_help
};
struct command_item
- status = { { "status" }, run_status };
+ status = { { "status" }, run_status },
+ help = { { "help" }, run_help };
struct command_item *commands[] = {
- &status
+ &status,
+ &help
};
struct print_file_item_data print_file_item_data = {
@@ -647,4 +647,29 @@ test_expect_success 'checkout -p works with pathological context lines' '
test_write_lines a b a b a a b a b a >expect &&
test_cmp expect a
'
+
+test_expect_success 'show help from add--helper' '
+ git reset --hard &&
+ cat >expect <<-EOF &&
+
+ <BOLD>*** Commands ***<RESET>
+ 1: <BOLD;BLUE>s<RESET>tatus 2: <BOLD;BLUE>u<RESET>pdate 3: <BOLD;BLUE>r<RESET>evert 4: <BOLD;BLUE>a<RESET>dd untracked
+ 5: <BOLD;BLUE>p<RESET>atch 6: <BOLD;BLUE>d<RESET>iff 7: <BOLD;BLUE>q<RESET>uit 8: <BOLD;BLUE>h<RESET>elp
+ <BOLD;BLUE>What now<RESET>> <BOLD;RED>status - show paths with changes<RESET>
+ <BOLD;RED>update - add working tree state to the staged set of changes<RESET>
+ <BOLD;RED>revert - revert staged set of changes back to the HEAD version<RESET>
+ <BOLD;RED>patch - pick hunks and update selectively<RESET>
+ <BOLD;RED>diff - view diff between HEAD and index<RESET>
+ <BOLD;RED>add untracked - add contents of untracked files to the staged set of changes<RESET>
+ <BOLD>*** Commands ***<RESET>
+ 1: <BOLD;BLUE>s<RESET>tatus 2: <BOLD;BLUE>u<RESET>pdate 3: <BOLD;BLUE>r<RESET>evert 4: <BOLD;BLUE>a<RESET>dd untracked
+ 5: <BOLD;BLUE>p<RESET>atch 6: <BOLD;BLUE>d<RESET>iff 7: <BOLD;BLUE>q<RESET>uit 8: <BOLD;BLUE>h<RESET>elp
+ <BOLD;BLUE>What now<RESET>>$SP
+ Bye.
+ EOF
+ test_write_lines h | GIT_PAGER_IN_USE=true TERM=vt100 git add -i >actual.colored &&
+ test_decode_color <actual.colored >actual &&
+ test_i18ncmp expect actual
+'
+
test_done