<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/builtin, 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-14T20:34:01Z</updated>
<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 '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>
<entry>
<title>stash: add --label-ours, --label-theirs, --label-base for apply</title>
<updated>2026-04-12T22:11:39Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-12T11:51:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=09a43fe49ffb441505182d1a5d922f1c88419740'/>
<id>urn:sha1:09a43fe49ffb441505182d1a5d922f1c88419740</id>
<content type='text'>
Allow callers of "git stash apply" to pass custom labels for conflict
markers instead of the default "Updated upstream" and "Stashed changes".
Document the new options and add a test.

Signed-off-by: Harald Nordgren &lt;haraldnordgren@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>hook: allow hook.jobs=-1 to use all available CPU cores</title>
<updated>2026-04-10T14:58:55Z</updated>
<author>
<name>Adrian Ratiu</name>
<email>adrian.ratiu@collabora.com</email>
</author>
<published>2026-04-10T09:06:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=495b7d54dc006556548e2fd3ca15c4f533917329'/>
<id>urn:sha1:495b7d54dc006556548e2fd3ca15c4f533917329</id>
<content type='text'>
Allow -1 as a value for hook.jobs, hook.&lt;event&gt;.jobs, and the -j
CLI flag to mean "use as many jobs as there are CPU cores", matching
the convention used by fetch.parallel and other Git subsystems.

The value is resolved to online_cpus() at parse time so the rest
of the code always works with a positive resolved count.

Other non-positive values (0, -2, etc) are rejected with a warning
(config) or die (CLI).

Suggested-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Adrian Ratiu &lt;adrian.ratiu@collabora.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>hook: add hook.&lt;event&gt;.enabled switch</title>
<updated>2026-04-10T14:58:54Z</updated>
<author>
<name>Adrian Ratiu</name>
<email>adrian.ratiu@collabora.com</email>
</author>
<published>2026-04-10T09:06:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=dcfb5af67e7d7156c4d1ede66de18088c990356c'/>
<id>urn:sha1:dcfb5af67e7d7156c4d1ede66de18088c990356c</id>
<content type='text'>
Add a hook.&lt;event&gt;.enabled config key that disables all hooks for
a given event, when set to false, acting as a high-level switch
above the existing per-hook hook.&lt;friendly-name&gt;.enabled.

Event-disabled hooks are shown in "git hook list" with an
"event-disabled" tab-separated prefix before the name:

$ git hook list test-hook
event-disabled  hook-1
event-disabled  hook-2

With --show-scope:

$ git hook list --show-scope test-hook
local   event-disabled  hook-1

When a hook is both per-hook disabled and event-disabled, only
"event-disabled" is shown: the event-level switch is the more
relevant piece of information, and the per-hook "disabled" status
will surface once the event is re-enabled.

Using an event name as a friendly-name (e.g. hook.&lt;event&gt;.enabled)
can cause ambiguity, so a fatal error is issued when using a known
event name and a warning is issued for unknown event name, since
a collision cannot be detected with certainty for unknown events.

Suggested-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Suggested-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: Adrian Ratiu &lt;adrian.ratiu@collabora.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>hook: move is_known_hook() to hook.c for wider use</title>
<updated>2026-04-10T14:58:54Z</updated>
<author>
<name>Adrian Ratiu</name>
<email>adrian.ratiu@collabora.com</email>
</author>
<published>2026-04-10T09:06:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2eb541e8f2a9b0dd923279421c741d0a0c00420d'/>
<id>urn:sha1:2eb541e8f2a9b0dd923279421c741d0a0c00420d</id>
<content type='text'>
Move is_known_hook() from builtin/hook.c (static) into hook.c and
export it via hook.h so it can be reused.

Make it return bool and the iterator `h` for clarity (iterate hooks).

Both meson.build and the Makefile are updated to reflect that the
header is now used by libgit, not the builtin sources.

The next commit will use this to reject hook friendly-names that
collide with known event names.

Co-authored-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Adrian Ratiu &lt;adrian.ratiu@collabora.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
