Subject: [PATCH v4 00/14] output improvements for git range-diff

From: Thomas Gummerer <[email-masked]>
Date: Thu, 11 Jul 2019 17:08:37 +0100

Thanks Junio for the comment on the previous round [1].  This round
reanmes the struct we're using in apply.c to 'struct gitdiff_data',
and updates the commit message of 7/14 to reflect the new name of the
renamed function.

[1]: https://public-inbox.org/git/[email-masked]/

Thomas Gummerer (14):
  apply: replace marc.info link with public-inbox
  apply: only pass required data to skip_tree_prefix
  apply: only pass required data to git_header_name
  apply: only pass required data to check_header_line
  apply: only pass required data to find_name_*
  apply: only pass required data to gitdiff_* functions
  apply: make parse_git_diff_header public
  range-diff: fix function parameter indentation
  range-diff: split lines manually
  range-diff: don't remove funcname from inner diff
  range-diff: suppress line count in outer diff
  range-diff: add section header instead of diff header
  range-diff: add filename to inner diff
  range-diff: add headers to the outer hunk header

 apply.c                | 186 ++++++++++++++++++-----------------------
 apply.h                |  48 +++++++++++
 diff.c                 |   5 +-
 diff.h                 |   1 +
 range-diff.c           | 124 +++++++++++++++++++--------
 t/t3206-range-diff.sh  | 124 ++++++++++++++++++++++-----
 t/t3206/history.export |  84 ++++++++++++++++++-
 7 files changed, 409 insertions(+), 163 deletions(-)

Range-diff against v3:
 1:  ef2245edda =  1:  ef2245edda apply: replace marc.info link with public-inbox
 2:  94578fa45c =  2:  94578fa45c apply: only pass required data to skip_tree_prefix
 3:  988269a68e =  3:  988269a68e apply: only pass required data to git_header_name
 4:  a2c1ef3f5f =  4:  a2c1ef3f5f apply: only pass required data to check_header_line
 5:  0f4cfe21cb =  5:  0f4cfe21cb apply: only pass required data to find_name_*
 6:  07a271518d !  6:  42665e5295 apply: only pass required data to gitdiff_* functions
    @@ -28,7 +28,7 @@
      #include "rerere.h"
      #include "apply.h"
      
    -+struct parse_git_header_state {
    ++struct gitdiff_data {
     +	struct strbuf *root;
     +	int linenr;
     +	int p_value;
    @@ -42,7 +42,7 @@
      }
      
     -static int gitdiff_hdrend(struct apply_state *state,
    -+static int gitdiff_hdrend(struct parse_git_header_state *state,
    ++static int gitdiff_hdrend(struct gitdiff_data *state,
      			  const char *line,
      			  struct patch *patch)
      {
    @@ -51,7 +51,7 @@
      #define DIFF_NEW_NAME 1
      
     -static int gitdiff_verify_name(struct apply_state *state,
    -+static int gitdiff_verify_name(struct parse_git_header_state *state,
    ++static int gitdiff_verify_name(struct gitdiff_data *state,
      			       const char *line,
      			       int isnull,
      			       char **name,
    @@ -77,7 +77,7 @@
      }
      
     -static int gitdiff_oldname(struct apply_state *state,
    -+static int gitdiff_oldname(struct parse_git_header_state *state,
    ++static int gitdiff_oldname(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -86,7 +86,7 @@
      }
      
     -static int gitdiff_newname(struct apply_state *state,
    -+static int gitdiff_newname(struct parse_git_header_state *state,
    ++static int gitdiff_newname(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -95,7 +95,7 @@
      }
      
     -static int gitdiff_oldmode(struct apply_state *state,
    -+static int gitdiff_oldmode(struct parse_git_header_state *state,
    ++static int gitdiff_oldmode(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -103,7 +103,7 @@
      }
      
     -static int gitdiff_newmode(struct apply_state *state,
    -+static int gitdiff_newmode(struct parse_git_header_state *state,
    ++static int gitdiff_newmode(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -111,7 +111,7 @@
      }
      
     -static int gitdiff_delete(struct apply_state *state,
    -+static int gitdiff_delete(struct parse_git_header_state *state,
    ++static int gitdiff_delete(struct gitdiff_data *state,
      			  const char *line,
      			  struct patch *patch)
      {
    @@ -120,7 +120,7 @@
      }
      
     -static int gitdiff_newfile(struct apply_state *state,
    -+static int gitdiff_newfile(struct parse_git_header_state *state,
    ++static int gitdiff_newfile(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -129,7 +129,7 @@
      }
      
     -static int gitdiff_copysrc(struct apply_state *state,
    -+static int gitdiff_copysrc(struct parse_git_header_state *state,
    ++static int gitdiff_copysrc(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -141,7 +141,7 @@
      }
      
     -static int gitdiff_copydst(struct apply_state *state,
    -+static int gitdiff_copydst(struct parse_git_header_state *state,
    ++static int gitdiff_copydst(struct gitdiff_data *state,
      			   const char *line,
      			   struct patch *patch)
      {
    @@ -153,7 +153,7 @@
      }
      
     -static int gitdiff_renamesrc(struct apply_state *state,
    -+static int gitdiff_renamesrc(struct parse_git_header_state *state,
    ++static int gitdiff_renamesrc(struct gitdiff_data *state,
      			     const char *line,
      			     struct patch *patch)
      {
    @@ -165,7 +165,7 @@
      }
      
     -static int gitdiff_renamedst(struct apply_state *state,
    -+static int gitdiff_renamedst(struct parse_git_header_state *state,
    ++static int gitdiff_renamedst(struct gitdiff_data *state,
      			     const char *line,
      			     struct patch *patch)
      {
    @@ -177,7 +177,7 @@
      }
      
     -static int gitdiff_similarity(struct apply_state *state,
    -+static int gitdiff_similarity(struct parse_git_header_state *state,
    ++static int gitdiff_similarity(struct gitdiff_data *state,
      			      const char *line,
      			      struct patch *patch)
      {
    @@ -186,7 +186,7 @@
      }
      
     -static int gitdiff_dissimilarity(struct apply_state *state,
    -+static int gitdiff_dissimilarity(struct parse_git_header_state *state,
    ++static int gitdiff_dissimilarity(struct gitdiff_data *state,
      				 const char *line,
      				 struct patch *patch)
      {
    @@ -195,7 +195,7 @@
      }
      
     -static int gitdiff_index(struct apply_state *state,
    -+static int gitdiff_index(struct parse_git_header_state *state,
    ++static int gitdiff_index(struct gitdiff_data *state,
      			 const char *line,
      			 struct patch *patch)
      {
    @@ -204,7 +204,7 @@
       * into the next diff. Tell the parser to break out.
       */
     -static int gitdiff_unrecognized(struct apply_state *state,
    -+static int gitdiff_unrecognized(struct parse_git_header_state *state,
    ++static int gitdiff_unrecognized(struct gitdiff_data *state,
      				const char *line,
      				struct patch *patch)
      {
    @@ -212,7 +212,7 @@
      			    struct patch *patch)
      {
      	unsigned long offset;
    -+	struct parse_git_header_state parse_hdr_state;
    ++	struct gitdiff_data parse_hdr_state;
      
      	/* A git diff has explicit new/delete information, so we don't guess */
      	patch->is_new = 0;
    @@ -228,7 +228,7 @@
      		static const struct opentry {
      			const char *str;
     -			int (*fn)(struct apply_state *, const char *, struct patch *);
    -+			int (*fn)(struct parse_git_header_state *, const char *, struct patch *);
    ++			int (*fn)(struct gitdiff_data *, const char *, struct patch *);
      		} optable[] = {
      			{ "@@ -", gitdiff_hdrend },
      			{ "--- ", gitdiff_oldname },
 7:  9cb6732a5f !  7:  3068fda8a9 apply: make parse_git_header public
    @@ -1,9 +1,12 @@
     Author: Thomas Gummerer <[email-masked]>
     
    -    apply: make parse_git_header public
    +    apply: make parse_git_diff_header public
     
    -    Make parse_git_header a "public" function in apply.h, so we can re-use
    -    it in range-diff in a subsequent commit.
    +    Make 'parse_git_header()' (renamed to 'parse_git_diff_header()') a
    +    "public" function in apply.h, so we can re-use it in range-diff in a
    +    subsequent commit.  We're renaming the function to make it clearer in
    +    other parts of the codebase that we're talking about a diff header and
    +    not just any header.
     
         Signed-off-by: Thomas Gummerer <[email-masked]>
     
    @@ -70,7 +73,7 @@
     +			  struct patch *patch)
      {
      	unsigned long offset;
    - 	struct parse_git_header_state parse_hdr_state;
    + 	struct gitdiff_data parse_hdr_state;
     @@
      	 * or removing or adding empty files), so we get
      	 * the default name from the header.
    @@ -100,7 +103,7 @@
     +	for (offset = len ; size > 0 ; offset += len, size -= len, line += len, (*linenr)++) {
      		static const struct opentry {
      			const char *str;
    - 			int (*fn)(struct parse_git_header_state *, const char *, struct patch *);
    + 			int (*fn)(struct gitdiff_data *, const char *, struct patch *);
     @@
      			res = p->fn(&parse_hdr_state, line + oplen, patch);
      			if (res < 0)
 8:  76a11ce995 =  8:  781d054cab range-diff: fix function parameter indentation
 9:  6f70e7faa6 =  9:  68a2953310 range-diff: split lines manually
10:  6618cdff2c = 10:  8ae95d053b range-diff: don't remove funcname from inner diff
11:  2667df4fa5 = 11:  e572510c52 range-diff: suppress line count in outer diff
12:  47cd8c6733 = 12:  45605db760 range-diff: add section header instead of diff header
13:  f67fd5dd9a = 13:  89a27fbeaa range-diff: add filename to inner diff
14:  812893a5dc = 14:  8bee2c525f range-diff: add headers to the outer hunk header

-- 
2.22.0.510.g264f2c817a