<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Documentation/config, branch seen</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=seen</id>
<link rel='self' href='https://git.shady.money/git/atom?h=seen'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-05-18T05:29:05Z</updated>
<entry>
<title>Merge branch 'jt/config-lock-timeout' into seen</title>
<updated>2026-05-18T05:29:05Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-18T05:29:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=31cee669ba10e2d32800b72eb72ddbafb425504b'/>
<id>urn:sha1:31cee669ba10e2d32800b72eb72ddbafb425504b</id>
<content type='text'>
Configuration file locking now retries for a short period, avoiding
failures when multiple processes attempt to update the configuration
simultaneously.

Comments?
cf. &lt;xmqqzf1xbl4i.fsf@gitster.g&gt;

* jt/config-lock-timeout:
  config: retry acquiring config.lock, configurable via core.configLockTimeout
</content>
</entry>
<entry>
<title>Merge branch 'ja/doc-synopsis-style-again' into seen</title>
<updated>2026-05-18T05:29:05Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-18T05:29:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e308604a4f90a8b4c2ec4b9647ce89f00c348980'/>
<id>urn:sha1:e308604a4f90a8b4c2ec4b9647ce89f00c348980</id>
<content type='text'>
A batch of documentation pages has been updated to use the modern
synopsis style.

Comments?

* ja/doc-synopsis-style-again:
  doc: convert git-imap-send synopsis and options to new style
  doc: convert git-apply synopsis and options to new style
  doc: convert git-am synopsis and options to new style
  doc: convert git-grep synopsis and options to new style
  doc: convert git-bisect to synopsis style
</content>
</entry>
<entry>
<title>Merge branch 'hn/branch-prune-merged' into seen</title>
<updated>2026-05-18T05:29:03Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-18T05:29:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=a611590443f3abe23e6254a48447666132bc2070'/>
<id>urn:sha1:a611590443f3abe23e6254a48447666132bc2070</id>
<content type='text'>
"git branch" command learned "--prune-merged" option to remove
local branches that have already been merged to the remote-tracking
branches they track.

Comments?

* hn/branch-prune-merged:
  branch: add --all-remotes flag
  branch: add branch.&lt;name&gt;.pruneMerged opt-out
  branch: add --prune-merged &lt;remote&gt;
  branch: let delete_branches warn instead of error on bulk refusal
  branch: add --forked &lt;remote&gt;
</content>
</entry>
<entry>
<title>Merge branch 'cc/promisor-auto-config-url-more' into seen</title>
<updated>2026-05-18T05:29:01Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-18T05:29:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d40141037b41f7708b8aeeadc42dfbccf1b21e9c'/>
<id>urn:sha1:d40141037b41f7708b8aeeadc42dfbccf1b21e9c</id>
<content type='text'>
The handling of promisor-remote protocol capability has been
loosened to allow the other side to add to the list of promisor
remotes via the promisor.acceptFromServerURL configuration
variable.

* cc/promisor-auto-config-url-more:
  doc: promisor: improve acceptFromServer entry
  promisor-remote: auto-configure unknown remotes
  promisor-remote: trust known remotes matching acceptFromServerUrl
  promisor-remote: introduce promisor.acceptFromServerUrl
  promisor-remote: add 'local_name' to 'struct promisor_info'
  urlmatch: add url_normalize_pattern() helper
  urlmatch: change 'allow_globs' arg to bool
  t5710: simplify 'mkdir X' followed by 'git -C X init'
</content>
</entry>
<entry>
<title>Merge branch 'pt/fsmonitor-linux' into seen</title>
<updated>2026-05-18T05:28:59Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-18T05:28:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7001bdddc52b67f531fd3dcad73683637bc3b794'/>
<id>urn:sha1:7001bdddc52b67f531fd3dcad73683637bc3b794</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 'ds/fetch-negotiation-options' into seen</title>
<updated>2026-05-18T05:28:57Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-18T05:28:57Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=22eed99690521b9baa3d04ccfef6781ebc6f6e39'/>
<id>urn:sha1:22eed99690521b9baa3d04ccfef6781ebc6f6e39</id>
<content type='text'>
The negotiation tip options in "git fetch" have been reworked to
allow requiring certain refs to be sent as "have" lines, and to
restrict negotiation to a specific set of refs.

Comments?

* ds/fetch-negotiation-options:
  send-pack: pass negotiation config in push
  remote: add remote.*.negotiationInclude config
  fetch: add --negotiation-include option for negotiation
  negotiator: add have_sent() interface
  remote: add remote.*.negotiationRestrict config
  transport: rename negotiation_tips
  fetch: add --negotiation-restrict option
  t5516: fix test order flakiness
</content>
</entry>
<entry>
<title>config: retry acquiring config.lock, configurable via core.configLockTimeout</title>
<updated>2026-05-18T00:30:29Z</updated>
<author>
<name>Jörg Thalheim</name>
<email>joerg@thalheim.io</email>
</author>
<published>2026-05-17T13:21:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=df67d73ca3268eec5c924d6fe9d2c050ce23f3b1'/>
<id>urn:sha1:df67d73ca3268eec5c924d6fe9d2c050ce23f3b1</id>
<content type='text'>
Concurrent config writers race for the ".lock" file, which is taken
with open(O_EXCL) and no retry, so the losers fail right away with
"could not lock config file".

This shows up with parallel "git worktree add -b" against the same
repository: each one writes a couple of branch.* keys and the losers
fail at random. Worse, "git worktree add" doesn't propagate that
failure to its exit code, so the tracking config is silently dropped.
(The swallowed error is a separate bug.)

Retry instead of giving up on the first EEXIST. The lock is only held
while rewriting a small file, so the loser only has to wait out the
other writers. Same approach as 4ff0f01cb7 (refs: retry acquiring
reference locks for 100ms, 2017-08-21).

On the semantics: the on-disk config is read only after the lock is
taken, so writers touching different keys can't lose each other's
change. Writers touching the same key still get last-writer-wins, but
that is already the case today and would need a compare-and-swap config
API to fix. The retry only turns hard failures into successes.

Default to 1000ms, like core.packedRefsTimeout: same shape of problem,
one shared file everyone serializes through. A larger timeout only
costs anything when a stale lock is left behind by a crash, which is
rare; a smaller one fails spuriously on slow filesystems (NTFS has
been seen needing more than 100ms). Make it configurable as
core.configLockTimeout. There is no chicken-and-egg problem: we read
the config before we lock it.

microsoft/git carries a similar patch (core.configWriteLockTimeoutMS,
default off) for Scalar's tests. Defaulting to non-zero here because
the worktree case fails silently.

Helped-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Helped-by: Johannes Schindelin &lt;Johannes.Schindelin@gmx.de&gt;
Signed-off-by: Jörg Thalheim &lt;joerg@thalheim.io&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: convert git-imap-send synopsis and options to new style</title>
<updated>2026-05-17T23:50:34Z</updated>
<author>
<name>Jean-Noël Avila</name>
<email>jn.avila@free.fr</email>
</author>
<published>2026-05-17T20:26:55Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=deedcdc1969847e8e3d8282e1e91c8812f0e400a'/>
<id>urn:sha1:deedcdc1969847e8e3d8282e1e91c8812f0e400a</id>
<content type='text'>
Convert git-imap-send from [verse]/single-quote style to the modern
synopsis-block style:

- Replace [verse] with [synopsis] in SYNOPSIS block
- Backtick-quote all OPTIONS terms
- Backtick-quote all config keys in config/imap.adoc
- Backtick-quote bare config key references in prose

Signed-off-by: Jean-Noël Avila &lt;jn.avila@free.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: convert git-apply synopsis and options to new style</title>
<updated>2026-05-17T23:50:33Z</updated>
<author>
<name>Jean-Noël Avila</name>
<email>jn.avila@free.fr</email>
</author>
<published>2026-05-17T20:26:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f083cccd6eca64d6e296d2c1c9a63665a481c5b6'/>
<id>urn:sha1:f083cccd6eca64d6e296d2c1c9a63665a481c5b6</id>
<content type='text'>
Convert git-apply from [verse]/single-quote style to the modern
synopsis-block style:

- Replace [verse] with [synopsis] in SYNOPSIS block
- Backtick-quote all OPTIONS terms and config keys in config/apply.adoc
- Convert single-quoted inline commands ('git apply', 'diff', etc.)
- Wrap standalone placeholders in underscores (&lt;n&gt;, &lt;root&gt;, &lt;action&gt;)
- Backtick-quote `*.rej` and GNU `patch` tool references

Signed-off-by: Jean-Noël Avila &lt;jn.avila@free.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: convert git-am synopsis and options to new style</title>
<updated>2026-05-17T23:50:33Z</updated>
<author>
<name>Jean-Noël Avila</name>
<email>jn.avila@free.fr</email>
</author>
<published>2026-05-17T20:26:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b335a75d1b8fd8e4b6c8d2e3d96fb5a181b3cadb'/>
<id>urn:sha1:b335a75d1b8fd8e4b6c8d2e3d96fb5a181b3cadb</id>
<content type='text'>
Convert git-am from [verse]/single-quote style to the modern
synopsis-block style:

- Replace [verse] with [synopsis] in SYNOPSIS block
- Backtick-quote all OPTIONS terms
- Convert inline man page refs
- Convert inline command refs
- Convert prose placeholders:

Signed-off-by: Jean-Noël Avila &lt;jn.avila@free.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
