[PATCH v2 0/7] Turn git add-i into built-in
- From
- Slavica Đukić via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jan 18, 2019, 07:47 UTC
- Message-ID
- <pull.103.v2.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.103.git.gitgitgadget@gmail.com>
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 <slawica92@hotmail.com>
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