From: Slavica Đukić via GitGitGadget Date: Fri, 18 Jan 2019 07:47:01 GMT Subject: [PATCH v2 0/7] Turn git add-i into built-in Message-ID: In-Reply-To: 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@gmail.com/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 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 && -+ -+ *** Commands *** -+ 1: status 2: update 3: revert 4: add untracked -+ 5: patch 6: diff 7: quit 8: help -+ What now> -+ 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 -+ *** Commands *** -+ 1: status 2: update 3: revert 4: add untracked -+ 5: patch 6: diff 7: quit 8: help -+ What now> -+ Bye. -+ EOF -+ test_write_lines h | GIT_TEST_PRETEND_TTY=1 git add -i >actual.colored && -+ test_decode_color actual && -+ test_i18ncmp expect actual -+' -+ - test_done -- gitgitgadget