Version v2.45.1; changes since v2.45.0: --------------------------------------- Filip Hejsek (4): t0411: add tests for cloning from partial repo has_dir_name(): do not get confused by characters < '/' t7423: add tests for symlinked submodule directories clone: prevent clashing git dirs when cloning submodule in parallel Jeff King (6): http: reset POSTFIELDSIZE when clearing curl handle INSTALL: bump libcurl version to 7.21.3 remote-curl: add Transfer-Encoding header only for older curl test-lib: ignore uninteresting LSan output upload-pack: disable lazy-fetching by default docs: document security issues around untrusted .git dirs Johannes Schindelin (26): repository: avoid leaking `fsmonitor` data ci: upgrade to using macos-13 ci(linux-asan/linux-ubsan): let's save some time ci: bump remaining outdated Actions versions ci(linux32): add a note about Actions that must not be updated fetch/clone: detect dubious ownership of local repositories submodules: submodule paths must not contain symlinks clone_submodule: avoid using `access()` on directories submodule: require the submodule path to contain directories only t5510: verify that D/F confusion cannot lead to an RCE entry: report more colliding paths clone: when symbolic links collide with directories, keep the latter find_hook(): refactor the `STRIP_EXTENSION` logic init: refactor the template directory discovery into its own function Add a helper function to compare file contents clone: prevent hooks from running during a clone init.templateDir: consider this config setting protected core.hooksPath: add some protection while cloning fsck: warn about symlink pointing inside a gitdir Git 2.39.4 Git 2.40.2 Git 2.41.1 Git 2.42.2 Git 2.43.4 Git 2.44.1 Git 2.45.1 Junio C Hamano (2): GitHub Actions: update to checkout@v4 GitHub Actions: update to github-script@v7 Patrick Steinhardt (4): builtin/clone: stop resolving symlinks when copying files builtin/clone: abort when hardlinked source and target file differ setup.c: introduce `die_upon_dubious_ownership()` builtin/clone: refuse local clones of unsafe repositories Version v2.45.0; changes since v2.45.0-rc1: ------------------------------------------- Alexander Shopov (1): l10n: bg.po: Updated Bulgarian translation (5652t) Arkadii Yakovets (1): l10n: uk: v2.45 update Bagas Sanjaya (1): l10n: po-id for 2.45 Emir SARI (1): l10n: tr: Update Turkish translations Jean-Noël Avila (1): l10n: fr: v2.45.0 Jiang Xin (1): l10n: TEAMS: retire l10n teams no update in 1 year Junio C Hamano (1): Git 2.45 Peter Krefting (1): l10n: sv.po: Update Swedish translation Ralf Thielow (1): l10n: Update German translation René Scharfe (1): don't report vsnprintf(3) error as bug Rubén Justo (4): apply: plug a leak in apply_data add-interactive: plug a leak in get_untracked_files add-patch: plug a leak handling the '/' command add: plug a leak on interactive_add Taylor Blau (1): Documentation/RelNotes/2.45.0.txt: fix typo Teng Long (1): l10n: zh_CN: for git 2.45 rounds Vũ Tiến Hưng (2): l10n: Update Vietnamese team contact l10n: vi: Updated translation for 2.45 Yi-Jyun Pan (1): l10n: zh-TW: Git 2.45 Version v2.45.0-rc1; changes since v2.45.0-rc0: ----------------------------------------------- Junio C Hamano (2): A bit more topics before -rc1 Git 2.45-rc1 Linus Arver (5): format_trailer_info(): use trailer_item objects format_trailer_info(): drop redundant unfold_value() format_trailer_info(): append newline for non-trailer lines trailer: begin formatting unification trailer: finish formatting unification Marcel Röthke (1): rerere: fix crashes due to unmatched opening conflict markers Orgad Shaneh (1): docs: remove duplicate entry and fix typo in 2.45 changelog Patrick Steinhardt (15): reftable/block: rename `block_reader_start()` reftable/block: merge `block_iter_seek()` and `block_reader_seek()` reftable/block: better grouping of functions reftable/block: introduce `block_reader_release()` reftable/block: move ownership of block reader into `struct table_iter` reftable/reader: iterate to next block in place reftable/block: reuse uncompressed blocks reftable/block: open-code call to `uncompress2()` reftable/block: reuse `zstream` state on inflation reftable/block: avoid copying block iterators on seek pack-bitmap: gracefully handle missing BTMP chunks run-command: introduce function to prepare auto-maintenance process builtin/receive-pack: convert to use git-maintenance(1) docs: improve changelog entry for `git pack-refs --auto` docs: address typos in Git v2.45 changelog Peter Krefting (1): bisect: report the found commit with "show" René Scharfe (3): git-compat-util: fix NO_OPENSSL on current macOS imap-send: increase command size limit apply: avoid using fixed-size buffer in write_out_one_reject() Rubén Justo (1): launch_editor: waiting message on error Thalia Archibald (8): fast-import: tighten path unquoting fast-import: directly use strbufs for paths fast-import: allow unquoted empty path for root fast-import: remove dead strbuf fast-import: improve documentation for path quoting fast-import: document C-style escapes for paths fast-import: forbid escaped NUL in paths fast-import: make comments more precise Xing Xin (1): Documentation: fix typos describing date format Yehezkel Bernat (1): Documentation: fix linkgit reference Đoàn Trần Công Danh (1): t9604: Fix test for musl libc and new Debian Version v2.45.0-rc0; changes since v2.44.1: ------------------------------------------- Ahelenia Ziemiańska (1): grep: improve errors for unmatched ( and ) Alexander Shopov (4): transport-helper.c: trivial fix of error message builtin/remote.c: trivial fix of error message builtin/clone.c: trivial fix of message revision.c: trivial fix to message Aryan Gupta (1): tests: modernize the test script t0010-racy-git.sh Beat Bolli (25): completion: use awk for filtering the config entries date: make "iso-strict" conforming for the UTC timezone t0006: add more tests with a negative TZ offset doc: avoid redundant use of cat contrib/subtree/t: avoid redundant use of cat t/lib-cvs.sh: avoid redundant use of cat t/annotate-tests.sh: avoid redundant use of cat t/perf: avoid redundant use of cat t/t0*: avoid redundant uses of cat t/t1*: avoid redundant uses of cat t/t3*: avoid redundant uses of cat t/t4*: avoid redundant uses of cat t/t5*: avoid redundant uses of cat t/t6*: avoid redundant uses of cat t/t7*: avoid redundant use of cat t/t8*: avoid redundant use of cat t/t9*: avoid redundant uses of cat t/t1*: merge a "grep | sed" pipeline t/t3*: merge a "grep | awk" pipeline t/t4*: merge a "grep | sed" pipeline t/t5*: merge a "grep | sed" pipeline t/t8*: merge "grep | sed" pipelines t/t9*: merge "grep | sed" pipelines contrib/coverage-diff: avoid redundant pipelines git-quiltimport: avoid an unnecessary subshell Bo Anderson (5): t/lib-credential: clean additional credential osxkeychain: replace deprecated SecKeychain API osxkeychain: erase all matching credentials osxkeychain: erase matching passwords only osxkeychain: store new attributes Brian C Tracy (1): fuzz: add fuzzer for config parsing Brian Lyles (13): docs: clarify file options in git-config `--edit` docs: fix typo in git-config `--default` docs: correct trailer `key_value_separator` description docs: adjust trailer `separator` and `key_value_separator` language pretty: update tests to use `test_config` pretty: find pretty formats case-insensitively docs: address inaccurate `--empty` default with `--exec` docs: clean up `--empty` formatting in git-rebase(1) and git-am(1) rebase: update `--empty=ask` to `--empty=stop` sequencer: handle unborn branch with `--allow-empty` sequencer: do not require `allow_empty` for redundant commit options cherry-pick: enforce `--keep-redundant-commits` incompatibility cherry-pick: add `--empty` for more robust redundant commit handling Chandra Pratap (2): apply: ignore working tree filemode when !core.filemode t9146: replace test -d/-e/-f with appropriate test_path_is_* function Christian Couder (5): revision: clarify a 'return NULL' in get_reference() oidset: refactor oidset_insert_from_set() t6022: fix 'test' style and 'even though' typo rev-list: allow missing tips with --missing=[print|allow*] revision: fix --missing=[print|allow*] for annotated tags Derrick Stolee (1): fetch: return when parsing submodule.recurse Dirk Gouders (6): Documentation/user-manual.txt: example for generating object hashes MyFirstObjectWalk: use additional arg in config_fn_t MyFirstObjectWalk: fix misspelled "builtins/" MyFirstObjectWalk: fix filtered object walk MyFirstObjectWalk: fix description for counting omitted objects MyFirstObjectWalk: add stderr to pipe processing Dragan Simic (8): documentation: send-email: use camel case consistently config: minor addition of whitespace config: really keep value-internal whitespace verbatim t1300: add more tests for whitespace and inline comments config.txt: describe handling of whitespace further grep docs: describe --recurse-submodules further and improve formatting a bit grep docs: describe --no-index further and improve formatting a bit config: fix some small capitalization issues, as spotted Eric Sunshine (2): docs: sort configuration variable groupings alphabetically test-lib: fix non-functioning GIT_TEST_MAINT_SCHEDULER fallback Eric W. Biederman (23): object-file-convert: stubs for converting from one object format to another oid-array: teach oid-array to handle multiple kinds of oids object-names: support input of oids in any supported hash repository: add a compatibility hash algorithm loose: compatibilty short name support object-file: update the loose object map when writing loose objects object-file: add a compat_oid_in parameter to write_object_file_flags commit: convert mergetag before computing the signature of a commit commit: export add_header_signature to support handling signatures on tags tag: sign both hashes object: factor out parse_mode out of fast-import and tree-walk into in object.h object-file-convert: don't leak when converting tag objects object-file-convert: convert commits that embed signed tags object-file: update object_info_extended to reencode objects rev-parse: add an --output-object-format parameter builtin/cat-file: let the oid determine the output algorithm tree-walk: init_tree_desc take an oid to get the hash algorithm object-file: handle compat objects in check_object_signature builtin/ls-tree: let the oid determine the output algorithm test-lib: compute the compatibility hash so tests may use it t1006: rename sha1 to oid t1006: test oid compatibility with cat-file t1016-compatObjectFormat: add tests to verify the conversion between objects Eugenio Gigante (1): add: use unsigned type for collection of bits Florian Schmidt (1): wt-status: don't find scissors line beyond buf len Ghanshyam Thakkar (5): add-patch: classify '@' as a synonym for 'HEAD' add -p tests: remove PERL prerequisites setup: remove unnecessary variable builtin/commit: error out when passing untracked path with -i builtin/add: error out when passing untracked path with -u Haritha D (1): build: support z/OS (OS/390). Harmen Stoppels (1): rebase: make warning less passive aggressive Jakub Wilk (1): git-remote.txt: fix typo Jean-Noël Avila (17): doc: git-rev-parse: enforce command-line description syntax doc: close unclosed angle-bracket of a placeholder in git-clone doc doc: end sentences with full-stop doc: clarify the format of placeholders doc: git-init: format verbatim parts doc: git-init: format placeholders doc: git-init: rework definition lists doc: git-init: rework config item init.templateDir doc: git-clone: format verbatim words doc: git-clone: format placeholders doc: format alternatives in synopsis doc: fix some placeholders formating doc: rework CodingGuidelines with new formatting rules doc: allow literal and emphasis format in doc vs help tests doc: git-init: apply new documentation formatting guidelines doc: git-clone: apply new documentation formatting guidelines doc: git-clone: do not autoreference the manpage in itself Jeff Hostetler (17): name-hash: add index_dir_find() t7527: add case-insensitve test for FSMonitor fsmonitor: refactor refresh callback on directory events fsmonitor: clarify handling of directory events in callback helper fsmonitor: refactor refresh callback for non-directory events dir: create untracked_cache_invalidate_trimmed_path() fsmonitor: refactor untracked-cache invalidation fsmonitor: move untracked-cache invalidation into helper functions fsmonitor: return invalidated cache-entry count on directory event fsmonitor: remove custom loop from non-directory path handler fsmonitor: return invalidated cache-entry count on non-directory event fsmonitor: trace the new invalidated cache-entry count fsmonitor: refactor bit invalidation in refresh callback fsmonitor: support case-insensitive events t0211: demonstrate missing 'def_param' events for certain commands trace2: avoid emitting 'def_param' set more than once trace2: emit 'def_param' set with 'cmd_name' event Jeff King (51): t0303: check that helper_test_clean removes all credentials userdiff: skip textconv caching when not in a repository Revert "refs: allow @{n} to work with n-sized reflog" get_oid_basic(): special-case ref@{n} for oldest reflog entry read_ref_at(): special-case ref@{0} for an empty reflog upload-pack: drop separate v2 "haves" array upload-pack: switch deepen-not list to an oid_array upload-pack: use oidset for deepen_not list upload-pack: use a strmap for want-ref lines upload-pack: accept only a single packfile-uri line upload-pack: always turn off save_commit_buffer upload-pack: use PARSE_OBJECT_SKIP_HASH_CHECK in more places upload-pack: free tree buffers after parsing upload-pack: use repository struct to get config upload-pack: centralize setup of sideband-all config upload-pack: use existing config mechanism for advertisement upload-pack: only accept packfile-uris if we advertised it doc/gitremote-helpers: fix missing single-quote config: forbid newline as core.commentChar strbuf: simplify comment-handling in add_lines() helper strbuf: avoid static variables in strbuf_add_commented_lines() commit: refactor base-case of adjust_comment_line_char() strbuf: avoid shadowing global comment_line_char name environment: store comment_line_char as a string strbuf: accept a comment string for strbuf_stripspace() strbuf: accept a comment string for strbuf_commented_addf() strbuf: accept a comment string for strbuf_add_commented_lines() prefer comment_line_str to comment_line_char for printing find multi-byte comment chars in NUL-terminated strings find multi-byte comment chars in unterminated buffers sequencer: handle multi-byte comment characters when writing todo list wt-status: drop custom comment-char stringification environment: drop comment_line_char compatibility macro config: allow multi-byte core.commentChar shortlog: stop setting pp.print_email_subject pretty: split oneline and email subject printing pretty: drop print_email_subject flag log: do not set up extra_headers for non-email formats format-patch: return an allocated string from log_write_email_headers() format-patch: simplify after-subject MIME header handling doc/gitremote-helpers: fix more missing single-quotes transport-helper: use write helpers more consistently transport-helper: drop "object-format " option transport-helper: send "true" value for object-format option contrib: drop hg-to-git script format-patch: fix leak of empty header string rebase: use child_process_clear() to clean config: add core.commentString http: reset POSTFIELDSIZE when clearing curl handle INSTALL: bump libcurl version to 7.21.3 remote-curl: add Transfer-Encoding header only for older curl Jiamu Sun (1): bugreport.c: fix a crash in `git bugreport` with `--no-suffix` option Johannes Schindelin (22): merge-tree: accept 3 trees as arguments merge-tree: fail with a non-zero exit code on missing tree objects merge-ort: do check `parse_tree()`'s return value t4301: verify that merge-tree fails on missing blob objects Always check `parse_tree*()`'s return value cache-tree: avoid an unnecessary check fill_tree_descriptor(): mark error message for translation neue: remove a bogus empty file commit-reach(paint_down_to_common): plug two memory leaks commit-reach(repo_in_merge_bases_many): optionally expect missing commits commit-reach(repo_in_merge_bases_many): report missing commits commit-reach(paint_down_to_common): prepare for handling shallow commits commit-reach(paint_down_to_common): start reporting errors commit-reach(merge_bases_many): pass on "missing commits" errors commit-reach(get_merge_bases_many_0): pass on "missing commits" errors commit-reach(repo_get_merge_bases): pass on "missing commits" errors commit-reach(get_octopus_merge_bases): pass on "missing commits" errors commit-reach(repo_get_merge_bases_many): pass on "missing commits" errors commit-reach(repo_get_merge_bases_many_dirty): pass on errors merge-recursive: prepare for `merge_submodule()` to report errors merge-ort/merge-recursive: do report errors in `merge_submodule()` merge-tree: fix argument type of the `--merge-base` option John Cai (1): t5300: fix test_with_bad_commit() Jonas Wunderlich (1): doc: status.showUntrackedFiles does not take "false" Josh Triplett (2): commit: avoid redundant scissor line with --cleanup=scissors -v commit: unify logic to avoid multiple scissors lines when merging Julio Bacellari (1): doc: remove outdated information about interactive.singleKey Junio C Hamano (61): apply: correctly reverse patch's pre- and post-image mode bits apply: code simplification t9210: do not rely on lazy fetching to fail git: --no-lazy-fetch option doc: add shortcut to "am --whitespace=" doc: apply the new placeholder rules to git-add documentation compat: drop inclusion of Start the 2.45 cycle git: document GIT_NO_REPLACE_OBJECTS environment variable doc: clarify the wording on requirement git: extend --no-lazy-fetch to work across subprocesses The second batch The third batch test_i18ngrep: hard deprecate and forbid its use unpack: replace xwrite() loop with write_in_full() sideband: avoid short write(2) repack: check error writing to pack-objects subprocess clean: further clean-up of implementation around "--force" The fourth batch The fifth batch setup: notice more types of implicit bare repositories The sixth batch status: unify parsing of --untracked= and status.showUntrackedFiles status: allow --untracked=false and friends The seventh batch The eighth batch config: fix --comment formatting config: allow tweaking whitespace between value and comment diff.*Prefix: use camelCase in the doc and test titles The ninth batch apply: parse names out of "diff --git" more carefully The tenth batch The eleventh batch SubmittingPatches: release-notes entry experiment The twelfth batch t4126: make sure a directory with SP at the end is usable t4126: fix "funny directory name" test on Windows (again) advice: omit trailing whitespace checkout: omit "tracking" information on a detached HEAD The thirteenth batch t2104: style fixes The fourteenth batch revision: optionally record matches with pathspec elements The fifteenth batch CodingGuidelines: describe "export VAR=VAL" rule CodingGuidelines: quote assigned value in 'local var=$val' t: local VAR="VAL" (quote positional parameters) t: local VAR="VAL" (quote command substitution) t: local VAR="VAL" (quote ${magic-reference}) t: teach lint that RHS of 'local VAR=VAL' needs to be quoted t0610: local VAR="VAL" fix t1016: local VAR="VAL" fix config: do not leak excludes_file Makefile(s): do not enforce "all indents must be done with tab" The sixteenth batch t2104: style fixes The seventeenth batch The eighteenth batch The ninteenth batch The twentieth batch Git 2.45-rc0 Justin Tobler (3): reftable/stack: expose option to disable auto-compaction reftable/stack: add env to disable autocompaction reftable/stack: use geometric table compaction Karthik Nayak (7): refs: introduce `is_pseudoref()` and `is_headref()` refs: extract out `loose_fill_ref_dir_regular_file()` refs: introduce `refs_for_each_include_root_refs()` ref-filter: rename 'FILTER_REFS_ALL' to 'FILTER_REFS_REGULAR' for-each-ref: add new option to include root refs update-ref: use {old,new}-oid instead of {old,new}value githooks: use {old,new}-oid instead of {old,new}-value Kipras Melnikovas (1): mergetools: vimdiff: use correct tool's name when reading mergetool config Kristoffer Haugsbakk (9): column: disallow negative padding column: guard against negative padding gitcli: drop mention of “non-dashed form” config: document `core.commentChar` as ASCII-only t3200: improve test style advice: make all entries stylistically consistent advice: use backticks for verbatim advice: use double quotes for regular quoting branch: advise about ref syntax rules Linus Arver (10): trailer: free trailer_info _after_ all related usage shortlog: add test for de-duplicating folded trailers trailer: rename functions to use 'trailer' trailer: reorder format_trailers_from_commit() parameters trailer: move interpret_trailers() to interpret-trailers.c trailer_info_get(): reorder parameters format_trailers(): use strbuf instead of FILE format_trailer_info(): move "fast path" to caller format_trailers_from_commit(): indirectly call trailer_info_get() mailmap: change primary address for Linus Arver M Hickford (1): libsecret: retrieve empty password Matthias Aßhauer (1): Win32: detect unix socket support at runtime Max Gautier (1): editorconfig: add Makefiles to "text files" Michael Lohmann (2): revision: ensure MERGE_HEAD is a ref in prepare_show_merge revision: implement `git log --merge` also for rebase/cherry-pick/revert Patrick Steinhardt (84): refs: introduce reftable backend ci: add jobs to test with the reftable backend refs/reftable: fix leak when copying reflog fails reftable/record: introduce function to compare records by key reftable/merged: allocation-less dropping of shadowed records reftable/merged: skip comparison for records of the same subiter reftable/pq: allocation-less comparison of entry keys reftable/block: swap buffers instead of copying reftable/record: don't try to reallocate ref record name reftable/reader: add comments to `table_iter_next()` t: move tests exercising the "files" backend t0410: convert tests to use DEFAULT_REPO_FORMAT prereq t1400: exercise reflog with gaps with reftable backend t1404: make D/F conflict tests compatible with reftable backend t1405: remove unneeded cleanup step t2011: exercise D/F conflicts with HEAD with the reftable backend t7003: ensure filter-branch prunes reflogs with the reftable backend git-difftool--helper: honor `--trust-exit-code` with `--dir-diff` dir-iterator: pass name to `prepare_next_entry_data()` directly dir-iterator: support iteration in sorted order refs/files: sort reflogs returned by the reflog iterator refs/files: sort merged worktree and common reflogs refs: always treat iterators as ordered refs: drop unused params from the reflog iterator callback refs: stop resolving ref corresponding to reflogs builtin/reflog: introduce subcommand to list reflogs builtin/clone: allow remote helpers to detect repo refs/reftable: don't fail empty transactions in repo without HEAD reftable/pq: use `size_t` to track iterator index reftable/merged: make `merged_iter` structure private reftable/merged: advance subiter on subsequent iteration reftable/merged: make subiters own their records reftable/merged: remove unnecessary null check for subiters reftable/merged: handle subiter cleanup on close only reftable/merged: circumvent pqueue with single subiter reftable/merged: avoid duplicate pqueue emptiness check reftable/record: reuse refname when decoding reftable/record: reuse refname when copying reftable/record: decode keys in place reftable: allow inlining of a few functions refs/reftable: precompute prefix length refs/reftable: reload correct stack when creating reflog iter reftable/record: convert old and new object IDs to arrays reftable/record: avoid copying author info reftable/record: reuse refnames when decoding log records reftable/record: reuse message when decoding log records reftable/record: use scratch buffer when decoding records refs/reftable: track last log record name via strbuf t0610: remove unused variable assignment lockfile: report when rollback fails reftable/stack: register new tables as tempfiles reftable/stack: register lockfiles during compaction reftable/stack: register compacted tables as tempfiles reftable/record: fix memory leak when decoding object records reftable/block: fix binary search over restart counter t5601: exercise clones with "includeIf.*.onbranch" reftable: fix tests being broken by NFS' delete-after-close semantics t7800: improve test descriptions with empty arguments t7800: use single quotes for test bodies t/README: document how to loop around test cases reftable/stack: fix error handling in `reftable_stack_init_addition()` reftable/error: discern locked/outdated errors reftable/stack: use error codes when locking fails during compaction reftable/stack: gracefully handle failed auto-compaction due to locks refs/reftable: print errors on compaction failure t/helper: drop pack-refs wrapper refs: move `struct pack_refs_opts` to where it's used refs: remove `PACK_REFS_ALL` flag refs/reftable: expose auto compaction via new flag builtin/pack-refs: release allocated memory builtin/pack-refs: introduce new "--auto" flag builtin/gc: move `struct maintenance_run_opts` t6500: extract objects with "17" prefix builtin/gc: forward git-gc(1)'s `--auto` flag when packing refs builtin/gc: pack refs when using `git maintenance run --auto` reftable/basics: fix return type of `binsearch()` to be `size_t` reftable/basics: improve `binsearch()` test reftable/refname: refactor binary search over refnames reftable/block: refactor binary search over restart points reftable/block: fix error handling when searching restart points reftable/record: extract function to decode key lengths reftable/block: avoid decoding keys when searching restart points t0610: make `--shared=` tests reusable t0610: execute git-pack-refs(1) with specified umask Peter Hutterer (1): diff: add diff.srcPrefix and diff.dstPrefix configuration variables Philippe Blain (5): merge-ort: turn submodule conflict suggestions into an advice ci(github): make Windows test artifacts name unique sequencer: allow disabling conflict advice builtin/am: allow disabling conflict advice t/README: mention test files are make targets Phillip Wood (9): rebase -i: stop setting GIT_CHERRY_PICK_HELP xdiff-interface: refactor parsing of merge.conflictstyle merge-ll: introduce LL_MERGE_OPTIONS_INIT merge options: add a conflict style member checkout: cleanup --conflict=