<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Makefile, branch v2.50.0</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.50.0</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.50.0'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2025-05-27T20:59:08Z</updated>
<entry>
<title>Merge branch 'jk/no-funny-object-types'</title>
<updated>2025-05-27T20:59:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-05-27T20:59:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=17d9dbd3c270aaa33487f6a03d128c47aea6b309'/>
<id>urn:sha1:17d9dbd3c270aaa33487f6a03d128c47aea6b309</id>
<content type='text'>
Support to create a loose object file with unknown object type has
been dropped.

* jk/no-funny-object-types:
  object-file: drop support for writing objects with unknown types
  hash-object: handle --literally with OPT_NEGBIT
  hash-object: merge HASH_* and INDEX_* flags
  hash-object: stop allowing unknown types
  t: add lib-loose.sh
  t/helper: add zlib test-tool
  oid_object_info(): drop type_name strbuf
  fsck: stop using object_info-&gt;type_name strbuf
  oid_object_info_convert(): stop using string for object type
  cat-file: use type enum instead of buffer for -t option
  object-file: drop OBJECT_INFO_ALLOW_UNKNOWN_TYPE flag
  cat-file: make --allow-unknown-type a noop
  object-file.h: fix typo in variable declaration
</content>
</entry>
<entry>
<title>Merge branch 'bc/make-avoid-unneeded-rebuild-with-compdb-dir'</title>
<updated>2025-05-19T23:02:46Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-05-19T23:02:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=effbd42255aa2d93fbd5298538295b25f2b19057'/>
<id>urn:sha1:effbd42255aa2d93fbd5298538295b25f2b19057</id>
<content type='text'>
Build performance fix.

* bc/make-avoid-unneeded-rebuild-with-compdb-dir:
  Makefile: avoid constant rebuilds with compilation database
</content>
</entry>
<entry>
<title>t/helper: add zlib test-tool</title>
<updated>2025-05-16T16:43:11Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2025-05-16T04:49:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f2ed511a2f8f7339e21e4f2792ebe230e92dd669'/>
<id>urn:sha1:f2ed511a2f8f7339e21e4f2792ebe230e92dd669</id>
<content type='text'>
It's occasionally useful when testing or debugging to be able to do raw
zlib inflate/deflate operations (e.g., to check the bytes of a specific
loose or packed object).

Even though zlib's deflate algorithm is used by many other programs,
this is surprisingly hard to do in a portable way. E.g., gzip can do
this if you manually munge some header bytes. But the result is somewhat
arcane, and we don't assume gzip is available anyway. Likewise, pigz
will handle raw zlib, but we can't assume it is available.

So let's introduce a short test helper for just doing zlib operations.
We'll use it in subsequent patches to add some new tests, but it would
also have come in handy a few times in the past:

  - The hard-coded pack data from 3b910d0c5e (add tests for indexing
    packs with delta cycles, 2013-08-23) could probably be generated on
    the fly.

  - Likewise we could avoid the hard-coded data from 0b1493c2d4
    (git_inflate(): skip zlib_post_call() sanity check on Z_NEED_DICT,
    2025-02-25). Though note this would require support for more zlib
    options.

  - It would have helped with the debugging documented in 41dfbb2dbe
    (howto: add article on recovering a corrupted object, 2013-10-25).

I'll leave refactoring existing tests for another day, but I hope the
examples above show the general utility.

I aimed for simplicity in the code. In particular, it will read all
input into a memory buffer, rather than streaming. That makes the zlib
loops harder to get wrong (which has been a source of subtle bugs in the
past).

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ds/fix-thin-fix'</title>
<updated>2025-05-12T21:22:49Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-05-12T21:22:49Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6dbc41631d1ee65e1c12be7e3844e671b6bc44ea'/>
<id>urn:sha1:6dbc41631d1ee65e1c12be7e3844e671b6bc44ea</id>
<content type='text'>
"git index-pack --fix-thin" used to abort to prevent a cycle in
delta chains from forming in a corner case even when there is no
such cycle.

* ds/fix-thin-fix:
  index-pack: allow revisiting REF_DELTA chains
  t5309: create failing test for 'git index-pack'
  test-tool: add pack-deltas helper
</content>
</entry>
<entry>
<title>Makefile: avoid constant rebuilds with compilation database</title>
<updated>2025-05-09T21:50:20Z</updated>
<author>
<name>brian m. carlson</name>
<email>sandals@crustytoothpaste.net</email>
</author>
<published>2025-05-09T21:12:02Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=880146aefe0e60e330409a916a0c1b4ac21388c6'/>
<id>urn:sha1:880146aefe0e60e330409a916a0c1b4ac21388c6</id>
<content type='text'>
Many contributors to software use a Language Server Protocol
implementation to allow their editor to learn structural information
about the code they write and provide additional features, such as
jumping to the declaration or definition of a function or type.  In C,
the usual implementation is clangd, which requires compiling with clang.

Because C and C++ projects lack a standard file system layout and build
system, unlike languages such as Rust and Go, clangd requires a
compilation database to be generated by the clang compiler in order to
pass the proper compilation flags and discover all of the files
necessary to make the LSP work.  This is done by setting
GENERATE_COMPILATION_DATABASE to "yes".

However, when that's enabled and the user runs "make" a second time,
all of the files are re-compiled, which is inconvenient for contributors
to Git, since it makes small changes or rebases recompile the entirety
of the codebase.  This happens because the directory holding the
compilation database is updated anytime an object is built, so its
modification date will always be newer than the first object built.

To solve this, use the same trick we do just above for the .depend
directory and filter the compilation database directory out if it
already exists, which avoids making it a target to be built.

Signed-off-by: brian m. carlson &lt;sandals@crustytoothpaste.net&gt;
Helped-by: Philippe Blain &lt;levraiphilippeblain@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'kn/meson-hdr-check'</title>
<updated>2025-05-05T21:56:25Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-05-05T21:56:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=791db2c7ba4383dfa3346b090653792b0076822a'/>
<id>urn:sha1:791db2c7ba4383dfa3346b090653792b0076822a</id>
<content type='text'>
Add an equivalent to "make hdr-check" target to meson based builds.

* kn/meson-hdr-check:
  makefile/meson: add 'check-headers' as alias for 'hdr-check'
  meson: add support for 'hdr-check'
  meson: rename 'third_party_sources' to 'third_party_excludes'
  meson: move headers definition from 'contrib/coccinelle'
  coccinelle: meson: rename variables to be more specific
  ci/github: install git before checking out the repository
</content>
</entry>
<entry>
<title>Merge branch 'ps/install-bash-completion'</title>
<updated>2025-04-29T21:21:33Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-04-29T21:21:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=29c9aee5f018f6c16b97650cc1676b4962784eb1'/>
<id>urn:sha1:29c9aee5f018f6c16b97650cc1676b4962784eb1</id>
<content type='text'>
Build update to install bash (but not zsh) completion script.

* ps/install-bash-completion:
  contrib/completion: install Bash completion
</content>
</entry>
<entry>
<title>Merge branch 'ps/reftable-api-revamp'</title>
<updated>2025-04-29T21:21:30Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-04-29T21:21:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=a819a3da85655031a23abae0f75d0910697fb92c'/>
<id>urn:sha1:a819a3da85655031a23abae0f75d0910697fb92c</id>
<content type='text'>
Overhaul of the reftable API.

* ps/reftable-api-revamp:
  reftable/table: move printing logic into test helper
  reftable/constants: make block types part of the public interface
  reftable/table: introduce iterator for table blocks
  reftable/table: add `reftable_table` to the public interface
  reftable/block: expose a generic iterator over reftable records
  reftable/block: make block iterators reseekable
  reftable/block: store block pointer in the block iterator
  reftable/block: create public interface for reading blocks
  git-zlib: use `struct z_stream_s` instead of typedef
  reftable/block: rename `block_reader` to `reftable_block`
  reftable/block: rename `block` to `block_data`
  reftable/table: move reading block into block reader
  reftable/block: simplify how we track restart points
  reftable/blocksource: consolidate code into a single file
  reftable/reader: rename data structure to "table"
  reftable: fix formatting of the license header
</content>
</entry>
<entry>
<title>test-tool: add pack-deltas helper</title>
<updated>2025-04-28T22:37:25Z</updated>
<author>
<name>Derrick Stolee</name>
<email>stolee@gmail.com</email>
</author>
<published>2025-04-28T20:24:43Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=89d557b950c7a0581c12452e8f9576c45546246b'/>
<id>urn:sha1:89d557b950c7a0581c12452e8f9576c45546246b</id>
<content type='text'>
When trying to demonstrate certain behavior in tests, it can be helpful
to create packfiles that have specific delta structures. 'git
pack-objects' uses various algorithms to select deltas based on their
compression rates, but that does not always demonstrate all possible
packfile shapes. This becomes especially important when wanting to test
'git index-pack' and its ability to parse certain pack shapes.

We have prior art in t/lib-pack.sh, where certain delta structures are
produced by manually writing certain opaque pack contents. However,
producing these script updates is cumbersome and difficult to do as a
contributor.

Instead, create a new test-tool, 'test-tool pack-deltas', that reads a
list of instructions for which objects to include in a packfile and how
those objects should be written in delta form.

At the moment, this only supports REF_DELTAs as those are the kinds of
deltas needed to exercise a bug in 'git index-pack'.

Signed-off-by: Derrick Stolee &lt;stolee@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'rj/build-tweaks'</title>
<updated>2025-04-25T00:25:34Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-04-25T00:25:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=028c43269e50b65844c0b70557a2b9d5d4f21bd7'/>
<id>urn:sha1:028c43269e50b65844c0b70557a2b9d5d4f21bd7</id>
<content type='text'>
Various build tweaks, including CSPRNG selection on some platforms.

* rj/build-tweaks:
  config.mak.uname: set CSPRNG_METHOD to getrandom on Linux
  config.mak.uname: add arc4random to the cygwin build
  config.mak.uname: add sysinfo() configuration for cygwin
  builtin/gc.c: correct RAM calculation when using sysinfo
  config.mak.uname: add clock_gettime() to the cygwin build
  config.mak.uname: add HAVE_GETDELIM to the cygwin section
  config.mak.uname: only set NO_REGEX on cygwin for v1.7
  config.mak.uname: add a note about NO_STRLCPY for Linux
  Makefile: remove NEEDS_LIBRT build variable
  meson.build: set default help format to html on windows
  meson.build: only set build variables for non-default values
  Makefile: only set some BASIC_CFLAGS when RUNTIME_PREFIX is set
  meson.build: remove -DCURL_DISABLE_TYPECHECK
</content>
</entry>
</feed>
