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

[PATCH v2 00/20] reftable: stop using "git-compat-util.h"

From
Patrick Steinhardt <ps@pks.im>
Date
Jan 28, 2025, 08:28 UTC
Message-ID
<20250128-pks-reftable-drop-git-compat-util-v2-0-c85c20336317@pks.im>
In-Reply-To
<20250127-pks-reftable-drop-git-compat-util-v1-0-6e280a564877@pks.im>
Hi,

this patch series is the final step to fully decouple the reftable library from the rest of the Git codebase. The goal of this is to make the library reusable by other projects like libgit2 by simply copying over the source files, making Git the canonical upstream for reftable functionality.

This patch series stops using all kinds of helpers exposed by our "git-compat-util.h" header and open-codes them instead. In order to keep us from using these helpers by accident the final step is to pull out POSIX-related bits and pieces into a new "compat/posix.h" header, which the reftable library then uses instead of "git-compat-util.h".

The series is built on top of master at 5f8f7081f7 (The third batch, 2025-01-23) with ps/reftable-sign-compare at 33319b0976 (reftable: address trivial -Wsign-compare warnings, 2025-01-20) merged into it. There is a trivial merge conflict with ps/zlib-ng that can be solved like this:

    diff --cc reftable/system.h
    index e4a8944a70,d02eacea8f..0000000000
    --- a/reftable/system.h
    +++ b/reftable/system.h
    @@@ -11,15 -11,9 +11,15 @@@ https://developers.google.com/open-sour
      
      /* This header glues the reftable library to the rest of Git */
      
     -#include "git-compat-util.h"
     +#include "compat/posix.h"
    - #include <zlib.h>
    + #include "compat/zlib-compat.h"
      
     +/*
     + * Return a random 32 bit integer. This function is expected to return
     + * pre-seeded data.
     + */
     +uint32_t reftable_rand(void);
     +
      /*
       * An implementation-specific temporary file. By making this specific to the
       * implementation it becomes possible to tie temporary files into any kind of
Changes in v2:
  - The splitup of Windows headers has broken compilation because some
    of the headers couldn't be found anymore. I've fixed this more
    generally by converting includes in "compat/" to always be relative
    to the project source directory, dropping the platform-specific
    `-Icompat/` include.
  - Explain why we don't port over `EWOULDBLOCK` handling.
  - Fix commit message typos.
  - Link to v1: https://lore.kernel.org/r/20250127-pks-reftable-drop-git-compat-util-v1-0-6e280a564877@pks.im
Thanks!
Patrick
---
Patrick Steinhardt (20):
      reftable/stack: stop using `read_in_full()`
      reftable/stack: stop using `write_in_full()`
      reftable/blocksource: stop using `xmmap()`
      reftable/record: stop using `COPY_ARRAY()`
      reftable/record: stop using `BUG()` in `reftable_record_init()`
      reftable/record: don't `BUG()` in `reftable_record_cmp()`
      reftable: stop using `BUG()` in trivial cases
      reftable/basics: stop using `st_mult()` in array allocators
      reftable/basics: provide wrappers for big endian conversion
      reftable/reader: stop using `ARRAY_SIZE()` macro
      reftable/system: introduce `reftable_rand()`
      reftable/stack: stop using `sleep_millisec()`
      reftable/basics: stop using `SWAP()` macro
      reftable/basics: stop using `UNUSED` annotation
      compat: consistently resolve headers via project root
      compat/mingw: split out POSIX-related bits
      compat/msvc: split out POSIX-related bits
      git-compat-util.h: split out POSIX-emulating bits
      reftable: decouple from Git codebase by pulling in "compat/posix.h"
      Makefile: skip reftable library for Coccinelle
 Makefile                                 |   2 +-
 compat/access.c                          |   3 +-
 compat/basename.c                        |   4 +-
 compat/fileno.c                          |   2 +-
 compat/fopen.c                           |   2 +-
 compat/fsmonitor/fsm-health-darwin.c     |   2 +-
 compat/fsmonitor/fsm-health-win32.c      |   2 +-
 compat/fsmonitor/fsm-listen-darwin.c     |   4 +-
 compat/fsmonitor/fsm-listen-win32.c      |   2 +-
 compat/inet_ntop.c                       |   2 +-
 compat/inet_pton.c                       |   2 +-
 compat/memmem.c                          |   2 +-
 compat/{mingw.c => mingw/compat-util.c}  |  24 +-
 compat/mingw/compat-util.h               | 220 +++++++++++++
 compat/{mingw.h => mingw/posix.h}        | 216 +-----------
 compat/mkdir.c                           |   2 +-
 compat/mkdtemp.c                         |   2 +-
 compat/mmap.c                            |   2 +-
 compat/msvc.c                            |   6 -
 compat/msvc/compat-util.c                |   6 +
 compat/msvc/compat-util.h                |   7 +
 compat/{msvc.h => msvc/posix.h}          |   8 +-
 compat/nonblock.c                        |   4 +-
 compat/obstack.c                         |   2 +-
 compat/posix.h                           | 541 +++++++++++++++++++++++++++++++
 compat/pread.c                           |   4 +-
 compat/precompose_utf8.c                 |   2 +-
 compat/qsort_s.c                         |   2 +-
 compat/regcomp_enhanced.c                |   2 +-
 compat/setenv.c                          |   2 +-
 compat/snprintf.c                        |   2 +-
 compat/strcasestr.c                      |   2 +-
 compat/strdup.c                          |   2 +-
 compat/strlcpy.c                         |   2 +-
 compat/strtoimax.c                       |   2 +-
 compat/strtoumax.c                       |   2 +-
 compat/unsetenv.c                        |   2 +-
 compat/win32/dirent.c                    |   2 +-
 compat/win32/flush.c                     |   2 +-
 compat/win32/path-utils.c                |   4 +-
 compat/win32/pthread.c                   |   4 +-
 compat/win32/syslog.c                    |   2 +-
 compat/win32/trace2_win32_process_info.c |  10 +-
 compat/win32mmap.c                       |   2 +-
 compat/winansi.c                         |   6 +-
 config.mak.uname                         |  10 +-
 contrib/buildsystems/CMakeLists.txt      |   2 +-
 git-compat-util.h                        | 535 +-----------------------------
 meson.build                              |   8 +-
 reftable/basics.c                        |  19 --
 reftable/basics.h                        | 123 ++++++-
 reftable/block.c                         |  16 +-
 reftable/blocksource.c                   |  21 +-
 reftable/iter.c                          |  20 +-
 reftable/merged.c                        |  27 +-
 reftable/pq.c                            |  40 ++-
 reftable/pq.h                            |   2 +-
 reftable/reader.c                        |  33 +-
 reftable/record.c                        |  96 ++++--
 reftable/record.h                        |   6 +-
 reftable/stack.c                         |  52 ++-
 reftable/system.c                        |   7 +
 reftable/system.h                        |   9 +-
 reftable/writer.c                        |  29 +-
 t/unit-tests/t-reftable-basics.c         |  28 +-
 t/unit-tests/t-reftable-pq.c             |  22 +-
 t/unit-tests/t-reftable-record.c         |  42 ++-
 67 files changed, 1282 insertions(+), 992 deletions(-)
Range-diff versus v1:
 1:  1dc7341c0d !  1:  a0985a8b32 reftable/stack: stop using `read_in_full()`
    @@ Commit message
         There is a single callsite of `read_in_full()` in the reftable library.
         Open-code the function to reduce our dependency on the Git library.
     
    +    Note that we only partially port over the logic from `read_in_full()`
    +    and its underlying `xread()` helper. Most importantly, the latter also
    +    knows to handle `EWOULDBLOCK` via `handle_nonblock()`. This logic is
    +    irrelevant for us though because the reftable library never sets the
    +    `O_NONBLOCK` option in the first place.
    +
         Signed-off-by: Patrick Steinhardt <ps@pks.im>
     
      ## reftable/stack.c ##
 2:  a3a8bc7e8f =  2:  09e27dcfaf reftable/stack: stop using `write_in_full()`
 3:  43b83eb8e8 =  3:  0ecdb7a440 reftable/blocksource: stop using `xmmap()`
 4:  d89df1bac5 =  4:  b5e5803ec9 reftable/record: stop using `COPY_ARRAY()`
 5:  94fd212a82 =  5:  5f479bf84d reftable/record: stop using `BUG()` in `reftable_record_init()`
 6:  c110e452fe !  6:  9b10ec8f35 reftable/record: don't `BUG()` in `reftable_record_cmp()`
    @@ Metadata
      ## Commit message ##
         reftable/record: don't `BUG()` in `reftable_record_cmp()`
     
    -    The refatble library aborts with a bug in case `reftable_record_cmp()`
    +    The reftable library aborts with a bug in case `reftable_record_cmp()`
         is invoked with two records of differing types. This would cause the
         program to die without the caller being able to handle the error, which
         is not something we want in the context of library code. And it ties us
 7:  61165df24e =  7:  0fe9c21db3 reftable: stop using `BUG()` in trivial cases
 8:  a3e2d8f194 =  8:  b1f8ed2e92 reftable/basics: stop using `st_mult()` in array allocators
 9:  75c719d097 =  9:  40a5989b25 reftable/basics: provide wrappers for big endian conversion
10:  754391b32e = 10:  6c258880f1 reftable/reader: stop using `ARRAY_SIZE()` macro
11:  4e14362169 = 11:  65a78993fc reftable/system: introduce `reftable_rand()`
12:  142610e800 = 12:  e8a5090382 reftable/stack: stop using `sleep_millisec()`
13:  2b748b36ee = 13:  af72104f1c reftable/basics: stop using `SWAP()` macro
14:  fda87c2ec7 = 14:  4634e83e47 reftable/basics: stop using `UNUSED` annotation
 -:  ---------- > 15:  3a4949d74d compat: consistently resolve headers via project root
15:  34f81f0477 ! 16:  3520bf9252 compat/mingw: split out POSIX-related bits
    @@ compat/mingw/posix.h: char *mingw_query_user_email(void);
      ## compat/msvc.c ##
     @@
      #include <conio.h>
    - #include "../strbuf.h"
    + #include "strbuf.h"
      
    --#include "mingw.c"
    -+#include "mingw/compat-util.c"
    +-#include "compat/mingw.c"
    ++#include "compat/mingw/compat-util.c"
     
      ## compat/msvc.h ##
     @@ compat/msvc.h: typedef int sigset_t;
    @@ config.mak.uname: endif
      	NO_INITGROUPS = YesPlease
     @@ config.mak.uname: ifeq ($(uname_S),MINGW)
      	BASIC_LDFLAGS += -municode
    - 	COMPAT_CFLAGS += -DNOGDI -Icompat -Icompat/win32
    + 	COMPAT_CFLAGS += -DNOGDI -Icompat/win32
      	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
     -	COMPAT_OBJS += compat/mingw.o compat/winansi.o \
     +	COMPAT_OBJS += compat/mingw/compat-util.o compat/winansi.o \
16:  ed9da5dbf4 = 17:  fbb53e8526 compat/msvc: split out POSIX-related bits
17:  f19f95e6d8 ! 18:  6d57bc4b26 git-compat-util.h: split out POSIX-emulating bits
    @@ Commit message
         This intermixing is a bit of a problem for the reftable library as we
         don't want to recreate the POSIX-like interface there. But neither do we
         want to pull in the Git-specific functionality, as it is otherwise quite
    -    easy to start depedning on the Git codebase again.
    +    easy to start depending on the Git codebase again.
     
         Split out a new header "compat/posix.h" that only contains the bits and
         pieces relevant for the emulation of POSIX, which we will start using in
18:  463c285baa = 19:  746698c8ef reftable: decouple from Git codebase by pulling in "compat/posix.h"
19:  0973de24c0 = 20:  0f34ac6145 Makefile: skip reftable library for Coccinelle

--- base-commit: 5f8f7081f7761acdf83d0a4c6819fe3d724f01d7 change-id: 20241119-pks-reftable-drop-git-compat-util-470f2bfde562 prerequisite-message-id: <20250120-b4-pks-reftable-sign-compare-v2-0-b4566d02e4a5@pks.im> prerequisite-patch-id: fda53cfaa42008baf9e5e66f9805f1091d5e28f0 prerequisite-patch-id: 5b9f06f4b50f51c0afb42fbf4a1a678069b38056 prerequisite-patch-id: 864d6d587b43aae2dedbb6a327a1632eafae51c7 prerequisite-patch-id: aec82a709396ae48b44c86016533517f2a9983cb prerequisite-patch-id: 89087dd9f69dabfaac9b14874a6e8d8c1a42eada prerequisite-patch-id: 87ec0aec4990da55346179776f9326725256642f prerequisite-patch-id: b19cbfbe4fdd75d9ae319ca0e222ea01902f513e prerequisite-patch-id: 1395a747e0005f729ef88a47f0d0dd4cd7c4dca2 prerequisite-patch-id: d0e48535aa481bb1770753858cd6a093a1ad625b prerequisite-patch-id: d11a8b914e70cd56a5280e75fb7158f5de87eb22

Previous: Junio C HamanoNext: Patrick Steinhardt
Message 31 of 123 in “reftable: stop using "git-compat-util.h"”
  1. 00/19 reftable: stop using "git-compat-util.h"Patrick Steinhardt, Jan 27, 2025
  2. 02/19 reftable/stack: stop using `write_in_full()`Patrick Steinhardt, Jan 27, 2025
  3. 01/19 reftable/stack: stop using `read_in_full()`Patrick Steinhardt, Jan 27, 2025
  4. Justin ToblerJan 27, 2025
  5. Patrick SteinhardtJan 28, 2025
  6. Junio C HamanoJan 28, 2025
  7. Patrick SteinhardtJan 29, 2025
  8. 03/19 reftable/blocksource: stop using `xmmap()`Patrick Steinhardt, Jan 27, 2025
  9. 04/19 reftable/record: stop using `COPY_ARRAY()`Patrick Steinhardt, Jan 27, 2025
  10. 05/19 reftable/record: stop using `BUG()` in `reftable_record_init()`Patrick Steinhardt, Jan 27, 2025
  11. Justin ToblerJan 27, 2025
  12. 06/19 reftable/record: don't `BUG()` in `reftable_record_cmp()`Patrick Steinhardt, Jan 27, 2025
  13. Justin ToblerJan 27, 2025
  14. 07/19 reftable: stop using `BUG()` in trivial casesPatrick Steinhardt, Jan 27, 2025
  15. 08/19 reftable/basics: stop using `st_mult()` in array allocatorsPatrick Steinhardt, Jan 27, 2025
  16. 09/19 reftable/basics: provide wrappers for big endian conversionPatrick Steinhardt, Jan 27, 2025
  17. 10/19 reftable/reader: stop using `ARRAY_SIZE()` macroPatrick Steinhardt, Jan 27, 2025
  18. 11/19 reftable/system: introduce `reftable_rand()`Patrick Steinhardt, Jan 27, 2025
  19. 12/19 reftable/stack: stop using `sleep_millisec()`Patrick Steinhardt, Jan 27, 2025
  20. 13/19 reftable/basics: stop using `SWAP()` macroPatrick Steinhardt, Jan 27, 2025
  21. 14/19 reftable/basics: stop using `UNUSED` annotationPatrick Steinhardt, Jan 27, 2025
  22. 15/19 compat/mingw: split out POSIX-related bitsPatrick Steinhardt, Jan 27, 2025
  23. 16/19 compat/msvc: split out POSIX-related bitsPatrick Steinhardt, Jan 27, 2025
  24. 17/19 git-compat-util.h: split out POSIX-emulating bitsPatrick Steinhardt, Jan 27, 2025
  25. Justin ToblerJan 27, 2025
  26. 18/19 reftable: decouple from Git codebase by pulling in "compat/posix.h"Patrick Steinhardt, Jan 27, 2025
  27. 19/19 Makefile: skip reftable library for CoccinellePatrick Steinhardt, Jan 27, 2025
  28. Junio C HamanoJan 27, 2025
  29. Patrick SteinhardtJan 28, 2025
  30. Junio C HamanoJan 28, 2025
  31. 00/20 reftable: stop using "git-compat-util.h"Patrick Steinhardt, Jan 28, 2025
  32. 01/20 reftable/stack: stop using `read_in_full()`Patrick Steinhardt, Jan 28, 2025
  33. 02/20 reftable/stack: stop using `write_in_full()`Patrick Steinhardt, Jan 28, 2025
  34. 04/20 reftable/record: stop using `COPY_ARRAY()`Patrick Steinhardt, Jan 28, 2025
  35. Justin ToblerJan 29, 2025
  36. Patrick SteinhardtFeb 3, 2025
  37. 03/20 reftable/blocksource: stop using `xmmap()`Patrick Steinhardt, Jan 28, 2025
  38. 05/20 reftable/record: stop using `BUG()` in `reftable_record_init()`Patrick Steinhardt, Jan 28, 2025
  39. 06/20 reftable/record: don't `BUG()` in `reftable_record_cmp()`Patrick Steinhardt, Jan 28, 2025
  40. 07/20 reftable: stop using `BUG()` in trivial casesPatrick Steinhardt, Jan 28, 2025
  41. 08/20 reftable/basics: stop using `st_mult()` in array allocatorsPatrick Steinhardt, Jan 28, 2025
  42. 09/20 reftable/basics: provide wrappers for big endian conversionPatrick Steinhardt, Jan 28, 2025
  43. 10/20 reftable/reader: stop using `ARRAY_SIZE()` macroPatrick Steinhardt, Jan 28, 2025
  44. 11/20 reftable/system: introduce `reftable_rand()`Patrick Steinhardt, Jan 28, 2025
  45. 12/20 reftable/stack: stop using `sleep_millisec()`Patrick Steinhardt, Jan 28, 2025
  46. 13/20 reftable/basics: stop using `SWAP()` macroPatrick Steinhardt, Jan 28, 2025
  47. 14/20 reftable/basics: stop using `UNUSED` annotationPatrick Steinhardt, Jan 28, 2025
  48. 15/20 compat: consistently resolve headers via project rootPatrick Steinhardt, Jan 28, 2025
  49. Johannes SixtJan 29, 2025
  50. Junio C HamanoJan 29, 2025
  51. Patrick SteinhardtFeb 3, 2025
  52. 16/20 compat/mingw: split out POSIX-related bitsPatrick Steinhardt, Jan 28, 2025
  53. 17/20 compat/msvc: split out POSIX-related bitsPatrick Steinhardt, Jan 28, 2025
  54. 18/20 git-compat-util.h: split out POSIX-emulating bitsPatrick Steinhardt, Jan 28, 2025
  55. 19/20 reftable: decouple from Git codebase by pulling in "compat/posix.h"Patrick Steinhardt, Jan 28, 2025
  56. 20/20 Makefile: skip reftable library for CoccinellePatrick Steinhardt, Jan 28, 2025
  57. Junio C HamanoJan 28, 2025
  58. Patrick SteinhardtJan 29, 2025
  59. Junio C HamanoJan 29, 2025
  60. 00/18 reftable: stop using "git-compat-util.h"Patrick Steinhardt, Feb 3, 2025
  61. 01/18 reftable/stack: stop using `read_in_full()`Patrick Steinhardt, Feb 3, 2025
  62. 02/18 reftable/stack: stop using `write_in_full()`Patrick Steinhardt, Feb 3, 2025
  63. 03/18 reftable/blocksource: stop using `xmmap()`Patrick Steinhardt, Feb 3, 2025
  64. 04/18 reftable/record: stop using `COPY_ARRAY()`Patrick Steinhardt, Feb 3, 2025
  65. 05/18 reftable/record: stop using `BUG()` in `reftable_record_init()`Patrick Steinhardt, Feb 3, 2025
  66. 06/18 reftable/record: don't `BUG()` in `reftable_record_cmp()`Patrick Steinhardt, Feb 3, 2025
  67. 07/18 reftable: stop using `BUG()` in trivial casesPatrick Steinhardt, Feb 3, 2025
  68. 08/18 reftable/basics: stop using `st_mult()` in array allocatorsPatrick Steinhardt, Feb 3, 2025
  69. 09/18 reftable/basics: provide wrappers for big endian conversionPatrick Steinhardt, Feb 3, 2025
  70. 10/18 reftable/reader: stop using `ARRAY_SIZE()` macroPatrick Steinhardt, Feb 3, 2025
  71. 11/18 reftable/system: introduce `reftable_rand()`Patrick Steinhardt, Feb 3, 2025
  72. 12/18 reftable/stack: stop using `sleep_millisec()`Patrick Steinhardt, Feb 3, 2025
  73. 13/18 reftable/basics: stop using `SWAP()` macroPatrick Steinhardt, Feb 3, 2025
  74. 14/18 reftable/basics: stop using `UNUSED` annotationPatrick Steinhardt, Feb 3, 2025
  75. 15/18 compat/mingw: split out POSIX-related bitsPatrick Steinhardt, Feb 3, 2025
  76. 16/18 git-compat-util.h: split out POSIX-emulating bitsPatrick Steinhardt, Feb 3, 2025
  77. 17/18 reftable: decouple from Git codebase by pulling in "compat/posix.h"Patrick Steinhardt, Feb 3, 2025
  78. 18/18 Makefile: skip reftable library for CoccinellePatrick Steinhardt, Feb 3, 2025
  79. Justin ToblerFeb 6, 2025
  80. 00/18 reftable: stop using "git-compat-util.h"Patrick Steinhardt, Feb 6, 2025
  81. 02/18 reftable/stack: stop using `write_in_full()`Patrick Steinhardt, Feb 6, 2025
  82. 01/18 reftable/stack: stop using `read_in_full()`Patrick Steinhardt, Feb 6, 2025
  83. 03/18 reftable/blocksource: stop using `xmmap()`Patrick Steinhardt, Feb 6, 2025
  84. 04/18 reftable/record: stop using `COPY_ARRAY()`Patrick Steinhardt, Feb 6, 2025
  85. 05/18 reftable/record: stop using `BUG()` in `reftable_record_init()`Patrick Steinhardt, Feb 6, 2025
  86. 06/18 reftable/record: don't `BUG()` in `reftable_record_cmp()`Patrick Steinhardt, Feb 6, 2025
  87. 07/18 reftable: stop using `BUG()` in trivial casesPatrick Steinhardt, Feb 6, 2025
  88. 08/18 reftable/basics: stop using `st_mult()` in array allocatorsPatrick Steinhardt, Feb 6, 2025
  89. 10/18 reftable/reader: stop using `ARRAY_SIZE()` macroPatrick Steinhardt, Feb 6, 2025
  90. 09/18 reftable/basics: provide wrappers for big endian conversionPatrick Steinhardt, Feb 6, 2025
  91. 11/18 reftable/system: introduce `reftable_rand()`Patrick Steinhardt, Feb 6, 2025
  92. 12/18 reftable/stack: stop using `sleep_millisec()`Patrick Steinhardt, Feb 6, 2025
  93. 13/18 reftable/basics: stop using `SWAP()` macroPatrick Steinhardt, Feb 6, 2025
  94. 14/18 reftable/basics: stop using `UNUSED` annotationPatrick Steinhardt, Feb 6, 2025
  95. Toon ClaesFeb 7, 2025
  96. Patrick SteinhardtFeb 7, 2025
  97. 15/18 compat/mingw: split out POSIX-related bitsPatrick Steinhardt, Feb 6, 2025
  98. 16/18 git-compat-util.h: split out POSIX-emulating bitsPatrick Steinhardt, Feb 6, 2025
  99. 17/18 reftable: decouple from Git codebase by pulling in "compat/posix.h"Patrick Steinhardt, Feb 6, 2025
  100. 18/18 Makefile: skip reftable library for CoccinellePatrick Steinhardt, Feb 6, 2025
  101. 00/18 reftable: stop using "git-compat-util.h"Patrick Steinhardt, Feb 7, 2025
  102. 01/18 reftable/stack: stop using `read_in_full()`Patrick Steinhardt, Feb 7, 2025
  103. 02/18 reftable/stack: stop using `write_in_full()`Patrick Steinhardt, Feb 7, 2025
  104. 03/18 reftable/blocksource: stop using `xmmap()`Patrick Steinhardt, Feb 7, 2025
  105. 04/18 reftable/record: stop using `COPY_ARRAY()`Patrick Steinhardt, Feb 7, 2025
  106. 05/18 reftable/record: stop using `BUG()` in `reftable_record_init()`Patrick Steinhardt, Feb 7, 2025
  107. 06/18 reftable/record: don't `BUG()` in `reftable_record_cmp()`Patrick Steinhardt, Feb 7, 2025
  108. 08/18 reftable/basics: stop using `st_mult()` in array allocatorsPatrick Steinhardt, Feb 7, 2025
  109. 07/18 reftable: stop using `BUG()` in trivial casesPatrick Steinhardt, Feb 7, 2025
  110. 09/18 reftable/basics: provide wrappers for big endian conversionPatrick Steinhardt, Feb 7, 2025
  111. 10/18 reftable/reader: stop using `ARRAY_SIZE()` macroPatrick Steinhardt, Feb 7, 2025
  112. 11/18 reftable/system: introduce `reftable_rand()`Patrick Steinhardt, Feb 7, 2025
  113. 12/18 reftable/stack: stop using `sleep_millisec()`Patrick Steinhardt, Feb 7, 2025
  114. 13/18 reftable/basics: stop using `SWAP()` macroPatrick Steinhardt, Feb 7, 2025
  115. 14/18 reftable/basics: introduce `REFTABLE_UNUSED` annotationPatrick Steinhardt, Feb 7, 2025
  116. 15/18 compat/mingw: split out POSIX-related bitsPatrick Steinhardt, Feb 7, 2025
  117. Johannes SixtFeb 9, 2025
  118. Junio C HamanoFeb 10, 2025
  119. Johannes SchindelinFeb 13, 2025
  120. Patrick SteinhardtFeb 17, 2025
  121. 16/18 git-compat-util.h: split out POSIX-emulating bitsPatrick Steinhardt, Feb 7, 2025
  122. 17/18 reftable: decouple from Git codebase by pulling in "compat/posix.h"Patrick Steinhardt, Feb 7, 2025
  123. 18/18 Makefile: skip reftable library for CoccinellePatrick Steinhardt, Feb 7, 2025

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.