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-bnm...@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 <slawic...@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

Reply via email to