Skip to content

Commit

Permalink
built-in add -i: implement the help command
Browse files Browse the repository at this point in the history
This imitates the code to show the help text from the Perl script
`git-add--interactive.perl` in the built-in version.

To make sure that it renders exactly like the Perl version of `git add
-i`, we also add a test case for that to `t3701-add-interactive.sh`.

Signed-off-by: Slavica Đukić <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
slavicaDj authored and gitster committed Nov 18, 2019
1 parent 3d965c7 commit 8c15904
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
21 changes: 21 additions & 0 deletions add-interactive.c
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,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 string_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;
}

typedef int (*command_t)(struct add_i_state *s, const struct pathspec *ps,
struct string_list *files,
struct list_options *opts);
Expand Down Expand Up @@ -561,6 +581,7 @@ int run_add_i(struct repository *r, const struct pathspec *ps)
command_t command;
} command_list[] = {
{ "status", run_status },
{ "help", run_help },
};
struct prefix_item_list commands = PREFIX_ITEM_LIST_INIT;

Expand Down
25 changes: 25 additions & 0 deletions t/t3701-add-interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 8c15904

Please sign in to comment.