git/Documentation/technical
D. Ben Knoble 1d6da55858 core: convert build-time USE_NSEC into runtime core.useNanosec
Racy Git problems persist today, manifesting themselves in the
performance of commands like "git diff" in new worktrees [1]. We have
long had a build knob "USE_NSEC" to tell Git to use in-core nanosecond
precision when available, which mitigates most if not all racy issues,
but most builds we know about don't use it. In part, that's because
someone distributing Git can't safely enable it at compile-time if they
don't know exactly what platforms their distribution will be used on.

[1]: https://lore.kernel.org/git/CALnO6CADMJSixqYvL1Yo8qKX5rWhKQ+2OoSEuPUh-yoeK9TseQ@mail.gmail.com

These days, most platforms are likely to be safe for the USE_NSEC code.
Regardless, we want to give users the ability to benefit from it. This
requires exposing the compile-time gated code as a runtime option.

In addition, update the Racy Git documentation and other mentions of
USE_NSEC in the code.

Due to the conversion from #ifdef to runtime check, using the flag
"--ignore-space-change" may be particularly helpful when viewing changes
from this patch.

Signed-off-by: D. Ben Knoble <ben.knoble@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-08-31 13:48:44 -07:00
..
.gitignore doc: update gitignore for .adoc extension 2025-01-21 12:56:05 -08:00
api-error-handling.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
api-index-skel.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
api-index.sh doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
api-merge.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
api-parse-options.adoc parse-options: rename `OPT_MAGNITUDE()` to `OPT_UNSIGNED()` 2025-04-17 08:15:15 -07:00
api-path-walk.adoc path-walk: always emit directly-requested objects 2026-05-24 18:41:06 +09:00
api-simple-ipc.adoc doc: *.txt -> *.adoc fixes 2025-03-03 13:49:21 -08:00
api-trace2.adoc doc: replace git config --list/-l with `list` 2026-04-06 09:57:07 -07:00
bitmap-format.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
build-systems.adoc doc: fix typos via codespell 2026-06-08 00:21:35 +09:00
bundle-uri.adoc bundle-uri: copy all bundle references ino the refs/bundle space 2025-04-25 13:36:45 -07:00
commit-graph.adoc doc: commit-graph.adoc: fix up some formatting 2025-10-16 13:55:52 -07:00
directory-rename-detection.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
hash-function-transition.adoc doc: fix typo in GIT_ALTERNATE_OBJECT_DIRECTORIES 2026-06-06 11:04:03 +09:00
large-object-promisors.adoc doc: add large-object-promisors.adoc to the docs build 2025-10-16 13:55:53 -07:00
long-running-process-protocol.adoc doc: check well-formedness of delimited sections 2025-08-11 14:16:03 -07:00
meson.build Merge branch 'en/xdiff-cleanup-2' 2025-12-05 14:49:56 +09:00
multi-pack-index.adoc Documentation: describe incremental MIDX bitmaps 2025-03-21 04:33:28 -07:00
pack-heuristics.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
packfile-uri.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
parallel-checkout.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
partial-clone.adoc technical/partial-clone: update reference to rev-list-options.adoc 2025-03-03 13:49:21 -08:00
platform-support.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
racy-git.adoc core: convert build-time USE_NSEC into runtime core.useNanosec 2026-08-31 13:48:44 -07:00
reftable.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
remembering-renames.adoc doc: remembering-renames.adoc: fix asciidoc warnings 2025-10-16 13:55:52 -07:00
repository-version.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
rerere.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
scalar.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
send-pack-pipeline.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
shallow.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
sparse-checkout.adoc doc: sparse-checkout.adoc: fix asciidoc warnings 2025-10-16 13:55:52 -07:00
sparse-index.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
trivial-merge.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00
unambiguous-types.adoc doc: define unambiguous type mappings across C and Rust 2025-11-18 14:53:09 -08:00
unit-tests.adoc doc: use .adoc extension for AsciiDoc files 2025-01-21 12:56:06 -08:00