Commit Graph

17099 Commits

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 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 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