Version v2.47.1; changes since v2.47.0: --------------------------------------- Andrew Kreimer (6): compat: fix typos contrib: fix typos t/unit-tests: fix typos t/perf: fix typos t/helper: fix a typo t: fix typos Daniel Black (1): submodule: correct remote name with fetch Derrick Stolee (1): line-log: protect inner strbuf from free Jeff King (7): line-log: use diff_line_prefix() instead of custom helper diff: drop line_prefix_length field diff: return const char from output_prefix callback diff: return line_prefix directly when possible diff: store graph prefix buf in git_graph struct simple-ipc: split async server initialization and running fsmonitor: initialize fs event listener before accepting clients Johannes Schindelin (1): docs: fix the `maintain-git` links in `technical/platform-support` Josh Heinrichs (1): git-config.1: remove value from positional args in unset usage Josh Soref (2): doc: update links to current pages doc: switch links to https Junio C Hamano (3): doc: clarify in refspec syntax Prepare for 2.47.1 Git 2.47.1 Karthik Nayak (1): loose: don't rely on repository global state Kristoffer Haugsbakk (2): doc: merge-tree: improve example script checkout: refer to other-worktree branch, not ref Patrick Steinhardt (4): cache-tree: refactor verification to return error codes cache-tree: detect mismatching number of index entries unpack-trees: detect mismatching number of cache-tree/index entries builtin/gc: fix crash when running `git maintenance start` Shubham Kanodia (1): doc: add a note about staggering of maintenance Taylor Blau (2): Documentation: mention the amlog in howto/maintain-git.txt Makefile(s): avoid recipe prefix in conditional statements Toon Claes (1): bundle-uri: plug leak in unbundle_from_file() Xing Xin (1): Documentation/gitprotocol-v2.txt: fix a slight inconsistency in format Version v2.47.0; changes since v2.47.0-rc1: ------------------------------------------- Alexander Shopov (1): l10n: bg.po: Updated Bulgarian translation (5772t) Andrew Kreimer (6): Documentation/config: fix typos Documentation: fix typos trace2: fix typos reftable: fix a typo mergetool: fix a typo perl: fix a typo Bagas Sanjaya (1): l10n: po-id for 2.47 Derrick Stolee (1): read-cache: free threaded memory pool Emir SARI (1): l10n: tr: Update Turkish translations for 2.47.0 Jean-Noël Avila (1): l10n: fr.po: 2.47.0 Jeff King (4): test-lib: stop showing old leak logs test-lib: show leak-sanitizer logs on --immediate failure test-lib: check for leak logs after every test hash.h: set NEEDS_CLONE_HELPER_UNSAFE in fallback mode Jordi Mas (2): l10n: Update Catalan translation l10n: new lead for Catalan translation Junio C Hamano (4): howto-maintain-git: discarding inactive topics A bit more after 2.47-rc1 Mostly there for 2.47 final Git 2.47 Koji Nakamaru (1): fsmonitor OSX: fix hangs for submodules Mike Hommey (1): utf8.h: squelch unused-parameter warnings with NO_ICONV Patrick Steinhardt (1): t0610: work around flaky test with concurrent writers Peter Krefting (1): l10n: sv.po: Update Swedish translation Ralf Thielow (1): l10n: Update German translation René Scharfe (1): archive: fix misleading error message Teng Long (1): l10n: zh_CN: updated translation for 2.47 Vũ Tiến Hưng (1): l10n: vi: Updated translation for 2.47 Yi-Jyun Pan (1): l10n: zh_TW: Git 2.47 Version v2.47.0-rc1; changes since v2.47.0-rc0: ----------------------------------------------- Derrick Stolee (4): credential: add new interactive config option maintenance: add custom config to background jobs scalar: configure maintenance during 'reconfigure' sparse-checkout: disable advice in 'disable' Jeff King (25): connect: clear child process before freeing in diagnostic mode fetch-pack: free object filter before exiting fetch-pack, send-pack: clean up shallow oid array commit: avoid leaking already-saved buffer send-pack: free cas options before exit transport-helper: fix strbuf leak in push_refs_with_push() fetch: free "raw" string when shrinking refspec fetch-pack: clear pack lockfiles list transport-helper: fix leak of dummy refs_list http: fix leak when redacting cookies from curl trace http: fix leak of http_object_request struct http: call git_inflate_end() when releasing http_object_request http: stop leaking buffer in http_get_info_packs() remote-curl: free HEAD ref with free_one_ref() http-walker: free fake packed_git list http-push: clear refspecs before exiting http-push: free repo->url string http-push: free curl header lists http-push: free transfer_request dest field http-push: free transfer_request strbuf http-push: free remote_ls_ctx.dentry_name http-push: free xml_ctx.cdata after use http-push: clean up objects list http-push: clean up loose request when falling back to packed http-push: clean up local_refs at exit Junio C Hamano (2): another batch after 2.47-rc0 Git 2.47-rc1 Patrick Steinhardt (31): t1305: exercise edge cases of "onbranch" includes config: fix evaluating "onbranch" with nonexistent git dir refs/reftable: introduce "reftable.lockTimeout" reftable/stack: allow locking of outdated stacks refs/reftable: reload locked stack when preparing transaction http-fetch: clear leaking git-index-pack(1) arguments shallow: fix leak when unregistering last shallow root fetch-pack: fix leaking sought refs builtin/help: fix dangling reference to `html_path` builtin/help: fix leaking `html_path` when reading config multiple times git: fix leaking argv when handling builtins submodule: fix leaking update strategy builtin/submodule--helper: clear child process when not running it builtin/submodule--helper: fix leaking error buffer t/helper: fix leaking subrepo in nested submodule config helper builtin/submodule--helper: fix leaking remote ref on errors dir: fix off by one errors for ignored and untracked entries builtin/pull: fix leaking "ff" option diff: fix leaking orderfile option parse-options: free previous value of `OPTION_FILENAME` diffcore-order: fix leaking buffer when parsing orderfiles builtin/repack: fix leaking configuration builtin/difftool: plug several trivial memory leaks trace2: destroy context stored in thread-local storage submodule: fix leaking submodule ODB paths grep: fix leaking grep pattern promisor-remote: fix leaking partial clone filter builtin/maintenance: fix leaking config string builtin/maintenance: fix leak in `get_schedule_cmd()` revision: fix leaking parents when simplifying commits diffcore-break: fix leaking filespecs when merging broken pairs Phillip Wood (1): submodule status: propagate SIGPIPE René Scharfe (2): archive: load index before pathspec checks commit-graph: remove unnecessary UNLEAK Taylor Blau (8): finalize_object_file(): check for name collision before renaming finalize_object_file(): refactor unlink_or_warn() placement finalize_object_file(): implement collision check pack-objects: use finalize_object_file() to rename pack/idx/etc sha1: do not redefine `platform_SHA_CTX` and friends hash.h: scaffolding for _unsafe hashing variants Makefile: allow specifying a SHA-1 for non-cryptographic uses csum-file.c: use unsafe SHA-1 implementation when available Version v2.47.0-rc0; changes since v2.46.2: ------------------------------------------- AbdAlRahman Gad (8): t7004: remove space after redirect operators t7004: one command per line t7004: use indented here-doc t7004: do not prepare things outside test_expect_success t7004: description on the same line as test_expect_success t7004: begin the test body on the same line as test_expect_success t7004: use single quotes instead of double quotes t7004: make use of write_script Alex Galvin (3): git-svn: add public property `svn:global-ignores` git-svn: use `svn:global-ignores` to create .gitignore git-svn: mention `svn:global-ignores` in help+docs Alex Henrie (2): mergetools: vscode: new tool apply: support --ours, --theirs, and --union for three-way merges Alexander Shopov (1): show-ref: improve short help messages of options Andrew Kreimer (25): attr: fix a typo bloom: fix a typo cbtree: fix a typo config.mak.dev: fix a typo diffcore-rename: fix typos fsmonitor-settings: fix a typo git-instaweb: fix a typo git-p4: fix typos gpg-interface: fix a typo http: fix a typo merge-ll: fix a typo merge-ort: fix typos object-file: fix a typo pretty: fix a typo read-cache-ll: fix a typo rebase: fix a typo refs: fix typos revision: fix a typo run-command: fix a typo setup: fix a typo sideband: fix a typo upload-pack: fix a typo ref-filter: fix a typo Documentation/technical: fix a typo builtin: fix typos Antonin Delpeuch (1): merge-recursive: honor diff.algorithm Avi Halachmi (:avih) (8): git-prompt: use here-doc instead of here-string git-prompt: fix uninitialized variable git-prompt: don't use shell arrays git-prompt: replace [[...]] with standard code git-prompt: add some missing quotes git-prompt: don't use shell $'...' git-prompt: ta-da! document usage in other shells git-prompt: support custom 0-width PS1 markers Beat Bolli (1): unicode: update the width tables to Unicode 16 Calvin Wan (1): send-pack: add new tracing regions for push Carlo Marcelo Arenas Belón (1): ci: update FreeBSD image to 13.4 Chandra Pratap (40): t: move reftable/merged_test.c to the unit testing framework t: harmonize t-reftable-merged.c with coding guidelines t-reftable-merged: improve the test t_merged_single_record() t-reftable-merged: improve the const-correctness of helper functions t-reftable-merged: add tests for reftable_merged_table_max_update_index t-reftable-merged: use reftable_ref_record_equal to compare ref records t-reftable-merged: add test for REFTABLE_FORMAT_ERROR reftable: remove unnecessary curly braces in reftable/pq.c reftable: change the type of array indices to 'size_t' in reftable/pq.c t: move reftable/pq_test.c to the unit testing framework t-reftable-pq: make merged_iter_pqueue_check() static t-reftable-pq: make merged_iter_pqueue_check() callable by reference t-reftable-pq: add test for index based comparison t-reftable-pq: add tests for merged_iter_pqueue_top() reftable: remove unnecessary curly braces in reftable/tree.c t: move reftable/tree_test.c to the unit testing framework t-reftable-tree: split test_tree() into two sub-test functions t-reftable-tree: add test for non-existent key t-reftable-tree: improve the test for infix_walk() t: move reftable/readwrite_test.c to the unit testing framework t-reftable-readwrite: use free_names() instead of a for loop t-reftable-readwrite: use 'for' in place of infinite 'while' loops t-reftable-readwrite: add test for known error t: move reftable/block_test.c to the unit testing framework t: harmonize t-reftable-block.c with coding guidelines t-reftable-block: release used block reader t-reftable-block: use reftable_record_equal() instead of check_str() t-reftable-block: use reftable_record_key() instead of strbuf_addstr() t-reftable-block: use block_iter_reset() instead of block_iter_close() t-reftable-block: use xstrfmt() instead of xstrdup() t-reftable-block: remove unnecessary variable 'j' t-reftable-block: add tests for log blocks t-reftable-block: add tests for obj blocks t-reftable-block: add tests for index blocks t: move reftable/stack_test.c to the unit testing framework t: harmonize t-reftable-stack.c with coding guidelines t-reftable-stack: use Git's tempfile API instead of mkstemp() t-reftable-stack: use reftable_ref_record_equal() to compare ref records t-reftable-stack: add test for non-default compaction factor t-reftable-stack: add test for stack iterators D Harithamma (1): exec_cmd: RUNTIME_PREFIX on z/OS systems Derrick Stolee (7): commit-reach: add get_branch_base_for_tip commit: add gentle reference lookup method for-each-ref: add 'is-base' token p1500: add is-base performance tests diff-index: integrate with the sparse index scalar: add --no-tags option to 'scalar clone' advice: recommend GIT_ADVICE=0 for tools Emily Shaffer (1): Documentation: add platform support policy Eric Sunshine (8): t3430: drop unnecessary one-shot "VAR=val shell-func" invocation t4034: fix use of one-shot variable assignment with shell function check-non-portable-shell: loosen one-shot assignment error message check-non-portable-shell: suggest alternative for `VAR=val shell-func` check-non-portable-shell: improve `VAR=val shell-func` detection chainlint: don't be fooled by "?!...?!" in test body chainlint: make error messages self-explanatory chainlint: reduce annotation noise-factor Ghanshyam Thakkar (3): t: port helper/test-hashmap.c to unit-tests/t-hashmap.c t: migrate t0110-urlmatch-normalization to the new framework t: port helper/test-oid-array.c to unit-tests/t-oid-array.c Jacob Keller (7): t9001-send-email.sh: fix quoting for mailrc --dump-aliases test t9001-send-email.sh: update alias list used for pine test send-email: teach git send-email option to translate aliases check-mailmap: accept "user@host" contacts check-mailmap: add options for additional mailmap sources send-email: add mailmap support via sendemail.mailmap and --mailmap send-email: document --mailmap and associated configuration Jeff King (54): midx: drop unused parameters from add_midx_to_chain() refs: drop some unused parameters from create_symref_lock() pack-bitmap: load writer config from repository parameter pack-bitmap: drop unused parameters from select_pseudo_merges() ref-filter: drop unused parameters from email_atom_option_parser() diff-lib: drop unused index argument from get_stat_data() imap-send: mark unused parameter in ssl_socket_connect() fallback update-ref: mark more unused parameters in parser callbacks refs: mark unused parameters in ref_store fsck callbacks refs: mark unused parameters in do_for_each_reflog_helper() oss-fuzz: mark unused argv/argc argument t/helper: mark more unused argv/argc arguments unit-tests: ignore unused argc/argv reftable: ignore unused argc/argv in test functions reftable: drop obsolete test function declarations reftable: mark unused parameters in virtual functions t-hashmap: mark unused parameters in callback function test-mergesort: mark unused parameters in trivial callback setup: mark unused parameter in config callback daemon: mark unused parameters in non-posix fallbacks scalar: mark unused parameters in dummy function t-hashmap: stop calling setup() for t_intern() test gc: mark unused config parameter in virtual functions t-reftable-readwrite: mark unused parameter in callback function compat: disable -Wunused-parameter in 3rd-party code compat: disable -Wunused-parameter in win32/headless.c compat: mark unused parameters in win32/mingw functions config.mak.dev: enable -Wunused-parameter by default CodingGuidelines: mention -Wunused-parameter and UNUSED t-reftable-block: mark unused argv/argc reftable: mark unused parameters in empty iterator functions gc: drop MAYBE_UNUSED annotation from used parameter grep: prefer UNUSED to MAYBE_UNUSED for pcre allocators drop trailing newline from warning/error/die messages sparse-checkout: consolidate cleanup when writing patterns sparse-checkout: check commit_lock_file when writing patterns sparse-checkout: use fdopen_lock_file() instead of xfdopen() t6300: drop newline from wrapped test title ref-filter: avoid extra copies of payload/signature ref-filter: strip signature when parsing tag trailers ref-filter: drop useless cast in trailers_atom_parser() ref-filter: store ref_trailer_buf data per-atom ref-filter: fix leak of %(trailers) "argbuf" ref-filter: fix leak with %(describe) arguments ref-filter: fix leak when formatting %(push:remoteref) ref-filter: add ref_format_clear() function imap-send: handle NO_OPENSSL even when openssl exists t/interop: allow per-version make options Git.pm: fix bare repository search with Directory option Git.pm: use "rev-parse --absolute-git-dir" rather than perl code print an error when remote helpers die during capabilities git-jump: always specify column 1 for diff entries git-jump: ignore deleted files in diff mode t9001: use a more distinct fake BugID Johannes Schindelin (7): clar: avoid compile error with mingw-w64 clar(win32): avoid compile error due to unused `fs_copy()` clar: stop including `shellapi.h` unnecessarily clar: add CMake support cmake: rename clar-related variables to avoid confusion cmake: stop looking for `REFTABLE_TEST_OBJS` in the Makefile cmake: generalize the handling of the `UNIT_TEST_OBJS` list John Cai (7): refs: keep track of unresolved reference value in iterators refs: add referent to each_ref_fn ref-filter: populate symref from iterator builtin: add a repository parameter for builtin functions builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h builtin: remove USE_THE_REPOSITORY for those without the_repository add: pass in repo variable instead of global the_repository Josh Steadmon (2): trace2: implement trace2_printf() for event target fetch: add top-level trace2 regions Junio C Hamano (32): ReviewingGuidelines: encourage positive reviews more Start the 2.47 cycle The second batch t3206: test_when_finished before dirtying operations, not after transport: fix leak with transport helper URLs The third batch remerge-diff: lazily prepare temporary objdir on demand remerge-diff: clean up temporary objdir at a central place The fourth batch The fifth batch The sixth batch mailinfo: we parse fixed headers The seventh batch The eighth batch The ninth batch The tenth batch The eleventh batch CodingGuidelines: also mention MAYBE_UNUSED refs/files-backend: work around -Wunused-parameter The twelfth batch The thirteenth batch The fourteenth batch The fifteenth batch t5512.40 sometimes dies by SIGPIPE The sixteenth batch The seventeenth batch ci updates The eighteenth batch The 19th batch The 20th batch The 21st batch Git 2.47-rc0 Karthik Nayak (6): clang-format: indent preprocessor directives after hash clang-format: avoid spacing around bitfield colon clang-format: formalize some of the spacing rules ci: run style check on GitHub and GitLab check-whitespace: detect if no base_commit is provided ci/style-check: add `RemoveBracesLLVM` in CI job Kevin Lyles (2): t1092: allow run_on_* functions to use standard input builtin/cat-file: mark 'git cat-file' sparse-index compatible Matheus Tavares (1): rebase --exec: respect --quiet Patrick Steinhardt (227): refs: stop using `the_repository` refs/files: stop using `the_repository` in `parse_loose_ref_contents()` refs/files: stop using `the_repository` refs/packed: stop using `the_repository` refs/reftable: stop using `the_repository` clang-format: fix indentation width for preprocessor directives Documentation: clarify indentation style for C preprocessor directives Documentation: document naming schema for structs and their functions Documentation: document idiomatic function names Documentation: consistently use spaces inside initializers builtin/replay: plug leaking `advance_name` variable builtin/log: fix leaking branch name when creating cover letters builtin/describe: fix memory leak with `--contains=` builtin/describe: fix leaking array when running diff-index builtin/describe: fix trivial memory leak when describing blob builtin/name-rev: fix various trivial memory leaks builtin/submodule--helper: fix leaking clone depth parameter builtin/submodule--helper: fix leaking buffer in `is_tip_reachable` builtin/ls-remote: fix leaking `pattern` strings builtin/remote: fix leaking strings in `branch_list` builtin/remote: fix various trivial memory leaks builtin/stash: fix various trivial memory leaks builtin/rev-parse: fix memory leak with `--parseopt` builtin/show-branch: fix several memory leaks builtin/credential-store: fix leaking credential builtin/rerere: fix various trivial memory leaks builtin/shortlog: fix various trivial memory leaks builtin/worktree: fix leaking derived branch names builtin/credential-cache: fix trivial leaks t/test-repository: fix leaking repository object-name: fix leaking commit list items entry: fix leaking pathnames during delayed checkout convert: fix leaking config strings commit-reach: fix trivial memory leak when computing reachability refs: drop `ref_store`-less functions transport: mark more tests leak-free git-submodule.sh: break overly long command lines builtin/submodule: allow cloning with different ref storage format builtin/clone: propagate ref storage format to submodules refs: fix ref storage format for submodule ref stores builtin/submodule: allow "add" to use different ref storage format submodule: fix leaking fetch tasks submodule: fix leaking seen submodule names object: fix leaking packfiles when closing object store reftable/stack: refactor function to gather table sizes reftable/stack: extract function to setup stack with N tables reftable/stack: test compaction with already-locked tables reftable/stack: update stats on failed full compaction reftable/stack: simplify tracking of table locks reftable/stack: do not die when fsyncing lock file files reftable/stack: use lock_file when adding table to "tables.list" reftable/stack: fix corruption on concurrent compaction reftable/stack: handle locked tables during auto-compaction path: expose `do_git_path()` as `repo_git_pathv()` path: expose `do_git_common_path()` as `repo_common_pathv()` editor: do not rely on `the_repository` for interactive edits hooks: remove implicit dependency on `the_repository` path: stop relying on `the_repository` when reporting garbage path: stop relying on `the_repository` in `worktree_git_path()` path: hide functions using `the_repository` by default config: introduce missing setters that take repo as parameter config: expose `repo_config_clear()` config: pass repo to `git_config_get_index_threads()` config: pass repo to `git_config_get_split_index()` config: pass repo to `git_config_get_max_percent_split_change()` config: pass repo to `git_config_get_expiry()` config: pass repo to `git_config_get_expiry_in_days()` config: pass repo to `git_die_config()` config: pass repo to functions that rename or copy sections config: don't have setters depend on `the_repository` config: don't depend on `the_repository` with branch conditions global: prepare for hiding away repo-less config functions config: hide functions using `the_repository` by default remote: plug memory leak when aliasing URLs git: fix leaking system paths object-file: fix memory leak when reading corrupted headers object-name: fix leaking symlink paths in object context bulk-checkin: fix leaking state TODO read-cache: fix leaking hashfile when writing index fails submodule-config: fix leaking name entry when traversing submodules config: fix leaking comment character config builtin/rebase: fix leaking `commit.gpgsign` value builtin/notes: fix leaking `struct notes_tree` when merging notes builtin/fast-import: plug trivial memory leaks builtin/fast-export: fix leaking diff options builtin/fast-export: plug leaking tag names merge-ort: unconditionally release attributes index sequencer: release todo list on error paths unpack-trees: clear index when not propagating it diff: fix leak when parsing invalid ignore regex option builtin/format-patch: fix various trivial memory leaks userdiff: fix leaking memory for configured diff drivers builtin/log: fix leak when showing converted blob contents diff: free state populated via options builtin/diff: free symmetric diff members config: fix constness of out parameter for `git_config_get_expiry()` builtin/gc: refactor to read config into structure builtin/gc: fix leaking config values builtin/gc: stop processing log file on signal builtin/gc: add a `--detach` flag builtin/maintenance: add a `--detach` flag run-command: fix detaching when running auto maintenance t0001: exercise initialization with ref formats more thoroughly t0001: delete repositories when object format tests finish setup: merge configuration of repository formats setup: make object format configurable via config setup: make ref storage format configurable via config t7900: fix flaky test due to leaking background job t7900: exercise detaching via trace2 regions builtin/maintenance: fix loose objects task emitting pack hash reftable/merged: expose functions to initialize iterators reftable/merged: rename `reftable_new_merged_table()` reftable/merged: stop using generic tables in the merged table reftable/stack: open-code reading refs reftable/iter: drop double-checking logic reftable/generic: move generic iterator code into iterator interface reftable/dump: drop unused `compact_stack()` t/helper: inline `reftable_dump_main()` t/helper: inline `reftable_reader_print_file()` t/helper: inline `reftable_stack_print_directory()` t/helper: inline `reftable_table_print()` t/helper: inline printing of reftable records t/helper: use `hash_to_hex_algop()` to print hashes t/helper: refactor to not use `struct reftable_table` reftable/generic: drop interface mailinfo: fix leaking header data convert: fix leaks when resetting attributes pretty: fix memory leaks when parsing pretty formats pretty: fix leaking key/value separator buffer builtin/merge-tree: fix leaking `-X` strategy options builtin/upload-archive: fix leaking args passed to `write_archive()` builtin/archive: fix leaking `OPT_FILENAME()` value midx-write: fix leaking hashfile on error cases builtin/repack: fix leaks when computing packs to repack t/helper: fix leaking multi-pack-indices in "read-midx" transport: fix leaking OID arrays in git:// transport data builtin/send-pack: fix leaking refspecs sideband: fix leaks when configuring sideband colors builtin/fetch-pack: fix leaking refs remote: fix leaking config strings remote: fix leaks when matching refspecs remote: fix leaking peer ref when expanding refmap builtin/fetch: fix leaking transaction with `--atomic` transport: fix leaking arguments when fetching from bundle transport: fix leaking negotiation tips reftable/blocksource: drop malloc block source reftable/stack: inline `stack_compact_range_stats()` reftable/reader: rename `reftable_new_reader()` reftable/reader: inline `init_reader()` reftable/reader: inline `reader_close()` reftable/stack: fix broken refnames in `write_n_ref_tables()` reftable/reader: introduce refcounting reftable/reader: keep readers alive during iteration reftable/stack: reorder swapping in the reloaded stack contents reftable/stack: fix segfault when reload with reused readers fails Documentation/BreakingChanges: announce removal of git-pack-redundant(1) wrapper: introduce `log2u()` t0601: merge tests for auto-packing of refs refs/files: use heuristic to decide whether to repack with `--auto` t: do not pass GIT_TEST_OPTS to unit tests with prove t: import the clar unit testing framework t/clar: fix compatibility with NonStop Makefile: fix sparse dependency on GENERATED_H Makefile: make hdr-check depend on generated headers Makefile: do not use sparse on third-party sources Makefile: wire up the clar unit testing framework t/unit-tests: implement test driver t/unit-tests: convert strvec tests to use clar t/unit-tests: convert ctype tests to use clar t/test-lib: allow skipping leak checks for passing tests fetch-pack: fix memory leaks on fetch negotiation send-pack: fix leaking common object IDs builtin/push: fix leaking refspec query result upload-pack: fix leaking child process data on reachability checks submodule: fix leaking fetch task data builtin/submodule--helper: fix leaking refs on push-check remote: fix leaking tracking refs remote: fix leak in reachability check of a remote-tracking ref send-pack: fix leaking push cert nonce gpg-interface: fix misdesigned signing key interfaces object: clear grafts when clearing parsed object pool shallow: free grafts when unregistering them shallow: fix leaking members of `struct shallow_info` negotiator/skipping: fix leaking commit entries builtin/repack: fix leaking line buffer when packing promisors builtin/pack-objects: plug leaking list of keep-packs builtin/grep: fix leaking object context builtin/fmt-merge-msg: fix leaking buffers match-trees: fix leaking prefixes in `shift_tree()` merge-ort: fix two leaks when handling directory rename modifications builtin/repack: fix leaking keep-pack list ref-filter: fix leak with unterminated %(if) atoms Makefile: rename clar-related variables to avoid confusion environment: make `get_git_dir()` accept a repository environment: make `get_git_common_dir()` accept a repository environment: make `get_object_directory()` accept a repository environment: make `get_index_file()` accept a repository environment: make `get_graft_file()` accept a repository environment: make `get_git_work_tree()` accept a repository config: document `read_early_config()` and `read_very_early_config()` config: make dependency on repo in `read_early_config()` explicit environment: move object database functions into object layer environment: make `get_git_namespace()` self-contained environment: move `set_git_dir()` and related into setup layer environment: reorder header to split out `the_repository`-free section environment: guard state depending on a repository repo-settings: split out declarations into a standalone header repo-settings: track defaults close to `struct repo_settings` branch: stop modifying `log_all_ref_updates` variable refs: stop modifying global `log_all_ref_updates` variable environment: stop storing "core.logAllRefUpdates" globally environment: stop storing "core.preferSymlinkRefs" globally environment: stop storing "core.warnAmbiguousRefs" globally environment: stop storing "core.notesRef" globally refs: properly apply exclude patterns to namespaced refs builtin/receive-pack: fix exclude patterns when announcing refs Makefile: stop listing test library objects twice t/unit-tests: introduce reftable library reftable/reader: make table iterator reseekable refs/reftable: wire up support for exclude patterns apply: reorder functions to move image-related things together apply: rename functions operating on `struct image` apply: introduce macro and function to init images apply: refactor code to drop `line_allocated` apply: rename members that track line count and allocation length apply: refactor `struct image` to use a `struct strbuf` gitlab-ci: upgrade machine type of Linux runners Phillip Wood (1): rebase: apply and cleanup autostash when rebase fails to start Ramsay Jones (2): Makefile: drop -Wno-universal-initializer from SP_EXTRA_FLAGS config.mak.uname: remove unused uname_P variable René Scharfe (12): t-strvec: use test_msg() t-strvec: improve check_strvec() output t-strvec: fix type mismatch in check_strvec grep: -W: skip trailing empty lines at EOF, too t0080: use here-doc test body unit-tests: show location of checks outside of tests unit-tests: add if_test t-ctype: use if_test t-reftable-basics: use if_test t-strvec: use if_test remote: plug memory leaks at early returns diff: report modified binary files as changes in builtin_diff() Rubén Justo (4): add-patch: test for 'p' command pager: do not close fd 2 unnecessarily pager: introduce wait_for_pager add-patch: render hunks through the pager Ryan Hendrickson (1): http: do not ignore proxy path Stephen P. Smith (1): .mailmap document current address. Taylor Blau (33): t/t7704-repack-cruft.sh: avoid failures during long-running tests Documentation: describe incremental MIDX format midx: add new fields for incremental MIDX chains midx: teach `nth_midxed_pack_int_id()` about incremental MIDXs midx: teach `prepare_midx_pack()` about incremental MIDXs midx: teach `nth_midxed_object_oid()` about incremental MIDXs midx: teach `nth_bitmapped_pack()` about incremental MIDXs midx: introduce `bsearch_one_midx()` midx: teach `bsearch_midx()` about incremental MIDXs midx: teach `nth_midxed_offset()` about incremental MIDXs midx: teach `fill_midx_entry()` about incremental MIDXs midx: remove unused `midx_locate_pack()` midx: teach `midx_contains_pack()` about incremental MIDXs midx: teach `midx_preferred_pack()` about incremental MIDXs midx: teach `midx_fanout_add_midx_fanout()` about incremental MIDXs midx: support reading incremental MIDX chains midx: implement verification support for incremental MIDXs t: retire 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP' t/t5313-pack-bounds-checks.sh: prepare for sub-directories midx: implement support for writing incremental MIDX chains pack-bitmap: initialize `bitmap_writer_init()` with packing_data pack-bitmap: drop redundant args from `bitmap_writer_build_type_index()` pack-bitmap: drop redundant args from `bitmap_writer_build()` pack-bitmap: drop redundant args from `bitmap_writer_finish()` pack-bitmap-write.c: select pseudo-merges even for small bitmaps t/t5333-pseudo-merge-bitmaps.sh: demonstrate empty pseudo-merge groups pseudo-merge.c: do not generate empty pseudo-merge commits pseudo-merge.c: ensure pseudo-merge groups are closed t/t5332-multi-pack-reuse.sh: verify pack generation with --strict pack-bitmap: tag bitmapped packs with their corresponding MIDX builtin/pack-objects.c: translate bit positions during pack-reuse pack-bitmap.c: avoid repeated `pack_pos_to_offset()` during reuse builtin/pack-objects.c: do not open-code `MAX_PACK_OBJECT_HEADER` shejialuo (9): fsck: rename "skiplist" to "skip_oids" fsck: rename objects-related fsck error functions fsck: make "fsck_error" callback generic fsck: add a unified interface for reporting fsck messages fsck: add refs report function refs: set up ref consistency check infrastructure builtin/refs: add verify subcommand files-backend: add unified interface for refs scanning fsck: add ref name check for files backend Version v2.46.2; changes since v2.46.1: --------------------------------------- Brian Lyles (1): interpret-trailers: handle message without trailing newline Jeff King (4): ci: drop run-docker scripts ci: unify ubuntu and ubuntu32 dependencies ci: use more recent linux32 image ci: use regular action versions for linux32 job Junio C Hamano (5): doc: remote.*.skip{DefaultUpdate,FetchAll} stops prefetch ci: remove 'Upload failed tests' directories' step from linux32 jobs Revert "Merge branch 'jc/patch-id' into maint-2.46" Start preparing for Git 2.46.2 Git 2.46.2 Martin Ågren (2): t1517: add missing LIBCURL prereq t0211: add missing LIBCURL prereq Patrick Steinhardt (1): ci: add Ubuntu 16.04 job to GitLab CI Ramsay Jones (1): config.mak.uname: add HAVE_DEV_TTY to cygwin config section René Scharfe (2): diff: report copies and renames as changes in run_diff_cmd() diff: report dirty submodules as changes in builtin_diff() Version v2.46.1; changes since v2.46.0: --------------------------------------- Celeste Liu (1): doc: replace 3 dash with correct 2 dash in git-config(1) D Harithamma (1): convert: return early when not tracing David Disseldorp (1): notes: do not trigger editor when adding an empty note Jayson Rhynas (1): doc: fix hex code escapes in git-ls-files Jeff King (4): credential/osxkeychain: respect NUL terminator in username apply: canonicalize modes read from patches t4129: fix racy index when calling chmod after git-add revision: free commit buffers for skipped commits Johannes Schindelin (2): ci: bump microsoft/setup-msbuild from v1 to v2 ci(win+VS): download the vcpkg artifacts using a dedicated GitHub Action Junio C Hamano (30): checkout: special case error messages during noop switching doc: note that AT&T ksh does not work with our test suite Revert "reflog expire: don't use lookup_commit_reference_gently()" howto-maintain: cover a whole development cycle howto-maintain: update daily tasks CodingGuidelines: document a shell that "fails" "VAR=VAL shell_func" doc: difference in location to apply is "offset", not "fuzz" mailmap: plug memory leak in read_mailmap_blob() csum-file: introduce discard_hashfile() t4204: patch-id supports various input format patch-id: call flush_current_id() only when needed patch-id: make get_one_patchid() more extensible patch-id: rewrite code that detects the beginning of a patch patch-id: tighten code to detect the patch header safe.directory: preliminary clean-up safe.directory: normalize the checked path safe.directory: normalize the configured path safe.directory: setting safe.directory="." allows the "current" directory t0018: remove leftover debugging cruft tests: drop use of 'tee' that hides exit status tutorial: grammofix doc: grammofix in git-diff-tree howto-maintain: mention preformatted docs Prepare for 2.46.1 CodingGuidelines: spaces around C operators A bit more topics for 2.46.x maintenance track git-config.1: --get-all description update git-config.1: fix description of --regexp in synopsis Another batch of topics for 2.46.1 Git 2.46.1 Justin Tobler (1): doc: clarify post-receive hook behavior Kousik Sanagavarapu (1): unit-tests/test-lib: fix typo in check_pointer_eq() description Kyle Lippincott (2): set errno=0 before strtoX calls t6421: fix test to work when repo dir contains d0 Patrick Steinhardt (8): t98xx: fix Perforce tests with p4d r23 and newer ci: update Perforce version to r23.2 t98xx: mark Perforce tests as memory-leak free builtin/ls-remote: fall back to SHA1 outside of a repo builtin/bundle: have unbundle check for repo before opening its bundle bundle: default to SHA1 when reading bundle headers builtin/stash: fix `--keep-index --include-untracked` with empty HEAD builtin/index-pack: fix segfaults when running outside of a repo Phillip Wood (2): add-patch: handle splitting hunks with diff.suppressBlankEmpty add-patch: use normalize_marker() when recounting edited hunk Ramsay Jones (1): compat/terminal: mark parameter of git_terminal_prompt() UNUSED René Scharfe (2): t-example-decorate: remove test messages log-tree: use decimal_width() Sven Strickroth (1): refs/files: prevent memory leak by freeing packed_ref_store Taylor Blau (1): config.c: avoid segfault with --fixed-value and valueless config Tomas Nordin (1): doc: remove dangling closing parenthesis Xing Xin (1): diff-tree: fix crash when used with --remerge-diff ahmed akef (1): docs: explain the order of output in the batched mode of git-cat-file(1) Version v2.46.0; changes since v2.46.0-rc2: ------------------------------------------- Alexander Shopov (1): l10n: bg.po: Updated Bulgarian translation (5734t) Arkadii Yakovets (1): l10n: uk: v2.46 update Bagas Sanjaya (1): l10n: po-id for 2.46 Emir SARI (1): l10n: tr: Update Turkish translations Jean-Noël Avila (1): l10n: fr: v2.46.0 Junio C Hamano (1): Git 2.46 Peter Krefting (1): l10n: sv.po: Update Swedish translation Ralf Thielow (1): l10n: Update German translation Teng Long (1): l10n: zh_CN: updated translation for 2.46 Vũ Tiến Hưng (1): l10n: vi: Updated translation for 2.46 Yi-Jyun Pan (1): l10n: zh_TW: Git 2.46 Version v2.46.0-rc2; changes since v2.46.0-rc1: ----------------------------------------------- Derrick Stolee (2): t5319: add failing test case for repack/expire midx-write: revert use of --stdin-packs Jean-Noël Avila (1): doc: git-clone fix discrepancy between asciidoc and asciidoctor Johannes Schindelin (1): asciidoctor: fix `synopsis` rendering Junio C Hamano (2): Doc: fix Asciidoctor css workaround Git 2.46-rc2 Patrick Steinhardt (1): refs: fix format migration on Cygwin Version v2.46.0-rc1; changes since v2.46.0-rc0: ----------------------------------------------- Abhijeet Sonar (1): describe: refresh the index when 'broken' flag is used Chandra Pratap (11): t: move reftable/record_test.c to the unit testing framework t-reftable-record: add reftable_record_cmp() tests for log records t-reftable-record: add comparison tests for ref records t-reftable-record: add comparison tests for index records t-reftable-record: add comparison tests for obj records t-reftable-record: add ref tests for reftable_record_is_deletion() t-reftable-record: add log tests for reftable_record_is_deletion() t-reftable-record: add obj tests for reftable_record_is_deletion() t-reftable-record: add index tests for reftable_record_is_deletion() t-reftable-record: add tests for reftable_ref_record_compare_name() t-reftable-record: add tests for reftable_log_record_compare_key() Christian Hesse (1): refs: correct the version numbers in a comment Csókás, Bence (1): git-send-email: use sanitized address when reading mbox body Derrick Stolee (1): advice: warn when sparse index expands Elijah Newren (8): merge-ort: extract handling of priv member into reusable function merge-ort: maintain expected invariant for priv member merge-ort: fix type of local 'clean' var in handle_content_merge () merge-ort: clearer propagation of failure-to-function from merge_submodule merge-ort: loosen commented requirements merge-ort: upon merge abort, only show messages causing the abort merge-ort: convert more error() cases to path_msg() merge-ort: fix missing early return Eric Sunshine (1): chainlint.pl: recognize test bodies defined via heredoc Ghanshyam Thakkar (1): t: migrate helper/test-oidmap.c to unit-tests/t-oidmap.c Jeff King (13): t5553: use local url for invalid fetch t5551: do not confirm that bogus url cannot be used t/lib-bundle-uri: use local fake bundle URLs chainlint.pl: add test_expect_success call to test snippets chainlint.pl: only start threads if jobs > 1 chainlint.pl: do not spawn more threads than we have scripts chainlint.pl: force CRLF conversion when opening input files chainlint.pl: check line numbers in expected output chainlint.pl: add tests for test body in heredoc test-lib: allow test snippets as here-docs t: convert some here-doc test bodies t/.gitattributes: ignore whitespace in chainlint expect files t4153: stop redirecting input from /dev/zero Jesús Ariel Cabello Mateos (1): gitweb: rss/atom change published/updated date to committer date Johannes Schindelin (8): cmake: fix build of `t-oidtree` run-command: refactor getting the Unix shell path into its own function strvec: declare the `strvec_push_nodup()` function globally win32: override `fspathcmp()` with a directory separator-aware version mingw(is_msys2_sh): handle forward slashes in the `sh.exe` path, too run-command(win32): resolve the path to the Unix shell early run-command: declare the `git_shell_path()` function globally var(win32): do report the GIT_SHELL_PATH that is actually used Junio C Hamano (7): push: avoid showing false negotiation errors ci: unify bash calling convention http.c: cookie file tightening Post 2.46-rc0 batch #1 Post 2.46-rc0 batch #2 Post 2.46-rc0 batch #3 Git 2.46-rc1 Karthik Nayak (1): builtin/push: call set_refspecs after validating remote Martin Ågren (2): Documentation/gitpacking: make sample configs listing blocks Documentation/glossary: fix double word Piotr Szlazak (1): doc: update http.cookieFile with in-memory cookie processing René Scharfe (1): clang-format: include kh_foreach* macros in ForEachMacros Rikita Ishikawa (1): doc: fix the max number of branches shown by "show-branch" Rubén Justo (4): t0613: mark as leak-free test-lib: fix GIT_TEST_SANITIZE_LEAK_LOG t0612: mark as leak-free test-lib: GIT_TEST_SANITIZE_LEAK_LOG enabled by default Taylor Blau (2): config.mak.dev: fix typo when enabling -Wpedantic Documentation: fix default value for core.maxTreeDepth brian m. carlson (5): gitfaq: add documentation on proxies gitfaq: give advice on using eol attribute in gitattributes gitfaq: add entry about syncing working trees doc: mention that proxies must be completely transparent http: allow authenticating proactively Version v2.46.0-rc0; changes since v2.45.2: ------------------------------------------- Aaron Plattner (1): credential: clear expired c->credential, unify secret clearing Abhijeet Sonar (1): pathspec: fix typo "glossary-context.txt" -> "glossary-content.txt" Adam Johnson (1): stash: fix "--staged" with binary files Beat Bolli (3): t/t4026-color: remove an extra double quote character t/t4026-color: add test coverage for invalid RGB colors color: add support for 12-bit RGB colors Chandra Pratap (5): t: move reftable/basics_test.c to the unit testing framework t: move tests from reftable/stack_test.c to the new unit test t: move tests from reftable/record_test.c to the new unit test t: add test for put_be16() t: improve the test-case for parse_names() D. Ben Knoble (1): completion: zsh: stop leaking local cache variable Darcy Burke (1): date: detect underflow/overflow when parsing dates with timezone offset Derrick Stolee (7): scalar: avoid segfault in reconfigure --all commit-graph: increment progress indicator sparse-checkout: refactor skip worktree retry logic sparse-index: refactor path_found() sparse-index: use strbuf in path_found() sparse-index: count lstat() calls sparse-index: improve lstat caching of sparse paths Dov Murik (1): documentation: git-update-index: add --show-index-version to synopsis Dr. David Alan Gilbert (1): fetch-pack: remove unused 'struct loose_object_iter' Dragan Simic (3): send-email: move newline characters out of a few translatable strings format-patch: ensure that --rfc and -k are mutually exclusive doc: interactive.singleKey is disabled by default Eric Sunshine (2): chainlint.pl: make CPU count computation more robust chainlint.pl: latch CPU count directly reported by /proc/cpuinfo Eric Wong (3): Git.pm: use array in command_bidi_pipe example t1006: ensure cat-file info isn't buffered by default object-file: fix leak on conversion failure Fahad Alrashed (1): git-p4: show Perforce error to the user Ghanshyam Thakkar (5): t/: port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c t/: migrate helper/test-example-decorate to the unit testing framework strbuf: introduce strbuf_addstrings() to repeatedly add a string t/: migrate helper/test-{sha1, sha256} to unit-tests/t-hash t/: migrate helper/test-oidtree.c to unit-tests/t-oidtree.c Ian Wienand (3): Documentation: alias: rework notes into points Documentation: alias: add notes on shell expansion run-command: show prepared command Ivan Tse (1): refs: return conflict error when checking packed refs James Liu (3): doc: clean up usage documentation for --no-* opts doc: add spacing around paginate options advice: add --no-advice global option Jeff King (41): t/Makefile: run unit tests alongside shell tests ci: update coverity runs_on_pool reference ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc t-strvec: use va_end() to match va_start() t-strvec: mark variable-arg helper with LAST_ARG_MUST_BE_NULL mv: move src_dir cleanup to end of cmd_mv() mv: factor out empty src_dir removal mv: replace src_dir with a strvec dir.c: skip .gitignore, etc larger than INT_MAX sparse-checkout: free string list in write_cone_to_file() sparse-checkout: pass string literals directly to add_pattern() dir.c: free strings in sparse cone pattern hashmaps sparse-checkout: clear patterns when init() sees existing sparse file dir.c: free removed sparse-pattern hashmap entries dir.c: reduce max pattern file size to 100MB dir.c: always copy input to add_pattern() sparse-checkout: reuse --stdin buffer when reading patterns sparse-checkout: always free "line" strbuf after reading input sparse-checkout: refactor temporary sparse_checkout_patterns sparse-checkout: free sparse_filename after use sparse-checkout: free pattern list in sparse_checkout_list() sparse-checkout: free string list after displaying sparse-checkout: free duplicate hashmap entries am: add explicit "--retry" option test-terminal: drop stdin handling imap-send: free all_msgs strbuf in "out" label archive: fix check for missing url remote: refactor alias_url() memory ownership remote: transfer ownership of memory in add_url(), etc remote: use strvecs to store remote url/pushurl remote: simplify url/pushurl selection config: document remote.*.url/pushurl interaction remote: allow resetting url list t5801: make remote-testgit GIT_DIR setup more robust t5801: test remote.*.vcs config remote: always require at least one url in a remote remote: drop checks for zero-url case fetch-pack: fix segfault when fscking without --lock-pack t5500: fix mistaken $SERVER reference in helper function Johannes Schindelin (4): for-each-repo: optionally keep going on an error maintenance: running maintenance should not stop on errors cmake: let `test-tool` run the unit tests, too mingw: drop bogus (and unneeded) declaration of `_pgmptr` Johannes Sixt (1): git-gui: note the new maintainer John Passaro (3): builtin/commit: use ARGV macro to collect trailers builtin/commit: refactor --trailer logic builtin/tag: add --trailer option John Paul Adrian Glaubitz (1): chainlint.pl: fix incorrect CPU count on Linux SPARC Jonathan Tan (1): gitformat-commit-graph: describe version 2 of BDAT Josh Soref (2): doc: update links to current pages doc: switch links to https Josh Steadmon (8): fuzz: link fuzz programs with `make all` on Linux t0080: turn t-basic unit test into a helper test-tool run-command testsuite: get shell from env test-tool run-command testsuite: remove hardcoded filter test-tool run-command testsuite: support unit tests unit tests: add rule for running with test-tool ci: use test-tool as unit test runner on Windows doc: describe the project's decision-making process Junio C Hamano (61): format-patch: allow --rfc to optionally take a value, like --rfc=WIP format-patch: "--rfc=-(WIP)" appends to produce [PATCH (WIP)] Start the 2.46 cycle rev-parse: document how --is-* options work outside a repository t/lib-chunk: work around broken "mv" on some vintage of macOS stop using HEAD for attributes in bare repository by default Makefile(s): do not enforce "all indents must be done with tab" format-patch: run range-diff with larger creation-factor t0018: two small fixes The second batch SubmittingPatches: move the patch-flow section earlier SubmittingPatches: extend the "flow" section SubmittingPatches: welcome the new maintainer of git-gui part compat/regex: fix argument order to calloc(3) The third batch The fourth batch Revert "diff: fix --exit-code with external diff" The fifth batch t0017: clarify dubious test set-up SubmittingPatches: advertise git-manpages-l10n project a bit diff: document what --name-only shows The sixth batch setup: add an escape hatch for "no more default hash algorithm" change t1517: test commands that are designed to be run outside repository apply: fix uninitialized hash function add-patch: enforce only one-letter response to prompts The seventh batch show_log: factor out interdiff/range-diff generation format-patch: move range/inter diff at the end of a single patch output The eighth batch safe.directory: allow "lead/ing/path/*" match The ninth batch t1517: more coverage for commands that work without repository Post 2.45.2 updates The tenth batch imap-send: minimum leakfix refs: call branches branches ls-remote: introduce --branches and deprecate --heads show-ref: introduce --branches and deprecate --heads attr.tree: HEAD:.gitattributes is no longer the default in a bare repo add-i: finally retire add.interactive.useBuiltin The eleventh batch worktree_git_path(): move the declaration to path.h __attribute__: trace2_region_enter_printf() is like "printf" __attribute__: remove redundant attribute declaration for git_die_config() __attribute__: mark some functions with LAST_ARG_MUST_BE_NULL __attribute__: add a few missing format attributes The twelfth batch The thirteenth batch The fourteenth batch The fifteenth batch fuzz: minimum fuzzers environment lacks libcURL The sixteenth batch t0006: simplify prerequisites archive: document that --add-virtual-file takes full path The seventeenth batch More post 2.45.2 updates from the 'master' front Yet another batch of post 2.45.2 updates from the 'master' front The eighteenth batch The ninteenth batch Git 2.46-rc0 Justin Tobler (6): doc: clarify practices for submitting updated patch versions ci: pre-collapse GitLab CI sections github-ci: fix link to whitespace error ci: separate whitespace check script ci: make the whitespace report optional gitlab-ci: add whitespace error check Karthik Nayak (16): refs: accept symref values in `ref_transaction_update()` files-backend: extract out `create_symref_lock()` refs: support symrefs in 'reference-transaction' hook refs: move `original_update_refname` to 'refs.c' refs: add support for transactional symref updates refs: use transaction in `refs_create_symref()` refs: rename `refs_create_symref()` to `refs_update_symref()` refs: remove `create_symref` and associated dead code SubmittingPatches: add section for iterating patches refs: create and use `ref_update_expects_existing_old_ref()` refs: specify error for regular refs with `old_target` update-ref: add support for 'symref-verify' command update-ref: add support for 'symref-delete' command update-ref: add support for 'symref-create' command reftable: pick either 'oid' or 'target' for new updates update-ref: add support for 'symref-update' command Koji Nakamaru (2): osxkeychain: exclusive lock to serialize execution of operations osxkeychain: state to skip unnecessary store operations Kyle Lippincott (1): attr: fix msan issue in read_attr_from_index Kyle Zhao (1): merge: avoid write merge state when unable to write index Linus Arver (18): MyFirstContribution: mention contrib/contacts/git-contacts SubmittingPatches: clarify 'git-contacts' location SubmittingPatches: mention GitGitGadget SubmittingPatches: quote commands SubmittingPatches: discuss reviewers first SubmittingPatches: dedupe discussion of security patches SubmittingPatches: add heading for format-patch and send-email SubmittingPatches: demonstrate using git-contacts with git-send-email Makefile: sort UNIT_TEST_PROGRAMS trailer: add unit tests for trailer iterator trailer: teach iterator about non-trailer lines sequencer: use the trailer iterator interpret-trailers: access trailer_info with new helpers trailer: make parse_trailers() return trailer_info pointer trailer: make trailer_info struct private trailer: retire trailer_info_get() from API trailer: document parse_trailers() usage trailer unit tests: inspect iterator contents Marcel Telka (9): t/t0211-trace2-perf.sh: fix typo patern -> pattern Switch grep from non-portable BRE to portable ERE t/t9902-completion.sh: backslashes in echo t/t0600-reffiles-backend.sh: rm -v is not portable t/t4202-log.sh: fix misspelled variable t/t1700-split-index.sh: mv -v is not portable t/t9118-git-svn-funky-branch-names.sh: sed needs semicolon t/t9001-send-email.sh: sed - remove the i flag for s scalar: make enlistment delete to work on all POSIX platforms Mike Hommey (1): win32: fix building with NO_UNIX_SOCKETS Orgad Shaneh (1): git-gui: fix inability to quit after closing another instance Patrick Steinhardt (262): refs/reftable: fix D/F conflict error message on ref copy refs/reftable: perform explicit D/F check when writing symrefs refs/reftable: skip duplicate name checks reftable: remove name checks refs/reftable: don't recompute committer ident reftable/writer: refactorings for `writer_add_record()` reftable/writer: refactorings for `writer_flush_nonempty_block()` reftable/writer: unify releasing memory reftable/writer: reset `last_key` instead of releasing it reftable/block: reuse zstream when writing log blocks reftable/block: reuse compressed array ci: rename "runs_on_pool" to "distro" ci: expose distro name in dockerized GitHub jobs ci: skip sudo when we are already root ci: drop duplicate package installation for "linux-gcc-default" ci: convert "install-dependencies.sh" to use "/bin/sh" ci: merge custom PATH directories ci: fix setup of custom path for GitLab CI ci: merge scripts which install dependencies ci: make Perforce binaries executable for all users ci: install JGit dependency t06xx: always execute backend-specific tests t0610: fix non-portable variable assignment t0612: add tests to exercise Git/JGit reftable compatibility t/helper: stop using `the_index` builtin: stop using `the_index` repository: initialize index in `repo_init()` builtin/clone: stop using `the_index` repository: drop `the_index` variable repository: drop `initialize_the_repository()` config: clarify memory ownership when preparing comment strings builtin/config: move option array around builtin/config: move "fixed-value" option to correct group builtin/config: use `OPT_CMDMODE()` to specify modes builtin/config: pull out function to handle config location builtin/config: pull out function to handle `--null` builtin/config: introduce "list" subcommand builtin/config: introduce "get" subcommand builtin/config: introduce "set" subcommand builtin/config: introduce "unset" subcommand builtin/config: introduce "rename-section" subcommand builtin/config: introduce "remove-section" subcommand builtin/config: introduce "edit" subcommand builtin/config: display subcommand help gitlab-ci: add smoke test for fuzzers ci: fix Python dependency on Ubuntu 24.04 path: harden validation of HEAD with non-standard hashes path: move `validate_headref()` to its only user parse-options-cb: only abbreviate hashes when hash algo is known attr: don't recompute default attribute source attr: fix BUG() when parsing attrs outside of repo remote-curl: fix parsing of detached SHA256 heads builtin/rev-parse: allow shortening to more than 40 hex characters builtin/blame: don't access potentially unitialized `the_hash_algo` builtin/bundle: abort "verify" early when there is no repository builtin/diff: explicitly set hash algo when there is no repo builtin/shortlog: don't set up revisions without repo oss-fuzz/commit-graph: set up hash algorithm repository: stop setting SHA1 as the default object hash refs: introduce missing functions that accept a `struct ref_store` refs: add `exclude_patterns` parameter to `for_each_fullref_in()` cocci: introduce rules to transform "refs" to pass ref store cocci: apply rules to rewrite callers of "refs" interfaces refs: remove functions without ref store gitlab-ci: fix installing dependencies for fuzz smoke tests reftable: consistently refer to `reftable_write_options` as `opts` reftable: pass opts as constant pointer reftable/writer: drop static variable used to initialize strbuf reftable/writer: improve error when passed an invalid block size reftable/dump: support dumping a table's block structure refs/reftable: allow configuring block size reftable: use `uint16_t` to track restart interval refs/reftable: allow configuring restart interval refs/reftable: allow disabling writing the object index reftable: make the compaction factor configurable refs/reftable: allow configuring geometric factor reftable/block: use `size_t` to track restart point index reftable/reader: avoid copying index iterator reftable/reader: unify indexed and linear seeking reftable/reader: separate concerns of table iter and reftable reader reftable/reader: inline `reader_seek_internal()` reftable/reader: set up the reader when initializing table iterator reftable/merged: split up initialization and seeking of records reftable/merged: simplify indices for subiterators reftable/generic: move seeking of records into the iterator reftable/generic: adapt interface to allow reuse of iterators reftable/reader: adapt interface to allow reuse of iterators reftable/stack: provide convenience functions to create iterators reftable/merged: adapt interface to allow reuse of iterators builtin/config: stop printing full usage on misuse builtin/config: move legacy mode into its own function builtin/config: move subcommand options into `cmd_config()` builtin/config: move legacy options into `cmd_config()` builtin/config: move actions into `cmd_config_actions()` builtin/config: check for writeability after source is set up config: make the config source const builtin/config: refactor functions to have common exit paths builtin/config: move location options into local variables builtin/config: move display options into local variables builtin/config: move type options into display options builtin/config: move default value into display options builtin/config: move `respect_includes_opt` into location options builtin/config: convert `do_not_match` to a local variable builtin/config: convert `value_pattern` to a local variable builtin/config: convert `regexp` to a local variable builtin/config: convert `key_regexp` to a local variable builtin/config: convert `key` to a local variable builtin/config: track "fixed value" option via flags only builtin/config: convert flags to a local variable builtin/config: pass data between callbacks via local variables Documentation/glossary: redefine pseudorefs as special refs Documentation/glossary: clarify limitations of pseudorefs Documentation/glossary: define root refs as refs refs: rename `is_pseudoref()` to `is_root_ref()` refs: rename `is_special_ref()` to `is_pseudo_ref()` refs: do not check ref existence in `is_root_ref()` refs: classify HEAD as a root ref refs: pseudorefs are no refs ref-filter: properly distinuish pseudo and root refs refs: refuse to write pseudorefs completion: adapt git-config(1) to complete subcommands refs: adjust names for `init` and `init_db` callbacks refs: rename `init_db` callback to avoid confusion refs: implement releasing ref storages refs: track ref stores via strmap refs: pass repo when retrieving submodule ref store refs: refactor `resolve_gitlink_ref()` to accept a repository refs: retrieve worktree ref stores via associated repository refs: convert iteration over replace refs to accept ref store refs: pass ref store when detecting dangling symrefs refs: move object peeling into "object.c" refs: pass repo when peeling objects refs: drop `git_default_branch_name()` refs: remove `dwim_log()` refs/files: use correct repository refs/files: remove references to `the_hash_algo` refs/packed: remove references to `the_hash_algo` builtin/patch-id: fix uninitialized hash function builtin/hash-object: fix uninitialized hash function setup: fix bug with "includeIf.onbranch" when initializing dir ci: add missing dependency for TTY prereq transport-helper: fix leaking helper name t: mark a bunch of tests as leak-free strbuf: fix leak when `appendwholeline()` fails with EOF checkout: clarify memory ownership in `unique_tracking_name()` http: refactor code to clarify memory ownership config: clarify memory ownership in `git_config_pathname()` diff: refactor code to clarify memory ownership of prefixes convert: refactor code to clarify ownership of check_roundtrip_encoding builtin/log: stop using globals for log config builtin/log: stop using globals for format config config: clarify memory ownership in `git_config_string()` config: plug various memory leaks builtin/credential: clear credential before exit commit-reach: fix memory leak in `ahead_behind()` submodule: fix leaking memory for submodule entries strvec: add functions to replace and remove strings builtin/mv: refactor `add_slash()` to always return allocated strings builtin/mv duplicate string list memory builtin/mv: refactor to use `struct strvec` builtin/mv: fix leaks for submodule gitfile paths Makefile: extract script to lint missing/extraneous manpages Documentation/lint-manpages: bubble up errors gitlab-ci: add job to run `make check-docs` ci/test-documentation: work around SyntaxWarning in Python 3.12 setup: unset ref storage when reinitializing repository version refs: convert ref storage format to an enum refs: pass storage format to `ref_store_init()` explicitly refs: allow to skip creation of reflog entries refs/files: refactor `add_pseudoref_and_head_entries()` refs/files: extract function to iterate through root refs refs/files: fix NULL pointer deref when releasing ref store reftable: inline `merged_table_release()` worktree: don't store main worktree twice refs: implement removal of ref storages refs: implement logic to migrate between ref storage formats builtin/refs: new command to migrate ref storage formats ci: fix check for Ubuntu 20.04 global: improve const correctness when assigning string constants global: convert intentionally-leaking config strings to consts refs/reftable: stop micro-optimizing refname allocations on copy reftable: cast away constness when assigning constants to records refspec: remove global tag refspec structure builtin/remote: cast away constness in `get_head_names()` diff: cast string constant in `fill_textconv()` line-log: stop assigning string constant to file parent buffer line-log: always allocate the output prefix entry: refactor how we remove items for delayed checkouts ident: add casts for fallback name and GECOS object-file: mark cached object buffers as const object-file: make `buf` parameter of `index_mem()` a constant pretty: add casts for decoration option pointers compat/win32: fix const-correctness with string constants http: do not assign string constant to non-const field parse-options: cast long name for OPTION_ALIAS send-pack: always allocate receive status remote-curl: avoid assigning string constant to non-const variable revision: always store allocated strings in output encoding mailmap: always store allocated strings in mailmap blob imap-send: drop global `imap_server_conf` variable imap-send: fix leaking memory in `imap_server_conf` builtin/rebase: do not assign default backend to non-constant field builtin/rebase: always store allocated string in `options.strategy` builtin/merge: always store allocated strings in `pull_twohead` config.mak.dev: enable `-Wwrite-strings` warning revision: fix memory leak when reversing revisions parse-options: fix leaks for users of OPT_FILENAME notes-utils: free note trees when releasing copied notes bundle: plug leaks in `create_bundle()` biultin/rev-parse: fix memory leaks in `--parseopt` mode merge-recursive: fix leaking rename conflict info revision: fix leaking display notes notes: fix memory leak when pruning notes builtin/rev-list: fix leaking bitmap index when calculating disk usage object-name: free leaking object contexts builtin/difftool: plug memory leaks in `run_dir_diff()` builtin/merge-recursive: fix leaking object ID bases merge-recursive: fix memory leak when finalizing merge builtin/log: fix leaking commit list in git-cherry(1) revision: free diff options builtin/stash: fix leak in `show_stash()` rerere: fix various trivial leaks config: fix leaking "core.notesref" variable commit: fix leaking parents when calling `commit_tree_extended()` sequencer: fix leaking string buffer in `commit_staged_changes()` apply: fix leaking string in `match_fragment()` builtin/clone: plug leaking HEAD ref in `wanted_peer_refs()` sequencer: fix memory leaks in `make_script_with_merges()` builtin/merge: fix leaking `struct cmdnames` in `get_strategy()` merge: fix leaking merge bases line-range: plug leaking find functions blame: fix leaking data for blame scoreboards builtin/blame: fix leaking prefixed paths builtin/blame: fix leaking ignore revs files Makefile: add ability to append to CFLAGS and LDFLAGS config: fix segfault when parsing "core.abbrev" without repo parse-options-cb: stop clamping "--abbrev=" to hash length object-name: don't try to abbreviate to lengths greater than hexsz docs: introduce document to announce breaking changes BreakingChanges: document upcoming change from "sha1" to "sha256" BreakingChanges: document removal of grafting BreakingChanges: document that we do not plan to deprecate git-checkout hash: drop (mostly) unused `is_empty_{blob,tree}_sha1()` functions hash: require hash algorithm in `hasheq()`, `hashcmp()` and `hashclr()` hash: require hash algorithm in `oidread()` and `oidclr()` global: ensure that object IDs are always padded hash: convert `oidcmp()` and `oideq()` to compare whole hash hash: make `is_null_oid()` independent of `the_repository` hash: require hash algorithm in `is_empty_{blob,tree}_oid()` hash: require hash algorithm in `empty_tree_oid_hex()` global: introduce `USE_THE_REPOSITORY_VARIABLE` macro refs: avoid include cycle with "repository.h" hash-ll: merge with "hash.h" http-fetch: don't crash when parsing packfile without a repo oidset: pass hash algorithm when parsing file protocol-caps: use hash algorithm from passed-in repository replace-object: use hash algorithm from passed-in repository compat/fsmonitor: fix socket path in networked SHA256 repos t/helper: use correct object hash in partial-clone helper t/helper: fix segfault in "oid-array" command without repository t/helper: remove dependency on `the_repository` in "proc-receive" hex: guard declarations with `USE_THE_REPOSITORY_VARIABLE` Peter Krefting (1): git-gui: sv.po: Update Swedish translation (576t0f0u) Phillip Wood (7): sequencer: always free "struct replay_opts" sequencer: start removing private fields from public API sequencer: move current fixups to private context sequencer: store commit message in private context rebase -m: fix --signoff with conflicts rebase -i: pass struct replay_opts to parse_insn_line() rebase -i: improve error message when picking merge Randall S. Becker (3): version: --build-options reports OpenSSL version information version: teach --build-options to reports libcurl version information version: teach --build-options to reports zlib version information René Scharfe (10): diff-lib: stop calling diff_setup_done() in do_diff_cache() diff: report unmerged paths as changes in run_diff_cmd() diff: fix --exit-code with external diff difftool: add env vars directly in run_file_diff() t4020: test exit code with external diffs userdiff: add and use struct external_diff diff: let external diffs report that changes are uninteresting commit: remove find_header_mem() diff: allow --color-moved with --no-ext-diff submodule--helper: use strvec_pushf() for --super-prefix Roland Hieber (3): completion: add 'symbolic-ref' completion: improve docs for using __git_complete completion: add docs on how to add subcommand completions Rubén Justo (5): add-patch: do not show UI messages on stderr add-patch: response to unknown command t4014: cleanups in a few tests format-patch: assume --cover-letter for diff in multi-patch series pager: die when paging to non-existing command Shane Sun (1): doc: fix case error of eol attribute in example Taylor Blau (62): attr.c: move ATTR_MAX_FILE_SIZE check into read_attr_from_buf() Makefile(s): avoid recipe prefix in conditional statements object.h: add flags allocated by pack-bitmap.h pack-bitmap-write.c: move commit_positions into commit_pos fields pack-bitmap: avoid use of static `bitmap_writer` pack-bitmap: drop unused `max_bitmaps` parameter pack-bitmap-write.c: avoid uninitialized 'write_as' field pack-bitmap: introduce `bitmap_writer_free()` Documentation/gitpacking.txt: initial commit Documentation/gitpacking.txt: describe pseudo-merge bitmaps Documentation/technical: describe pseudo-merge bitmaps format ewah: implement `ewah_bitmap_is_subset()` pack-bitmap: move some initialization to `bitmap_writer_init()` pseudo-merge.ch: initial commit pack-bitmap-write: support storing pseudo-merge commits pack-bitmap: implement `bitmap_writer_has_bitmapped_object_id()` pack-bitmap: make `bitmap_writer_push_bitmapped_commit()` public config: introduce `git_config_double()` pseudo-merge: implement support for selecting pseudo-merge commits pack-bitmap-write.c: write pseudo-merge table pack-bitmap: extract `read_bitmap()` function pseudo-merge: scaffolding for reads pack-bitmap.c: read pseudo-merge extension pseudo-merge: implement support for reading pseudo-merge commits ewah: implement `ewah_bitmap_popcount()` pack-bitmap: implement test helpers for pseudo-merge t/test-lib-functions.sh: support `--notick` in `test_commit_bulk()` pack-bitmap.c: use pseudo-merges during traversal pack-bitmap: extra trace2 information ewah: `bitmap_equals_ewah()` pseudo-merge: implement support for finding existing merges t/perf: implement performance tests for pseudo-merge bitmaps midx-write.c: tolerate `--preferred-pack` without bitmaps midx-write.c: reduce argument count for `get_sorted_entries()` midx-write.c: pass `start_pack` to `compute_sorted_entries()` midx-write.c: extract `should_include_pack()` midx-write.c: extract `fill_packs_from_midx()` midx-write.c: support reading an existing MIDX with `packs_to_include` midx: replace `get_midx_rev_filename()` with a generic helper pack-bitmap.c: reimplement `midx_bitmap_filename()` with helper commit-graph.c: remove temporary graph layers on exit server-info.c: remove temporary info files on exit midx-write.c: do not read existing MIDX with `packs_to_include` pack-bitmap.c: avoid uninitialized `pack_int_id` during reuse pack-revindex.c: guard against out-of-bounds pack lookups Documentation/technical/bitmap-format.txt: add missing position table pack-bitmap.c: ensure pseudo-merge offset reads are bounded t/t4216-log-bloom.sh: harden `test_bloom_filters_not_used()` revision.c: consult Bloom filters for root commits commit-graph: ensure Bloom filters are read with consistent settings t/helper/test-read-graph.c: extract `dump_graph_info()` bloom.h: make `load_bloom_filter_from_graph()` public t/helper/test-read-graph: implement `bloom-filters` mode t4216: test changed path filters with high bit paths repo-settings: introduce commitgraph.changedPathsVersion bloom: annotate filters with hash version bloom: prepare to discard incompatible Bloom filters commit-graph: unconditionally load Bloom filters commit-graph: new Bloom filter version that fixes murmur3 object.h: fix mis-aligned flag bits table commit-graph: reuse existing Bloom filters where possible bloom: introduce `deinit_bloom_filters()` Tom Hughes (2): push: don't fetch commit object when checking existence promisor-remote: add promisor.quiet configuration option Torsten Bögershausen (1): macOS: ls-files path fails if path of workdir is NFD Victoria Dye (1): Documentation/git-merge-tree.txt: document -X Xing Xin (4): midx: disable replace objects bundle-uri: verify oid before writing refs fetch-pack: expose fsckObjects configuration logic unbundle: extend object verification for fetches brian m. carlson (19): credential: add an authtype field remote-curl: reset headers on new request http: use new headers for each object request credential: add a field for pre-encoded credentials credential: gate new fields on capability credential: add a field called "ephemeral" docs: indicate new credential protocol fields http: add support for authtype and credential credential: add an argument to keep state credential: enable state capability docs: set a limit on credential line length t5563: refactor for multi-stage authentication credential: add support for multistage credential rounds t: add credential tests for authtype credential-cache: implement authtype capability credential: add method for querying capabilities t4046: avoid continue in &&-chain for zsh vimdiff: make script and tests work with zsh git-gui: po: fix typo in French "aperçu" Øystein Walle (1): Documentation: Mention that refspecs are explained elsewhere Version v2.45.2; changes since v2.45.1: --------------------------------------- Jeff King (5): send-email: drop FakeTerm hack send-email: avoid creating more than one Term::ReadLine object ci: drop mention of BREW_INSTALL_PACKAGES variable ci: avoid bare "gcc" for osx-gcc job ci: stop installing "gcc-13" for osx-gcc Johannes Schindelin (6): hook: plug a new memory leak init: use the correct path of the templates directory again Revert "core.hooksPath: add some protection while cloning" tests: verify that `clone -c core.hooksPath=/dev/null` works again clone: drop the protections where hooks aren't run Revert "Add a helper function to compare file contents" Junio C Hamano (2): Revert "fsck: warn about symlink pointing inside a gitdir" Git 2.39.5 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.2: ------------------------------------------- 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=