<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/t, branch next</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=next</id>
<link rel='self' href='https://git.shady.money/git/atom?h=next'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-04-16T21:22:30Z</updated>
<entry>
<title>Merge branch 'jk/midx-write-v1-by-default' into next</title>
<updated>2026-04-16T21:22:30Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-16T21:22:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1b296b0f55885fa8fc649c4b31c37f3d86f3f9cf'/>
<id>urn:sha1:1b296b0f55885fa8fc649c4b31c37f3d86f3f9cf</id>
<content type='text'>
As writing version 2 MIDX files by default breaks older versions of
Git and its reimplementations, use V2 only when necessary.

* jk/midx-write-v1-by-default:
  MIDX: revert the default version to v1
</content>
</entry>
<entry>
<title>MIDX: revert the default version to v1</title>
<updated>2026-04-16T20:45:53Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2026-04-16T20:06:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=a12382f99488b8cea82f59a310084e43ff84e99b'/>
<id>urn:sha1:a12382f99488b8cea82f59a310084e43ff84e99b</id>
<content type='text'>
We introduced midx version 2 in b2ec8e90c2 (midx: do not require packs
to be sorted in lexicographic order, 2026-02-24) and now write it by
default. The rationale was that older versions should ignore the v2 midx
and fall back to using the packs (just like we do for other midx
errors). Unfortunately this is not the case, as we have a hard die()
when we see an unknown midx version.

As a result, writing a midx with Git 2.54-rc2 puts the repository into a
state that is unusable with Git 2.53. And this midx write may happen
behind the scenes as part of normal operations, like fetch.

Let's switch back to writing v1 by default to avoid regressing the case
where multiple versions of Git are used on the same repository.

There is one gotcha, though: the v2 format is required for some new
features, like midx compaction, and running "git multi-pack-index
compact" will complain when asked to write a v1 index. The user must set
midx.version to "2" to make the feature work.

So instead of always using v1, we'll base the default on whether the
requested feature requires v2. That does mean that running midx
compaction will create a repository that can't be read by older versions
of Git. But we never do that by default; only people experimenting with
the new feature will be affected.

We have to adjust the test expectation in t5319, since it will now
generate v1 files. And our "auto-select v2" is covered by the tests in
t5335, which continue to check that compaction works without having to
set midx.version manually (and also explicitly check that asking for v1
with compaction reports the problem).

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>Revert "Merge branch 'hn/git-checkout-m-with-stash' into next"</title>
<updated>2026-04-14T20:34:01Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-14T20:34:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=af818d63126afcfc708b23eb0e5cc66a99274b54'/>
<id>urn:sha1:af818d63126afcfc708b23eb0e5cc66a99274b54</id>
<content type='text'>
This reverts commit b4e5a964fa85a84a9328647486c250706ad6501d, reversing
changes made to 0e6c98f313ae3e75cedad7125c9b4ab3ba1065c2, as the topic
is still getting rerolled.
</content>
</entry>
<entry>
<title>Revert "Merge branch 'pt/fsmonitor-linux' into next"</title>
<updated>2026-04-14T20:33:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-14T20:33:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1d1c64f7a3e08160d84ce25dcef5b94569b15fc1'/>
<id>urn:sha1:1d1c64f7a3e08160d84ce25dcef5b94569b15fc1</id>
<content type='text'>
This reverts commit 37fa47889d5763ec3876606fb475bb68af9fd90f,
reversing changes made to 289fcba08108603e2370294eeff384fb2090ed6a,
as the tests in the topic was pointed out to be seriously broken.

cf. &lt;ad6hovxCkwMTG11U@szeder.dev&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ar/parallel-hooks' into next</title>
<updated>2026-04-13T20:58:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-13T20:58:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0a6acf0d17606427c900f6599b531d11f7702ff2'/>
<id>urn:sha1:0a6acf0d17606427c900f6599b531d11f7702ff2</id>
<content type='text'>
* ar/parallel-hooks:
  t1800: test SIGPIPE with parallel hooks
  hook: allow hook.jobs=-1 to use all available CPU cores
  hook: add hook.&lt;event&gt;.enabled switch
  hook: move is_known_hook() to hook.c for wider use
  hook: warn when hook.&lt;friendly-name&gt;.jobs is set
  hook: add per-event jobs config
  hook: add -j/--jobs option to git hook run
  hook: mark non-parallelizable hooks
  hook: allow pre-push parallel execution
  hook: allow parallel hook execution
  hook: parse the hook.jobs config
  config: add a repo_config_get_uint() helper
  repository: fix repo_init() memleak due to missing _clear()
</content>
</entry>
<entry>
<title>Merge branch 'pt/fsmonitor-linux' into next</title>
<updated>2026-04-13T20:58:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-13T20:58:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=37fa47889d5763ec3876606fb475bb68af9fd90f'/>
<id>urn:sha1:37fa47889d5763ec3876606fb475bb68af9fd90f</id>
<content type='text'>
The fsmonitor daemon has been implemented for Linux.

* pt/fsmonitor-linux:
  fsmonitor: convert shown khash to strset in do_handle_client
  fsmonitor: add tests for Linux
  fsmonitor: add timeout to daemon stop command
  fsmonitor: close inherited file descriptors and detach in daemon
  run-command: add close_fd_above_stderr option
  fsmonitor: implement filesystem change listener for Linux
  fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
  fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
  fsmonitor: use pthread_cond_timedwait for cookie wait
  compat/win32: add pthread_cond_timedwait
  fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
  fsmonitor: fix khash memory leak in do_handle_client
  t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests
</content>
</entry>
<entry>
<title>Merge branch 'cc/promisor-auto-config-url' into next</title>
<updated>2026-04-13T20:58:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-13T20:58:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=289fcba08108603e2370294eeff384fb2090ed6a'/>
<id>urn:sha1:289fcba08108603e2370294eeff384fb2090ed6a</id>
<content type='text'>
Promisor remote handling has been refactored and fixed in
preparation for auto-configuration of advertised remotes.

* cc/promisor-auto-config-url:
  t5710: use proper file:// URIs for absolute paths
  promisor-remote: remove the 'accepted' strvec
  promisor-remote: keep accepted promisor_info structs alive
  promisor-remote: refactor accept_from_server()
  promisor-remote: refactor has_control_char()
  promisor-remote: refactor should_accept_remote() control flow
  promisor-remote: reject empty name or URL in advertised remote
  promisor-remote: clarify that a remote is ignored
  promisor-remote: pass config entry to all_fields_match() directly
  promisor-remote: try accepted remotes before others in get_direct()
</content>
</entry>
<entry>
<title>Merge branch 'dl/cache-tree-fully-valid-fix' into next</title>
<updated>2026-04-13T20:58:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-13T20:58:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=68c82a9f37b50a0401fbc93f6b5305db1999ddcf'/>
<id>urn:sha1:68c82a9f37b50a0401fbc93f6b5305db1999ddcf</id>
<content type='text'>
The check that implements the logic to see if an in-core cache-tree
is fully ready to write out a tree object was broken, which has
been corrected.

* dl/cache-tree-fully-valid-fix:
  cache-tree: fix inverted object existence check in cache_tree_fully_valid
</content>
</entry>
<entry>
<title>Merge branch 'hn/git-checkout-m-with-stash' into next</title>
<updated>2026-04-13T15:46:10Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-13T15:46:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b4e5a964fa85a84a9328647486c250706ad6501d'/>
<id>urn:sha1:b4e5a964fa85a84a9328647486c250706ad6501d</id>
<content type='text'>
"git checkout -m another-branch" was invented to deal with local
changes to paths that are different between the current and the new
branch, but it gave only one chance to resolve conflicts.  The command
was taught to create a stash to save the local changes.

* hn/git-checkout-m-with-stash:
  checkout: -m (--merge) uses autostash when switching branches
  sequencer: teach autostash apply to take optional conflict marker labels
  sequencer: allow create_autostash to run silently
  stash: add --label-ours, --label-theirs, --label-base for apply
</content>
</entry>
<entry>
<title>checkout: -m (--merge) uses autostash when switching branches</title>
<updated>2026-04-12T22:11:39Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-12T11:51:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=887156319fae267d6ae00a9f0f2af142e055a25d'/>
<id>urn:sha1:887156319fae267d6ae00a9f0f2af142e055a25d</id>
<content type='text'>
When switching branches with "git checkout -m", local modifications
can block the switch.  Teach the -m flow to create a temporary stash
before switching and reapply it after.  On success, only "Applied
autostash." is shown.  If reapplying causes conflicts, the stash is
kept and the user is told they can resolve and run "git stash drop",
or run "git reset --hard" and later "git stash pop" to recover their
changes.

Signed-off-by: Harald Nordgren &lt;haraldnordgren@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
