Commit Graph

17099 Commits (ee1ced412059b308532d7e1fb92ce8eaf80db310)

Author SHA1 Message Date
Junio C Hamano ee1ced4120 Merge branch 'yt/merge-file-outside-a-repository' into next
"git merge-file" can be run outside a repository, but it ignored
all configuration, even the per-user ones.  The command now uses
available configuration files to find its customization.

* yt/merge-file-outside-a-repository:
  merge-file: honor merge.conflictStyle outside of a repository
2026-02-10 12:40:04 -08:00
Junio C Hamano 728cabbaf7 Sync with 'master' 2026-02-09 12:11:54 -08:00
Junio C Hamano d732b9d6a0 Merge branch 'ja/doc-synopsis-style-even-more' into next
A handful of documentation pages have been modernized to use the
"synopsis" style.

* ja/doc-synopsis-style-even-more:
  doc: convert git-show to synopsis style
  doc: fix some style issues in git-clone and for-each-ref-options
  doc: finalize git-clone documentation conversion to synopsis style
  doc: convert git-submodule to synopsis style
2026-02-09 12:11:44 -08:00
Junio C Hamano 87bfa08d16 Merge branch 'pc/lockfile-pid' into next
Allow recording process ID of the process that holds the lock next
to a lockfile for diagnosis.

* pc/lockfile-pid:
  lockfile: add PID file for debugging stale locks
2026-02-09 12:11:44 -08:00
Junio C Hamano 864f55e190 The second batch
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-09 12:09:10 -08:00
Junio C Hamano 4f3929275b Merge branch 'sb/doc-worktree-prune-expire-improvement'
The help text and the documentation for the "--expire" option of
"git worktree [list|prune]" have been improved.

* sb/doc-worktree-prune-expire-improvement:
  worktree: clarify that --expire only affects missing worktrees
2026-02-09 12:09:10 -08:00
Junio C Hamano 8087aae540 Merge branch 'pw/replay-drop-empty'
"git replay" is taught to drop commits that become empty (not the
ones that are empty in the original).

* pw/replay-drop-empty:
  replay: drop commits that become empty
2026-02-09 12:09:09 -08:00
Junio C Hamano 7bf3785d09 Merge branch 'ps/history'
"git history" history rewriting UI.

* ps/history:
  builtin/history: implement "reword" subcommand
  builtin: add new "history" command
  wt-status: provide function to expose status for trees
  replay: support updating detached HEAD
  replay: support empty commit ranges
  replay: small set of cleanups
  builtin/replay: move core logic into "libgit.a"
  builtin/replay: extract core logic to replay revisions
2026-02-09 12:09:09 -08:00
Yannik Tausch 8600b4ec9e merge-file: honor merge.conflictStyle outside of a repository
When running outside a repository, git merge-file ignores the
merge.conflictStyle configuration variable entirely. Since the
function receives `repo` from the caller (which is NULL outside a
repository), and repo_config() falls back to reading system and user
configuration when passed NULL, pass `repo` to repo_config()
unconditionally.

Also document that merge.conflictStyle is honored.

Signed-off-by: Yannik Tausch <dev@ytausch.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-07 17:04:26 -08:00
Junio C Hamano 222e701dd5 Merge branch 'sd/doc-my1c-api-config-reference-fix' into next
Docfix.

* sd/doc-my1c-api-config-reference-fix:
  doc: fix repo_config documentation reference
2026-02-06 21:07:54 -08:00
Junio C Hamano 2a3d683680 Merge branch 'mc/doc-send-email-signed-off-by-cc' into next
Docfix.

* mc/doc-send-email-signed-off-by-cc:
  doc: send-email: correct --no-signed-off-by-cc misspelling
2026-02-06 11:22:59 -08:00
SoutrikDas c44b3f3203 doc: fix repo_config documentation reference
In MyFirstContribution.adoc, the link to the repo_config()
documentation is invalid because the related documentation was moved
to a different file.

Replace the path for the repo_config() documentation from
'Documentation/technical/api-config.h' to 'config.h'.

Signed-off-by: SoutrikDas <valusoutrik@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-06 08:32:13 -08:00
Jean-Noël Avila a34d1d53a6 doc: convert git-show to synopsis style
* add synopsis block definition in asciidoc.conf.in
 * convert commands to synopsis style
 * use _<placeholder>_ for arguments
 * minor formatting fixes

Reviewed-by: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-05 21:14:05 -08:00
Jean-Noël Avila ccaca2c475 doc: fix some style issues in git-clone and for-each-ref-options
* spell out all forms of --[no-]reject-shallow in git-clone
 * use imperative mood for the first line of options
 * Use asciidoc NOTE macro
 * fix markups

Reviewed-by: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-05 21:14:05 -08:00
Jean-Noël Avila 4f29c68534 doc: finalize git-clone documentation conversion to synopsis style
Use backticks where appropriate for command-line options

Reviewed-by: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-05 21:14:05 -08:00
Jean-Noël Avila 777f5d089c doc: convert git-submodule to synopsis style
* convert commands to synopsis style
 * use _<placeholder>_ for arguments
 * convert inline lists into proper definition lists
 * minor formatting fixes

Reviewed-by: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-05 21:14:05 -08:00
Junio C Hamano 2772fa37f0 Sync with 'master' 2026-02-05 16:06:22 -08:00
Junio C Hamano 3e0db84c88 Start 2.54 cycle
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-05 15:42:01 -08:00
Junio C Hamano 7758f84682 Merge branch 'tc/last-modified-options-cleanup'
The "-z" and "--max-depth" documentation (and implementation of
"-z") in the "git last-modified" command have been updated.

* tc/last-modified-options-cleanup:
  last-modified: change default max-depth to 0
  last-modified: document option '--max-depth'
  last-modified: document option '-z'
  last-modified: clarify in the docs the command takes a pathspec
2026-02-05 15:42:01 -08:00
Junio C Hamano b77c91a49d Merge branch 'sp/myfirstcontribution-include-update'
Doc update.

* sp/myfirstcontribution-include-update:
  doc: MyFirstContribution: fix missing dependencies and clarify build steps
2026-02-05 15:42:00 -08:00
Junio C Hamano c3a5261dc0 Merge branch 'ar/submodule-gitdir-tweak'
Avoid local submodule repository directory paths overlapping with
each other by encoding submodule names before using them as path
components.

* ar/submodule-gitdir-tweak:
  submodule: detect conflicts with existing gitdir configs
  submodule: hash the submodule name for the gitdir path
  submodule: fix case-folding gitdir filesystem collisions
  submodule--helper: fix filesystem collisions by encoding gitdir paths
  builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
  submodule--helper: add gitdir migration command
  submodule: allow runtime enabling extensions.submodulePathConfig
  submodule: introduce extensions.submodulePathConfig
  builtin/submodule--helper: add gitdir command
  submodule: always validate gitdirs inside submodule_name_to_gitdir
  submodule--helper: use submodule_name_to_gitdir in add_submodule
2026-02-05 15:41:58 -08:00
Matěj Cepl 831989ef38 doc: send-email: correct --no-signed-off-by-cc misspelling
There is no option --signed-off-cc (without -by) for git send-email.

Signed-off-by: Matěj Cepl <mcepl@cepl.eu>
[kh: rebased and changed subject to house style]
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
[jc: minor copyedit in the commit message]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-05 11:38:54 -08:00
Junio C Hamano 0b24d64c43 Merge branch 'kh/doc-shortlog-fix' into next
Doc fix.

* kh/doc-shortlog-fix:
  doc: shortlog: put back trailer paragraphs
2026-02-04 13:35:47 -08:00
Kristoffer Haugsbakk df1c5d7ed7 doc: shortlog: put back trailer paragraphs
47beb37b (shortlog: match commit trailers with --group, 2020-09-27)
added the `trailer` bullet point with three paragraphs.[1] Later,
3dc95e09 (shortlog: support arbitrary commit format `--group`s,
2022-10-24) put the single-paragraph bullet point about `format` right
after the first paragraph about `trailer`. That meant that the second
and third paragraphs for `trailer` got moved to `format`.

Move the two paragraphs back to `trailer`. We now also need one blank
line before the final bullet point so that it does not get joined with
the second bullet point.

† 1: Technically the bullet list formatting was immediately fixed to
     include all three paragraphs in 63d24fa0 (shortlog: allow multiple
     groups to be specified, 2020-09-27)

Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-03 07:36:50 -08:00
Junio C Hamano 85a36ad794 Git 2.53
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE4fA2sf7nIh/HeOzvsLXohpav5ssFAmmACLQACgkQsLXohpav
 5svLAQ/5AZWCSdwz+6k8zRHWp0D5GmJGWJFCnh7Bs0gBfm+eD4F+TGjNzXcFvwBK
 ERcTpyj0Q2VXWMVQMCNdUSlYdNZeD21SVg2jiFofH4ITuhLuaK+Uf+X4e8IJpdCw
 OfaAJ75KRbVe1vyJNv20pOTihJAFOJu6BGUl1XaiITlSuextOvwu2mAcNJfJzCbL
 y4T3W2qluc5C7wgjE9srEosl5QCfhTeUXqvaLD7lm2A+R0GjRQP+m22uSZ1DSpDX
 +/hL/WW+ab1IilUM4jvqnciX1ZYuN8A3S2jCfdhixsEdDuLba1hb5Y297ATpMFF1
 nkxs6ugOGF2nlSQ8NuJj6UlDMnERuryDM39gKoB815ZrvDeF+v0WrliN6aoBWfKT
 l4a1a2DSwy96y1KjLc+Z2feDJwI+wvlnSOB6c9lG4CcHGS7f2uOIyC7ARFYSmrrd
 rwKFSYkUau+1ED2x9MEST294AASnWHXEU1uupbiKo5hCCQGTXI99qGpjihV1xMCk
 5PdCPwX31yqSmOZ4PhWgqWP4WNOYjnGeAQ/4eAmX60H2E1ugyioVJ+9NJAY4Yht5
 ibOyq4FH+HP0diqSQl3HsUMNVk/xgeBNp1+7LjhN7F/GsY0E1Mm2iTTlg685BC5T
 bGjcprpSwXBGJ05tiRgHPluyGutTMcddWXX1KPUB9BLxfO0pFXI=
 =tMBG
 -----END PGP SIGNATURE-----

Sync with Git 2.53
2026-02-01 18:16:01 -08:00
Carlo Marcelo Arenas Belón 239b7f686c RelNotes: fully spell negation
Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-02-01 18:07:39 -08:00
Junio C Hamano 54b18a3513 Sync with 'master' 2026-01-30 09:59:51 -08:00
Junio C Hamano faf2e087b8 Merge branch 'sb/doc-worktree-prune-expire-improvement' into next
The help text and the documentation for the "--expire" option of
"git worktree [list|prune]" have been improved.

* sb/doc-worktree-prune-expire-improvement:
  worktree: clarify that --expire only affects missing worktrees
2026-01-30 09:59:25 -08:00
Junio C Hamano 2258446484 RelNotes: correct "fast-import" option name
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-30 09:50:03 -08:00
Junio C Hamano 66b2238f5c Merge branch 'pw/replay-drop-empty' into next
"git replay" is taught to drop commits that become empty (not the
ones that are empty in the original).

* pw/replay-drop-empty:
  replay: drop commits that become empty
2026-01-29 13:27:39 -08:00
Junio C Hamano ecac247f83 Merge branch 'ps/history' into next
"git history" history rewriting UI.

* ps/history:
  builtin/history: implement "reword" subcommand
  builtin: add new "history" command
  wt-status: provide function to expose status for trees
  replay: support updating detached HEAD
  replay: support empty commit ranges
  replay: small set of cleanups
  builtin/replay: move core logic into "libgit.a"
  builtin/replay: extract core logic to replay revisions
2026-01-29 13:27:39 -08:00
Sam Bostock 6f5ca70580 worktree: clarify that --expire only affects missing worktrees
The --expire option for "git worktree list" and "git worktree prune"
only affects worktrees whose working directory path no longer exists.
The help text did not make this clear, and the documentation
inconsistently used "unused" for prune but "missing" for list.

Update the help text and documentation to consistently describe these
as "missing worktrees", and use "prune" instead of "expire" when
describing the effect on missing worktrees since the terminology is
clearer.

While at it, expand the description of the "prune" subcommand itself
to better explain what it does and when to use it, as suggested by
Junio.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Sam Bostock <sam@sambostock.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-28 15:25:33 -08:00
Junio C Hamano 60c1bca835 Sync with 'master' 2026-01-27 13:40:18 -08:00
Junio C Hamano ea717645d1 RelNotes: a few spelling fixes
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-27 12:12:06 -08:00
Junio C Hamano 2597b5adb4 Sync with Git 2.53-rc2 2026-01-26 22:28:46 -08:00
Junio C Hamano ab380cb80b Git 2.53-rc2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-26 22:26:31 -08:00
Junio C Hamano 6e3a78c723 Sync with 'master' 2026-01-23 13:35:45 -08:00
Junio C Hamano e514d98b11 Merge branch 'tc/last-modified-options-cleanup' into next
The "-z" and "--max-depth" documentation (and implementation of
"-z") in the "git last-modified" command have been updated.

* tc/last-modified-options-cleanup:
  last-modified: change default max-depth to 0
  last-modified: document option '--max-depth'
  last-modified: document option '-z'
  last-modified: clarify in the docs the command takes a pathspec
2026-01-23 13:35:37 -08:00
Junio C Hamano 2d039d03ff Merge branch 'sp/myfirstcontribution-include-update' into next
Doc update.

* sp/myfirstcontribution-include-update:
  doc: MyFirstContribution: fix missing dependencies and clarify build steps
2026-01-23 13:35:36 -08:00
Junio C Hamano ef3c2cab02 Merge branch 'ar/submodule-gitdir-tweak' into next
Avoid local submodule repository directory paths overlapping with
each other by encoding submodule names before using them as path
components.

* ar/submodule-gitdir-tweak:
  submodule: detect conflicts with existing gitdir configs
  submodule: hash the submodule name for the gitdir path
  submodule: fix case-folding gitdir filesystem collisions
  submodule--helper: fix filesystem collisions by encoding gitdir paths
  builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
  submodule--helper: add gitdir migration command
  submodule: allow runtime enabling extensions.submodulePathConfig
  submodule: introduce extensions.submodulePathConfig
  builtin/submodule--helper: add gitdir command
  submodule: always validate gitdirs inside submodule_name_to_gitdir
  submodule--helper: use submodule_name_to_gitdir in add_submodule
2026-01-23 13:35:33 -08:00
Junio C Hamano ea24e2c554 A bit more before -rc2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-23 13:34:37 -08:00
Junio C Hamano a85b5220e1 Merge branch 'dk/replay-doc-omit-irrelevant-rev-list-options'
Documentation clean-up.

* dk/replay-doc-omit-irrelevant-rev-list-options:
  lint-gitlink: preemptively ignore all /ifn?def|endif/ macros
  replay: drop rev-list formatting options from manual
2026-01-23 13:34:37 -08:00
Junio C Hamano cfa173a5fa Merge branch 'sb/doc-update-ref-markup-fix'
Doc mark-up fix.

* sb/doc-update-ref-markup-fix:
  doc: fix `update-ref` `symref-create` formatting
2026-01-23 13:34:35 -08:00
Paulo Casaretto dbdcab6b89 lockfile: add PID file for debugging stale locks
When a lock file is held, it can be helpful to know which process owns
it, especially when debugging stale locks left behind by crashed
processes. Add an optional feature that creates a companion PID file
alongside each lock file, containing the PID of the lock holder.

For a lock file "foo.lock", the PID file is named "foo~pid.lock". The
tilde character is forbidden in refnames and allowed in Windows
filenames, which guarantees no collision with the refs namespace
(e.g., refs "foo" and "foo~pid" cannot both exist). The file contains
a single line in the format "pid <value>" followed by a newline.

The PID file is created when a lock is acquired (if enabled), and
automatically cleaned up when the lock is released (via commit or
rollback). The file is registered as a tempfile so it gets cleaned up
by signal and atexit handlers if the process terminates abnormally.

When a lock conflict occurs, the code checks for an existing PID file
and, if found, uses kill(pid, 0) to determine if the process is still
running. This allows providing context-aware error messages:

  Lock is held by process 12345. Wait for it to finish, or remove
  the lock file to continue.

Or for a stale lock:

  Lock was held by process 12345, which is no longer running.
  Remove the stale lock file to continue.

The feature is controlled via core.lockfilePid configuration (boolean).
Defaults to false. When enabled, PID files are created for all lock
operations.

Existing PID files are always read when displaying lock errors,
regardless of the core.lockfilePid setting. This ensures helpful
diagnostics even when the feature was previously enabled and later
disabled.

Signed-off-by: Paulo Casaretto <pcasaretto@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-22 12:15:46 -08:00
Junio C Hamano 0d7ba0a212 Sync with 'master' 2026-01-21 16:19:03 -08:00
Junio C Hamano 1faf5b085a A few on top of -rc1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-01-21 16:16:28 -08:00
Junio C Hamano c0b4d20979 Merge branch 'ps/config-doc-get-urlmatch-fix'
Docfix.

* ps/config-doc-get-urlmatch-fix:
  Documentation/config: fix replacement for --get-urlmatch
2026-01-21 16:16:28 -08:00
Junio C Hamano eba53bf80e Git 2.53-rc1
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE4fA2sf7nIh/HeOzvsLXohpav5ssFAmlw/uIACgkQsLXohpav
 5stI/w/+PdBMEBwpHdnkWpE5x7yDv64e8tOt89zYhmXr3vulcMOJS1u+8ztVo9Qn
 yNBgA6MggXWH4gdgI6Zn5aALk7ag+8R433+ziN9L4rCoSfWcARqePS97MxZcnU4r
 78Dwaz7WlTan67B2mYcWONEXDHh4zYT4r/ltYNRxIlfey/VybeHS6G+fd/DxFQs8
 lrGe4vGvg7wvNGqq4U5/dQeOas4fJALvCZb8QYmkP6yVFzkONW+mBymkt2RnQWNA
 D0Vtf68LJZkBV7nm/jw6ewrmnrzrf/7pX17rI37skjWOHV8rSCZxsA4/UGbSPWDf
 mfUt2Zyweep5lWtXghWf2rY5QG0e//jDxCjlg98Pj7MAJZvAQ5xqtrCWfOSR2SmR
 q3K7cZ7rdvcfrqsJdL0RICCUKQP5wkje/PAZft2M+LYRGJrqsHz9XR5gZgdizzDp
 yXGy5gGSdJ29K0NFEw2RsWu9urJM2hR/7Pu9X18upS8/4VyWheVHxDpwtMju7SGi
 3VaQ6BQV9tpxtfWwHBuPU3R7+7Ighcbl3VAz9mPrKduZHgUW4B8gGkpOr13g91L8
 hBZMra0rdhWgFG5RalDALIoQDV/7BPZeOro81oCkmZafRsaxm7C0lxl0Cn8Jmntj
 LQ+VL9VWZteqY6MTcUyIG8XKrCsbfFgn/FSkSjx8hqFFVpLj/xU=
 =8vG1
 -----END PGP SIGNATURE-----

Sync with Git 2.53-rc1
2026-01-21 08:32:18 -08:00
Junio C Hamano a17b449304 Merge branch 'dk/replay-doc-omit-irrelevant-rev-list-options' into next
Documentation clean-up.

The tip "fix-up" commit need to be reviewed for "make -C Documentation lint-docs"

* dk/replay-doc-omit-irrelevant-rev-list-options:
  lint-gitlink: preemptively ignore all /ifn?def|endif/ macros
  replay: drop rev-list formatting options from manual
2026-01-21 08:31:59 -08:00
Junio C Hamano 60d4750233 Merge branch 'sb/doc-update-ref-markup-fix' into next
Doc mark-up fix.

* sb/doc-update-ref-markup-fix:
  doc: fix `update-ref` `symref-create` formatting
2026-01-21 08:31:58 -08:00