<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/builtin, branch master</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=master</id>
<link rel='self' href='https://git.shady.money/git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-05-17T13:58:31Z</updated>
<entry>
<title>Merge branch 'hn/git-checkout-m-with-stash'</title>
<updated>2026-05-17T13:58:31Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-17T13:58:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d17a7b8191d59e387e728ff60c2e226fa6c940bc'/>
<id>urn:sha1:d17a7b8191d59e387e728ff60c2e226fa6c940bc</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: autostash when switching branches
  checkout: rollback lock on early returns in merge_working_tree
  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>Merge branch 'en/backfill-fixes-and-edges'</title>
<updated>2026-05-17T13:58:29Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-17T13:58:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=27caa6b4f7bce94fc1f07b96bcb0bcef8c5215f5'/>
<id>urn:sha1:27caa6b4f7bce94fc1f07b96bcb0bcef8c5215f5</id>
<content type='text'>
The 'git backfill' command now rejects revision-limiting options that
are incompatible with its operation, uses standard documentation for
revision ranges, and includes blobs from boundary commits by default
to improve performance of subsequent operations.

* en/backfill-fixes-and-edges:
  backfill: default to grabbing edge blobs too
  backfill: document acceptance of revision-range in more standard manner
  backfill: reject rev-list arguments that do not make sense
</content>
</entry>
<entry>
<title>Merge branch 'js/maintenance-fix-deadlock-on-win10'</title>
<updated>2026-05-12T02:04:46Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-12T02:04:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d14a9794dd0777c8f43141a3b7ca7070b2d58ff3'/>
<id>urn:sha1:d14a9794dd0777c8f43141a3b7ca7070b2d58ff3</id>
<content type='text'>
To help Windows 10 installations, avoid removing files whose
contents are still mmap()'ed.

* js/maintenance-fix-deadlock-on-win10:
  maintenance(geometric): do release the `.idx` files before repacking
  mingw: optionally use legacy (non-POSIX) delete semantics
</content>
</entry>
<entry>
<title>Merge branch 'ar/parallel-hooks'</title>
<updated>2026-05-11T01:05:53Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-11T01:05:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=718db095c27b79e4bcb2d4b10f423e782b9af1dc'/>
<id>urn:sha1:718db095c27b79e4bcb2d4b10f423e782b9af1dc</id>
<content type='text'>
Hook scripts defined via the configuration system can now be
configured to run in parallel.

* 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>maintenance(geometric): do release the `.idx` files before repacking</title>
<updated>2026-05-08T00:53:12Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2026-05-07T12:51:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4bb086cfa20aed183d540a701df9a71550c7caa4'/>
<id>urn:sha1:4bb086cfa20aed183d540a701df9a71550c7caa4</id>
<content type='text'>
As is done for all the other maintenance tasks, let's release the ODB
also before starting the geometric repacking. That way, the `.idx` files
won't be `mmap()`ed when they are to be deleted (which does not work on
Windows because you cannot delete files on that platform as long as they
are kept open by a process).

This regression was introduced by 9bc151850c1c (builtin/maintenance:
introduce "geometric-repack" task, 2025-10-24), but was only noticed
once geometric repacking was made the default in 452b12c2e0fe (builtin/
maintenance: use "geometric" strategy by default, 2026-02-24).

The fix recapitulates my work from df76ee7b77f0 (run-command: offer to
close the object store before running, 2021-09-09) &amp; friends.

To guard against future regressions of this kind, add a check to
`run_and_verify_geometric_pack()` in `t7900` that detects orphaned
`.idx` files left behind after repacking. Contrary to interactive
calls, the `git maintenance` call in that test case would _not_ block on
Windows, asking whether to retry deleting that file, which is the reason
why this bug was not caught earlier.

Furthermore, since the default behavior of `DeleteFileW()` was changed
at some point between Windows 10 Build 17134.1304 and Build 18363.657
to use POSIX semantics (see https://stackoverflow.com/a/60512798),
the added orphaned-`.idx` check would be insufficient to catch this
regression on modern Windows without emulating legacy delete semantics
via `GIT_TEST_LEGACY_DELETE=1`.

This fixes https://github.com/git-for-windows/git/issues/6210.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>checkout -m: autostash when switching branches</title>
<updated>2026-04-29T12:46:03Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-28T18:39:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c07039ebc4bbf2eb6c852fb1280891a448d1bf48'/>
<id>urn:sha1:c07039ebc4bbf2eb6c852fb1280891a448d1bf48</id>
<content type='text'>
When switching branches with "git checkout -m", the attempted merge
of local modifications may cause conflicts with the changes made on
the other branch, which the user may not want to (or may not be able
to) resolve right now.  Because there is no easy way to recover from
this situation, we discouraged users from using "checkout -m" unless
they are certain their changes are trivial and within their ability
to resolve conflicts.

Teach the -m flow to create a temporary stash before switching and
reapply it after.  On success, the stash is silently applied and
the list of locally modified paths is shown, same as a successful
"git checkout" without "-m".

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>checkout: rollback lock on early returns in merge_working_tree</title>
<updated>2026-04-29T12:46:03Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-28T18:39:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=26e4e50d463e1427c6288b33054e5d9a4a99a8f0'/>
<id>urn:sha1:26e4e50d463e1427c6288b33054e5d9a4a99a8f0</id>
<content type='text'>
merge_working_tree() acquires the index lock via
repo_hold_locked_index() but several early return paths exit
without calling rollback_lock_file(), leaving the lock held.
While this is currently harmless because the process exits soon
after, it becomes a problem if the function is ever called more
than once in the same process.

Add rollback_lock_file() calls to all early return paths.

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>sequencer: teach autostash apply to take optional conflict marker labels</title>
<updated>2026-04-29T12:46:03Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-28T18:39:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e1c8b2d4ece1ada17e818b8c1b0760a47c00cae9'/>
<id>urn:sha1:e1c8b2d4ece1ada17e818b8c1b0760a47c00cae9</id>
<content type='text'>
Add label_ours, label_theirs, label_base, and stash_msg parameters to
apply_autostash_ref() and the autostash apply machinery so callers can
pass custom conflict marker labels through to
"git stash apply --label-ours/--label-theirs/--label-base", as well as
a custom stash message for "git stash store -m".

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>sequencer: allow create_autostash to run silently</title>
<updated>2026-04-29T12:46:02Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-28T18:39:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=93177db652ce15533494033b1379b4e434cff364'/>
<id>urn:sha1:93177db652ce15533494033b1379b4e434cff364</id>
<content type='text'>
Add a silent parameter to create_autostash_internal and introduce
create_autostash_ref_silent so that callers can create an autostash
without printing the "Created autostash" message.

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-29T12:46:02Z</updated>
<author>
<name>Harald Nordgren</name>
<email>haraldnordgren@gmail.com</email>
</author>
<published>2026-04-28T18:39:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=13817db2746d48b6d3cfe68e3bf10a1be67865a9'/>
<id>urn:sha1:13817db2746d48b6d3cfe68e3bf10a1be67865a9</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>
</feed>
