git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Thomas Gummerer <t.gummerer@gmail.com>
Date
Jul 11, 2019, 16:08 UTC
Message-ID
<20190711160851.14380-1-t.gummerer@gmail.com>
In-Reply-To
<20190708163315.29912-1-t.gummerer@gmail.com>

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/20190708163315.29912-1-t.gummerer@gmail.com/
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 <t.gummerer@gmail.com>
     
    -    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 <t.gummerer@gmail.com>
     
    @@ -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
Previous: Thomas GummererNext: Thomas Gummerer
Message 45 of 61 in “output improvements for git range-diff”
  1. 00/14 output improvements for git range-diffThomas Gummerer, Jul 5, 2019
  2. 01/14 apply: replace marc.info link with public-inboxThomas Gummerer, Jul 5, 2019
  3. 03/14 apply: only pass required data to git_header_nameThomas Gummerer, Jul 5, 2019
  4. 02/14 apply: only pass required data to skip_tree_prefixThomas Gummerer, Jul 5, 2019
  5. 04/14 apply: only pass required data to check_header_lineThomas Gummerer, Jul 5, 2019
  6. 05/14 apply: only pass required data to find_name_*Thomas Gummerer, Jul 5, 2019
  7. 07/14 apply: make parse_git_header publicThomas Gummerer, Jul 5, 2019
  8. Johannes SchindelinJul 5, 2019
  9. 06/14 apply: only pass required data to gitdiff_* functionsThomas Gummerer, Jul 5, 2019
  10. Johannes SchindelinJul 5, 2019
  11. 08/14 range-diff: fix function parameter indentationThomas Gummerer, Jul 5, 2019
  12. 09/14 range-diff: split lines manuallyThomas Gummerer, Jul 5, 2019
  13. Johannes SchindelinJul 5, 2019
  14. Thomas GummererJul 8, 2019
  15. 10/14 range-diff: don't remove funcname from inner diffThomas Gummerer, Jul 5, 2019
  16. Johannes SchindelinJul 5, 2019
  17. 11/14 range-diff: suppress line count in outer diffThomas Gummerer, Jul 5, 2019
  18. 12/14 range-diff: add section header instead of diff headerThomas Gummerer, Jul 5, 2019
  19. Johannes SchindelinJul 5, 2019
  20. Thomas GummererJul 8, 2019
  21. Johannes SchindelinJul 8, 2019
  22. 13/14 range-diff: add filename to inner diffThomas Gummerer, Jul 5, 2019
  23. 14/14 range-diff: add headers to the outer hunk headerThomas Gummerer, Jul 5, 2019
  24. Johannes SchindelinJul 5, 2019
  25. Thomas GummererJul 8, 2019
  26. 00/14 output improvements for git range-diffThomas Gummerer, Jul 8, 2019
  27. 01/14 apply: replace marc.info link with public-inboxThomas Gummerer, Jul 8, 2019
  28. 02/14 apply: only pass required data to skip_tree_prefixThomas Gummerer, Jul 8, 2019
  29. 03/14 apply: only pass required data to git_header_nameThomas Gummerer, Jul 8, 2019
  30. 04/14 apply: only pass required data to check_header_lineThomas Gummerer, Jul 8, 2019
  31. 05/14 apply: only pass required data to find_name_*Thomas Gummerer, Jul 8, 2019
  32. 06/14 apply: only pass required data to gitdiff_* functionsThomas Gummerer, Jul 8, 2019
  33. 07/14 apply: make parse_git_header publicThomas Gummerer, Jul 8, 2019
  34. Junio C HamanoJul 9, 2019
  35. Thomas GummererJul 9, 2019
  36. Junio C HamanoJul 9, 2019
  37. Thomas GummererJul 10, 2019
  38. 09/14 range-diff: split lines manuallyThomas Gummerer, Jul 8, 2019
  39. 08/14 range-diff: fix function parameter indentationThomas Gummerer, Jul 8, 2019
  40. 10/14 range-diff: don't remove funcname from inner diffThomas Gummerer, Jul 8, 2019
  41. 11/14 range-diff: suppress line count in outer diffThomas Gummerer, Jul 8, 2019
  42. 12/14 range-diff: add section header instead of diff headerThomas Gummerer, Jul 8, 2019
  43. 14/14 range-diff: add headers to the outer hunk headerThomas Gummerer, Jul 8, 2019
  44. 13/14 range-diff: add filename to inner diffThomas Gummerer, Jul 8, 2019
  45. 00/14 output improvements for git range-diffThomas Gummerer, Jul 11, 2019
  46. 01/14 apply: replace marc.info link with public-inboxThomas Gummerer, Jul 11, 2019
  47. 02/14 apply: only pass required data to skip_tree_prefixThomas Gummerer, Jul 11, 2019
  48. 04/14 apply: only pass required data to check_header_lineThomas Gummerer, Jul 11, 2019
  49. 03/14 apply: only pass required data to git_header_nameThomas Gummerer, Jul 11, 2019
  50. 05/14 apply: only pass required data to find_name_*Thomas Gummerer, Jul 11, 2019
  51. 06/14 apply: only pass required data to gitdiff_* functionsThomas Gummerer, Jul 11, 2019
  52. 08/14 range-diff: fix function parameter indentationThomas Gummerer, Jul 11, 2019
  53. 07/14 apply: make parse_git_diff_header publicThomas Gummerer, Jul 11, 2019
  54. 09/14 range-diff: split lines manuallyThomas Gummerer, Jul 11, 2019
  55. 10/14 range-diff: don't remove funcname from inner diffThomas Gummerer, Jul 11, 2019
  56. 12/14 range-diff: add section header instead of diff headerThomas Gummerer, Jul 11, 2019
  57. 11/14 range-diff: suppress line count in outer diffThomas Gummerer, Jul 11, 2019
  58. 13/14 range-diff: add filename to inner diffThomas Gummerer, Jul 11, 2019
  59. 14/14 range-diff: add headers to the outer hunk headerThomas Gummerer, Jul 11, 2019
  60. Ramsay JonesJul 11, 2019
  61. Johannes SchindelinJul 12, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.