This is the first version of a patch series to start porting git-add--interactive from Perl to C. Daniel Ferreira's patch series used as a head start: https://public-inbox.org/git/1494907234-28903-1-git-send-email-bnmvco@xxxxxxxxx/t/#u Changes since v1: * rename show_help() to add_i_show_help() * move static const char help_info[] to add_i_show_help() and translate only the help text * add newline at the end of add-interactive.h * modify commits so that the test is introduced before making git-add--interactive.perl's help_cmd to use add_i_show_help * use variables GIT_PAGER_IN_USE=true and TERM=vt100 in test as alternative for GIT_PRETEND_TTY Daniel Ferreira (4): diff: export diffstat interface add--helper: create builtin helper for interactive add add-interactive.c: implement status command add--interactive.perl: use add--helper --status for status_cmd Slavica Djukic (3): add-interactive.c: implement show-help command t3701-add-interactive: test add_i_show_help() add--interactive.perl: use add--helper --show-help for help_cmd .gitignore | 1 + Makefile | 2 + add-interactive.c | 269 +++++++++++++++++++++++++++++++++++++ add-interactive.h | 10 ++ builtin.h | 1 + builtin/add--helper.c | 43 ++++++ diff.c | 36 ++--- diff.h | 18 +++ git-add--interactive.perl | 15 +-- git.c | 1 + t/t3701-add-interactive.sh | 24 ++++ 11 files changed, 385 insertions(+), 35 deletions(-) create mode 100644 add-interactive.c create mode 100644 add-interactive.h create mode 100644 builtin/add--helper.c base-commit: b21ebb671bb7dea8d342225f0d66c41f4e54d5ca Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-103%2FslavicaDj%2Fadd-i-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-103/slavicaDj/add-i-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/103 Range-diff vs v1: 1: 737767b6f4 = 1: 737767b6f4 diff: export diffstat interface 2: 91b1963125 = 2: 91b1963125 add--helper: create builtin helper for interactive add 3: d247ef69fe = 3: d247ef69fe add-interactive.c: implement status command 4: 4950c889aa = 4: 4950c889aa add--interactive.perl: use add--helper --status for status_cmd 5: 19fdea5db1 ! 5: cf4e913a5a add-interactive.c: implement show-help command @@ -16,33 +16,30 @@ --- a/add-interactive.c +++ b/add-interactive.c @@ - - #define HEADER_INDENT " " - -+/* TRANSLATORS: please do not translate the command names -+ 'status', 'update', 'revert', etc. */ -+static const char help_info[] = -+ N_("status - show paths with changes\n" -+ "update - add working tree state to the staged set of changes\n" -+ "revert - revert staged set of changes back to the HEAD version\n" -+ "patch - pick hunks and update selectively\n" -+ "diff - view diff between HEAD and index\n" -+ "add untracked - add contents of untracked files to the staged set of changes"); -+ - enum collection_phase { - WORKTREE, - INDEX -@@ free(files); hashmap_free(&s.file_map, 1); } + -+void show_help(void) ++void add_i_show_help(void) +{ + const char *help_color = get_color(COLOR_HELP); -+ const char *modified_fmt = _("%s"); ++ color_fprintf(stdout, help_color, "%s%s", _("status"), ++ N_(" - show paths with changes")); ++ printf("\n"); ++ color_fprintf(stdout, help_color, "%s%s", _("update"), ++ N_(" - add working tree state to the staged set of changes")); ++ printf("\n"); ++ color_fprintf(stdout, help_color, "%s%s", _("revert"), ++ N_(" - revert staged set of changes back to the HEAD version")); + printf("\n"); -+ color_fprintf(stdout, help_color, modified_fmt, _(help_info)); ++ color_fprintf(stdout, help_color, "%s%s", _("patch"), ++ N_(" - pick hunks and update selectively")); ++ printf("\n"); ++ color_fprintf(stdout, help_color, "%s%s", _("diff"), ++ N_(" - view diff between HEAD and index")); ++ printf("\n"); ++ color_fprintf(stdout, help_color, "%s%s", _("add untracked"), ++ N_(" - add contents of untracked files to the staged set of changes")); + printf("\n"); +} @@ -53,10 +50,11 @@ void add_i_print_modified(void); -+void show_help(void); -+ - #endif +-#endif \ No newline at end of file ++void add_i_show_help(void); ++ ++#endif diff --git a/builtin/add--helper.c b/builtin/add--helper.c --- a/builtin/add--helper.c @@ -85,7 +83,7 @@ if (mode == STATUS) add_i_print_modified(); + else if (mode == HELP) -+ show_help(); ++ add_i_show_help(); else usage_with_options(builtin_add_helper_usage, options); 6: 86d85face8 < -: ---------- Git.pm: introduce environment variable GIT_TEST_PRETEND_TTY -: ---------- > 6: 2b4714b8d0 t3701-add-interactive: test add_i_show_help() 7: 060806010e ! 7: 6ede6d9251 add--interactive.perl: use add--helper --show-help for help_cmd @@ -5,11 +5,6 @@ Change help_cmd sub in git-add--interactive.perl to use show-help command from builtin add--helper. - Add test to t3701-add-interactive to verify that show-help - outputs expected content. Use GIT_PRETENT_TTY - introduced in earlier commit to be able to test output color - on Windows. - Signed-off-by: Slavica Djukic <slawica92@xxxxxxxxxxx> diff --git a/git-add--interactive.perl b/git-add--interactive.perl @@ -33,37 +28,3 @@ } sub process_args { - - diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh - --- a/t/t3701-add-interactive.sh - +++ b/t/t3701-add-interactive.sh -@@ - test_cmp expected-2 actual - ' - -+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 -+ update - add working tree state to the staged set of changes -+ revert - revert staged set of changes back to the HEAD version -+ patch - pick hunks and update selectively -+ diff - view diff between HEAD and index -+ 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>> -+ Bye. -+ EOF -+ test_write_lines h | GIT_TEST_PRETEND_TTY=1 git add -i >actual.colored && -+ test_decode_color <actual.colored >actual && -+ test_i18ncmp expect actual -+' -+ - test_done -- gitgitgadget