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

[PATCH v3 00/22] fsck: API improvements

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Mar 6, 2021, 11:04 UTC
Message-ID
<20210306110439.27694-1-avarab@gmail.com>
In-Reply-To
<20210218105840.11989-1-avarab@gmail.com>

Now that jt/transfer-fsck-across-packs has been merged to master here's a re-roll of v1[1]+v2[2] of this series. v2 was slimmed-down + had a trivial typo fix, so I've done the range-diff against v1.

This makes the recent fetch-pack work use the fsck_msg_id API to distinguish messages, and has other various cleanups and improvements to make the fsck API easier to use in the future.

There's a an easy merge conflict here with other in-flight changes to fsck. I figured it was better to send this now than wait for those to land.

1. https://lore.kernel.org/git/20210217194246.25342-1-avarab@gmail.com/
2. https://lore.kernel.org/git/20210218105840.11989-1-avarab@gmail.com/
Ævar Arnfjörð Bjarmason (22):
  fsck.h: update FSCK_OPTIONS_* for object_name
  fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
  fsck.h: reduce duplication between FSCK_OPTIONS_{DEFAULT,STRICT}
  fsck.h: add a FSCK_OPTIONS_COMMON_ERROR_FUNC macro
  fsck.h: indent arguments to of fsck_set_msg_type
  fsck.h: use "enum object_type" instead of "int"
  fsck.c: rename variables in fsck_set_msg_type() for less confusion
  fsck.c: move definition of msg_id into append_msg_id()
  fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
  fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
  fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
  fsck.h: re-order and re-assign "enum fsck_msg_type"
  fsck.c: call parse_msg_type() early in fsck_set_msg_type()
  fsck.c: undefine temporary STR macro after use
  fsck.c: give "FOREACH_MSG_ID" a more specific name
  fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
  fsck.c: pass along the fsck_msg_id in the fsck_error callback
  fsck.c: add an fsck_set_msg_type() API that takes enums
  fsck.c: move gitmodules_{found,done} into fsck_options
  fetch-pack: don't needlessly copy fsck_options
  fetch-pack: use file-scope static struct for fsck_options
  fetch-pack: use new fsck API to printing dangling submodules
 Makefile                 |   1 +
 builtin/fsck.c           |   7 +-
 builtin/index-pack.c     |  30 ++-----
 builtin/mktag.c          |   7 +-
 builtin/unpack-objects.c |   3 +-
 fetch-pack.c             |   6 +-
 fsck-cb.c                |  16 ++++
 fsck.c                   | 175 ++++++++++++---------------------------
 fsck.h                   | 132 ++++++++++++++++++++++++++---
 9 files changed, 211 insertions(+), 166 deletions(-)
 create mode 100644 fsck-cb.c
Range-diff:
13:  8de91fac068 =  1:  9d809466bd1 fsck.h: update FSCK_OPTIONS_* for object_name
 -:  ----------- >  2:  33e8b6d6545 fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
 -:  ----------- >  3:  c23f7ce9e4a fsck.h: reduce duplication between FSCK_OPTIONS_{DEFAULT,STRICT}
 -:  ----------- >  4:  5dde68df6c3 fsck.h: add a FSCK_OPTIONS_COMMON_ERROR_FUNC macro
 1:  88b347b74ed =  5:  7ae35a6e9d2 fsck.h: indent arguments to of fsck_set_msg_type
 2:  1a60d65d2ca !  6:  dfb5f754b37 fsck.h: use use "enum object_type" instead of "int"
    @@ Metadata
     Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## Commit message ##
    -    fsck.h: use use "enum object_type" instead of "int"
    +    fsck.h: use "enum object_type" instead of "int"
     
         Change the fsck_walk_func to use an "enum object_type" instead of an
         "int" type. The types are compatible, and ever since this was added in
 3:  24761f269b7 !  7:  fd58ec73c6b fsck.c: rename variables in fsck_set_msg_type() for less confusion
    @@ Commit message
         It was needlessly confusing that it took a "msg_type" argument, but
         then later declared another "msg_type" of a different type.
     
    -    Let's rename that to "tmp", and rename "id" to "msg_id" and "msg_id"
    -    to "msg_id_str" etc. This will make a follow-up change smaller.
    +    Let's rename that to "severity", and rename "id" to "msg_id" and
    +    "msg_id" to "msg_id_str" etc. This will make a follow-up change
    +    smaller.
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    @@ fsck.c: int is_valid_msg_type(const char *msg_id, const char *msg_type)
      		int i;
     -		int *msg_type;
     -		ALLOC_ARRAY(msg_type, FSCK_MSG_MAX);
    -+		int *tmp;
    -+		ALLOC_ARRAY(tmp, FSCK_MSG_MAX);
    ++		int *severity;
    ++		ALLOC_ARRAY(severity, FSCK_MSG_MAX);
      		for (i = 0; i < FSCK_MSG_MAX; i++)
     -			msg_type[i] = fsck_msg_type(i, options);
     -		options->msg_type = msg_type;
    -+			tmp[i] = fsck_msg_type(i, options);
    -+		options->msg_type = tmp;
    ++			severity[i] = fsck_msg_type(i, options);
    ++		options->msg_type = severity;
      	}
      
     -	options->msg_type[id] = type;
 4:  fb4c66f9305 =  8:  48cb4d3bb70 fsck.c: move definition of msg_id into append_msg_id()
 5:  a129dbd9964 !  9:  2c80ad32038 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
    @@ Commit message
         "msg_id". This change is relatively small, and is worth the churn for
         a later change where we have different id's in the "report" function.
     
    +    Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    +
      ## fsck.c ##
     @@ fsck.c: void fsck_set_msg_types(struct fsck_options *options, const char *values)
      	free(to_free);
 -:  ----------- > 10:  92dfbdfb624 fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
 6:  d9bee41072e ! 11:  c1c476af69b fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
    @@ Commit message
          - f27d05b1704 (fsck: allow upgrading fsck warnings to errors,
            2015-06-22)
     
    +    The reason these were defined in two different places is because we
    +    use FSCK_{IGNORE,INFO,FATAL} only in fsck.c, but FSCK_{ERROR,WARN} are
    +    used by external callbacks.
    +
    +    Untangling that would take some more work, since we expose the new
    +    "enum fsck_msg_type" to both. Similar to "enum object_type" it's not
    +    worth structuring the API in such a way that only those who need
    +    FSCK_{ERROR,WARN} pass around a different type.
    +
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## builtin/fsck.c ##
    @@ builtin/fsck.c: static int objerror(struct object *obj, const char *err)
      	switch (msg_type) {
      	case FSCK_WARN:
     
    + ## builtin/index-pack.c ##
    +@@ builtin/index-pack.c: static void show_pack_info(int stat_only)
    + static int print_dangling_gitmodules(struct fsck_options *o,
    + 				     const struct object_id *oid,
    + 				     enum object_type object_type,
    +-				     int msg_type, const char *message)
    ++				     enum fsck_msg_type msg_type,
    ++				     const char *message)
    + {
    + 	/*
    + 	 * NEEDSWORK: Plumb the MSG_ID (from fsck.c) here and use it
    +
      ## builtin/mktag.c ##
     @@ builtin/mktag.c: static int mktag_config(const char *var, const char *value, void *cb)
      static int mktag_fsck_error_func(struct fsck_options *o,
    @@ fsck.c: void list_config_fsck_msg_ids(struct string_list *list, const char *pref
     +static enum fsck_msg_type fsck_msg_type(enum fsck_msg_id msg_id,
      	struct fsck_options *options)
      {
    --	int msg_type;
    -+	enum fsck_msg_type msg_type;
    - 
      	assert(msg_id >= 0 && msg_id < FSCK_MSG_MAX);
      
    + 	if (!options->msg_type) {
    +-		int msg_type = msg_id_info[msg_id].msg_type;
    ++		enum fsck_msg_type msg_type = msg_id_info[msg_id].msg_type;
    + 
    + 		if (options->strict && msg_type == FSCK_WARN)
    + 			msg_type = FSCK_ERROR;
     @@ fsck.c: static int fsck_msg_type(enum fsck_msg_id msg_id,
    - 	return msg_type;
    + 	return options->msg_type[msg_id];
      }
      
     -static int parse_msg_type(const char *str)
    @@ fsck.c: void fsck_set_msg_type(struct fsck_options *options,
      
      	if (!options->msg_type) {
      		int i;
    --		int *tmp;
    -+		enum fsck_msg_type *tmp;
    - 		ALLOC_ARRAY(tmp, FSCK_MSG_MAX);
    +-		int *severity;
    ++		enum fsck_msg_type *severity;
    + 		ALLOC_ARRAY(severity, FSCK_MSG_MAX);
      		for (i = 0; i < FSCK_MSG_MAX; i++)
    - 			tmp[i] = fsck_msg_type(i, options);
    + 			severity[i] = fsck_msg_type(i, options);
     @@ fsck.c: static int report(struct fsck_options *options,
      {
      	va_list ap;
    @@ fsck.h
     -#define FSCK_ERROR 1
     -#define FSCK_WARN 2
     -#define FSCK_IGNORE 3
    --
     +enum fsck_msg_type {
    -+	FSCK_INFO = -2,
    ++	FSCK_INFO  = -2,
     +	FSCK_FATAL = -1,
     +	FSCK_ERROR = 1,
     +	FSCK_WARN,
     +	FSCK_IGNORE
     +};
    + 
      struct fsck_options;
      struct object;
    - 
     @@ fsck.h: typedef int (*fsck_walk_func)(struct object *obj, enum object_type object_type,
      /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */
      typedef int (*fsck_error)(struct fsck_options *o,
 -:  ----------- > 12:  d55587719a5 fsck.h: re-order and re-assign "enum fsck_msg_type"
 7:  423568026c3 = 13:  32828d1c78c fsck.c: call parse_msg_type() early in fsck_set_msg_type()
 8:  cb43e832738 = 14:  5c62066235c fsck.c: undefine temporary STR macro after use
 9:  2cd14cb4e2a = 15:  f8e50fbf7d3 fsck.c: give "FOREACH_MSG_ID" a more specific name
10:  1ada154ef23 ! 16:  cd74dee8769 fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
    @@ fsck.c
      ## fsck.h ##
     @@ fsck.h: enum fsck_msg_type {
      	FSCK_WARN,
    - 	FSCK_IGNORE
      };
    -+
    + 
     +#define FOREACH_FSCK_MSG_ID(FUNC) \
     +	/* fatal errors */ \
     +	FUNC(NUL_IN_HEADER, FATAL) \
11:  c4179445f22 ! 17:  234e287d081 fsck.c: pass along the fsck_msg_id in the fsck_error callback
    @@ builtin/fsck.c: static int objerror(struct object *obj, const char *err)
      	switch (msg_type) {
      	case FSCK_WARN:
     
    + ## builtin/index-pack.c ##
    +@@ builtin/index-pack.c: static int print_dangling_gitmodules(struct fsck_options *o,
    + 				     const struct object_id *oid,
    + 				     enum object_type object_type,
    + 				     enum fsck_msg_type msg_type,
    ++				     enum fsck_msg_id msg_id,
    + 				     const char *message)
    + {
    + 	/*
    +@@ builtin/index-pack.c: static int print_dangling_gitmodules(struct fsck_options *o,
    + 		printf("%s\n", oid_to_hex(oid));
    + 		return 0;
    + 	}
    +-	return fsck_error_function(o, oid, object_type, msg_type, message);
    ++	return fsck_error_function(o, oid, object_type, msg_type, msg_id, message);
    + }
    + 
    + int cmd_index_pack(int argc, const char **argv, const char *prefix)
    +
      ## builtin/mktag.c ##
     @@ builtin/mktag.c: static int mktag_fsck_error_func(struct fsck_options *o,
      				 const struct object_id *oid,
12:  c1fc724f0e8 ! 18:  8049dc07391 fsck.c: add an fsck_set_msg_type() API that takes enums
    @@ fsck.c: int is_valid_msg_type(const char *msg_id, const char *msg_type)
     +{
     +	if (!options->msg_type) {
     +		int i;
    -+		enum fsck_msg_type *tmp;
    -+		ALLOC_ARRAY(tmp, FSCK_MSG_MAX);
    ++		enum fsck_msg_type *severity;
    ++		ALLOC_ARRAY(severity, FSCK_MSG_MAX);
     +		for (i = 0; i < FSCK_MSG_MAX; i++)
    -+			tmp[i] = fsck_msg_type(i, options);
    -+		options->msg_type = tmp;
    ++			severity[i] = fsck_msg_type(i, options);
    ++		options->msg_type = severity;
     +	}
     +
     +	options->msg_type[msg_id] = msg_type;
    @@ fsck.c: void fsck_set_msg_type(struct fsck_options *options,
      
     -	if (!options->msg_type) {
     -		int i;
    --		enum fsck_msg_type *tmp;
    --		ALLOC_ARRAY(tmp, FSCK_MSG_MAX);
    +-		enum fsck_msg_type *severity;
    +-		ALLOC_ARRAY(severity, FSCK_MSG_MAX);
     -		for (i = 0; i < FSCK_MSG_MAX; i++)
    --			tmp[i] = fsck_msg_type(i, options);
    --		options->msg_type = tmp;
    +-			severity[i] = fsck_msg_type(i, options);
    +-		options->msg_type = severity;
     -	}
     -
     -	options->msg_type[msg_id] = msg_type;
14:  29ff97856ff ! 19:  4224a29d15c fsck.c: move gitmodules_{found,done} into fsck_options
    @@ Commit message
         fsck_options struct. It makes sense to keep all the context in the
         same place.
     
    +    This requires changing the recently added register_found_gitmodules()
    +    function added in 5476e1efde (fetch-pack: print and use dangling
    +    .gitmodules, 2021-02-22) to take fsck_options. That function will be
    +    removed in a subsequent commit, but as it'll require the new
    +    gitmodules_found attribute of "fsck_options" we need this intermediate
    +    step first.
    +
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    + ## fetch-pack.c ##
    +@@ fetch-pack.c: static void fsck_gitmodules_oids(struct oidset *gitmodules_oids)
    + 
    + 	oidset_iter_init(gitmodules_oids, &iter);
    + 	while ((oid = oidset_iter_next(&iter)))
    +-		register_found_gitmodules(oid);
    ++		register_found_gitmodules(&fo, oid);
    + 	if (fsck_finish(&fo))
    + 		die("fsck failed");
    + }
    +
      ## fsck.c ##
     @@
      #include "credential.h"
    @@ fsck.c: static int fsck_blob(const struct object_id *oid, const char *buf,
      
      	if (object_on_skiplist(options, oid))
      		return 0;
    +@@ fsck.c: int fsck_error_function(struct fsck_options *o,
    + 	return 1;
    + }
    + 
    +-void register_found_gitmodules(const struct object_id *oid)
    ++void register_found_gitmodules(struct fsck_options *options, const struct object_id *oid)
    + {
    +-	oidset_insert(&gitmodules_found, oid);
    ++	oidset_insert(&options->gitmodules_found, oid);
    + }
    + 
    + int fsck_finish(struct fsck_options *options)
     @@ fsck.c: int fsck_finish(struct fsck_options *options)
      	struct oidset_iter iter;
      	const struct object_id *oid;
    @@ fsck.h: struct fsck_options {
      	kh_oid_map_t *object_names;
      };
      
    --#define FSCK_OPTIONS_DEFAULT { NULL, fsck_error_function, 0, NULL, OIDSET_INIT, NULL }
    --#define FSCK_OPTIONS_STRICT { NULL, fsck_error_function, 1, NULL, OIDSET_INIT, NULL }
    -+#define FSCK_OPTIONS_DEFAULT { NULL, fsck_error_function, 0, NULL, OIDSET_INIT, OIDSET_INIT, OIDSET_INIT, NULL }
    -+#define FSCK_OPTIONS_STRICT { NULL, fsck_error_function, 1, NULL, OIDSET_INIT, OIDSET_INIT, OIDSET_INIT, NULL }
    +@@ fsck.h: struct fsck_options {
    + 	.walk = NULL, \
    + 	.msg_type = NULL, \
    + 	.skiplist = OIDSET_INIT, \
    ++	.gitmodules_found = OIDSET_INIT, \
    ++	.gitmodules_done = OIDSET_INIT, \
    + 	.object_names = NULL,
    + #define FSCK_OPTIONS_COMMON_ERROR_FUNC \
    + 	FSCK_OPTIONS_COMMON \
    +@@ fsck.h: int fsck_walk(struct object *obj, void *data, struct fsck_options *options);
    + int fsck_object(struct object *obj, void *data, unsigned long size,
    + 	struct fsck_options *options);
    + 
    +-void register_found_gitmodules(const struct object_id *oid);
    ++void register_found_gitmodules(struct fsck_options *options,
    ++			       const struct object_id *oid);
      
    - /* descend in all linked child objects
    -  * the return value is:
    + /*
    +  * fsck a tag, and pass info about it back to the caller. This is
 -:  ----------- > 20:  40b13468129 fetch-pack: don't needlessly copy fsck_options
 -:  ----------- > 21:  8e418abfbd7 fetch-pack: use file-scope static struct for fsck_options
 -:  ----------- > 22:  113de190f7d fetch-pack: use new fsck API to printing dangling submodules
-- 
2.31.0.rc0.126.g04f22c5b82
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 61 of 229 in “RFC on packfile URIs and .gitmodules check”
  1. Jonathan TanJan 15, 2021
  2. Junio C HamanoJan 16, 2021
  3. Taylor BlauJan 16, 2021
  4. Derrick StoleeJan 19, 2021
  5. Jonathan TanJan 19, 2021
  6. Junio C HamanoJan 20, 2021
  7. Jonathan TanJan 19, 2021
  8. Ævar Arnfjörð BjarmasonJan 20, 2021
  9. Doc: clarify contents of packfile sent as URIJonathan Tan, Jan 20, 2021
  10. Jonathan TanJan 20, 2021
  11. Junio C HamanoJan 21, 2021
  12. Jonathan TanJan 21, 2021
  13. Junio C HamanoJan 21, 2021
  14. 0/4 Check .gitmodules when using packfile URIsJonathan Tan, Jan 24, 2021
  15. 1/4 http: allow custom index-pack argsJonathan Tan, Jan 24, 2021
  16. 2/4 http-fetch: allow custom index-pack argsJonathan Tan, Jan 24, 2021
  17. Ævar Arnfjörð BjarmasonJan 24, 2021
  18. Jonathan TanJan 28, 2021
  19. Josh SteadmonFeb 16, 2021
  20. Junio C HamanoFeb 16, 2021
  21. Jonathan TanFeb 17, 2021
  22. 3/4 fetch-pack: with packfile URIs, use index-pack argJonathan Tan, Jan 24, 2021
  23. 4/4 fetch-pack: print and use dangling .gitmodulesJonathan Tan, Jan 24, 2021
  24. Junio C HamanoJan 24, 2021
  25. Junio C HamanoJan 26, 2021
  26. Jonathan TanJan 28, 2021
  27. Ævar Arnfjörð BjarmasonJan 24, 2021
  28. Jonathan TanJan 28, 2021
  29. Ævar Arnfjörð BjarmasonFeb 17, 2021
  30. 00/14 fsck: API improvementsÆvar Arnfjörð Bjarmason, Feb 17, 2021
  31. Junio C HamanoFeb 17, 2021
  32. Ævar Arnfjörð BjarmasonFeb 18, 2021
  33. Junio C HamanoFeb 18, 2021
  34. Jeff KingFeb 18, 2021
  35. Junio C HamanoFeb 18, 2021
  36. Ævar Arnfjörð BjarmasonFeb 19, 2021
  37. Junio C HamanoFeb 18, 2021
  38. 03/10 fsck.c: rename variables in fsck_set_msg_type() for less confusionÆvar Arnfjörð Bjarmason, Feb 18, 2021
  39. Jeff KingFeb 18, 2021
  40. 05/10 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"Ævar Arnfjörð Bjarmason, Feb 18, 2021
  41. Junio C HamanoFeb 18, 2021
  42. 09/10 fsck.c: give "FOREACH_MSG_ID" a more specific nameÆvar Arnfjörð Bjarmason, Feb 18, 2021
  43. Jeff KingFeb 18, 2021
  44. 06/10 fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enumÆvar Arnfjörð Bjarmason, Feb 18, 2021
  45. Jeff KingFeb 18, 2021
  46. Junio C HamanoFeb 18, 2021
  47. 10/10 fsck.h: update FSCK_OPTIONS_* for object_nameÆvar Arnfjörð Bjarmason, Feb 18, 2021
  48. Jeff KingFeb 18, 2021
  49. Junio C HamanoFeb 18, 2021
  50. Junio C HamanoFeb 18, 2021
  51. 08/10 fsck.c: undefine temporary STR macro after useÆvar Arnfjörð Bjarmason, Feb 18, 2021
  52. Junio C HamanoFeb 18, 2021
  53. 07/10 fsck.c: call parse_msg_type() early in fsck_set_msg_type()Ævar Arnfjörð Bjarmason, Feb 18, 2021
  54. Junio C HamanoFeb 18, 2021
  55. 04/10 fsck.c: move definition of msg_id into append_msg_id()Ævar Arnfjörð Bjarmason, Feb 18, 2021
  56. 01/10 fsck.h: indent arguments to of fsck_set_msg_typeÆvar Arnfjörð Bjarmason, Feb 18, 2021
  57. 02/10 fsck.h: use "enum object_type" instead of "int"Ævar Arnfjörð Bjarmason, Feb 18, 2021
  58. 00/10 fsck: API improvements (no conflicts with 'seen')Ævar Arnfjörð Bjarmason, Feb 18, 2021
  59. Junio C HamanoFeb 18, 2021
  60. 01/22 fsck.h: update FSCK_OPTIONS_* for object_nameÆvar Arnfjörð Bjarmason, Mar 6, 2021
  61. 00/22 fsck: API improvementsÆvar Arnfjörð Bjarmason, Mar 6, 2021
  62. Junio C HamanoMar 7, 2021
  63. Ævar Arnfjörð BjarmasonMar 8, 2021
  64. 01/22 fsck.h: update FSCK_OPTIONS_* for object_nameÆvar Arnfjörð Bjarmason, Mar 16, 2021
  65. Junio C HamanoMar 17, 2021
  66. Johannes SchindelinMar 19, 2021
  67. Ævar Arnfjörð BjarmasonMar 20, 2021
  68. Junio C HamanoMar 20, 2021
  69. 04/22 fsck.h: add a FSCK_OPTIONS_COMMON_ERROR_FUNC macroÆvar Arnfjörð Bjarmason, Mar 16, 2021
  70. Derrick StoleeMar 16, 2021
  71. 03/22 fsck.h: reduce duplication between FSCK_OPTIONS_{DEFAULT,STRICT}Ævar Arnfjörð Bjarmason, Mar 16, 2021
  72. 00/22 fsck: API improvementsÆvar Arnfjörð Bjarmason, Mar 16, 2021
  73. Derrick StoleeMar 16, 2021
  74. 01/19 fsck.c: refactor and rename common config callbackÆvar Arnfjörð Bjarmason, Mar 17, 2021
  75. 02/19 fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}Ævar Arnfjörð Bjarmason, Mar 17, 2021
  76. 03/19 fsck.h: use "enum object_type" instead of "int"Ævar Arnfjörð Bjarmason, Mar 17, 2021
  77. 00/19 fsck: API improvementsÆvar Arnfjörð Bjarmason, Mar 17, 2021
  78. Derrick StoleeMar 17, 2021
  79. Junio C HamanoMar 17, 2021
  80. 00/19 fsck: API improvementsÆvar Arnfjörð Bjarmason, Mar 28, 2021
  81. 02/19 fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}Ævar Arnfjörð Bjarmason, Mar 28, 2021
  82. Ramsay JonesMar 28, 2021
  83. Junio C HamanoMar 29, 2021
  84. 01/19 fsck.c: refactor and rename common config callbackÆvar Arnfjörð Bjarmason, Mar 28, 2021
  85. 04/19 fsck.c: rename variables in fsck_set_msg_type() for less confusionÆvar Arnfjörð Bjarmason, Mar 28, 2021
  86. 06/19 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"Ævar Arnfjörð Bjarmason, Mar 28, 2021
  87. 05/19 fsck.c: remove (mostly) redundant append_msg_id() functionÆvar Arnfjörð Bjarmason, Mar 28, 2021
  88. 03/19 fsck.h: use "enum object_type" instead of "int"Ævar Arnfjörð Bjarmason, Mar 28, 2021
  89. 08/19 fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enumÆvar Arnfjörð Bjarmason, Mar 28, 2021
  90. 09/19 fsck.h: re-order and re-assign "enum fsck_msg_type"Ævar Arnfjörð Bjarmason, Mar 28, 2021
  91. 07/19 fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"Ævar Arnfjörð Bjarmason, Mar 28, 2021
  92. 11/19 fsck.c: undefine temporary STR macro after useÆvar Arnfjörð Bjarmason, Mar 28, 2021
  93. 10/19 fsck.c: call parse_msg_type() early in fsck_set_msg_type()Ævar Arnfjörð Bjarmason, Mar 28, 2021
  94. 14/19 fsck.c: pass along the fsck_msg_id in the fsck_error callbackÆvar Arnfjörð Bjarmason, Mar 28, 2021
  95. 12/19 fsck.c: give "FOREACH_MSG_ID" a more specific nameÆvar Arnfjörð Bjarmason, Mar 28, 2021
  96. 15/19 fsck.c: add an fsck_set_msg_type() API that takes enumsÆvar Arnfjörð Bjarmason, Mar 28, 2021
  97. 13/19 fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.hÆvar Arnfjörð Bjarmason, Mar 28, 2021
  98. 16/19 fsck.c: move gitmodules_{found,done} into fsck_optionsÆvar Arnfjörð Bjarmason, Mar 28, 2021
  99. 17/19 fetch-pack: don't needlessly copy fsck_optionsÆvar Arnfjörð Bjarmason, Mar 28, 2021
  100. 19/19 fetch-pack: use new fsck API to printing dangling submodulesÆvar Arnfjörð Bjarmason, Mar 28, 2021
  101. 18/19 fetch-pack: use file-scope static struct for fsck_optionsÆvar Arnfjörð Bjarmason, Mar 28, 2021
  102. Junio C HamanoMar 29, 2021
  103. 04/19 fsck.c: rename variables in fsck_set_msg_type() for less confusionÆvar Arnfjörð Bjarmason, Mar 17, 2021
  104. 08/19 fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enumÆvar Arnfjörð Bjarmason, Mar 17, 2021
  105. 06/19 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"Ævar Arnfjörð Bjarmason, Mar 17, 2021
  106. 05/19 fsck.c: move definition of msg_id into append_msg_id()Ævar Arnfjörð Bjarmason, Mar 17, 2021
  107. 09/19 fsck.h: re-order and re-assign "enum fsck_msg_type"Ævar Arnfjörð Bjarmason, Mar 17, 2021
  108. 07/19 fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"Ævar Arnfjörð Bjarmason, Mar 17, 2021
  109. 10/19 fsck.c: call parse_msg_type() early in fsck_set_msg_type()Ævar Arnfjörð Bjarmason, Mar 17, 2021
  110. 11/19 fsck.c: undefine temporary STR macro after useÆvar Arnfjörð Bjarmason, Mar 17, 2021
  111. 12/19 fsck.c: give "FOREACH_MSG_ID" a more specific nameÆvar Arnfjörð Bjarmason, Mar 17, 2021
  112. 13/19 fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.hÆvar Arnfjörð Bjarmason, Mar 17, 2021
  113. 16/19 fsck.c: move gitmodules_{found,done} into fsck_optionsÆvar Arnfjörð Bjarmason, Mar 17, 2021
  114. 14/19 fsck.c: pass along the fsck_msg_id in the fsck_error callbackÆvar Arnfjörð Bjarmason, Mar 17, 2021
  115. 17/19 fetch-pack: don't needlessly copy fsck_optionsÆvar Arnfjörð Bjarmason, Mar 17, 2021
  116. 15/19 fsck.c: add an fsck_set_msg_type() API that takes enumsÆvar Arnfjörð Bjarmason, Mar 17, 2021
  117. 18/19 fetch-pack: use file-scope static struct for fsck_optionsÆvar Arnfjörð Bjarmason, Mar 17, 2021
  118. 19/19 fetch-pack: use new fsck API to printing dangling submodulesÆvar Arnfjörð Bjarmason, Mar 17, 2021
  119. 02/22 fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}Ævar Arnfjörð Bjarmason, Mar 16, 2021
  120. Derrick StoleeMar 16, 2021
  121. Junio C HamanoMar 17, 2021
  122. 05/22 fsck.h: indent arguments to of fsck_set_msg_typeÆvar Arnfjörð Bjarmason, Mar 16, 2021
  123. 06/22 fsck.h: use "enum object_type" instead of "int"Ævar Arnfjörð Bjarmason, Mar 16, 2021
  124. 08/22 fsck.c: move definition of msg_id into append_msg_id()Ævar Arnfjörð Bjarmason, Mar 16, 2021
  125. Junio C HamanoMar 17, 2021
  126. 07/22 fsck.c: rename variables in fsck_set_msg_type() for less confusionÆvar Arnfjörð Bjarmason, Mar 16, 2021
  127. 10/22 fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"Ævar Arnfjörð Bjarmason, Mar 16, 2021
  128. 09/22 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"Ævar Arnfjörð Bjarmason, Mar 16, 2021
  129. 11/22 fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enumÆvar Arnfjörð Bjarmason, Mar 16, 2021
  130. Junio C HamanoMar 17, 2021
  131. 13/22 fsck.c: call parse_msg_type() early in fsck_set_msg_type()Ævar Arnfjörð Bjarmason, Mar 16, 2021
  132. 12/22 fsck.h: re-order and re-assign "enum fsck_msg_type"Ævar Arnfjörð Bjarmason, Mar 16, 2021
  133. Junio C HamanoMar 17, 2021
  134. 15/22 fsck.c: give "FOREACH_MSG_ID" a more specific nameÆvar Arnfjörð Bjarmason, Mar 16, 2021
  135. 14/22 fsck.c: undefine temporary STR macro after useÆvar Arnfjörð Bjarmason, Mar 16, 2021
  136. Junio C HamanoMar 17, 2021
  137. 20/22 fetch-pack: don't needlessly copy fsck_optionsÆvar Arnfjörð Bjarmason, Mar 16, 2021
  138. 16/22 fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.hÆvar Arnfjörð Bjarmason, Mar 16, 2021
  139. 19/22 fsck.c: move gitmodules_{found,done} into fsck_optionsÆvar Arnfjörð Bjarmason, Mar 16, 2021
  140. 18/22 fsck.c: add an fsck_set_msg_type() API that takes enumsÆvar Arnfjörð Bjarmason, Mar 16, 2021
  141. 17/22 fsck.c: pass along the fsck_msg_id in the fsck_error callbackÆvar Arnfjörð Bjarmason, Mar 16, 2021
  142. Junio C HamanoMar 17, 2021
  143. 22/22 fetch-pack: use new fsck API to printing dangling submodulesÆvar Arnfjörð Bjarmason, Mar 16, 2021
  144. Derrick StoleeMar 16, 2021
  145. Ævar Arnfjörð BjarmasonMar 17, 2021
  146. Derrick StoleeMar 17, 2021
  147. Junio C HamanoMar 17, 2021
  148. 21/22 fetch-pack: use file-scope static struct for fsck_optionsÆvar Arnfjörð Bjarmason, Mar 16, 2021
  149. 02/22 fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}Ævar Arnfjörð Bjarmason, Mar 6, 2021
  150. 04/22 fsck.h: add a FSCK_OPTIONS_COMMON_ERROR_FUNC macroÆvar Arnfjörð Bjarmason, Mar 6, 2021
  151. 03/22 fsck.h: reduce duplication between FSCK_OPTIONS_{DEFAULT,STRICT}Ævar Arnfjörð Bjarmason, Mar 6, 2021
  152. 06/22 fsck.h: use "enum object_type" instead of "int"Ævar Arnfjörð Bjarmason, Mar 6, 2021
  153. 08/22 fsck.c: move definition of msg_id into append_msg_id()Ævar Arnfjörð Bjarmason, Mar 6, 2021
  154. 05/22 fsck.h: indent arguments to of fsck_set_msg_typeÆvar Arnfjörð Bjarmason, Mar 6, 2021
  155. 10/22 fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"Ævar Arnfjörð Bjarmason, Mar 6, 2021
  156. 13/22 fsck.c: call parse_msg_type() early in fsck_set_msg_type()Ævar Arnfjörð Bjarmason, Mar 6, 2021
  157. 15/22 fsck.c: give "FOREACH_MSG_ID" a more specific nameÆvar Arnfjörð Bjarmason, Mar 6, 2021
  158. 09/22 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"Ævar Arnfjörð Bjarmason, Mar 6, 2021
  159. 11/22 fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enumÆvar Arnfjörð Bjarmason, Mar 6, 2021
  160. 07/22 fsck.c: rename variables in fsck_set_msg_type() for less confusionÆvar Arnfjörð Bjarmason, Mar 6, 2021
  161. 19/22 fsck.c: move gitmodules_{found,done} into fsck_optionsÆvar Arnfjörð Bjarmason, Mar 6, 2021
  162. 18/22 fsck.c: add an fsck_set_msg_type() API that takes enumsÆvar Arnfjörð Bjarmason, Mar 6, 2021
  163. 12/22 fsck.h: re-order and re-assign "enum fsck_msg_type"Ævar Arnfjörð Bjarmason, Mar 6, 2021
  164. 17/22 fsck.c: pass along the fsck_msg_id in the fsck_error callbackÆvar Arnfjörð Bjarmason, Mar 6, 2021
  165. 21/22 fetch-pack: use file-scope static struct for fsck_optionsÆvar Arnfjörð Bjarmason, Mar 6, 2021
  166. 14/22 fsck.c: undefine temporary STR macro after useÆvar Arnfjörð Bjarmason, Mar 6, 2021
  167. 22/22 fetch-pack: use new fsck API to printing dangling submodulesÆvar Arnfjörð Bjarmason, Mar 6, 2021
  168. 20/22 fetch-pack: don't needlessly copy fsck_optionsÆvar Arnfjörð Bjarmason, Mar 6, 2021
  169. 16/22 fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.hÆvar Arnfjörð Bjarmason, Mar 6, 2021
  170. 02/14 fsck.h: use use "enum object_type" instead of "int"Ævar Arnfjörð Bjarmason, Feb 17, 2021
  171. Junio C HamanoFeb 17, 2021
  172. 03/14 fsck.c: rename variables in fsck_set_msg_type() for less confusionÆvar Arnfjörð Bjarmason, Feb 17, 2021
  173. 01/14 fsck.h: indent arguments to of fsck_set_msg_typeÆvar Arnfjörð Bjarmason, Feb 17, 2021
  174. 04/14 fsck.c: move definition of msg_id into append_msg_id()Ævar Arnfjörð Bjarmason, Feb 17, 2021
  175. 07/14 fsck.c: call parse_msg_type() early in fsck_set_msg_type()Ævar Arnfjörð Bjarmason, Feb 17, 2021
  176. 05/14 fsck.c: rename remaining fsck_msg_id "id" to "msg_id"Ævar Arnfjörð Bjarmason, Feb 17, 2021
  177. 08/14 fsck.c: undefine temporary STR macro after useÆvar Arnfjörð Bjarmason, Feb 17, 2021
  178. 10/14 fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.hÆvar Arnfjörð Bjarmason, Feb 17, 2021
  179. 12/14 fsck.c: add an fsck_set_msg_type() API that takes enumsÆvar Arnfjörð Bjarmason, Feb 17, 2021
  180. 11/14 fsck.c: pass along the fsck_msg_id in the fsck_error callbackÆvar Arnfjörð Bjarmason, Feb 17, 2021
  181. 06/14 fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enumÆvar Arnfjörð Bjarmason, Feb 17, 2021
  182. 13/14 fsck.h: update FSCK_OPTIONS_* for object_nameÆvar Arnfjörð Bjarmason, Feb 17, 2021
  183. 14/14 fsck.c: move gitmodules_{found,done} into fsck_optionsÆvar Arnfjörð Bjarmason, Feb 17, 2021
  184. 09/14 fsck.c: give "FOREACH_MSG_ID" a more specific nameÆvar Arnfjörð Bjarmason, Feb 17, 2021
  185. Jonathan TanFeb 17, 2021
  186. Ævar Arnfjörð BjarmasonJan 24, 2021
  187. Jonathan TanJan 28, 2021
  188. Ævar Arnfjörð BjarmasonFeb 17, 2021
  189. Jonathan TanFeb 17, 2021
  190. Ævar Arnfjörð BjarmasonFeb 18, 2021
  191. Ævar Arnfjörð BjarmasonFeb 17, 2021
  192. Jonathan TanFeb 17, 2021
  193. Junio C HamanoJan 24, 2021
  194. Jonathan TanJan 28, 2021
  195. Ævar Arnfjörð BjarmasonFeb 18, 2021
  196. Junio C HamanoFeb 18, 2021
  197. Jonathan TanFeb 19, 2021
  198. Junio C HamanoFeb 20, 2021
  199. Ævar Arnfjörð BjarmasonFeb 19, 2021
  200. Junio C HamanoFeb 20, 2021
  201. 0/4 Check .gitmodules when using packfile URIsJonathan Tan, Feb 22, 2021
  202. 1/4 http: allow custom index-pack argsJonathan Tan, Feb 22, 2021
  203. 2/4 http-fetch: allow custom index-pack argsJonathan Tan, Feb 22, 2021
  204. Ævar Arnfjörð BjarmasonFeb 23, 2021
  205. Jonathan TanFeb 23, 2021
  206. Jonathan NiederMar 5, 2021
  207. fetch-pack: do not mix --pack_header and packfile uriJonathan Tan, Mar 5, 2021
  208. Junio C HamanoMar 5, 2021
  209. Junio C HamanoMar 5, 2021
  210. Junio C HamanoMar 5, 2021
  211. Jonathan TanMar 5, 2021
  212. Junio C HamanoMar 5, 2021
  213. Jonathan TanMar 5, 2021
  214. Junio C HamanoMar 5, 2021
  215. Jonathan TanMar 8, 2021
  216. Junio C HamanoMar 8, 2021
  217. Junio C HamanoMar 9, 2021
  218. Junio C HamanoMar 10, 2021
  219. Jonathan TanMar 10, 2021
  220. Junio C HamanoMar 10, 2021
  221. Junio C HamanoMar 10, 2021
  222. Jonathan TanMar 10, 2021
  223. Junio C HamanoMar 11, 2021
  224. Junio C HamanoMar 11, 2021
  225. Jonathan TanMar 11, 2021
  226. Junio C HamanoMar 11, 2021
  227. 3/4 fetch-pack: with packfile URIs, use index-pack argJonathan Tan, Feb 22, 2021
  228. 4/4 fetch-pack: print and use dangling .gitmodulesJonathan Tan, Feb 22, 2021
  229. Junio C HamanoFeb 22, 2021

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.