* [ANNOUNCE] Git v2.45.0-rc0
@ 2024-04-19 17:14 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-04-19 17:14 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.45.0-rc0 is now available for
testing at the usual places. It is comprised of 481 non-merge
commits since v2.44.0, contributed by 77 people, 32 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.45.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.44.0 are as follows.
Welcome to the Git development community!
Ahelenia Ziemiańska, Angelo Dureghello, Aryan Gupta, Benjamin
Flesch, Bo Anderson, Brian C Tracy, Brian Lyles, Bruno Haible,
Chuck Lever, Dario Gjorgjevski, Dirk Gouders, Eugenio Gigante,
Florian Schmidt, Haritha D, Harmen Stoppels, Jean-Rémy Falleri,
Jiamu Sun, Jonas Wunderlich, Jonathan Davies, Julio Bacellari,
Kipras Melnikovas, Matthew Rollings, Max Gautier, mirth hickford,
Paweł Dominiak, Pi Fisher, Ralph Seichter, Richard Macklin,
shejialuo, Steven Jeuris, Tiago Pascoal, and Vincenzo Mezzela.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Shopov, Beat Bolli, brian m. carlson, Chandra Pratap,
Christian Couder, Derrick Stolee, Dragan Simic, Elijah Newren,
Eric Sunshine, Eric W. Biederman, Ghanshyam Thakkar, Han Young,
Jakub Wilk, Jean-Noël Avila, Jeff Hostetler, Jeff King,
Johannes Schindelin, Johannes Sixt, John Cai, Josh Steadmon,
Josh Triplett, Junio C Hamano, Justin Tobler, Karthik Nayak,
Kristoffer Haugsbakk, Kyle Lippincott, Kyle Meyer, Linus Arver,
Manlio Perillo, Matthias Aßhauer, M Hickford, Michael Lohmann,
Michael Osipov, Mike Hommey, Patrick Steinhardt, Peter Hutterer,
Philippe Blain, Phillip Wood, René Scharfe, Rubén Justo,
Sergey Organov, SZEDER Gábor, Taylor Blau, Ville Skyttä,
and Yasushi SHOJI.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.45 Release Notes (draft)
===============================
Backward Compatibility Notes
UI, Workflows & Features
* Integrate the reftable code into the refs framework as a backend.
With "git init --ref-format=reftable", hopefully it would be a lot
more efficient to manage a repository with many references.
* "git checkout -p" and friends learned that that "@" is a synonym
for "HEAD".
* Variants of vimdiff learned to honor mergetool.<variant>.layout
settings.
* "git reflog" learned a "list" subcommand that enumerates known reflogs.
* When a merge conflicted at a submodule, merge-ort backend used to
unconditionally give a lengthy message to suggest how to resolve
it. Now the message can be squelched as an advice message.
* "git for-each-ref" learned "--include-root-refs" option to show
even the stuff outside the 'refs/' hierarchy.
* "git rev-list --missing=print" has learned to optionally take
"--allow-missing-tips", which allows the objects at the starting
points to be missing.
* "git merge-tree" has learned that the three trees involved in the
3-way merge only need to be trees, not necessarily commits.
* "git log --merge" learned to pay attention to CHERRY_PICK_HEAD and
other kinds of *_HEAD pseudorefs.
* Platform specific tweaks for OS/390 has been added to
config.mak.uname.
* Users with safe.bareRepository=explicit can still work from within
$GIT_DIR of a seconary worktree (which resides at .git/worktrees/$name/)
of the primary worktree without explicitly specifying the $GIT_DIR
environment variable or the --git-dir=<path> option.
* The output format for dates "iso-strict" has been tweaked to show
a time in the Zulu timezone with "Z" suffix, instead of "+00:00".
* "git diff" and friends learned two extra configuration variables,
diff.srcPrefix and diff.dstPrefix.
* The status.showUntrackedFiles configuration variable had a name
that tempts users to set a Boolean value expressed in our usual
"false", "off", and "0", but it only took "no". This has been
corrected so "true" and its synonyms are taken as "normal", while
"false" and its synonyms are taken as "no".
* Remove an ancient and not well maintained Hg-to-git migration
script from contrib/.
* Hints that suggest what to do after resolving conflicts can now be
squelched by disabling advice.mergeConflict.
* Allow git-cherry-pick(1) to automatically drop redundant commits via
a new `--empty` option, similar to the `--empty` options for
git-rebase(1) and git-am(1). Includes a soft deprecation of
`--keep-redundant-commits` as well as some related docs changes and
sequencer code cleanup.
* "git config" learned "--comment=<message>" option to leave a
comment immediately after the "variable = value" on the same line
in the configuration file.
* core.commentChar used to be limited to a single byte, but has been
updated to allow an arbitrary multi-byte sequence.
* "git add -p" and other "interactive hunk selection" UI has learned to
skip showing the hunk immediately after it has already been shown, and
an additional action to explicitly ask to reshow the current hunk.
* "git pack-refs" learned the "--auto" option, which is a useful
addition to be triggered from "git gc --auto".
* "git add -u <pathspec>" and "git commit [-i] <pathspec>" did not
diagnose a pathspec element that did not match any files in certain
situations, unlike "git add <pathspec>" did.
* The userdiff patterns for C# has been updated.
Performance, Internal Implementation, Development Support etc.
* The code to iterate over refs with the reftable backend has seen
some optimization.
* More tests that are marked as "ref-files only" have been updated to
improve test coverage of reftable backend.
* Some parts of command line completion script (in contrib/) have
been micro-optimized.
* The way placeholders are to be marked-up in documentation have been
specified; use "_<placeholder>_" to typeset the word inside a pair
of <angle-brakets> emphasized.
* "git --no-lazy-fetch cmd" allows to run "cmd" while disabling lazy
fetching of objects from the promisor remote, which may be handy
for debugging.
* The implementation in "git clean" that makes "-n" and "-i" ignore
clean.requireForce has been simplified, together with the
documentation.
* The code to iterate over refs with the reftable backend has seen
some optimization.
* Uses of xwrite() helper have been audited and updated for better
error checking and simpler code.
* Some trace2 events that lacked def_param have learned to show it,
enriching the output.
* The parse-options code that deals with abbreviated long option
names have been cleaned up.
* The code in reftable backend that creates new table files works
better with the tempfile framework to avoid leaving cruft after a
failure.
* The reftable code has its own custom binary search function whose
comparison callback has an unusual interface, which caused the
binary search to degenerate into a linear search, which has been
corrected.
* The code to iterate over reflogs in the reftable has been optimized
to reduce memory allocation and deallocation.
* Work to support a repository that work with both SHA-1 and SHA-256
hash algorithms has started.
* A new fuzz target that exercises config parsing code has been
added.
* Fix the way recently added tests interpolate variables defined
outside them, and document the best practice to help future
developers.
* Introduce an experimental protocol for contributors to propose the
topic description to be used in the "What's cooking" report, the
merge commit message for the topic, and in the release notes and
document it in the SubmittingPatches document.
* The t/README file now gives a hint on running individual tests in
the "t/" directory with "make t<num>-*.sh t<num>-*.sh".
(merge 8d383806fc pb/test-scripts-are-build-targets later to maint).
* The "hint:" messages given by the advice mechanism, when given a
message with a blank line, left a line with trailing whitespace,
which has been cleansed.
* Documentation rules has been explicitly described how to mark-up
literal parts and a few manual pages have been updated as examples.
* The .editorconfig file has been taught that a Makefile uses HT
indentation.
* t-prio-queue test has been cleaned up by using C99 compound
literals; this is meant to also serve as a weather-balloon to smoke
out folks with compilers who have trouble compiling code that uses
the feature.
* Windows binary used to decide the use of unix-domain socket at
build time, but it learned to make the decision at runtime instead.
* The "shared repository" test in the t0610 reftable test failed
under restrictive umask setting (e.g. 007), which has been
corrected.
* Document and apply workaround for a buggy version of dash that
mishandles "local var=val" construct.
* The codepaths that reach date_mode_from_type() have been updated to
pass "struct date_mode" by value to make them thread safe.
* The strategy to compact multiple tables of reftables after many
operations accumulate many entries has been improved to avoid
accumulating too many tables uncollected.
Fixes since v2.44
-----------------
* "git apply" on a filesystem without filemode support have learned
to take a hint from what is in the index for the path, even when
not working with the "--index" or "--cached" option, when checking
the executable bit match what is required by the preimage in the
patch.
(merge 45b625142d cp/apply-core-filemode later to maint).
* "git column" has been taught to reject negative padding value, as
it would lead to nonsense behaviour including division by zero.
(merge 76fb807faa kh/column-reject-negative-padding later to maint).
* "git am --help" now tells readers what actions are available in
"git am --whitespace=<action>", in addition to saying that the
option is passed through to the underlying "git apply".
(merge a171dac734 jc/am-whitespace-doc later to maint).
* "git tag --column" failed to check the exit status of its "git
column" invocation, which has been corrected.
(merge 92e66478fc rj/tag-column-fix later to maint).
* Credential helper based on libsecret (in contrib/) has been updated
to handle an empty password correctly.
(merge 8f1f2023b7 mh/libsecret-empty-password-fix later to maint).
* "git difftool --dir-diff" learned to honor the "--trust-exit-code"
option; it used to always exit with 0 and signalled success.
(merge eb84c8b6ce ps/difftool-dir-diff-exit-code later to maint).
* The code incorrectly attempted to use textconv cache when asked,
even when we are not running in a repository, which has been
corrected.
(merge affe355fe7 jk/textconv-cache-outside-repo-fix later to maint).
* Remove an empty file that shouldn't have been added in the first
place.
(merge 4f66942215 js/remove-cruft-files later to maint).
* The logic to access reflog entries by date and number had ugly
corner cases at the boundaries, which have been cleaned up.
(merge 5edd126720 jk/reflog-special-cases-fix later to maint).
* An error message from "git upload-pack", which responds to "git
fetch" requests, had a trialing NUL in it, which has been
corrected.
(merge 3f4c7a0805 sg/upload-pack-error-message-fix later to maint).
* Clarify wording in the CodingGuidelines that requires <git-compat-util.h>
to be the first header file.
(merge 4e89f0e07c jc/doc-compat-util later to maint).
* "git commit -v --cleanup=scissors" used to add the scissors line
twice in the log message buffer, which has been corrected.
(merge e90cc075cc jt/commit-redundant-scissors-fix later to maint).
* A custom remote helper no longer cannot access the newly created
repository during "git clone", which is a regression in Git 2.44.
This has been corrected.
(merge 199f44cb2e ps/remote-helper-repo-initialization-fix later to maint).
* Various parts of upload-pack has been updated to bound the resource
consumption relative to the size of the repository to protect from
abusive clients.
(merge 6cd05e768b jk/upload-pack-bounded-resources later to maint).
* The upload-pack program, when talking over v2, accepted the
packfile-uris protocol extension from the client, even if it did
not advertise the capability, which has been corrected.
(merge a922bfa3b5 jk/upload-pack-v2-capability-cleanup later to maint).
* Make sure failure return from merge_bases_many() is properly caught.
(merge 25fd20eb44 js/merge-base-with-missing-commit later to maint).
* FSMonitor client code was confused when FSEvents were given in a
different case on a case-insensitive filesystem, which has been
corrected.
(merge 29c139ce78 jh/fsmonitor-icase-corner-case-fix later to maint).
* The "core.commentChar" configuration variable only allows an ASCII
character, which was not clearly documented, which has been
corrected.
(merge fb7c556f58 kh/doc-commentchar-is-a-byte later to maint).
* With release 2.44 we got rid of all uses of test_i18ngrep and there
is no in-flight topic that adds a new use of it. Make a call to
test_i18ngrep a hard failure, so that we can remove it at the end
of this release cycle.
(merge 381a83dfa3 jc/test-i18ngrep later to maint).
* The command line completion script (in contrib/) learned to
complete "git reflog" better.
(merge 1284f9cc11 rj/complete-reflog later to maint).
* The logic to complete the command line arguments to "git worktree"
subcommand (in contrib/) has been updated to correctly honor things
like "git -C dir" etc.
(merge 3574816d98 rj/complete-worktree-paths-fix later to maint).
* When git refuses to create a branch because the proposed branch
name is not a valid refname, an advice message is given to refer
the user to exact naming rules.
(merge 8fbd903e58 kh/branch-ref-syntax-advice later to maint).
* Code simplification by getting rid of code that sets an environment
variable that is no longer used.
(merge 72a8d3f027 pw/rebase-i-ignore-cherry-pick-help-environment later to maint).
* The code to find the effective end of log message can fall into an
endless loop, which has been corrected.
(merge 2541cba2d6 fs/find-end-of-log-message-fix later to maint).
* Mark-ups used in the documentation has been improved for
consistency.
(merge 45d5ed3e50 ja/doc-markup-fixes later to maint).
* The status.showUntrackedFiles configuration variable was
incorrectly documented to accept "false", which has been corrected.
* Leaks from "git restore" have been plugged.
(merge 2f64da0790 rj/restore-plug-leaks later to maint).
* "git bugreport --no-suffix" was not supported and instead
segfaulted, which has been corrected.
(merge b3b57c69da js/bugreport-no-suffix-fix later to maint).
* The documentation for "%(trailers[:options])" placeholder in the
"--pretty" option of commands in the "git log" family has been
updated.
(merge bff85a338c bl/doc-key-val-sep-fix later to maint).
* "git checkout --conflict=bad" reported a bad conflictStyle as if it
were given to a configuration variable; it has been corrected to
report that the command line option is bad.
(merge 5a99c1ac1a pw/checkout-conflict-errorfix later to maint).
* Code clean-up in the "git log" machinery that implements custom log
message formatting.
(merge 1c10b8e5b0 jk/pretty-subject-cleanup later to maint).
* "git config" corrupted literal HT characters written in the
configuration file as part of a value, which has been corrected.
(merge e6895c3f97 ds/config-internal-whitespace-fix later to maint).
* A unit test for reftable code tried to enumerate all files in a
directory after reftable operations and expected to see nothing but
the files it wanted to leave there, but was fooled by .nfs* cruft
files left, which has been corrected.
(merge 0068aa7946 ps/reftable-unit-test-nfs-workaround later to maint).
* The implementation and documentation of "object-format" option
exchange between the Git itself and its remote helpers did not
quite match, which has been corrected.
* The "--pretty=<shortHand>" option of the commands in the "git log"
family, defined as "[pretty] shortHand = <expansion>" should have
been looked up case insensitively, but was not, which has been
corrected.
(merge f999d5188b bl/pretty-shorthand-config-fix later to maint).
* "git apply" failed to extract the filename the patch applied to,
when the change was about an empty file created in or deleted from
a directory whose name ends with a SP, which has been corrected.
(merge 776ffd1a30 jc/apply-parse-diff-git-header-names-fix later to maint).
* Update a more recent tutorial doc.
(merge 95ab557b4b dg/myfirstobjectwalk-updates later to maint).
* The test script had an incomplete and ineffective attempt to avoid
clobbering the testing user's real crontab (and its equivalents),
which has been completed.
(merge 73cb87773b es/test-cron-safety later to maint).
* Use advice_if_enabled() API to rewrite a simple pattern to
call advise() after checking advice_enabled().
(merge 6412d01527 rj/use-adv-if-enabled later to maint).
* Another "set -u" fix for the bash prompt (in contrib/) script.
(merge d7805bc743 vs/complete-with-set-u-fix later to maint).
* "git checkout/switch --detach foo", after switching to the detached
HEAD state, gave the tracking information for the 'foo' branch,
which was pointless.
* "git apply" has been updated to lift the hardcoded pathname length
limit, which in turn allowed a mksnpath() function that is no
longer used.
(merge 708f7e0590 rs/apply-lift-path-length-limit later to maint).
* A file descriptor leak in an error codepath, used when "git apply
--reject" fails to create the *.rej file, has been corrected.
(merge 2b1f456adf rs/apply-reject-fd-leakfix later to maint).
* A config parser callback function fell through instead of returning
after recognising and processing a variable, wasting cycles, which
has been corrected.
(merge a816ccd642 ds/fetch-config-parse-microfix later to maint).
* Fix was added to work around a regression in libcURL 8.7.0 (which has
already been fixed in their tip of the tree).
(merge 92a209bf24 jk/libcurl-8.7-regression-workaround later to maint).
* The variable that holds the value read from the core.excludefile
configuration variable used to leak, which has been corrected.
(merge 0e0fefb29f jc/unleak-core-excludesfile later to maint).
* vreportf(), which is usede by error() and friends, has been taught
to give the error message printf-format string when its vsnprintf()
call fails, instead of showing nothing useful to identify the
nature of the error.
(merge c63adab961 rs/usage-fallback-to-show-message-format later to maint).
* Adjust to an upcoming changes to GNU make that breaks our Makefiles.
(merge 227b8fd902 tb/make-indent-conditional-with-non-spaces later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f0e578c69c rs/use-xstrncmpz later to maint).
(merge 83e6eb7d7a ba/credential-test-clean-fix later to maint).
(merge 64562d784d jb/doc-interactive-singlekey-do-not-need-perl later to maint).
(merge c431a235e2 cp/t9146-use-test-path-helpers later to maint).
(merge 82d75402d5 ds/doc-send-email-capitalization later to maint).
(merge 41bff66e35 jc/doc-add-placeholder-fix later to maint).
(merge 6835f0efe9 jw/remote-doc-typofix later to maint).
(merge 244001aa20 hs/rebase-not-in-progress later to maint).
(merge 2ca6c07db2 jc/no-include-of-compat-util-from-headers later to maint).
(merge 87bd7fbb9c rs/fetch-simplify-with-starts-with later to maint).
(merge f39addd0d9 rs/name-rev-with-mempool later to maint).
(merge 9a97b43e03 rs/submodule-prefix-simplify later to maint).
(merge 40b8076462 ak/rebase-autosquash later to maint).
(merge 3223204456 eg/add-uflags later to maint).
(merge 5f78d52dce es/config-doc-sort-sections later to maint).
(merge 781fb7b4c2 as/option-names-in-messages later to maint).
(merge 51d41dc243 jk/doc-remote-helpers-markup-fix later to maint).
(merge e1aaf309db pb/ci-win-artifact-names-fix later to maint).
(merge ad538c61da jc/index-pack-fsck-levels later to maint).
(merge 67471bc704 ja/doc-formatting-fix later to maint).
(merge 86f9ce7dd6 bl/doc-config-fixes later to maint).
(merge 0d527842b7 az/grep-group-error-message-update later to maint).
(merge 7c43bdf07b rs/strbuf-expand-bad-format later to maint).
(merge 8b68b48d5c ds/typofix-core-config-doc later to maint).
(merge 39bb692152 rs/imap-send-use-xsnprintf later to maint).
(merge 8d320cec60 jc/t2104-style-fixes later to maint).
(merge b4454d5a7b pw/t3428-cleanup later to maint).
(merge 84a7c33a4b pf/commitish-committish later to maint).
(merge 8882ee9d68 la/mailmap-entry later to maint).
----------------------------------------------------------------
Changes since v2.44.0 are as follows:
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 <algo>" 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=<action>"
doc: apply the new placeholder rules to git-add documentation
compat: drop inclusion of <git-compat-util.h>
Start the 2.45 cycle
git: document GIT_NO_REPLACE_OBJECTS environment variable
doc: clarify the wording on <git-compat-util.h> 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=<style> parsing
checkout: fix interaction between --conflict and --merge
t3428: modernize test setup
t3428: use test_commit_message
t3428: restore coverage for "apply" backend
Pi Fisher (1):
typo: replace 'commitish' with 'committish'
Ralph Seichter (1):
config: add --comment option to add a comment
René Scharfe (28):
use xstrncmpz()
fetch: convert strncmp() with strlen() to starts_with()
mem-pool: add mem_pool_strfmt()
name-rev: use mem_pool_strfmt()
submodule: use strvec_pushf() for --submodule-prefix
t-ctype: allow NUL anywhere in the specification string
t-ctype: simplify EOF check
t-ctype: align output of i
t-ctype: avoid duplicating class names
parse-options: recognize abbreviated negated option with arg
parse-options: set arg of abbreviated option lazily
parse-options: factor out register_abbrev() and struct parsed_option
parse-options: detect ambiguous self-negation
parse-options: normalize arg and long_name before comparison
parse-options: rearrange long_name matching code
t-prio-queue: shorten array index message
t-prio-queue: check result array bounds
factor out strbuf_expand_bad_format()
cat-file: use strbuf_expand_bad_format()
midx: use strvec_pushf() for pack-objects base name
mem-pool: use st_add() in mem_pool_strvfmt()
imap-send: use xsnprintf to format command
t-prio-queue: simplify using compound literals
apply: avoid fixed-size buffer in create_one_file()
path: remove mksnpath()
apply: don't leak fd on fdopen() error
usage: report vsnprintf(3) failure
date: make DATE_MODE thread-safe
Richard Macklin (1):
rebase: fix typo in autosquash documentation
Rubén Justo (13):
tag: error when git-column fails
completion: fix __git_complete_worktree_paths
completion: reflog with implicit "show"
completion: reflog show <log-options>
completion: introduce __git_find_subcommand
completion: factor out __git_resolve_builtins
completion: reflog subcommands and options
checkout: plug some leaks in git-restore
add-patch: introduce 'p' in interactive-patch
add-patch: do not print hunks repeatedly
add: use advise_if_enabled for ADVICE_ADD_IGNORED_FILE
add: use advise_if_enabled for ADVICE_ADD_EMPTY_PATHSPEC
add: use advise_if_enabled for ADVICE_ADD_EMBEDDED_REPO
SZEDER Gábor (1):
upload-pack: don't send null character in abort message to the client
Sergey Organov (1):
clean: improve -n and -f implementation and documentation
Steven Jeuris (1):
userdiff: better method/property matching for C#
Taylor Blau (8):
Documentation/config/pack.txt: fix broken AsciiDoc mark-up
upload-pack: disallow object-info capability by default
midx-write: move writing-related functions from midx.c
midx-write.c: factor out common want_included_pack() routine
midx-write.c: check count of packs to repack after grouping
midx-write.c: use `--stdin-packs` when repacking
t/t7700-repack.sh: fix test breakages with `GIT_TEST_MULTI_PACK_INDEX=1 `
Makefile(s): avoid recipe prefix in conditional statements
Ville Skyttä (2):
completion: fix prompt with unset SHOWCONFLICTSTATE in nounset mode
completion: protect prompt against unset SHOWUPSTREAM in nounset mode
Vincenzo Mezzela (1):
t7301: use test_path_is_(missing|file)
brian m. carlson (7):
loose: add a mapping between SHA-1 and SHA-256 for loose objects
commit: write commits for both hashes
cache: add a function to read an OID of a specific algorithm
object-file-convert: add a function to convert trees between algorithms
object-file-convert: convert tag objects when writing
object-file-convert: convert commit objects when writing
repository: implement extensions.compatObjectFormat
shejialuo (1):
t9117: prefer test_path_* helper functions
^ permalink raw reply [relevance 3%]
* Re: [PATCH 0/7] reftable: memory optimizations for reflog iteration
2024-03-11 19:41 0% ` Josh Steadmon
@ 2024-03-11 23:25 0% ` Patrick Steinhardt
0 siblings, 0 replies; 162+ results
From: Patrick Steinhardt @ 2024-03-11 23:25 UTC (permalink / raw)
To: Josh Steadmon, git
[-- Attachment #1: Type: text/plain, Size: 2317 bytes --]
On Mon, Mar 11, 2024 at 12:41:19PM -0700, Josh Steadmon wrote:
> On 2024.03.05 13:10, Patrick Steinhardt wrote:
> > Hi,
> >
> > this patch series does the same as all the preceding patch series that
> > optimized how the reftable library iterates through refs, but for
> > reflogs instead.
> >
> > The goal of this patch series is to arrive at a constant number of
> > allocations when iterating refs. This is achieved in mostly the same way
> > we did it for ref iteration, namely by reusing already-allocated memory.
> > Overall, this brings us down from 8 allocations per reflog record to
> > essentially 0 allocations per reflog. Iterating through 1 million
> > reflogs with `git reflog list` thus goes down from 8.068m allocations to
> > only around 68.5k.
> >
> > This series is built on top of "master" at b387623c12 (The third batch,
> > 2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at
> > 43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged
> > into it.
> >
> > Patrick
> >
> > Patrick Steinhardt (7):
> > 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
> >
> > refs/reftable-backend.c | 52 +++++----------
> > reftable/block.c | 4 +-
> > reftable/block.h | 2 +
> > reftable/merged_test.c | 11 ++--
> > reftable/readwrite_test.c | 62 +++++++-----------
> > reftable/record.c | 129 ++++++++++++++-----------------------
> > reftable/record.h | 5 +-
> > reftable/record_test.c | 68 ++++++++++---------
> > reftable/reftable-record.h | 6 +-
> > reftable/stack_test.c | 26 ++++----
> > 10 files changed, 154 insertions(+), 211 deletions(-)
> >
> > --
> > 2.44.0
> >
>
> This series looks good to me (with one request that we add a test for
> patch #1 if possible).
>
> Reviewed-by: Josh Steadmon <steadmon@google.com>
Thanks for your review!
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [relevance 0%]
* Re: [PATCH 0/7] reftable: memory optimizations for reflog iteration
2024-03-05 12:10 4% [PATCH 0/7] reftable: memory optimizations for reflog iteration Patrick Steinhardt
@ 2024-03-11 19:41 0% ` Josh Steadmon
2024-03-11 23:25 0% ` Patrick Steinhardt
0 siblings, 1 reply; 162+ results
From: Josh Steadmon @ 2024-03-11 19:41 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: git
On 2024.03.05 13:10, Patrick Steinhardt wrote:
> Hi,
>
> this patch series does the same as all the preceding patch series that
> optimized how the reftable library iterates through refs, but for
> reflogs instead.
>
> The goal of this patch series is to arrive at a constant number of
> allocations when iterating refs. This is achieved in mostly the same way
> we did it for ref iteration, namely by reusing already-allocated memory.
> Overall, this brings us down from 8 allocations per reflog record to
> essentially 0 allocations per reflog. Iterating through 1 million
> reflogs with `git reflog list` thus goes down from 8.068m allocations to
> only around 68.5k.
>
> This series is built on top of "master" at b387623c12 (The third batch,
> 2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at
> 43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged
> into it.
>
> Patrick
>
> Patrick Steinhardt (7):
> 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
>
> refs/reftable-backend.c | 52 +++++----------
> reftable/block.c | 4 +-
> reftable/block.h | 2 +
> reftable/merged_test.c | 11 ++--
> reftable/readwrite_test.c | 62 +++++++-----------
> reftable/record.c | 129 ++++++++++++++-----------------------
> reftable/record.h | 5 +-
> reftable/record_test.c | 68 ++++++++++---------
> reftable/reftable-record.h | 6 +-
> reftable/stack_test.c | 26 ++++----
> 10 files changed, 154 insertions(+), 211 deletions(-)
>
> --
> 2.44.0
>
This series looks good to me (with one request that we add a test for
patch #1 if possible).
Reviewed-by: Josh Steadmon <steadmon@google.com>
^ permalink raw reply [relevance 0%]
* [PATCH 0/7] reftable: memory optimizations for reflog iteration
@ 2024-03-05 12:10 4% Patrick Steinhardt
2024-03-11 19:41 0% ` Josh Steadmon
0 siblings, 1 reply; 162+ results
From: Patrick Steinhardt @ 2024-03-05 12:10 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 1826 bytes --]
Hi,
this patch series does the same as all the preceding patch series that
optimized how the reftable library iterates through refs, but for
reflogs instead.
The goal of this patch series is to arrive at a constant number of
allocations when iterating refs. This is achieved in mostly the same way
we did it for ref iteration, namely by reusing already-allocated memory.
Overall, this brings us down from 8 allocations per reflog record to
essentially 0 allocations per reflog. Iterating through 1 million
reflogs with `git reflog list` thus goes down from 8.068m allocations to
only around 68.5k.
This series is built on top of "master" at b387623c12 (The third batch,
2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at
43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged
into it.
Patrick
Patrick Steinhardt (7):
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
refs/reftable-backend.c | 52 +++++----------
reftable/block.c | 4 +-
reftable/block.h | 2 +
reftable/merged_test.c | 11 ++--
reftable/readwrite_test.c | 62 +++++++-----------
reftable/record.c | 129 ++++++++++++++-----------------------
reftable/record.h | 5 +-
reftable/record_test.c | 68 ++++++++++---------
reftable/reftable-record.h | 6 +-
reftable/stack_test.c | 26 ++++----
10 files changed, 154 insertions(+), 211 deletions(-)
--
2.44.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [relevance 4%]
* [ANNOUNCE] Git v2.44.0
@ 2024-02-23 17:17 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-23 17:17 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.44.0 is now available at the
usual places. It is comprised of 503 non-merge commits since
v2.43.0, contributed by 85 people, 34 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.44.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.43.0 are as follows.
Welcome to the Git development community!
Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin,
Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam
Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang,
Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott,
lumynou5, Maarten van der Schrieck, Marcel Krause, Marcelo
Roberto Jimenez, Michael Lohmann, moti sd, Nikolay Borisov,
Nikolay Edigaryev, Ondrej Pohorelsky, Sam Delmerico, Sergey
Kosukhin, Shreyansh Paliwal, Sören Krecker, Stan Hu, Tamino
Bauknecht, Wilfred Hughes, Willem Verstraeten, Xiaoguang WANG,
and Zach FettersMoore.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Shopov, Andy Koppe, Arkadii Yakovets, Arthur Chan,
Bagas Sanjaya, Calvin Wan, Carlo Marcelo Arenas Belón, Christian
Couder, Dragan Simic, Elijah Newren, Emir SARI, Eric Sunshine,
Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan
Tan, Jordi Mas, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio
C Hamano, Kate Golovanova, Konstantin Ryabitsev, Kristoffer
Haugsbakk, Linus Arver, Matthias Aßhauer, M Hickford, Orgad
Shaneh, Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting,
Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
René Scharfe, Rubén Justo, Simon Ser, SZEDER Gábor, Taylor
Blau, Teng Long, Todd Zullinger, Toon Claes, Vegard Nossum,
Victoria Dye, and Yi-Jyun Pan.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.44 Release Notes
=======================
Backward Compatibility Notes
* "git checkout -B <branch>" used to allow switching to a branch that
is in use on another worktree, but this was by mistake. The users
need to use "--ignore-other-worktrees" option.
UI, Workflows & Features
* "git add" and "git stash" learned to support the ":(attr:...)"
magic pathspec.
* "git rebase --autosquash" is now enabled for non-interactive rebase,
but it is still incompatible with the apply backend.
* Introduce "git replay", a tool meant on the server side without
working tree to recreate a history.
* "git merge-file" learned to take the "--diff-algorithm" option to
use algorithm different from the default "myers" diff.
* Command line completion (in contrib/) learned to complete path
arguments to the "add/set" subcommands of "git sparse-checkout"
better.
* "git checkout -B <branch> [<start-point>]" allowed a branch that is
in use in another worktree to be updated and checked out, which
might be a bit unexpected. The rule has been tightened, which is a
breaking change. "--ignore-other-worktrees" option is required to
unbreak you, if you are used to the current behaviour that "-B"
overrides the safety.
* The builtin_objectmode attribute is populated for each path
without adding anything in .gitattributes files, which would be
useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
to limit to executables.
* "git fetch" learned to pay attention to "fetch.all" configuration
variable, which pretends as if "--all" was passed from the command
line when no remote parameter was given.
* In addition to (rather cryptic) Security Identifiers, show username
and domain in the error message when we barf on mismatch between
the Git directory and the current user on Windows.
* The error message given when "git branch -d branch" fails due to
commits unique to the branch has been split into an error and a new
conditional advice message.
* When given an existing but unreadable file as a configuration file,
gitweb behaved as if the file did not exist at all, but now it
errors out. This is a change that may break backward compatibility.
* When $HOME/.gitconfig is missing but XDG config file is available, we
should write into the latter, not former. "git gc" and "git
maintenance" wrote into a wrong "global config" file, which have
been corrected.
* Define "special ref" as a very narrow set that consists of
FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to
be classified as such are actually just pseudorefs.
* All conditional "advice" messages show how to turn them off, which
becomes repetitive. Setting advice.* configuration explicitly on
now omits the instruction part.
* The "disable repository discovery of a bare repository" check,
triggered by setting safe.bareRepository configuration variable to
'explicit', has been loosened to exclude the ".git/" directory inside
a non-bare repository from the check. So you can do "cd .git &&
git cmd" to run a Git command that works on a bare repository without
explicitly specifying $GIT_DIR now.
* The completion script (in contrib/) learned more options that can
be used with "git log".
* The labels on conflict markers for the common ancestor, our version,
and the other version are available to custom 3-way merge driver
via %S, %X, and %Y placeholders.
* The write codepath for the reftable data learned to honor
core.fsync configuration.
* The "--fsck-objects" option of "git index-pack" now can take the
optional parameter to tweak severity of different fsck errors.
* The wincred credential backend has been taught to support oauth
refresh token the same way as credential-cache and
credential-libsecret backends.
* Command line completion support (in contrib/) has been
updated for "git bisect".
* "git branch" and friends learned to use the formatted text as
sorting key, not the underlying timestamp value, when the --sort
option is used with author or committer timestamp with a format
specifier (e.g., "--sort=creatordate:format:%H:%M:%S").
* The command line completion script (in contrib/) learned to
complete configuration variable names better.
Performance, Internal Implementation, Development Support etc.
* Process to add some form of low-level unit tests has started.
* Add support for GitLab CI.
* "git for-each-ref --no-sort" still sorted the refs alphabetically
which paid non-trivial cost. It has been redefined to show output
in an unspecified order, to allow certain optimizations to take
advantage of.
* Simplify API implementation to delete references by eliminating
duplication.
* Subject approxidate() and show_date() machinery to OSS-Fuzz.
* A new helper to let us pretend that we called lstat() when we know
our cache_entry is up-to-date via fsmonitor.
* The optimization based on fsmonitor in the "diff --cached"
codepath is resurrected with the "fake-lstat" introduced earlier.
* Test balloon to use C99 "bool" type from <stdbool.h> has been
added.
* "git clone" has been prepared to allow cloning a repository with
non-default hash function into a repository that uses the reftable
backend.
* Streaming spans of packfile data used to be done only from a
single, primary, pack in a repository with multiple packfiles. It
has been extended to allow reuse from other packfiles, too.
* Comment updates to help developers not to attempt to modify
messages from plumbing commands that must stay constant.
It might make sense to reassess the plumbing needs every few years,
but that should be done as a separate effort.
* Move test-ctype helper to the unit-test framework.
* Instead of manually creating refs/ hierarchy on disk upon a
creation of a secondary worktree, which is only usable via the
files backend, use the refs API to populate it.
* CI for GitLab learned to drive macOS jobs.
* A few tests to "git commit -o <pathspec>" and "git commit -i
<pathspec>" has been added.
* Tests on ref API are moved around to prepare for reftable.
* The Makefile often had to say "-L$(path) -R$(path)" that repeats
the path to the same library directory for link time and runtime.
A Makefile template is used to reduce such repetition.
* The priority queue test has been migrated to the unit testing
framework.
* Setting `feature.experimental` opts the user into multi-pack reuse
experiment
* Squelch node.js 16 deprecation warnings from GitHub Actions CI
by updating actions/github-script and actions/checkout that use
node.js 20.
* The mechanism to report the filename in the source code, used by
the unit-test machinery, assumed that the compiler expanded __FILE__
to the path to the source given to the $(CC), but some compilers
give full path, breaking the output. This has been corrected.
Fixes since v2.43
-----------------
* The way CI testing used "prove" could lead to running the test
suite twice needlessly, which has been corrected.
* Update ref-related tests.
* "git format-patch --encode-email-headers" ignored the option when
preparing the cover letter, which has been corrected.
* Newer versions of Getopt::Long started giving warnings against our
(ab)use of it in "git send-email". Bump the minimum version
requirement for Perl to 5.8.1 (from September 2002) to allow
simplifying our implementation.
* Earlier we stopped relying on commit-graph that (still) records
information about commits that are lost from the object store,
which has negative performance implications. The default has been
flipped to disable this pessimization.
* Stale URLs have been updated to their current counterparts (or
archive.org) and HTTP links are replaced with working HTTPS links.
* trace2 streams used to record the URLs that potentially embed
authentication material, which has been corrected.
* The sample pre-commit hook that tries to catch introduction of new
paths that use potentially non-portable characters did not notice
an existing path getting renamed to such a problematic path, when
rename detection was enabled.
* The command line parser for the "log" family of commands was too
loose when parsing certain numbers, e.g., silently ignoring the
extra 'q' in "git log -n 1q" without complaining, which has been
tightened up.
* "git $cmd --end-of-options --rev -- --path" for some $cmd failed
to interpret "--rev" as a rev, and "--path" as a path. This was
fixed for many programs like "reset" and "checkout".
* "git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
* Some codepaths did not correctly parse configuration variables
specified with valueless "true", which has been corrected.
* Code clean-up for sanity checking of command line options for "git
show-ref".
* The code to parse the From e-mail header has been updated to avoid
recursion.
* "git fetch --atomic" issued an unnecessary empty error message,
which has been corrected.
* Command line completion script (in contrib/) learned to work better
with the reftable backend.
* "git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
* "git archive --list extra garbage" silently ignored excess command
line parameters, which has been corrected.
* "git sparse-checkout set" added default patterns even when the
patterns are being fed from the standard input, which has been
corrected.
* "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
not handle "--end-of-options" correctly after a recent update.
* Unlike other environment variables that took the usual
true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
which has been corrected.
* Clearing in-core repository (happens during e.g., "git fetch
--recurse-submodules" with commit graph enabled) made in-core
commit object in an inconsistent state by discarding the necessary
data from commit-graph too early, which has been corrected.
* Update to a new feature recently added, "git show-ref --exists".
* oss-fuzz tests are built and run in CI.
(merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
* Rename detection logic ignored the final line of a file if it is an
incomplete line.
* GitHub CI update.
(merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
* "git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.
* "git archive --remote=<remote>" learned to talk over the smart
http (aka stateless) transport.
(merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
* Fetching via protocol v0 over Smart HTTP transport sometimes failed
to correctly auto-follow tags.
(merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
* The documentation for the --exclude-per-directory option marked it
as deprecated, which confused readers into thinking there may be a
plan to remove it in the future, which was not our intention.
(merge 0009542cab jc/ls-files-doc-update later to maint).
* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.
* Cirrus CI jobs started breaking because we specified version of
FreeBSD that is no longer available, which has been corrected.
(merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
* A caller called index_file_exists() that takes a string expressed
as <ptr, length> with a wrong length, which has been corrected.
(merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).
* A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.
* "git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.
* "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD",
which has been corrected.
* Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.
* The sequencer machinery does not use the ref API and instead
records names of certain objects it needs for its correct operation
in temporary files, which makes these objects susceptible to loss
by garbage collection. These temporary files have been added as
starting points for reachability analysis to fix this.
(merge bc7f5db896 pw/gc-during-rebase later to maint).
* "git cherry-pick" invoked during "git rebase -i" session lost
the authorship information, which has been corrected.
(merge e4301f73ff vn/rebase-with-cherry-pick-authorship later to maint).
* The code paths that call repo_read_object_file() have been
tightened to react to errors.
(merge 568459bf5e js/check-null-from-read-object-file later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
(merge 3cb4384683 jc/t0091-with-unknown-git later to maint).
(merge 020456cb74 rs/receive-pack-remove-find-header later to maint).
(merge bc47139f4f la/trailer-cleanups later to maint).
----------------------------------------------------------------
Changes since v2.43.0 are as follows:
Achu Luma (2):
unit-tests: rewrite t/helper/test-ctype.c as a unit test
t2400: avoid losing exit status to pipes
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5610t)
Andy Koppe (3):
rebase: fully ignore rebase.autoSquash without -i
rebase: support --autosquash without -i
rebase: rewrite --(no-)autosquash documentation
Antonin Delpeuch (2):
merge-file: add --diff-algorithm option
merge-ll: expose revision names to custom drivers
Arkadii Yakovets (3):
l10n: uk: v2.44 localization update
l10n: uk: v2.44 update (round 2)
l10n: uk: v2.44 update (round 3)
Arthur Chan (1):
fuzz: add new oss-fuzz fuzzer for date.c / date.h
Bagas Sanjaya (1):
l10n: po-id for 2.44 (round 1)
Britton Leo Kerin (9):
doc: use singular form of repeatable path arg
doc: refer to pathspec instead of path
completion: tests: always use 'master' for default initial branch name
completion: bisect: complete bad, new, old, and help subcommands
completion: bisect: complete custom terms and related options
completion: bisect: complete missing --first-parent and - -no-checkout options
completion: new function __git_complete_log_opts
completion: bisect: complete log opts for visualize subcommand
completion: bisect: recognize but do not complete view subcommand
Carlo Marcelo Arenas Belón (1):
ci: update FreeBSD cirrus job
Chandra Pratap (4):
sideband.c: remove redundant 'NEEDSWORK' tag
write-or-die: make GIT_FLUSH a Boolean environment variable
t4129: prevent loss of exit code due to the use of pipes
tests: move t0009-prio-queue.sh to the new unit testing framework
Elijah Newren (32):
t6429: remove switching aspects of fast-rebase
replay: introduce new builtin
replay: start using parse_options API
replay: die() instead of failing assert()
replay: introduce pick_regular_commit()
replay: change rev walking options
replay: add an important FIXME comment about gpg signing
replay: remove progress and info output
replay: remove HEAD related sanity check
replay: make it a minimal server side command
replay: use standard revision ranges
replay: add --advance or 'cherry-pick' mode
replay: add --contained to rebase contained branches
replay: stop assuming replayed branches do not diverge
completion: squelch stray errors in sparse-checkout completion
completion: fix logic for determining whether cone mode is active
completion: avoid misleading completions in cone mode
completion: avoid user confusion in non-cone mode
treewide: remove unnecessary includes from header files
treewide: remove unnecessary includes in source files
archive.h: remove unnecessary include
blame.h: remove unnecessary includes
fsmonitor--daemon.h: remove unnecessary includes
http.h: remove unnecessary include
line-log.h: remove unnecessary include
pkt-line.h: remove unnecessary include
submodule-config.h: remove unnecessary include
trace2/tr2_tls.h: remove unnecessary include
treewide: add direct includes currently only pulled in transitively
treewide: remove unnecessary includes in source files
sparse-checkout: be consistent with end of options markers
diffcore-delta: avoid ignoring final 'line' of file
Emir SARI (1):
l10n: tr: Update Turkish translations for 2.44
Eric Sunshine (1):
git-add.txt: add missing short option -A to synopsis
Ghanshyam Thakkar (4):
t7501: add tests for --include and --only
t7501: add tests for --amend --signoff
t0024: avoid losing exit status to pipes
t0024: style fix
Illia Bobyr (1):
rebase: clarify --reschedule-failed-exec default
James Touton (1):
git-p4: use raw string literals for regular expressions
Jean-Noël Avila (3):
doc: enforce dashes in placeholders
doc: enforce placeholders in documentation
l10n: fr.po: v2.44.0 round 3
Jeff Hostetler (4):
trace2: fix signature of trace2_def_param() macro
t0211: test URL redacting in PERF format
t0212: test URL redacting in EVENT format
sparse-index: pass string length to index_file_exists()
Jeff King (39):
commit-graph: handle overflow in chunk_size checks
midx: check consistency of fanout table
commit-graph: drop redundant call to "lite" verification
commit-graph: clarify missing-chunk error messages
commit-graph: abort as soon as we see a bogus chunk
commit-graph: use fanout value for graph size
commit-graph: check order while reading fanout chunk
commit-graph: drop verify_commit_graph_lite()
commit-graph: mark chunk error messages for translation
parse-options: decouple "--end-of-options" and "--"
bisect: always clean on reset
config: handle NULL value when parsing non-bools
setup: handle NULL value when parsing extensions
trace2: handle NULL values in tr2_sysenv config callback
help: handle NULL value for alias.* config
submodule: handle NULL value when parsing submodule.*.branch
trailer: handle NULL value when parsing trailer-specific config
fsck: handle NULL value when parsing message config
config: reject bogus values for core.checkstat
git_xmerge_config(): prefer error() to die()
imap-send: don't use git_die_config() inside callback
config: use config_error_nonbool() instead of custom messages
diff: give more detailed messages for bogus diff.* config
config: use git_config_string() for core.checkRoundTripEncoding
push: drop confusing configset/callback redundancy
gpg-interface: drop pointless config_error_nonbool() checks
sequencer: simplify away extra git_config_string() call
mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair()
t5100: make rfc822 comment test more careful
mailinfo: avoid recursion when unquoting From headers
t1006: add tests for %(objectsize:disk)
commit-graph: retain commit slab when closing NULL commit_graph
index-pack: spawn threads atomically
transport-helper: re-examine object dir after fetching
diff: handle NULL meta-info when spawning external diff
Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN
Makefile: remove UNIT_TEST_BIN directory with "make clean"
t/Makefile: get UNIT_TESTS list from C sources
trailer: fix comment/cut-line regression with opts->no_divider
Jiang Xin (14):
t5574: test porcelain output of atomic fetch
fetch: no redundant error message for atomic fetch
test-pkt-line: add option parser for unpack-sideband
pkt-line: memorize sideband fragment in reader
pkt-line: do not chomp newlines for sideband messages
transport-helper: no connection restriction in connect_helper
remote-curl: supports git-upload-archive service
transport-helper: protocol v2 supports upload-archive
http-backend: new rpc-service for git-upload-archive
transport-helper: call do_take_over() in connect_helper
transport-helper: call do_take_over() in process_connect
diff: mark param1 and param2 as placeholders
l10n: ci: remove unused param for add-pr-comment@v2
l10n: ci: disable cache for setup-go to suppress warnings
Joanna Wang (2):
attr: enable attr pathspec magic for git-add and git-stash
attr: add builtin objectmode values support
Johannes Schindelin (15):
artifacts-tar: when including `.dll` files, don't forget the unit-tests
cmake: fix typo in variable name
cmake: also build unit tests
cmake: use test names instead of full paths
unit-tests: do not mistake `.pdb` files for being executable
cmake: handle also unit tests
unit-tests: do show relative file paths
ci: avoid running the test suite _twice_
packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration
trace2: redact passwords from https:// URLs by default
win32: special-case `ENOSPC` when writing to a pipe
Always check the return value of `repo_read_object_file()`
l10n: bump Actions versions in l10n.yml
ci: bump remaining outdated Actions versions
ci(linux32): add a note about Actions that must not be updated
John Cai (15):
t3210: move to t0601
remove REFFILES prerequisite for some tests in t1405 and t2017
t1414: convert test to use Git commands instead of writing refs manually
t1404: move reffiles specific tests to t0600
t1405: move reffiles specific tests to t0601
t1406: move reffiles specific tests to t0600
t1410: move reffiles specific tests to t0600
t1415: move reffiles specific tests to t0601
t1503: move reffiles specific tests to t0600
t3903: make drop stash test ref backend agnostic
t4202: move reffiles specific tests to t0600
t5312: move reffiles specific tests to t0601
reftable: honor core.fsync
index-pack: test and document --strict=<msg-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
Jordi Mas (1):
l10n: Update Catalan translation
Josh Brobst (1):
builtin/reflog.c: fix dry-run option short name
Josh Soref (13):
doc: update links to current pages
doc: switch links to https
doc: update links for andre-simon.de
doc: refer to internet archive
CodingGuidelines: move period inside parentheses
CodingGuidelines: write punctuation marks
SubmittingPatches: drop ref to "What's in git.git"
SubmittingPatches: discourage new trailers
SubmittingPatches: update extra tags list
SubmittingPatches: provide tag naming advice
SubmittingPatches: clarify GitHub visual
SubmittingPatches: clarify GitHub artifact format
SubmittingPatches: hyphenate non-ASCII
Josh Steadmon (4):
unit tests: add a project plan document
ci: run unit tests in CI
fuzz: fix fuzz test build rules
ci: build and run minimal fuzzers in GitHub CI
Julian Prein (1):
hooks--pre-commit: detect non-ASCII when renaming
Junio C Hamano (58):
cache: add fake_lstat()
diff-lib: fix check_removed() when fsmonitor is active
checkout: refactor die_if_checked_out() caller
orphan/unborn: add to the glossary and use them consistently
orphan/unborn: fix use of 'orphan' in end-user facing messages
revision: parse integer arguments to --max-count, --skip, etc., more carefully
Start the 2.44 cycle
checkout: forbid "-B <branch>" from touching a branch used elsewhere
git.txt: HEAD is not that special
git-bisect.txt: BISECT_HEAD is not that special
refs.h: HEAD is not that special
docs: AUTO_MERGE is not that special
docs: MERGE_AUTOSTASH is not that special
doc: format.notes specify a ref under refs/notes/ hierarchy
The second batch
remote.h: retire CAS_OPT_NAME
The third batch
archive: "--list" does not take further options
sparse-checkout: use default patterns for 'set' only !stdin
The fourth batch
The fifth batch
The sixth batch
messages: mark some strings with "up-to-date" not to touch
The seventh batch
The eighth batch
The ninth batch
Docs: majordomo@vger.kernel.org has been decomissioned
CoC: whitespace fix
ls-files: avoid the verb "deprecate" for individual options
The tenth batch
builtin/worktree: comment style fixes
merge-ort.c: comment style fix
reftable/pq_test: comment style fix
The eleventh batch
t0091: allow test in a repository without tags
The twelfth batch
Makefile: reduce repetitive library paths
Makefile: simplify output of the libpath_template
The thirteenth batch
GitHub Actions: update to checkout@v4
GitHub Actions: update to github-script@v7
t/Makefile: say the default target upfront
The fourteenth batch
tag: fix sign_buffer() call to create a signed tag
bisect: document "terms" subcommand more fully
bisect: document command line arguments for "bisect start"
ssh signing: signal an error with a negative return value
The fifteenth batch
Git 2.43.1
Git 2.44-rc0
unit-tests: do show relative file paths on non-Windows, too
A few more topics before -rc1
write-or-die: fix the polarity of GIT_FLUSH environment variable
A few more fixes before -rc1
Git 2.43.2
Hopefully the last batch of fixes before 2.44 final
Git 2.44-rc2
Git 2.43.3
Justin Tobler (2):
t1401: remove lockfile creation
t5541: remove lockfile creation
Kristoffer Haugsbakk (5):
config: format newlines
config: rename global config function
config: factor out global config file retrieval
maintenance: use XDG config if it exists
config: add back code comment
Kyle Lippincott (1):
setup: allow cwd=.git w/ bareRepository=explicit
Linus Arver (4):
commit: ignore_non_trailer computes number of bytes to ignore
trailer: find the end of the log message
trailer: use offsets for trailer_start/trailer_end
strvec: use correct member name in comments
M Hickford (1):
credential/wincred: store oauth_refresh_token
Maarten van der Schrieck (1):
Documentation: fix statement about rebase.instructionFormat
Marcel Krause (1):
doc: make the gitfile syntax easier to discover
Marcelo Roberto Jimenez (1):
gitweb: die when a configuration file cannot be read
Michael Lohmann (2):
Documentation/git-merge.txt: fix reference to synopsis
Documentation/git-merge.txt: use backticks for command wrapping
Nikolay Borisov (1):
rebase: fix documentation about used shell in -x
Nikolay Edigaryev (1):
rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer
Patrick Steinhardt (139):
t: allow skipping expected object ID in `ref-store update-ref`
t: convert tests to not write references via the filesystem
t: convert tests to not access symrefs via the filesystem
t: convert tests to not access reflog via the filesystem
t1450: convert tests to remove worktrees via git-worktree(1)
t4207: delete replace references via git-update-ref(1)
t7300: assert exact states of repo
t7900: assert the absence of refs via git-for-each-ref(1)
t: mark several tests that assume the files backend with REFFILES
ci: reorder definitions for grouping functions
ci: make grouping setup more generic
ci: group installation of Docker dependencies
ci: split out logic to set up failed test artifacts
ci: unify setup of some environment variables
ci: squelch warnings when testing with unusable Git repo
ci: install test dependencies for linux-musl
ci: add support for GitLab CI
t/lib-httpd: dynamically detect httpd and modules path
t/lib-httpd: stop using legacy crypt(3) for authentication
t9164: fix inability to find basename(1) in Subversion hooks
global: convert trivial usages of `test <expr> -a/-o <expr>`
contrib/subtree: stop using `-o` to test for number of args
contrib/subtree: convert subtree type check to use case statement
Makefile: stop using `test -o` when unlinking duplicate executables
t5510: ensure that the packed-refs file needs locking
refs/files: use transactions to delete references
refs: deduplicate code to delete references
refs: remove `delete_refs` callback from backends
commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default
t0410: mark tests to require the reffiles backend
t1400: split up generic reflog tests from the reffile-specific ones
t1401: stop treating FETCH_HEAD as real reference
t1410: use test-tool to create empty reflog
t1417: make `reflog --updateref` tests backend agnostic
t3310: stop checking for reference existence via `test -f`
t4013: simplify magic parsing and drop "failure"
t5401: speed up creation of many branches
t5551: stop writing packed-refs directly
t6301: write invalid object ID via `test-tool ref-store`
reftable: wrap EXPECT macros in do/while
reftable: handle interrupted reads
reftable: handle interrupted writes
reftable/stack: verify that `reftable_stack_add()` uses auto-compaction
reftable/stack: perform auto-compaction with transactional interface
reftable/stack: reuse buffers when reloading stack
reftable/stack: fix stale lock when dying
reftable/stack: fix use of unseeded randomness
reftable/merged: reuse buffer to compute record keys
reftable/block: introduce macro to initialize `struct block_iter`
reftable/block: reuse buffer to compute record keys
setup: extract function to create the refdb
setup: allow skipping creation of the refdb
remote-curl: rediscover repository when fetching refs
builtin/clone: fix bundle URIs with mismatching object formats
builtin/clone: set up sparse checkout later
builtin/clone: skip reading HEAD when retrieving remote
builtin/clone: create the refdb with the correct object format
wt-status: read HEAD and ORIG_HEAD via the refdb
refs: propagate errno when reading special refs fails
refs: complete list of special refs
bisect: consistently write BISECT_EXPECTED_REV via the refdb
tests: adjust whitespace in chainlint expectations
t: introduce DEFAULT_REPO_FORMAT prereq
worktree: skip reading HEAD when repairing worktrees
refs: refactor logic to look up storage backends
setup: start tracking ref storage format
setup: set repository's formats on init
setup: introduce "extensions.refStorage" extension
setup: introduce GIT_DEFAULT_REF_FORMAT envvar
t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar
builtin/rev-parse: introduce `--show-ref-format` flag
builtin/init: introduce `--ref-format=` value flag
builtin/clone: introduce `--ref-format=` value flag
t9500: write "extensions.refstorage" into config
reftable/stack: do not overwrite errors when compacting
reftable/stack: do not auto-compact twice in `reftable_stack_add()`
reftable/writer: fix index corruption when writing multiple indices
reftable/record: constify some parts of the interface
reftable/record: store "val1" hashes as static arrays
reftable/record: store "val2" hashes as static arrays
reftable/merged: really reuse buffers to compute record keys
reftable/merged: transfer ownership of records when iterating
git-prompt: stop manually parsing HEAD with unknown ref formats
ci: add job performing static analysis on GitLab CI
refs: prepare `refs_init_db()` for initializing worktree refs
setup: move creation of "refs/" into the files backend
refs/files: skip creation of "refs/{heads,tags}" for worktrees
builtin/worktree: move setup of commondir file earlier
worktree: expose interface to look up worktree by name
builtin/worktree: create refdb via ref backend
reftable/stack: refactor stack reloading to have common exit path
reftable/stack: refactor reloading to use file descriptor
reftable/stack: use stat info to avoid re-reading stack list
reftable/blocksource: refactor code to match our coding style
reftable/blocksource: use mmap to read tables
git-p4: stop reaching into the refdb
commit-graph: fix memory leak when not writing graph
completion: discover repo path in `__git_pseudoref_exists ()`
t9902: verify that completion does not print anything
completion: improve existence check for pseudo-refs
completion: silence pseudoref existence check
completion: treat dangling symrefs as existing pseudorefs
t7527: decrease likelihood of racing with fsmonitor daemon
Makefile: detect new Homebrew location for ARM-based Macs
ci: handle TEST_OUTPUT_DIRECTORY when printing test failures
ci: make p4 setup on macOS more robust
ci: add macOS jobs to GitLab CI
reftable/stack: unconditionally reload stack after commit
reftable/stack: fix race in up-to-date check
sequencer: clean up pseudo refs with REF_NO_DEREF
sequencer: delete REBASE_HEAD in correct repo when picking commits
refs: convert AUTO_MERGE to become a normal pseudo-ref
sequencer: introduce functions to handle autostashes via refs
refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref
refs: redefine special refs
Documentation: add "special refs" to the glossary
reftable/stack: adjust permissions of compacted tables
t1300: make tests more robust with non-default ref backends
t1301: mark test for `core.sharedRepository` as reffiles specific
t1302: make tests more robust with new extensions
t1419: mark test suite as files-backend specific
t5526: break test submodule differently
t: mark tests regarding git-pack-refs(1) to be backend specific
reftable/stack: fsync "tables.list" during compaction
reftable/reader: be more careful about errors in indexed seeks
reftable/writer: use correct type to iterate through index entries
reftable/writer: simplify writing index records
reftable/writer: fix writing multi-level indices
reftable: document reading and writing indices
builtin/stash: report failure to write to index
reftable: introduce macros to grow arrays
reftable: introduce macros to allocate arrays
reftable/stack: fix parameter validation when compacting range
reftable/stack: index segments with `size_t`
reftable/stack: use `size_t` to track stack slices during compaction
reftable/stack: use `size_t` to track stack length
reftable/merged: refactor seeking of records
reftable/merged: refactor initialization of iterators
reftable/record: improve semantics when initializing records
Peter Krefting (1):
l10n: sv.po: Update Swedish translation
Philippe Blain (11):
completion: complete missing rev-list options
completion: complete --patch-with-raw
completion: complete --encoding
completion: complete missing 'git log' options
ci(github): also skip logs of broken test cases
imap-send: add missing "strbuf.h" include under NO_CURL
.github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs
completion: add space after config variable names also in Bash 3
completion: complete 'submodule.*' config variables
completion: add and use __git_compute_first_level_config_vars_for_section
completion: add and use __git_compute_second_level_config_vars_for_section
Phillip Wood (4):
unit tests: add TAP unit test framework
show-ref --verify: accept pseudorefs
t1400: use show-ref to check pseudorefs
prune: mark rebase autostash and orig-head as reachable
Ralf Thielow (1):
l10n: Update German translation
René Scharfe (21):
column: release strbuf and string_list after use
i18n: factorize even more 'incompatible options' messages
push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror
repack: use die_for_incompatible_opt3() for -A/-k/--cruft
revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs
revision, rev-parse: factorize incompatibility messages about - -exclude-hidden
clean: factorize incompatibility message
worktree: standardize incompatibility messages
worktree: simplify incompatibility message for --orphan and commit-ish
show-ref: use die_for_incompatible_opt3()
t6300: avoid hard-coding object sizes
git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool
rebase: use strvec_pushf() for format-patch revisions
fast-import: use mem_pool_calloc()
mem-pool: fix big allocations
mem-pool: simplify alignment calculation
t1006: prefer shell loop to awk for packed object sizes
parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: simplify positivation handling
receive-pack: use find_commit_header() in check_cert_push_options()
receive-pack: use find_commit_header() in check_nonce()
Rubén Justo (10):
status: fix branch shown when not only bisecting
branch: clarify <oldbranch> term
advice: sort the advice related lists
advice: fix an unexpected leading space
branch: make the advice to force-deleting a conditional one
advice: allow disabling the automatic hint in advise_if_enabled()
t5332: mark as leak-free
t6113: mark as leak-free
test-lib: check for TEST_PASSES_SANITIZE_LEAK
t0080: mark as leak-free
Sam Delmerico (1):
push: region_leave trace for negotiate_using_fetch
Shreyansh Paliwal (1):
test-lib-functions.sh: fix test_grep fail message wording
Simon Ser (1):
format-patch: fix ignored encode_email_headers for cover letter
Stan Hu (2):
completion: refactor existence checks for pseudorefs
completion: support pseudoref existence checks for reftables
Sören Krecker (1):
mingw: give more details about unsafe directory's ownership
Tamino Bauknecht (1):
fetch: add new config option fetch.all
Taylor Blau (29):
pack-objects: free packing_data in more places
pack-bitmap-write: deep-clear the `bb_commit` slab
pack-bitmap: plug leak in find_objects()
midx: factor out `fill_pack_info()`
midx: implement `BTMP` chunk
midx: implement `midx_locate_pack()`
pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions
ewah: implement `bitmap_is_empty()`
pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature
pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`
pack-objects: parameterize pack-reuse routines over a single pack
pack-objects: keep track of `pack_start` for each reuse pack
pack-objects: pass `bitmapped_pack`'s to pack-reuse functions
pack-objects: prepare `write_reused_pack()` for multi-pack reuse
pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse
pack-objects: include number of packs reused in output
git-compat-util.h: implement checked size_t to uint32_t conversion
midx: implement `midx_preferred_pack()`
pack-revindex: factor out `midx_key_to_pack_pos()` helper
pack-revindex: implement `midx_pair_to_pack_pos()`
pack-bitmap: prepare to mark objects from multiple packs for reuse
pack-objects: add tracing for various packfile metrics
t/test-lib-functions.sh: implement `test_trace2_data` helper
pack-objects: allow setting `pack.allowPackReuse` to "single"
pack-bitmap: enable reuse from all bitmapped packs
t/perf: add performance tests for multi-pack reuse
pack-bitmap: drop unused `reuse_objects`
t5332-multi-pack-reuse.sh: extract pack-objects helper functions
pack-objects: enable multi-pack reuse via `feature.experimental`
Teng Long (1):
l10n: zh_CN: for git 2.44 rounds
Todd Zullinger (3):
perl: bump the required Perl version to 5.8.1 from 5.8.0
send-email: avoid duplicate specification warnings
RelNotes: minor typo fixes in 2.44.0 draft
Toon Claes (1):
builtin/show-ref: treat directory as non-existing in --exists
Vegard Nossum (1):
sequencer: unset GIT_CHERRY_PICK_HELP for 'exec' commands
Victoria Dye (15):
ref-filter.c: really don't sort when using --no-sort
ref-filter.h: add max_count and omit_empty to ref_format
ref-filter.h: move contains caches into filter
ref-filter.h: add functions for filter/format & format-only
ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()'
ref-filter.c: refactor to create common helper functions
ref-filter.c: filter & format refs in the same callback
for-each-ref: clean up documentation of --format
ref-filter.c: use peeled tag for '*' format fields
t/perf: add perf tests for for-each-ref
submodule-config.h: move check_submodule_url
test-submodule: remove command line handling for check-name
t7450: test submodule urls
submodule-config.c: strengthen URL fsck check
ref-filter.c: sort formatted dates by byte value
Yi-Jyun Pan (1):
l10n: zh_TW: Git 2.44
Zach FettersMoore (1):
subtree: fix split processing with multiple subtrees present
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.44.0-rc2
@ 2024-02-20 17:09 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-20 17:09 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.44.0-rc2 is now available for testing at
the usual places. It is comprised of 502 non-merge commits since
v2.43.0, contributed by 85 people, 34 of which are new faces [*].
I was planning to do without -rc2 and directly go to the final
release, but there was a last-minute regression discovered, whose
fix is included in this (hopefully) final release candidate.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.44.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.43.0 are as follows.
Welcome to the Git development community!
Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin,
Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam
Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang,
Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott,
lumynou5, Maarten van der Schrieck, Marcel Krause, Marcelo
Roberto Jimenez, Michael Lohmann, moti sd, Nikolay Borisov,
Nikolay Edigaryev, Ondrej Pohorelsky, Sam Delmerico, Sergey
Kosukhin, Shreyansh Paliwal, Sören Krecker, Stan Hu, Tamino
Bauknecht, Wilfred Hughes, Willem Verstraeten, Xiaoguang WANG,
and Zach FettersMoore.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Shopov, Andy Koppe, Arkadii Yakovets, Arthur Chan,
Bagas Sanjaya, Calvin Wan, Carlo Marcelo Arenas Belón, Christian
Couder, Dragan Simic, Elijah Newren, Emir SARI, Eric Sunshine,
Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan
Tan, Jordi Mas, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio
C Hamano, Kate Golovanova, Konstantin Ryabitsev, Kristoffer
Haugsbakk, Linus Arver, Matthias Aßhauer, M Hickford, Orgad
Shaneh, Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting,
Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
René Scharfe, Rubén Justo, Simon Ser, SZEDER Gábor, Taylor
Blau, Teng Long, Todd Zullinger, Toon Claes, Vegard Nossum,
Victoria Dye, and Yi-Jyun Pan.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.44 Release Notes (draft)
===============================
Backward Compatibility Notes
* "git checkout -B <branch>" used to allow switching to a branch that
is in use on another worktree, but this was by mistake. The users
need to use "--ignore-other-worktrees" option.
UI, Workflows & Features
* "git add" and "git stash" learned to support the ":(attr:...)"
magic pathspec.
* "git rebase --autosquash" is now enabled for non-interactive rebase,
but it is still incompatible with the apply backend.
* Introduce "git replay", a tool meant on the server side without
working tree to recreate a history.
* "git merge-file" learned to take the "--diff-algorithm" option to
use algorithm different from the default "myers" diff.
* Command line completion (in contrib/) learned to complete path
arguments to the "add/set" subcommands of "git sparse-checkout"
better.
* "git checkout -B <branch> [<start-point>]" allowed a branch that is
in use in another worktree to be updated and checked out, which
might be a bit unexpected. The rule has been tightened, which is a
breaking change. "--ignore-other-worktrees" option is required to
unbreak you, if you are used to the current behaviour that "-B"
overrides the safety.
* The builtin_objectmode attribute is populated for each path
without adding anything in .gitattributes files, which would be
useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
to limit to executables.
* "git fetch" learned to pay attention to "fetch.all" configuration
variable, which pretends as if "--all" was passed from the command
line when no remote parameter was given.
* In addition to (rather cryptic) Security Identifiers, show username
and domain in the error message when we barf on mismatch between
the Git directory and the current user on Windows.
* The error message given when "git branch -d branch" fails due to
commits unique to the branch has been split into an error and a new
conditional advice message.
* When given an existing but unreadable file as a configuration file,
gitweb behaved as if the file did not exist at all, but now it
errors out. This is a change that may break backward compatibility.
* When $HOME/.gitconfig is missing but XDG config file is available, we
should write into the latter, not former. "git gc" and "git
maintenance" wrote into a wrong "global config" file, which have
been corrected.
* Define "special ref" as a very narrow set that consists of
FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to
be classified as such are actually just pseudorefs.
* All conditional "advice" messages show how to turn them off, which
becomes repetitive. Setting advice.* configuration explicitly on
now omits the instruction part.
* The "disable repository discovery of a bare repository" check,
triggered by setting safe.bareRepository configuration variable to
'explicit', has been loosened to exclude the ".git/" directory inside
a non-bare repository from the check. So you can do "cd .git &&
git cmd" to run a Git command that works on a bare repository without
explicitly specifying $GIT_DIR now.
* The completion script (in contrib/) learned more options that can
be used with "git log".
* The labels on conflict markers for the common ancestor, our version,
and the other version are available to custom 3-way merge driver
via %S, %X, and %Y placeholders.
* The write codepath for the reftable data learned to honor
core.fsync configuration.
* The "--fsck-objects" option of "git index-pack" now can take the
optional parameter to tweak severity of different fsck errors.
* The wincred credential backend has been taught to support oauth
refresh token the same way as credential-cache and
credential-libsecret backends.
* Command line completion support (in contrib/) has been
updated for "git bisect".
* "git branch" and friends learned to use the formatted text as
sorting key, not the underlying timestamp value, when the --sort
option is used with author or committer timestamp with a format
specifier (e.g., "--sort=creatordate:format:%H:%M:%S").
* The command line completion script (in contrib/) learned to
complete configuration variable names better.
Performance, Internal Implementation, Development Support etc.
* Process to add some form of low-level unit tests has started.
* Add support for GitLab CI.
* "git for-each-ref --no-sort" still sorted the refs alphabetically
which paid non-trivial cost. It has been redefined to show output
in an unspecified order, to allow certain optimizations to take
advantage of.
* Simplify API implementation to delete references by eliminating
duplication.
* Subject approxidate() and show_date() machinery to OSS-Fuzz.
* A new helper to let us pretend that we called lstat() when we know
our cache_entry is up-to-date via fsmonitor.
* The optimization based on fsmonitor in the "diff --cached"
codepath is resurrected with the "fake-lstat" introduced earlier.
* Test balloon to use C99 "bool" type from <stdbool.h> has been
added.
* "git clone" has been prepared to allow cloning a repository with
non-default hash function into a repository that uses the reftable
backend.
* Streaming spans of packfile data used to be done only from a
single, primary, pack in a repository with multiple packfiles. It
has been extended to allow reuse from other packfiles, too.
* Comment updates to help developers not to attempt to modify
messages from plumbing commands that must stay constant.
It might make sense to reassess the plumbing needs every few years,
but that should be done as a separate effort.
* Move test-ctype helper to the unit-test framework.
* Instead of manually creating refs/ hierarchy on disk upon a
creation of a secondary worktree, which is only usable via the
files backend, use the refs API to populate it.
* CI for GitLab learned to drive macOS jobs.
* A few tests to "git commit -o <pathspec>" and "git commit -i
<pathspec>" has been added.
* Tests on ref API are moved around to prepare for reftable.
* The Makefile often had to say "-L$(path) -R$(path)" that repeats
the path to the same library directory for link time and runtime.
A Makefile template is used to reduce such repetition.
* The priority queue test has been migrated to the unit testing
framework.
* Setting `feature.experimental` opts the user into multi-pack reuse
experiment
* Squelch node.js 16 deprecation warnings from GitHub Actions CI
by updating actions/github-script and actions/checkout that use
node.js 20.
* The mechanism to report the filename in the source code, used by
the unit-test machinery, assumed that the compiler expanded __FILE__
to the path to the source given to the $(CC), but some compilers
give full path, breaking the output. This has been corrected.
Fixes since v2.43
-----------------
* The way CI testing used "prove" could lead to running the test
suite twice needlessly, which has been corrected.
* Update ref-related tests.
* "git format-patch --encode-email-headers" ignored the option when
preparing the cover letter, which has been corrected.
* Newer versions of Getopt::Long started giving warnings against our
(ab)use of it in "git send-email". Bump the minimum version
requirement for Perl to 5.8.1 (from September 2002) to allow
simplifying our implementation.
* Earlier we stopped relying on commit-graph that (still) records
information about commits that are lost from the object store,
which has negative performance implications. The default has been
flipped to disable this pessimization.
* Stale URLs have been updated to their current counterparts (or
archive.org) and HTTP links are replaced with working HTTPS links.
* trace2 streams used to record the URLs that potentially embed
authentication material, which has been corrected.
* The sample pre-commit hook that tries to catch introduction of new
paths that use potentially non-portable characters did not notice
an existing path getting renamed to such a problematic path, when
rename detection was enabled.
* The command line parser for the "log" family of commands was too
loose when parsing certain numbers, e.g., silently ignoring the
extra 'q' in "git log -n 1q" without complaining, which has been
tightened up.
* "git $cmd --end-of-options --rev -- --path" for some $cmd failed
to interpret "--rev" as a rev, and "--path" as a path. This was
fixed for many programs like "reset" and "checkout".
* "git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
* Some codepaths did not correctly parse configuration variables
specified with valueless "true", which has been corrected.
* Code clean-up for sanity checking of command line options for "git
show-ref".
* The code to parse the From e-mail header has been updated to avoid
recursion.
* "git fetch --atomic" issued an unnecessary empty error message,
which has been corrected.
* Command line completion script (in contrib/) learned to work better
with the reftable backend.
* "git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
* "git archive --list extra garbage" silently ignored excess command
line parameters, which has been corrected.
* "git sparse-checkout set" added default patterns even when the
patterns are being fed from the standard input, which has been
corrected.
* "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
not handle "--end-of-options" correctly after a recent update.
* Unlike other environment variables that took the usual
true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
which has been corrected.
* Clearing in-core repository (happens during e.g., "git fetch
--recurse-submodules" with commit graph enabled) made in-core
commit object in an inconsistent state by discarding the necessary
data from commit-graph too early, which has been corrected.
* Update to a new feature recently added, "git show-ref --exists".
* oss-fuzz tests are built and run in CI.
(merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
* Rename detection logic ignored the final line of a file if it is an
incomplete line.
* GitHub CI update.
(merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
* "git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.
* "git archive --remote=<remote>" learned to talk over the smart
http (aka stateless) transport.
(merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
* Fetching via protocol v0 over Smart HTTP transport sometimes failed
to correctly auto-follow tags.
(merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
* The documentation for the --exclude-per-directory option marked it
as deprecated, which confused readers into thinking there may be a
plan to remove it in the future, which was not our intention.
(merge 0009542cab jc/ls-files-doc-update later to maint).
* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.
* Cirrus CI jobs started breaking because we specified version of
FreeBSD that is no longer available, which has been corrected.
(merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
* A caller called index_file_exists() that takes a string expressed
as <ptr, length> with a wrong length, which has been corrected.
(merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).
* A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.
* "git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.
* "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD",
which has been corrected.
* Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.
* The sequencer machinery does not use the ref API and instead
records names of certain objects it needs for its correct operation
in temporary files, which makes these objects susceptible to loss
by garbage collection. These temporary files have been added as
starting points for reachability analysis to fix this.
(merge bc7f5db896 pw/gc-during-rebase later to maint).
* "git cherry-pick" invoked during "git rebase -i" session lost
the authorship information, which has been corrected.
(merge e4301f73ff vn/rebase-with-cherry-pick-authorship later to maint).
* The code paths that call repo_read_object_file() have been
tightened to react to errors.
(merge 568459bf5e js/check-null-from-read-object-file later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
(merge 3cb4384683 jc/t0091-with-unknown-git later to maint).
(merge 020456cb74 rs/receive-pack-remove-find-header later to maint).
(merge bc47139f4f la/trailer-cleanups later to maint).
----------------------------------------------------------------
Changes since v2.43.0 are as follows:
Achu Luma (2):
unit-tests: rewrite t/helper/test-ctype.c as a unit test
t2400: avoid losing exit status to pipes
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5610t)
Andy Koppe (3):
rebase: fully ignore rebase.autoSquash without -i
rebase: support --autosquash without -i
rebase: rewrite --(no-)autosquash documentation
Antonin Delpeuch (2):
merge-file: add --diff-algorithm option
merge-ll: expose revision names to custom drivers
Arkadii Yakovets (3):
l10n: uk: v2.44 localization update
l10n: uk: v2.44 update (round 2)
l10n: uk: v2.44 update (round 3)
Arthur Chan (1):
fuzz: add new oss-fuzz fuzzer for date.c / date.h
Bagas Sanjaya (1):
l10n: po-id for 2.44 (round 1)
Britton Leo Kerin (9):
doc: use singular form of repeatable path arg
doc: refer to pathspec instead of path
completion: tests: always use 'master' for default initial branch name
completion: bisect: complete bad, new, old, and help subcommands
completion: bisect: complete custom terms and related options
completion: bisect: complete missing --first-parent and - -no-checkout options
completion: new function __git_complete_log_opts
completion: bisect: complete log opts for visualize subcommand
completion: bisect: recognize but do not complete view subcommand
Carlo Marcelo Arenas Belón (1):
ci: update FreeBSD cirrus job
Chandra Pratap (4):
sideband.c: remove redundant 'NEEDSWORK' tag
write-or-die: make GIT_FLUSH a Boolean environment variable
t4129: prevent loss of exit code due to the use of pipes
tests: move t0009-prio-queue.sh to the new unit testing framework
Elijah Newren (32):
t6429: remove switching aspects of fast-rebase
replay: introduce new builtin
replay: start using parse_options API
replay: die() instead of failing assert()
replay: introduce pick_regular_commit()
replay: change rev walking options
replay: add an important FIXME comment about gpg signing
replay: remove progress and info output
replay: remove HEAD related sanity check
replay: make it a minimal server side command
replay: use standard revision ranges
replay: add --advance or 'cherry-pick' mode
replay: add --contained to rebase contained branches
replay: stop assuming replayed branches do not diverge
completion: squelch stray errors in sparse-checkout completion
completion: fix logic for determining whether cone mode is active
completion: avoid misleading completions in cone mode
completion: avoid user confusion in non-cone mode
treewide: remove unnecessary includes from header files
treewide: remove unnecessary includes in source files
archive.h: remove unnecessary include
blame.h: remove unnecessary includes
fsmonitor--daemon.h: remove unnecessary includes
http.h: remove unnecessary include
line-log.h: remove unnecessary include
pkt-line.h: remove unnecessary include
submodule-config.h: remove unnecessary include
trace2/tr2_tls.h: remove unnecessary include
treewide: add direct includes currently only pulled in transitively
treewide: remove unnecessary includes in source files
sparse-checkout: be consistent with end of options markers
diffcore-delta: avoid ignoring final 'line' of file
Emir SARI (1):
l10n: tr: Update Turkish translations for 2.44
Eric Sunshine (1):
git-add.txt: add missing short option -A to synopsis
Ghanshyam Thakkar (4):
t7501: add tests for --include and --only
t7501: add tests for --amend --signoff
t0024: avoid losing exit status to pipes
t0024: style fix
Illia Bobyr (1):
rebase: clarify --reschedule-failed-exec default
James Touton (1):
git-p4: use raw string literals for regular expressions
Jean-Noël Avila (3):
doc: enforce dashes in placeholders
doc: enforce placeholders in documentation
l10n: fr.po: v2.44.0 round 3
Jeff Hostetler (4):
trace2: fix signature of trace2_def_param() macro
t0211: test URL redacting in PERF format
t0212: test URL redacting in EVENT format
sparse-index: pass string length to index_file_exists()
Jeff King (39):
commit-graph: handle overflow in chunk_size checks
midx: check consistency of fanout table
commit-graph: drop redundant call to "lite" verification
commit-graph: clarify missing-chunk error messages
commit-graph: abort as soon as we see a bogus chunk
commit-graph: use fanout value for graph size
commit-graph: check order while reading fanout chunk
commit-graph: drop verify_commit_graph_lite()
commit-graph: mark chunk error messages for translation
parse-options: decouple "--end-of-options" and "--"
bisect: always clean on reset
config: handle NULL value when parsing non-bools
setup: handle NULL value when parsing extensions
trace2: handle NULL values in tr2_sysenv config callback
help: handle NULL value for alias.* config
submodule: handle NULL value when parsing submodule.*.branch
trailer: handle NULL value when parsing trailer-specific config
fsck: handle NULL value when parsing message config
config: reject bogus values for core.checkstat
git_xmerge_config(): prefer error() to die()
imap-send: don't use git_die_config() inside callback
config: use config_error_nonbool() instead of custom messages
diff: give more detailed messages for bogus diff.* config
config: use git_config_string() for core.checkRoundTripEncoding
push: drop confusing configset/callback redundancy
gpg-interface: drop pointless config_error_nonbool() checks
sequencer: simplify away extra git_config_string() call
mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair()
t5100: make rfc822 comment test more careful
mailinfo: avoid recursion when unquoting From headers
t1006: add tests for %(objectsize:disk)
commit-graph: retain commit slab when closing NULL commit_graph
index-pack: spawn threads atomically
transport-helper: re-examine object dir after fetching
diff: handle NULL meta-info when spawning external diff
Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN
Makefile: remove UNIT_TEST_BIN directory with "make clean"
t/Makefile: get UNIT_TESTS list from C sources
trailer: fix comment/cut-line regression with opts->no_divider
Jiang Xin (14):
t5574: test porcelain output of atomic fetch
fetch: no redundant error message for atomic fetch
test-pkt-line: add option parser for unpack-sideband
pkt-line: memorize sideband fragment in reader
pkt-line: do not chomp newlines for sideband messages
transport-helper: no connection restriction in connect_helper
remote-curl: supports git-upload-archive service
transport-helper: protocol v2 supports upload-archive
http-backend: new rpc-service for git-upload-archive
transport-helper: call do_take_over() in connect_helper
transport-helper: call do_take_over() in process_connect
diff: mark param1 and param2 as placeholders
l10n: ci: remove unused param for add-pr-comment@v2
l10n: ci: disable cache for setup-go to suppress warnings
Joanna Wang (2):
attr: enable attr pathspec magic for git-add and git-stash
attr: add builtin objectmode values support
Johannes Schindelin (15):
artifacts-tar: when including `.dll` files, don't forget the unit-tests
cmake: fix typo in variable name
cmake: also build unit tests
cmake: use test names instead of full paths
unit-tests: do not mistake `.pdb` files for being executable
cmake: handle also unit tests
unit-tests: do show relative file paths
ci: avoid running the test suite _twice_
packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration
trace2: redact passwords from https:// URLs by default
win32: special-case `ENOSPC` when writing to a pipe
Always check the return value of `repo_read_object_file()`
l10n: bump Actions versions in l10n.yml
ci: bump remaining outdated Actions versions
ci(linux32): add a note about Actions that must not be updated
John Cai (15):
t3210: move to t0601
remove REFFILES prerequisite for some tests in t1405 and t2017
t1414: convert test to use Git commands instead of writing refs manually
t1404: move reffiles specific tests to t0600
t1405: move reffiles specific tests to t0601
t1406: move reffiles specific tests to t0600
t1410: move reffiles specific tests to t0600
t1415: move reffiles specific tests to t0601
t1503: move reffiles specific tests to t0600
t3903: make drop stash test ref backend agnostic
t4202: move reffiles specific tests to t0600
t5312: move reffiles specific tests to t0601
reftable: honor core.fsync
index-pack: test and document --strict=<msg-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
Jordi Mas (1):
l10n: Update Catalan translation
Josh Brobst (1):
builtin/reflog.c: fix dry-run option short name
Josh Soref (13):
doc: update links to current pages
doc: switch links to https
doc: update links for andre-simon.de
doc: refer to internet archive
CodingGuidelines: move period inside parentheses
CodingGuidelines: write punctuation marks
SubmittingPatches: drop ref to "What's in git.git"
SubmittingPatches: discourage new trailers
SubmittingPatches: update extra tags list
SubmittingPatches: provide tag naming advice
SubmittingPatches: clarify GitHub visual
SubmittingPatches: clarify GitHub artifact format
SubmittingPatches: hyphenate non-ASCII
Josh Steadmon (4):
unit tests: add a project plan document
ci: run unit tests in CI
fuzz: fix fuzz test build rules
ci: build and run minimal fuzzers in GitHub CI
Julian Prein (1):
hooks--pre-commit: detect non-ASCII when renaming
Junio C Hamano (57):
cache: add fake_lstat()
diff-lib: fix check_removed() when fsmonitor is active
checkout: refactor die_if_checked_out() caller
orphan/unborn: add to the glossary and use them consistently
orphan/unborn: fix use of 'orphan' in end-user facing messages
revision: parse integer arguments to --max-count, --skip, etc., more carefully
Start the 2.44 cycle
checkout: forbid "-B <branch>" from touching a branch used elsewhere
git.txt: HEAD is not that special
git-bisect.txt: BISECT_HEAD is not that special
refs.h: HEAD is not that special
docs: AUTO_MERGE is not that special
docs: MERGE_AUTOSTASH is not that special
doc: format.notes specify a ref under refs/notes/ hierarchy
The second batch
remote.h: retire CAS_OPT_NAME
The third batch
archive: "--list" does not take further options
sparse-checkout: use default patterns for 'set' only !stdin
The fourth batch
The fifth batch
The sixth batch
messages: mark some strings with "up-to-date" not to touch
The seventh batch
The eighth batch
The ninth batch
Docs: majordomo@vger.kernel.org has been decomissioned
CoC: whitespace fix
ls-files: avoid the verb "deprecate" for individual options
The tenth batch
builtin/worktree: comment style fixes
merge-ort.c: comment style fix
reftable/pq_test: comment style fix
The eleventh batch
t0091: allow test in a repository without tags
The twelfth batch
Makefile: reduce repetitive library paths
Makefile: simplify output of the libpath_template
The thirteenth batch
GitHub Actions: update to checkout@v4
GitHub Actions: update to github-script@v7
t/Makefile: say the default target upfront
The fourteenth batch
tag: fix sign_buffer() call to create a signed tag
bisect: document "terms" subcommand more fully
bisect: document command line arguments for "bisect start"
ssh signing: signal an error with a negative return value
The fifteenth batch
Git 2.43.1
Git 2.44-rc0
unit-tests: do show relative file paths on non-Windows, too
A few more topics before -rc1
write-or-die: fix the polarity of GIT_FLUSH environment variable
A few more fixes before -rc1
Git 2.43.2
Hopefully the last batch of fixes before 2.44 final
Git 2.44-rc2
Justin Tobler (2):
t1401: remove lockfile creation
t5541: remove lockfile creation
Kristoffer Haugsbakk (5):
config: format newlines
config: rename global config function
config: factor out global config file retrieval
maintenance: use XDG config if it exists
config: add back code comment
Kyle Lippincott (1):
setup: allow cwd=.git w/ bareRepository=explicit
Linus Arver (4):
commit: ignore_non_trailer computes number of bytes to ignore
trailer: find the end of the log message
trailer: use offsets for trailer_start/trailer_end
strvec: use correct member name in comments
M Hickford (1):
credential/wincred: store oauth_refresh_token
Maarten van der Schrieck (1):
Documentation: fix statement about rebase.instructionFormat
Marcel Krause (1):
doc: make the gitfile syntax easier to discover
Marcelo Roberto Jimenez (1):
gitweb: die when a configuration file cannot be read
Michael Lohmann (2):
Documentation/git-merge.txt: fix reference to synopsis
Documentation/git-merge.txt: use backticks for command wrapping
Nikolay Borisov (1):
rebase: fix documentation about used shell in -x
Nikolay Edigaryev (1):
rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer
Patrick Steinhardt (139):
t: allow skipping expected object ID in `ref-store update-ref`
t: convert tests to not write references via the filesystem
t: convert tests to not access symrefs via the filesystem
t: convert tests to not access reflog via the filesystem
t1450: convert tests to remove worktrees via git-worktree(1)
t4207: delete replace references via git-update-ref(1)
t7300: assert exact states of repo
t7900: assert the absence of refs via git-for-each-ref(1)
t: mark several tests that assume the files backend with REFFILES
ci: reorder definitions for grouping functions
ci: make grouping setup more generic
ci: group installation of Docker dependencies
ci: split out logic to set up failed test artifacts
ci: unify setup of some environment variables
ci: squelch warnings when testing with unusable Git repo
ci: install test dependencies for linux-musl
ci: add support for GitLab CI
t/lib-httpd: dynamically detect httpd and modules path
t/lib-httpd: stop using legacy crypt(3) for authentication
t9164: fix inability to find basename(1) in Subversion hooks
global: convert trivial usages of `test <expr> -a/-o <expr>`
contrib/subtree: stop using `-o` to test for number of args
contrib/subtree: convert subtree type check to use case statement
Makefile: stop using `test -o` when unlinking duplicate executables
t5510: ensure that the packed-refs file needs locking
refs/files: use transactions to delete references
refs: deduplicate code to delete references
refs: remove `delete_refs` callback from backends
commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default
t0410: mark tests to require the reffiles backend
t1400: split up generic reflog tests from the reffile-specific ones
t1401: stop treating FETCH_HEAD as real reference
t1410: use test-tool to create empty reflog
t1417: make `reflog --updateref` tests backend agnostic
t3310: stop checking for reference existence via `test -f`
t4013: simplify magic parsing and drop "failure"
t5401: speed up creation of many branches
t5551: stop writing packed-refs directly
t6301: write invalid object ID via `test-tool ref-store`
reftable: wrap EXPECT macros in do/while
reftable: handle interrupted reads
reftable: handle interrupted writes
reftable/stack: verify that `reftable_stack_add()` uses auto-compaction
reftable/stack: perform auto-compaction with transactional interface
reftable/stack: reuse buffers when reloading stack
reftable/stack: fix stale lock when dying
reftable/stack: fix use of unseeded randomness
reftable/merged: reuse buffer to compute record keys
reftable/block: introduce macro to initialize `struct block_iter`
reftable/block: reuse buffer to compute record keys
setup: extract function to create the refdb
setup: allow skipping creation of the refdb
remote-curl: rediscover repository when fetching refs
builtin/clone: fix bundle URIs with mismatching object formats
builtin/clone: set up sparse checkout later
builtin/clone: skip reading HEAD when retrieving remote
builtin/clone: create the refdb with the correct object format
wt-status: read HEAD and ORIG_HEAD via the refdb
refs: propagate errno when reading special refs fails
refs: complete list of special refs
bisect: consistently write BISECT_EXPECTED_REV via the refdb
tests: adjust whitespace in chainlint expectations
t: introduce DEFAULT_REPO_FORMAT prereq
worktree: skip reading HEAD when repairing worktrees
refs: refactor logic to look up storage backends
setup: start tracking ref storage format
setup: set repository's formats on init
setup: introduce "extensions.refStorage" extension
setup: introduce GIT_DEFAULT_REF_FORMAT envvar
t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar
builtin/rev-parse: introduce `--show-ref-format` flag
builtin/init: introduce `--ref-format=` value flag
builtin/clone: introduce `--ref-format=` value flag
t9500: write "extensions.refstorage" into config
reftable/stack: do not overwrite errors when compacting
reftable/stack: do not auto-compact twice in `reftable_stack_add()`
reftable/writer: fix index corruption when writing multiple indices
reftable/record: constify some parts of the interface
reftable/record: store "val1" hashes as static arrays
reftable/record: store "val2" hashes as static arrays
reftable/merged: really reuse buffers to compute record keys
reftable/merged: transfer ownership of records when iterating
git-prompt: stop manually parsing HEAD with unknown ref formats
ci: add job performing static analysis on GitLab CI
refs: prepare `refs_init_db()` for initializing worktree refs
setup: move creation of "refs/" into the files backend
refs/files: skip creation of "refs/{heads,tags}" for worktrees
builtin/worktree: move setup of commondir file earlier
worktree: expose interface to look up worktree by name
builtin/worktree: create refdb via ref backend
reftable/stack: refactor stack reloading to have common exit path
reftable/stack: refactor reloading to use file descriptor
reftable/stack: use stat info to avoid re-reading stack list
reftable/blocksource: refactor code to match our coding style
reftable/blocksource: use mmap to read tables
git-p4: stop reaching into the refdb
commit-graph: fix memory leak when not writing graph
completion: discover repo path in `__git_pseudoref_exists ()`
t9902: verify that completion does not print anything
completion: improve existence check for pseudo-refs
completion: silence pseudoref existence check
completion: treat dangling symrefs as existing pseudorefs
t7527: decrease likelihood of racing with fsmonitor daemon
Makefile: detect new Homebrew location for ARM-based Macs
ci: handle TEST_OUTPUT_DIRECTORY when printing test failures
ci: make p4 setup on macOS more robust
ci: add macOS jobs to GitLab CI
reftable/stack: unconditionally reload stack after commit
reftable/stack: fix race in up-to-date check
sequencer: clean up pseudo refs with REF_NO_DEREF
sequencer: delete REBASE_HEAD in correct repo when picking commits
refs: convert AUTO_MERGE to become a normal pseudo-ref
sequencer: introduce functions to handle autostashes via refs
refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref
refs: redefine special refs
Documentation: add "special refs" to the glossary
reftable/stack: adjust permissions of compacted tables
t1300: make tests more robust with non-default ref backends
t1301: mark test for `core.sharedRepository` as reffiles specific
t1302: make tests more robust with new extensions
t1419: mark test suite as files-backend specific
t5526: break test submodule differently
t: mark tests regarding git-pack-refs(1) to be backend specific
reftable/stack: fsync "tables.list" during compaction
reftable/reader: be more careful about errors in indexed seeks
reftable/writer: use correct type to iterate through index entries
reftable/writer: simplify writing index records
reftable/writer: fix writing multi-level indices
reftable: document reading and writing indices
builtin/stash: report failure to write to index
reftable: introduce macros to grow arrays
reftable: introduce macros to allocate arrays
reftable/stack: fix parameter validation when compacting range
reftable/stack: index segments with `size_t`
reftable/stack: use `size_t` to track stack slices during compaction
reftable/stack: use `size_t` to track stack length
reftable/merged: refactor seeking of records
reftable/merged: refactor initialization of iterators
reftable/record: improve semantics when initializing records
Peter Krefting (1):
l10n: sv.po: Update Swedish translation
Philippe Blain (11):
completion: complete missing rev-list options
completion: complete --patch-with-raw
completion: complete --encoding
completion: complete missing 'git log' options
ci(github): also skip logs of broken test cases
imap-send: add missing "strbuf.h" include under NO_CURL
.github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs
completion: add space after config variable names also in Bash 3
completion: complete 'submodule.*' config variables
completion: add and use __git_compute_first_level_config_vars_for_section
completion: add and use __git_compute_second_level_config_vars_for_section
Phillip Wood (4):
unit tests: add TAP unit test framework
show-ref --verify: accept pseudorefs
t1400: use show-ref to check pseudorefs
prune: mark rebase autostash and orig-head as reachable
Ralf Thielow (1):
l10n: Update German translation
René Scharfe (21):
column: release strbuf and string_list after use
i18n: factorize even more 'incompatible options' messages
push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror
repack: use die_for_incompatible_opt3() for -A/-k/--cruft
revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs
revision, rev-parse: factorize incompatibility messages about - -exclude-hidden
clean: factorize incompatibility message
worktree: standardize incompatibility messages
worktree: simplify incompatibility message for --orphan and commit-ish
show-ref: use die_for_incompatible_opt3()
t6300: avoid hard-coding object sizes
git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool
rebase: use strvec_pushf() for format-patch revisions
fast-import: use mem_pool_calloc()
mem-pool: fix big allocations
mem-pool: simplify alignment calculation
t1006: prefer shell loop to awk for packed object sizes
parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: simplify positivation handling
receive-pack: use find_commit_header() in check_cert_push_options()
receive-pack: use find_commit_header() in check_nonce()
Rubén Justo (10):
status: fix branch shown when not only bisecting
branch: clarify <oldbranch> term
advice: sort the advice related lists
advice: fix an unexpected leading space
branch: make the advice to force-deleting a conditional one
advice: allow disabling the automatic hint in advise_if_enabled()
t5332: mark as leak-free
t6113: mark as leak-free
test-lib: check for TEST_PASSES_SANITIZE_LEAK
t0080: mark as leak-free
Sam Delmerico (1):
push: region_leave trace for negotiate_using_fetch
Shreyansh Paliwal (1):
test-lib-functions.sh: fix test_grep fail message wording
Simon Ser (1):
format-patch: fix ignored encode_email_headers for cover letter
Stan Hu (2):
completion: refactor existence checks for pseudorefs
completion: support pseudoref existence checks for reftables
Sören Krecker (1):
mingw: give more details about unsafe directory's ownership
Tamino Bauknecht (1):
fetch: add new config option fetch.all
Taylor Blau (29):
pack-objects: free packing_data in more places
pack-bitmap-write: deep-clear the `bb_commit` slab
pack-bitmap: plug leak in find_objects()
midx: factor out `fill_pack_info()`
midx: implement `BTMP` chunk
midx: implement `midx_locate_pack()`
pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions
ewah: implement `bitmap_is_empty()`
pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature
pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`
pack-objects: parameterize pack-reuse routines over a single pack
pack-objects: keep track of `pack_start` for each reuse pack
pack-objects: pass `bitmapped_pack`'s to pack-reuse functions
pack-objects: prepare `write_reused_pack()` for multi-pack reuse
pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse
pack-objects: include number of packs reused in output
git-compat-util.h: implement checked size_t to uint32_t conversion
midx: implement `midx_preferred_pack()`
pack-revindex: factor out `midx_key_to_pack_pos()` helper
pack-revindex: implement `midx_pair_to_pack_pos()`
pack-bitmap: prepare to mark objects from multiple packs for reuse
pack-objects: add tracing for various packfile metrics
t/test-lib-functions.sh: implement `test_trace2_data` helper
pack-objects: allow setting `pack.allowPackReuse` to "single"
pack-bitmap: enable reuse from all bitmapped packs
t/perf: add performance tests for multi-pack reuse
pack-bitmap: drop unused `reuse_objects`
t5332-multi-pack-reuse.sh: extract pack-objects helper functions
pack-objects: enable multi-pack reuse via `feature.experimental`
Teng Long (1):
l10n: zh_CN: for git 2.44 rounds
Todd Zullinger (3):
perl: bump the required Perl version to 5.8.1 from 5.8.0
send-email: avoid duplicate specification warnings
RelNotes: minor typo fixes in 2.44.0 draft
Toon Claes (1):
builtin/show-ref: treat directory as non-existing in --exists
Vegard Nossum (1):
sequencer: unset GIT_CHERRY_PICK_HELP for 'exec' commands
Victoria Dye (15):
ref-filter.c: really don't sort when using --no-sort
ref-filter.h: add max_count and omit_empty to ref_format
ref-filter.h: move contains caches into filter
ref-filter.h: add functions for filter/format & format-only
ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()'
ref-filter.c: refactor to create common helper functions
ref-filter.c: filter & format refs in the same callback
for-each-ref: clean up documentation of --format
ref-filter.c: use peeled tag for '*' format fields
t/perf: add perf tests for for-each-ref
submodule-config.h: move check_submodule_url
test-submodule: remove command line handling for check-name
t7450: test submodule urls
submodule-config.c: strengthen URL fsck check
ref-filter.c: sort formatted dates by byte value
Yi-Jyun Pan (1):
l10n: zh_TW: Git 2.44
Zach FettersMoore (1):
subtree: fix split processing with multiple subtrees present
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.44.0-rc1
@ 2024-02-14 17:04 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-14 17:04 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.44.0-rc1 is now available for testing at
the usual places. It is comprised of 473 non-merge commits since
v2.43.0, contributed by 72 people, 33 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.44.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.43.0 are as follows.
Welcome to the Git development community!
Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo
Kerin, Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam
Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang, Josh
Brobst, Julian Prein, Justin Tobler, Kyle Lippincott, Maarten van
der Schrieck, Marcel Krause, Marcelo Roberto Jimenez, Michael
Lohmann, moti sd, Nikolay Borisov, Nikolay Edigaryev, Ondrej
Pohorelsky, Sam Delmerico, Sergey Kosukhin, Shreyansh Paliwal,
Sören Krecker, Stan Hu, Tamino Bauknecht, Wilfred Hughes,
Willem Verstraeten, Xiaoguang WANG, and Zach FettersMoore.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Andy Koppe, Arthur Chan, Calvin Wan, Carlo Marcelo Arenas Belón,
Christian Couder, Dragan Simic, Elijah Newren, Eric Sunshine,
Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan
Tan, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio C Hamano,
Konstantin Ryabitsev, Kristoffer Haugsbakk, Linus Arver,
Matthias Aßhauer, M Hickford, Oswald Buddenhagen, Patrick
Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker,
René Scharfe, Rubén Justo, Simon Ser, SZEDER Gábor, Taylor
Blau, Todd Zullinger, Toon Claes, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.44 Release Notes (draft)
===============================
Backward Compatibility Notes
* "git chekcout -B <branch>" used to allow switching to a branch that
is in use on another worktree, but this was by mistake. The users
need to use "--ignore-other-worktrees" option.
UI, Workflows & Features
* "git add" and "git stash" learned to support the ":(attr:...)"
magic pathspec.
* "git rebase --autosquash" is now enabled for non-interactive rebase,
but it is still incompatible with the apply backend.
* Introduce "git replay", a tool meant on the server side without
working tree to recreate a history.
* "git merge-file" learned to take the "--diff-algorithm" option to
use algorithm different from the default "myers" diff.
* Command line completion (in contrib/) learned to complete path
arguments to the "add/set" subcommands of "git sparse-checkout"
better.
* "git checkout -B <branch> [<start-point>]" allowed a branch that is
in use in another worktree to be updated and checked out, which
might be a bit unexpected. The rule has been tightened, which is a
breaking change. "--ignore-other-worktrees" option is required to
unbreak you, if you are used to the current behaviour that "-B"
overrides the safety.
* The builtin_objectmode attribute is populated for each path
without adding anything in .gitattributes files, which would be
useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
to limit to executables.
* "git fetch" learned to pay attention to "fetch.all" configuration
variable, which pretends as if "--all" was passed from the command
line when no remote parameter was given.
* In addition to (rather cryptic) Security Identifiers, show username
and domain in the error message when we barf on mismatch between
the Git directory and the current user on Windows.
* The error message given when "git branch -d branch" fails due to
commits unique to the branch has been split into an error and a new
conditional advice message.
* When given an existing but unreadable file as a configuration file,
gitweb behaved as if the file did not exist at all, but now it
errors out. This is a change that may break backward compatibility.
* When $HOME/.gitignore is missing but XDG config file available, we
should write into the latter, not former. "git gc" and "git
maintenance" wrote into a wrong "global config" file, which have
been corrected.
* Define "special ref" as a very narrow set that consists of
FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to
be classified as such are actually just pseudorefs.
* All conditional "advice" messages show how to turn them off, which
becomes repetitive. Setting advice.* configuration explicitly on
now omits the instruction part.
* The "disable repository discovery of a bare repository" check,
triggered by setting safe.bareRepository configuration variable to
'explicit', has been loosened to exclude the ".git/" directory inside
a non-bare repository from the check. So you can do "cd .git &&
git cmd" to run a Git command that works on a bare repository without
explicitly specifying $GIT_DIR now.
* The completion script (in contrib/) learned more options that can
be used with "git log".
* The labels on conflict markers for the common ancestor, our version,
and the other version are available to custom 3-way merge driver
via %S, %X, and %Y placeholders.
* The write codepath for the reftable data learned to honor
core.fsync configuration.
* The "--fsck-objects" option of "git index-pack" now can take the
optional parameter to tweak severity of different fsck errors.
* The wincred credential backend has been taught to support oauth
refresh token the same way as credential-cache and
credential-libsecret backends.
* Command line completion support (in contrib/) has been
updated for "git bisect".
* "git branch" and friends learned to use the formatted text as
sorting key, not the underlying timestamp value, when the --sort
option is used with author or committer timestamp with a format
specifier (e.g., "--sort=creatordate:format:%H:%M:%S").
Performance, Internal Implementation, Development Support etc.
* Process to add some form of low-level unit tests has started.
* Add support for GitLab CI.
* "git for-each-ref --no-sort" still sorted the refs alphabetically
which paid non-trivial cost. It has been redefined to show output
in an unspecified order, to allow certain optimizations to take
advantage of.
* Simplify API implementation to delete references by eliminating
duplication.
* Subject approxidate() and show_date() machinery to OSS-Fuzz.
* A new helper to let us pretend that we called lstat() when we know
our cache_entry is up-to-date via fsmonitor.
* The optimization based on fsmonitor in the "diff --cached"
codepath is resurrected with the "fake-lstat" introduced earlier.
* Test balloon to use C99 "bool" type from <stdbool.h> has been
added.
* "git clone" has been prepared to allow cloning a repository with
non-default hash function into a repository that uses the reftable
backend.
* Streaming spans of packfile data used to be done only from a
single, primary, pack in a repository with multiple packfiles. It
has been extended to allow reuse from other packfiles, too.
* Comment updates to help developers not to attempt to modify
messages from plumbing commands that must stay constant.
It might make sense to reassess the plumbing needs every few years,
but that should be done as a separate effort.
* Move test-ctype helper to the unit-test framework.
* Instead of manually creating refs/ hierarchy on disk upon a
creation of a secondary worktree, which is only usable via the
files backend, use the refs API to populate it.
* CI for GitLab learned to drive macOS jobs.
* A few tests to "git commit -o <pathspec>" and "git commit -i
<pathspec>" has been added.
* Tests on ref API are moved around to prepare for reftable.
* The Makefile often had to say "-L$(path) -R$(path)" that repeats
the path to the same library directory for link time and runtime.
A Makefile template is used to reduce such repetition.
* The priority queue test has been migrated to the unit testing
framework.
* Setting `feature.experimental` opts the user into multi-pack reuse
experiment
* Squelch node.js 16 deprecation warnings from GitHub Actions CI
by updating actions/github-script and actions/checkout that use
node.js 20.
* The mechanism to report the filename in the source code, used by
the unit-test machinery, assumed that the compiler expanded __FILE__
to the path to the source given to the $(CC), but some compilers
give full path, breaking the output. This has been corrected.
Fixes since v2.43
-----------------
* The way CI testing used "prove" could lead to running the test
suite twice needlessly, which has been corrected.
* Update ref-related tests.
* "git format-patch --encode-email-headers" ignored the option when
preparing the cover letter, which has been corrected.
* Newer versions of Getopt::Long started giving warnings against our
(ab)use of it in "git send-email". Bump the minimum version
requirement for Perl to 5.8.1 (from September 2002) to allow
simplifying our implementation.
* Earlier we stopped relying on commit-graph that (still) records
information about commits that are lost from the object store,
which has negative performance implications. The default has been
flipped to disable this pessimization.
* Stale URLs have been updated to their current counterparts (or
archive.org) and HTTP links are replaced with working HTTPS links.
* trace2 streams used to record the URLs that potentially embed
authentication material, which has been corrected.
* The sample pre-commit hook that tries to catch introduction of new
paths that use potentially non-portable characters did not notice
an existing path getting renamed to such a problematic path, when
rename detection was enabled.
* The command line parser for the "log" family of commands was too
loose when parsing certain numbers, e.g., silently ignoring the
extra 'q' in "git log -n 1q" without complaining, which has been
tightened up.
* "git $cmd --end-of-options --rev -- --path" for some $cmd failed
to interpret "--rev" as a rev, and "--path" as a path. This was
fixed for many programs like "reset" and "checkout".
* "git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
* Some codepaths did not correctly parse configuration variables
specified with valueless "true", which has been corrected.
* Code clean-up for sanity checking of command line options for "git
show-ref".
* The code to parse the From e-mail header has been updated to avoid
recursion.
* "git fetch --atomic" issued an unnecessary empty error message,
which has been corrected.
* Command line completion script (in contrib/) learned to work better
with the reftable backend.
* "git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
* "git archive --list extra garbage" silently ignored excess command
line parameters, which has been corrected.
* "git sparse-checkout set" added default patterns even when the
patterns are being fed from the standard input, which has been
corrected.
* "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
not handle "--end-of-options" correctly after a recent update.
* Unlike other environment variables that took the usual
true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
which has been corrected.
* Clearing in-core repository (happens during e.g., "git fetch
--recurse-submodules" with commit graph enabled) made in-core
commit object in an inconsistent state by discarding the necessary
data from commit-graph too early, which has been corrected.
* Update to a new feature recently added, "git show-ref --exists".
* oss-fuzz tests are built and run in CI.
(merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
* Rename detection logic ignored the final line of a file if it is an
incomplete line.
* GitHub CI update.
(merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
* "git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.
* "git archive --remote=<remote>" learned to talk over the smart
http (aka stateless) transport.
(merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
* Fetching via protocol v0 over Smart HTTP transport sometimes failed
to correctly auto-follow tags.
(merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
* The documentation for the --exclude-per-directory option marked it
as deprecated, which confused readers into thinking there may be a
plan to remove it in the future, which was not our intention.
(merge 0009542cab jc/ls-files-doc-update later to maint).
* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.
* Cirrus CI jobs started breaking because we specified version of
FreeBSD that is no longer available, which has been corrected.
(merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
* A caller called index_file_exists() that takes a string expressed
as <ptr, length> with a wrong length, which has been corrected.
(merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).
* A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.
* "git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.
* "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD",
which has been corrected.
* Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.
* Other code cleanup, docfix, build fix, etc.
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
(merge 3cb4384683 jc/t0091-with-unknown-git later to maint).
----------------------------------------------------------------
Changes since v2.43.0 are as follows:
Achu Luma (2):
unit-tests: rewrite t/helper/test-ctype.c as a unit test
t2400: avoid losing exit status to pipes
Andy Koppe (3):
rebase: fully ignore rebase.autoSquash without -i
rebase: support --autosquash without -i
rebase: rewrite --(no-)autosquash documentation
Antonin Delpeuch (2):
merge-file: add --diff-algorithm option
merge-ll: expose revision names to custom drivers
Arthur Chan (1):
fuzz: add new oss-fuzz fuzzer for date.c / date.h
Britton Leo Kerin (9):
doc: use singular form of repeatable path arg
doc: refer to pathspec instead of path
completion: tests: always use 'master' for default initial branch name
completion: bisect: complete bad, new, old, and help subcommands
completion: bisect: complete custom terms and related options
completion: bisect: complete missing --first-parent and - -no-checkout options
completion: new function __git_complete_log_opts
completion: bisect: complete log opts for visualize subcommand
completion: bisect: recognize but do not complete view subcommand
Carlo Marcelo Arenas Belón (1):
ci: update FreeBSD cirrus job
Chandra Pratap (4):
sideband.c: remove redundant 'NEEDSWORK' tag
write-or-die: make GIT_FLUSH a Boolean environment variable
t4129: prevent loss of exit code due to the use of pipes
tests: move t0009-prio-queue.sh to the new unit testing framework
Elijah Newren (32):
t6429: remove switching aspects of fast-rebase
replay: introduce new builtin
replay: start using parse_options API
replay: die() instead of failing assert()
replay: introduce pick_regular_commit()
replay: change rev walking options
replay: add an important FIXME comment about gpg signing
replay: remove progress and info output
replay: remove HEAD related sanity check
replay: make it a minimal server side command
replay: use standard revision ranges
replay: add --advance or 'cherry-pick' mode
replay: add --contained to rebase contained branches
replay: stop assuming replayed branches do not diverge
completion: squelch stray errors in sparse-checkout completion
completion: fix logic for determining whether cone mode is active
completion: avoid misleading completions in cone mode
completion: avoid user confusion in non-cone mode
treewide: remove unnecessary includes from header files
treewide: remove unnecessary includes in source files
archive.h: remove unnecessary include
blame.h: remove unnecessary includes
fsmonitor--daemon.h: remove unnecessary includes
http.h: remove unnecessary include
line-log.h: remove unnecessary include
pkt-line.h: remove unnecessary include
submodule-config.h: remove unnecessary include
trace2/tr2_tls.h: remove unnecessary include
treewide: add direct includes currently only pulled in transitively
treewide: remove unnecessary includes in source files
sparse-checkout: be consistent with end of options markers
diffcore-delta: avoid ignoring final 'line' of file
Eric Sunshine (1):
git-add.txt: add missing short option -A to synopsis
Ghanshyam Thakkar (4):
t7501: add tests for --include and --only
t7501: add tests for --amend --signoff
t0024: avoid losing exit status to pipes
t0024: style fix
Illia Bobyr (1):
rebase: clarify --reschedule-failed-exec default
James Touton (1):
git-p4: use raw string literals for regular expressions
Jean-Noël Avila (2):
doc: enforce dashes in placeholders
doc: enforce placeholders in documentation
Jeff Hostetler (4):
trace2: fix signature of trace2_def_param() macro
t0211: test URL redacting in PERF format
t0212: test URL redacting in EVENT format
sparse-index: pass string length to index_file_exists()
Jeff King (38):
commit-graph: handle overflow in chunk_size checks
midx: check consistency of fanout table
commit-graph: drop redundant call to "lite" verification
commit-graph: clarify missing-chunk error messages
commit-graph: abort as soon as we see a bogus chunk
commit-graph: use fanout value for graph size
commit-graph: check order while reading fanout chunk
commit-graph: drop verify_commit_graph_lite()
commit-graph: mark chunk error messages for translation
parse-options: decouple "--end-of-options" and "--"
bisect: always clean on reset
config: handle NULL value when parsing non-bools
setup: handle NULL value when parsing extensions
trace2: handle NULL values in tr2_sysenv config callback
help: handle NULL value for alias.* config
submodule: handle NULL value when parsing submodule.*.branch
trailer: handle NULL value when parsing trailer-specific config
fsck: handle NULL value when parsing message config
config: reject bogus values for core.checkstat
git_xmerge_config(): prefer error() to die()
imap-send: don't use git_die_config() inside callback
config: use config_error_nonbool() instead of custom messages
diff: give more detailed messages for bogus diff.* config
config: use git_config_string() for core.checkRoundTripEncoding
push: drop confusing configset/callback redundancy
gpg-interface: drop pointless config_error_nonbool() checks
sequencer: simplify away extra git_config_string() call
mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair()
t5100: make rfc822 comment test more careful
mailinfo: avoid recursion when unquoting From headers
t1006: add tests for %(objectsize:disk)
commit-graph: retain commit slab when closing NULL commit_graph
index-pack: spawn threads atomically
transport-helper: re-examine object dir after fetching
diff: handle NULL meta-info when spawning external diff
Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN
Makefile: remove UNIT_TEST_BIN directory with "make clean"
t/Makefile: get UNIT_TESTS list from C sources
Jiang Xin (11):
t5574: test porcelain output of atomic fetch
fetch: no redundant error message for atomic fetch
test-pkt-line: add option parser for unpack-sideband
pkt-line: memorize sideband fragment in reader
pkt-line: do not chomp newlines for sideband messages
transport-helper: no connection restriction in connect_helper
remote-curl: supports git-upload-archive service
transport-helper: protocol v2 supports upload-archive
http-backend: new rpc-service for git-upload-archive
transport-helper: call do_take_over() in connect_helper
transport-helper: call do_take_over() in process_connect
Joanna Wang (2):
attr: enable attr pathspec magic for git-add and git-stash
attr: add builtin objectmode values support
Johannes Schindelin (13):
artifacts-tar: when including `.dll` files, don't forget the unit-tests
cmake: fix typo in variable name
cmake: also build unit tests
cmake: use test names instead of full paths
unit-tests: do not mistake `.pdb` files for being executable
cmake: handle also unit tests
unit-tests: do show relative file paths
ci: avoid running the test suite _twice_
packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration
trace2: redact passwords from https:// URLs by default
win32: special-case `ENOSPC` when writing to a pipe
ci: bump remaining outdated Actions versions
ci(linux32): add a note about Actions that must not be updated
John Cai (15):
t3210: move to t0601
remove REFFILES prerequisite for some tests in t1405 and t2017
t1414: convert test to use Git commands instead of writing refs manually
t1404: move reffiles specific tests to t0600
t1405: move reffiles specific tests to t0601
t1406: move reffiles specific tests to t0600
t1410: move reffiles specific tests to t0600
t1415: move reffiles specific tests to t0601
t1503: move reffiles specific tests to t0600
t3903: make drop stash test ref backend agnostic
t4202: move reffiles specific tests to t0600
t5312: move reffiles specific tests to t0601
reftable: honor core.fsync
index-pack: test and document --strict=<msg-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
Josh Brobst (1):
builtin/reflog.c: fix dry-run option short name
Josh Soref (13):
doc: update links to current pages
doc: switch links to https
doc: update links for andre-simon.de
doc: refer to internet archive
CodingGuidelines: move period inside parentheses
CodingGuidelines: write punctuation marks
SubmittingPatches: drop ref to "What's in git.git"
SubmittingPatches: discourage new trailers
SubmittingPatches: update extra tags list
SubmittingPatches: provide tag naming advice
SubmittingPatches: clarify GitHub visual
SubmittingPatches: clarify GitHub artifact format
SubmittingPatches: hyphenate non-ASCII
Josh Steadmon (4):
unit tests: add a project plan document
ci: run unit tests in CI
fuzz: fix fuzz test build rules
ci: build and run minimal fuzzers in GitHub CI
Julian Prein (1):
hooks--pre-commit: detect non-ASCII when renaming
Junio C Hamano (55):
cache: add fake_lstat()
diff-lib: fix check_removed() when fsmonitor is active
checkout: refactor die_if_checked_out() caller
orphan/unborn: add to the glossary and use them consistently
orphan/unborn: fix use of 'orphan' in end-user facing messages
revision: parse integer arguments to --max-count, --skip, etc., more carefully
Start the 2.44 cycle
checkout: forbid "-B <branch>" from touching a branch used elsewhere
git.txt: HEAD is not that special
git-bisect.txt: BISECT_HEAD is not that special
refs.h: HEAD is not that special
docs: AUTO_MERGE is not that special
docs: MERGE_AUTOSTASH is not that special
doc: format.notes specify a ref under refs/notes/ hierarchy
The second batch
remote.h: retire CAS_OPT_NAME
The third batch
archive: "--list" does not take further options
sparse-checkout: use default patterns for 'set' only !stdin
The fourth batch
The fifth batch
The sixth batch
messages: mark some strings with "up-to-date" not to touch
The seventh batch
The eighth batch
The ninth batch
Docs: majordomo@vger.kernel.org has been decomissioned
CoC: whitespace fix
ls-files: avoid the verb "deprecate" for individual options
The tenth batch
builtin/worktree: comment style fixes
merge-ort.c: comment style fix
reftable/pq_test: comment style fix
The eleventh batch
t0091: allow test in a repository without tags
The twelfth batch
Makefile: reduce repetitive library paths
Makefile: simplify output of the libpath_template
The thirteenth batch
GitHub Actions: update to checkout@v4
GitHub Actions: update to github-script@v7
t/Makefile: say the default target upfront
The fourteenth batch
tag: fix sign_buffer() call to create a signed tag
bisect: document "terms" subcommand more fully
bisect: document command line arguments for "bisect start"
ssh signing: signal an error with a negative return value
The fifteenth batch
Git 2.43.1
Git 2.44-rc0
unit-tests: do show relative file paths on non-Windows, too
A few more topics before -rc1
write-or-die: fix the polarity of GIT_FLUSH environment variable
A few more fixes before -rc1
Git 2.43.2
Justin Tobler (2):
t1401: remove lockfile creation
t5541: remove lockfile creation
Kristoffer Haugsbakk (5):
config: format newlines
config: rename global config function
config: factor out global config file retrieval
maintenance: use XDG config if it exists
config: add back code comment
Kyle Lippincott (1):
setup: allow cwd=.git w/ bareRepository=explicit
Linus Arver (4):
commit: ignore_non_trailer computes number of bytes to ignore
trailer: find the end of the log message
trailer: use offsets for trailer_start/trailer_end
strvec: use correct member name in comments
M Hickford (1):
credential/wincred: store oauth_refresh_token
Maarten van der Schrieck (1):
Documentation: fix statement about rebase.instructionFormat
Marcel Krause (1):
doc: make the gitfile syntax easier to discover
Marcelo Roberto Jimenez (1):
gitweb: die when a configuration file cannot be read
Michael Lohmann (2):
Documentation/git-merge.txt: fix reference to synopsis
Documentation/git-merge.txt: use backticks for command wrapping
Nikolay Borisov (1):
rebase: fix documentation about used shell in -x
Nikolay Edigaryev (1):
rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer
Patrick Steinhardt (139):
t: allow skipping expected object ID in `ref-store update-ref`
t: convert tests to not write references via the filesystem
t: convert tests to not access symrefs via the filesystem
t: convert tests to not access reflog via the filesystem
t1450: convert tests to remove worktrees via git-worktree(1)
t4207: delete replace references via git-update-ref(1)
t7300: assert exact states of repo
t7900: assert the absence of refs via git-for-each-ref(1)
t: mark several tests that assume the files backend with REFFILES
ci: reorder definitions for grouping functions
ci: make grouping setup more generic
ci: group installation of Docker dependencies
ci: split out logic to set up failed test artifacts
ci: unify setup of some environment variables
ci: squelch warnings when testing with unusable Git repo
ci: install test dependencies for linux-musl
ci: add support for GitLab CI
t/lib-httpd: dynamically detect httpd and modules path
t/lib-httpd: stop using legacy crypt(3) for authentication
t9164: fix inability to find basename(1) in Subversion hooks
global: convert trivial usages of `test <expr> -a/-o <expr>`
contrib/subtree: stop using `-o` to test for number of args
contrib/subtree: convert subtree type check to use case statement
Makefile: stop using `test -o` when unlinking duplicate executables
t5510: ensure that the packed-refs file needs locking
refs/files: use transactions to delete references
refs: deduplicate code to delete references
refs: remove `delete_refs` callback from backends
commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default
t0410: mark tests to require the reffiles backend
t1400: split up generic reflog tests from the reffile-specific ones
t1401: stop treating FETCH_HEAD as real reference
t1410: use test-tool to create empty reflog
t1417: make `reflog --updateref` tests backend agnostic
t3310: stop checking for reference existence via `test -f`
t4013: simplify magic parsing and drop "failure"
t5401: speed up creation of many branches
t5551: stop writing packed-refs directly
t6301: write invalid object ID via `test-tool ref-store`
reftable: wrap EXPECT macros in do/while
reftable: handle interrupted reads
reftable: handle interrupted writes
reftable/stack: verify that `reftable_stack_add()` uses auto-compaction
reftable/stack: perform auto-compaction with transactional interface
reftable/stack: reuse buffers when reloading stack
reftable/stack: fix stale lock when dying
reftable/stack: fix use of unseeded randomness
reftable/merged: reuse buffer to compute record keys
reftable/block: introduce macro to initialize `struct block_iter`
reftable/block: reuse buffer to compute record keys
setup: extract function to create the refdb
setup: allow skipping creation of the refdb
remote-curl: rediscover repository when fetching refs
builtin/clone: fix bundle URIs with mismatching object formats
builtin/clone: set up sparse checkout later
builtin/clone: skip reading HEAD when retrieving remote
builtin/clone: create the refdb with the correct object format
wt-status: read HEAD and ORIG_HEAD via the refdb
refs: propagate errno when reading special refs fails
refs: complete list of special refs
bisect: consistently write BISECT_EXPECTED_REV via the refdb
tests: adjust whitespace in chainlint expectations
t: introduce DEFAULT_REPO_FORMAT prereq
worktree: skip reading HEAD when repairing worktrees
refs: refactor logic to look up storage backends
setup: start tracking ref storage format
setup: set repository's formats on init
setup: introduce "extensions.refStorage" extension
setup: introduce GIT_DEFAULT_REF_FORMAT envvar
t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar
builtin/rev-parse: introduce `--show-ref-format` flag
builtin/init: introduce `--ref-format=` value flag
builtin/clone: introduce `--ref-format=` value flag
t9500: write "extensions.refstorage" into config
reftable/stack: do not overwrite errors when compacting
reftable/stack: do not auto-compact twice in `reftable_stack_add()`
reftable/writer: fix index corruption when writing multiple indices
reftable/record: constify some parts of the interface
reftable/record: store "val1" hashes as static arrays
reftable/record: store "val2" hashes as static arrays
reftable/merged: really reuse buffers to compute record keys
reftable/merged: transfer ownership of records when iterating
git-prompt: stop manually parsing HEAD with unknown ref formats
ci: add job performing static analysis on GitLab CI
refs: prepare `refs_init_db()` for initializing worktree refs
setup: move creation of "refs/" into the files backend
refs/files: skip creation of "refs/{heads,tags}" for worktrees
builtin/worktree: move setup of commondir file earlier
worktree: expose interface to look up worktree by name
builtin/worktree: create refdb via ref backend
reftable/stack: refactor stack reloading to have common exit path
reftable/stack: refactor reloading to use file descriptor
reftable/stack: use stat info to avoid re-reading stack list
reftable/blocksource: refactor code to match our coding style
reftable/blocksource: use mmap to read tables
git-p4: stop reaching into the refdb
commit-graph: fix memory leak when not writing graph
completion: discover repo path in `__git_pseudoref_exists ()`
t9902: verify that completion does not print anything
completion: improve existence check for pseudo-refs
completion: silence pseudoref existence check
completion: treat dangling symrefs as existing pseudorefs
t7527: decrease likelihood of racing with fsmonitor daemon
Makefile: detect new Homebrew location for ARM-based Macs
ci: handle TEST_OUTPUT_DIRECTORY when printing test failures
ci: make p4 setup on macOS more robust
ci: add macOS jobs to GitLab CI
reftable/stack: unconditionally reload stack after commit
reftable/stack: fix race in up-to-date check
sequencer: clean up pseudo refs with REF_NO_DEREF
sequencer: delete REBASE_HEAD in correct repo when picking commits
refs: convert AUTO_MERGE to become a normal pseudo-ref
sequencer: introduce functions to handle autostashes via refs
refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref
refs: redefine special refs
Documentation: add "special refs" to the glossary
reftable/stack: adjust permissions of compacted tables
t1300: make tests more robust with non-default ref backends
t1301: mark test for `core.sharedRepository` as reffiles specific
t1302: make tests more robust with new extensions
t1419: mark test suite as files-backend specific
t5526: break test submodule differently
t: mark tests regarding git-pack-refs(1) to be backend specific
reftable/stack: fsync "tables.list" during compaction
reftable/reader: be more careful about errors in indexed seeks
reftable/writer: use correct type to iterate through index entries
reftable/writer: simplify writing index records
reftable/writer: fix writing multi-level indices
reftable: document reading and writing indices
builtin/stash: report failure to write to index
reftable: introduce macros to grow arrays
reftable: introduce macros to allocate arrays
reftable/stack: fix parameter validation when compacting range
reftable/stack: index segments with `size_t`
reftable/stack: use `size_t` to track stack slices during compaction
reftable/stack: use `size_t` to track stack length
reftable/merged: refactor seeking of records
reftable/merged: refactor initialization of iterators
reftable/record: improve semantics when initializing records
Philippe Blain (7):
completion: complete missing rev-list options
completion: complete --patch-with-raw
completion: complete --encoding
completion: complete missing 'git log' options
ci(github): also skip logs of broken test cases
imap-send: add missing "strbuf.h" include under NO_CURL
.github/PULL_REQUEST_TEMPLATE.md: add a note about single-commit PRs
Phillip Wood (3):
unit tests: add TAP unit test framework
show-ref --verify: accept pseudorefs
t1400: use show-ref to check pseudorefs
René Scharfe (19):
column: release strbuf and string_list after use
i18n: factorize even more 'incompatible options' messages
push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror
repack: use die_for_incompatible_opt3() for -A/-k/--cruft
revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs
revision, rev-parse: factorize incompatibility messages about - -exclude-hidden
clean: factorize incompatibility message
worktree: standardize incompatibility messages
worktree: simplify incompatibility message for --orphan and commit-ish
show-ref: use die_for_incompatible_opt3()
t6300: avoid hard-coding object sizes
git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool
rebase: use strvec_pushf() for format-patch revisions
fast-import: use mem_pool_calloc()
mem-pool: fix big allocations
mem-pool: simplify alignment calculation
t1006: prefer shell loop to awk for packed object sizes
parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: simplify positivation handling
Rubén Justo (10):
status: fix branch shown when not only bisecting
branch: clarify <oldbranch> term
advice: sort the advice related lists
advice: fix an unexpected leading space
branch: make the advice to force-deleting a conditional one
advice: allow disabling the automatic hint in advise_if_enabled()
t5332: mark as leak-free
t6113: mark as leak-free
test-lib: check for TEST_PASSES_SANITIZE_LEAK
t0080: mark as leak-free
Sam Delmerico (1):
push: region_leave trace for negotiate_using_fetch
Shreyansh Paliwal (1):
test-lib-functions.sh: fix test_grep fail message wording
Simon Ser (1):
format-patch: fix ignored encode_email_headers for cover letter
Stan Hu (2):
completion: refactor existence checks for pseudorefs
completion: support pseudoref existence checks for reftables
Sören Krecker (1):
mingw: give more details about unsafe directory's ownership
Tamino Bauknecht (1):
fetch: add new config option fetch.all
Taylor Blau (29):
pack-objects: free packing_data in more places
pack-bitmap-write: deep-clear the `bb_commit` slab
pack-bitmap: plug leak in find_objects()
midx: factor out `fill_pack_info()`
midx: implement `BTMP` chunk
midx: implement `midx_locate_pack()`
pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions
ewah: implement `bitmap_is_empty()`
pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature
pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`
pack-objects: parameterize pack-reuse routines over a single pack
pack-objects: keep track of `pack_start` for each reuse pack
pack-objects: pass `bitmapped_pack`'s to pack-reuse functions
pack-objects: prepare `write_reused_pack()` for multi-pack reuse
pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse
pack-objects: include number of packs reused in output
git-compat-util.h: implement checked size_t to uint32_t conversion
midx: implement `midx_preferred_pack()`
pack-revindex: factor out `midx_key_to_pack_pos()` helper
pack-revindex: implement `midx_pair_to_pack_pos()`
pack-bitmap: prepare to mark objects from multiple packs for reuse
pack-objects: add tracing for various packfile metrics
t/test-lib-functions.sh: implement `test_trace2_data` helper
pack-objects: allow setting `pack.allowPackReuse` to "single"
pack-bitmap: enable reuse from all bitmapped packs
t/perf: add performance tests for multi-pack reuse
pack-bitmap: drop unused `reuse_objects`
t5332-multi-pack-reuse.sh: extract pack-objects helper functions
pack-objects: enable multi-pack reuse via `feature.experimental`
Todd Zullinger (2):
perl: bump the required Perl version to 5.8.1 from 5.8.0
send-email: avoid duplicate specification warnings
Toon Claes (1):
builtin/show-ref: treat directory as non-existing in --exists
Victoria Dye (15):
ref-filter.c: really don't sort when using --no-sort
ref-filter.h: add max_count and omit_empty to ref_format
ref-filter.h: move contains caches into filter
ref-filter.h: add functions for filter/format & format-only
ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()'
ref-filter.c: refactor to create common helper functions
ref-filter.c: filter & format refs in the same callback
for-each-ref: clean up documentation of --format
ref-filter.c: use peeled tag for '*' format fields
t/perf: add perf tests for for-each-ref
submodule-config.h: move check_submodule_url
test-submodule: remove command line handling for check-name
t7450: test submodule urls
submodule-config.c: strengthen URL fsck check
ref-filter.c: sort formatted dates by byte value
Zach FettersMoore (1):
subtree: fix split processing with multiple subtrees present
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.44.0-rc0
@ 2024-02-09 17:24 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-09 17:24 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.44.0-rc0 is now available for
testing at the usual places. It is comprised of 432 non-merge
commits since v2.43.0, contributed by 67 people, 30 of which are new
faces [*]. Unlike previous cycles, I plan only for one release
candidate in the middle of next week until the final release around
the 20th.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.44.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.43.0 are as follows.
Welcome to the Git development community!
Achu Luma, Antonin Delpeuch, Benjamin Lehmann, Britton Leo Kerin,
Carlos Andrés Ramírez Cataño, Chandra Pratap, Ghanshyam
Thakkar, Illia Bobyr, James Touton, Janik Haag, Joanna Wang,
Josh Brobst, Julian Prein, Justin Tobler, Kyle Lippincott,
Maarten van der Schrieck, Marcel Krause, Marcelo Roberto Jimenez,
Michael Lohmann, Nikolay Borisov, Nikolay Edigaryev, Ondrej
Pohorelsky, Sam Delmerico, Shreyansh Paliwal, Sören Krecker,
Stan Hu, Tamino Bauknecht, Wilfred Hughes, Willem Verstraeten,
and Zach FettersMoore.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Andy Koppe, Arthur Chan, Calvin Wan, Carlo Marcelo Arenas Belón,
Christian Couder, Dragan Simic, Elijah Newren, Eric Sunshine,
Glen Choo, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Jiang Xin, Johannes Schindelin, John Cai, Jonathan
Tan, Josh Soref, Josh Steadmon, Josip Sokcevic, Junio C Hamano,
Konstantin Ryabitsev, Kristoffer Haugsbakk, Linus Arver,
M Hickford, Oswald Buddenhagen, Patrick Steinhardt, Philippe
Blain, Phillip Wood, René Scharfe, Rubén Justo, Simon Ser,
SZEDER Gábor, Taylor Blau, Todd Zullinger, Toon Claes, and
Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.44 Release Notes (draft)
===============================
Backward Compatibility Notes
* "git chekcout -B <branch>" used to allow switching to a branch that
is in use on another worktree, but this was by mistake. The users
need to use "--ignore-other-worktrees" option.
UI, Workflows & Features
* "git add" and "git stash" learned to support the ":(attr:...)"
magic pathspec.
* "git rebase --autosquash" is now enabled for non-interactive rebase,
but it is still incompatible with the apply backend.
* Introduce "git replay", a tool meant on the server side without
working tree to recreate a history.
* "git merge-file" learned to take the "--diff-algorithm" option to
use algorithm different from the default "myers" diff.
* Command line completion (in contrib/) learned to complete path
arguments to the "add/set" subcommands of "git sparse-checkout"
better.
* "git checkout -B <branch> [<start-point>]" allowed a branch that is
in use in another worktree to be updated and checked out, which
might be a bit unexpected. The rule has been tightened, which is a
breaking change. "--ignore-other-worktrees" option is required to
unbreak you, if you are used to the current behaviour that "-B"
overrides the safety.
* The builtin_objectmode attribute is populated for each path
without adding anything in .gitattributes files, which would be
useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
to limit to executables.
* "git fetch" learned to pay attention to "fetch.all" configuration
variable, which pretends as if "--all" was passed from the command
line when no remote parameter was given.
* In addition to (rather cryptic) Security Identifiers, show username
and domain in the error message when we barf on mismatch between
the Git directory and the current user on Windows.
* The error message given when "git branch -d branch" fails due to
commits unique to the branch has been split into an error and a new
conditional advice message.
* When given an existing but unreadable file as a configuration file,
gitweb behaved as if the file did not exist at all, but now it
errors out. This is a change that may break backward compatibility.
* When $HOME/.gitignore is missing but XDG config file available, we
should write into the latter, not former. "git gc" and "git
maintenance" wrote into a wrong "global config" file, which have
been corrected.
* Define "special ref" as a very narrow set that consists of
FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to
be classified as such are actually just pseudorefs.
* All conditional "advice" messages show how to turn them off, which
becomes repetitive. Setting advice.* configuration explicitly on
now omits the instruction part.
* The "disable repository discovery of a bare repository" check,
triggered by setting safe.bareRepository configuration variable to
'explicit', has been loosened to exclude the ".git/" directory inside
a non-bare repository from the check. So you can do "cd .git &&
git cmd" to run a Git command that works on a bare repository without
explicitly specifying $GIT_DIR now.
* The completion script (in contrib/) learned more options that can
be used with "git log".
* The labels on conflict markers for the common ancestor, our version,
and the other version are available to custom 3-way merge driver
via %S, %X, and %Y placeholders.
* The write codepath for the reftable data learned to honor
core.fsync configuration.
* The "--fsck-objects" option of "git index-pack" now can take the
optional parameter to tweak severity of different fsck errors.
* The wincred credential backend has been taught to support oauth
refresh token the same way as credential-cache and
credential-libsecret backends.
Performance, Internal Implementation, Development Support etc.
* Process to add some form of low-level unit tests has started.
* Add support for GitLab CI.
* "git for-each-ref --no-sort" still sorted the refs alphabetically
which paid non-trivial cost. It has been redefined to show output
in an unspecified order, to allow certain optimizations to take
advantage of.
* Simplify API implementation to delete references by eliminating
duplication.
* Subject approxidate() and show_date() machinery to OSS-Fuzz.
* A new helper to let us pretend that we called lstat() when we know
our cache_entry is up-to-date via fsmonitor.
* The optimization based on fsmonitor in the "diff --cached"
codepath is resurrected with the "fake-lstat" introduced earlier.
* Test balloon to use C99 "bool" type from <stdbool.h> has been
added.
* "git clone" has been prepared to allow cloning a repository with
non-default hash function into a repository that uses the reftable
backend.
* Streaming spans of packfile data used to be done only from a
single, primary, pack in a repository with multiple packfiles. It
has been extended to allow reuse from other packfiles, too.
* Comment updates to help developers not to attempt to modify
messages from plumbing commands that must stay constant.
It might make sense to reassess the plumbing needs every few years,
but that should be done as a separate effort.
* Move test-ctype helper to the unit-test framework.
* Instead of manually creating refs/ hierarchy on disk upon a
creation of a secondary worktree, which is only usable via the
files backend, use the refs API to populate it.
* CI for GitLab learned to drive macOS jobs.
* A few tests to "git commit -o <pathspec>" and "git commit -i
<pathspec>" has been added.
* Tests on ref API are moved around to prepare for reftable.
* The Makefile often had to say "-L$(path) -R$(path)" that repeats
the path to the same library directory for link time and runtime.
A Makefile template is used to reduce such repetition.
* The priority queue test has been migrated to the unit testing
framework.
Fixes since v2.43
-----------------
* The way CI testing used "prove" could lead to running the test
suite twice needlessly, which has been corrected.
* Update ref-related tests.
* "git format-patch --encode-email-headers" ignored the option when
preparing the cover letter, which has been corrected.
* Newer versions of Getopt::Long started giving warnings against our
(ab)use of it in "git send-email". Bump the minimum version
requirement for Perl to 5.8.1 (from September 2002) to allow
simplifying our implementation.
* Earlier we stopped relying on commit-graph that (still) records
information about commits that are lost from the object store,
which has negative performance implications. The default has been
flipped to disable this pessimization.
* Stale URLs have been updated to their current counterparts (or
archive.org) and HTTP links are replaced with working HTTPS links.
* trace2 streams used to record the URLs that potentially embed
authentication material, which has been corrected.
* The sample pre-commit hook that tries to catch introduction of new
paths that use potentially non-portable characters did not notice
an existing path getting renamed to such a problematic path, when
rename detection was enabled.
* The command line parser for the "log" family of commands was too
loose when parsing certain numbers, e.g., silently ignoring the
extra 'q' in "git log -n 1q" without complaining, which has been
tightened up.
* "git $cmd --end-of-options --rev -- --path" for some $cmd failed
to interpret "--rev" as a rev, and "--path" as a path. This was
fixed for many programs like "reset" and "checkout".
* "git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
* Some codepaths did not correctly parse configuration variables
specified with valueless "true", which has been corrected.
* Code clean-up for sanity checking of command line options for "git
show-ref".
* The code to parse the From e-mail header has been updated to avoid
recursion.
* "git fetch --atomic" issued an unnecessary empty error message,
which has been corrected.
* Command line completion script (in contrib/) learned to work better
with the reftable backend.
* "git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
* "git archive --list extra garbage" silently ignored excess command
line parameters, which has been corrected.
* "git sparse-checkout set" added default patterns even when the
patterns are being fed from the standard input, which has been
corrected.
* "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
not handle "--end-of-options" correctly after a recent update.
* Unlike other environment variables that took the usual
true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
which has been corrected.
* Clearing in-core repository (happens during e.g., "git fetch
--recurse-submodules" with commit graph enabled) made in-core
commit object in an inconsistent state by discarding the necessary
data from commit-graph too early, which has been corrected.
* Update to a new feature recently added, "git show-ref --exists".
(merge 0aabeaa562 tc/show-ref-exists-fix later to maint).
* oss-fuzz tests are built and run in CI.
(merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
* Rename detection logic ignored the final line of a file if it is an
incomplete line.
(merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint).
* GitHub CI update.
(merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
* "git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.
(merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint).
* "git archive --remote=<remote>" learned to talk over the smart
http (aka stateless) transport.
(merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
* Fetching via protocol v0 over Smart HTTP transport sometimes failed
to correctly auto-follow tags.
(merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
* The documentation for the --exclude-per-directory option marked it
as deprecated, which confused readers into thinking there may be a
plan to remove it in the future, which was not our intention.
(merge 0009542cab jc/ls-files-doc-update later to maint).
* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
(merge 85a9a63c92 jk/diff-external-with-no-index later to maint).
* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.
(merge de65079d7b jc/comment-style-fixes later to maint).
* Cirrus CI jobs started breaking because we specified version of
FreeBSD that is no longer available, which has been corrected.
(merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
* A caller called index_file_exists() that takes a string expressed
as <ptr, length> with a wrong length, which has been corrected.
(merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
(merge 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint).
(merge f10b0989b8 la/strvec-comment-fix later to maint).
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
(merge f10031fadd nb/rebase-x-shell-docfix later to maint).
(merge af3d2c160f jc/majordomo-to-subspace later to maint).
(merge ee9895b0ff sd/negotiate-trace-fix later to maint).
(merge 976d0251ce jc/coc-whitespace-fix later to maint).
(merge 9023198280 jt/p4-spell-re-with-raw-string later to maint).
(merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint).
(merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc later to maint).
(merge 3cb4384683 jc/t0091-with-unknown-git later to maint).
----------------------------------------------------------------
Changes since v2.43.0 are as follows:
Achu Luma (2):
unit-tests: rewrite t/helper/test-ctype.c as a unit test
t2400: avoid losing exit status to pipes
Andy Koppe (3):
rebase: fully ignore rebase.autoSquash without -i
rebase: support --autosquash without -i
rebase: rewrite --(no-)autosquash documentation
Antonin Delpeuch (2):
merge-file: add --diff-algorithm option
merge-ll: expose revision names to custom drivers
Arthur Chan (1):
fuzz: add new oss-fuzz fuzzer for date.c / date.h
Britton Leo Kerin (2):
doc: use singular form of repeatable path arg
doc: refer to pathspec instead of path
Carlo Marcelo Arenas Belón (1):
ci: update FreeBSD cirrus job
Chandra Pratap (4):
sideband.c: remove redundant 'NEEDSWORK' tag
write-or-die: make GIT_FLUSH a Boolean environment variable
t4129: prevent loss of exit code due to the use of pipes
tests: move t0009-prio-queue.sh to the new unit testing framework
Elijah Newren (32):
t6429: remove switching aspects of fast-rebase
replay: introduce new builtin
replay: start using parse_options API
replay: die() instead of failing assert()
replay: introduce pick_regular_commit()
replay: change rev walking options
replay: add an important FIXME comment about gpg signing
replay: remove progress and info output
replay: remove HEAD related sanity check
replay: make it a minimal server side command
replay: use standard revision ranges
replay: add --advance or 'cherry-pick' mode
replay: add --contained to rebase contained branches
replay: stop assuming replayed branches do not diverge
completion: squelch stray errors in sparse-checkout completion
completion: fix logic for determining whether cone mode is active
completion: avoid misleading completions in cone mode
completion: avoid user confusion in non-cone mode
treewide: remove unnecessary includes from header files
treewide: remove unnecessary includes in source files
archive.h: remove unnecessary include
blame.h: remove unnecessary includes
fsmonitor--daemon.h: remove unnecessary includes
http.h: remove unnecessary include
line-log.h: remove unnecessary include
pkt-line.h: remove unnecessary include
submodule-config.h: remove unnecessary include
trace2/tr2_tls.h: remove unnecessary include
treewide: add direct includes currently only pulled in transitively
treewide: remove unnecessary includes in source files
sparse-checkout: be consistent with end of options markers
diffcore-delta: avoid ignoring final 'line' of file
Eric Sunshine (1):
git-add.txt: add missing short option -A to synopsis
Ghanshyam Thakkar (4):
t7501: add tests for --include and --only
t7501: add tests for --amend --signoff
t0024: avoid losing exit status to pipes
t0024: style fix
Illia Bobyr (1):
rebase: clarify --reschedule-failed-exec default
James Touton (1):
git-p4: use raw string literals for regular expressions
Jean-Noël Avila (2):
doc: enforce dashes in placeholders
doc: enforce placeholders in documentation
Jeff Hostetler (4):
trace2: fix signature of trace2_def_param() macro
t0211: test URL redacting in PERF format
t0212: test URL redacting in EVENT format
sparse-index: pass string length to index_file_exists()
Jeff King (38):
commit-graph: handle overflow in chunk_size checks
midx: check consistency of fanout table
commit-graph: drop redundant call to "lite" verification
commit-graph: clarify missing-chunk error messages
commit-graph: abort as soon as we see a bogus chunk
commit-graph: use fanout value for graph size
commit-graph: check order while reading fanout chunk
commit-graph: drop verify_commit_graph_lite()
commit-graph: mark chunk error messages for translation
parse-options: decouple "--end-of-options" and "--"
bisect: always clean on reset
config: handle NULL value when parsing non-bools
setup: handle NULL value when parsing extensions
trace2: handle NULL values in tr2_sysenv config callback
help: handle NULL value for alias.* config
submodule: handle NULL value when parsing submodule.*.branch
trailer: handle NULL value when parsing trailer-specific config
fsck: handle NULL value when parsing message config
config: reject bogus values for core.checkstat
git_xmerge_config(): prefer error() to die()
imap-send: don't use git_die_config() inside callback
config: use config_error_nonbool() instead of custom messages
diff: give more detailed messages for bogus diff.* config
config: use git_config_string() for core.checkRoundTripEncoding
push: drop confusing configset/callback redundancy
gpg-interface: drop pointless config_error_nonbool() checks
sequencer: simplify away extra git_config_string() call
mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair()
t5100: make rfc822 comment test more careful
mailinfo: avoid recursion when unquoting From headers
t1006: add tests for %(objectsize:disk)
commit-graph: retain commit slab when closing NULL commit_graph
index-pack: spawn threads atomically
transport-helper: re-examine object dir after fetching
diff: handle NULL meta-info when spawning external diff
Makefile: use mkdir_p_parent_template for UNIT_TEST_BIN
Makefile: remove UNIT_TEST_BIN directory with "make clean"
t/Makefile: get UNIT_TESTS list from C sources
Jiang Xin (11):
t5574: test porcelain output of atomic fetch
fetch: no redundant error message for atomic fetch
test-pkt-line: add option parser for unpack-sideband
pkt-line: memorize sideband fragment in reader
pkt-line: do not chomp newlines for sideband messages
transport-helper: no connection restriction in connect_helper
remote-curl: supports git-upload-archive service
transport-helper: protocol v2 supports upload-archive
http-backend: new rpc-service for git-upload-archive
transport-helper: call do_take_over() in connect_helper
transport-helper: call do_take_over() in process_connect
Joanna Wang (2):
attr: enable attr pathspec magic for git-add and git-stash
attr: add builtin objectmode values support
Johannes Schindelin (11):
cmake: also build unit tests
unit-tests: do not mistake `.pdb` files for being executable
unit-tests: do show relative file paths
artifacts-tar: when including `.dll` files, don't forget the unit-tests
cmake: fix typo in variable name
cmake: use test names instead of full paths
cmake: handle also unit tests
ci: avoid running the test suite _twice_
packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration
trace2: redact passwords from https:// URLs by default
win32: special-case `ENOSPC` when writing to a pipe
John Cai (15):
t3210: move to t0601
remove REFFILES prerequisite for some tests in t1405 and t2017
t1414: convert test to use Git commands instead of writing refs manually
t1404: move reffiles specific tests to t0600
t1405: move reffiles specific tests to t0601
t1406: move reffiles specific tests to t0600
t1410: move reffiles specific tests to t0600
t1415: move reffiles specific tests to t0601
t1503: move reffiles specific tests to t0600
t3903: make drop stash test ref backend agnostic
t4202: move reffiles specific tests to t0600
t5312: move reffiles specific tests to t0601
reftable: honor core.fsync
index-pack: test and document --strict=<msg-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
Josh Brobst (1):
builtin/reflog.c: fix dry-run option short name
Josh Soref (13):
doc: update links to current pages
doc: switch links to https
doc: update links for andre-simon.de
doc: refer to internet archive
CodingGuidelines: move period inside parentheses
CodingGuidelines: write punctuation marks
SubmittingPatches: drop ref to "What's in git.git"
SubmittingPatches: discourage new trailers
SubmittingPatches: update extra tags list
SubmittingPatches: provide tag naming advice
SubmittingPatches: clarify GitHub visual
SubmittingPatches: clarify GitHub artifact format
SubmittingPatches: hyphenate non-ASCII
Josh Steadmon (4):
unit tests: add a project plan document
ci: run unit tests in CI
fuzz: fix fuzz test build rules
ci: build and run minimal fuzzers in GitHub CI
Julian Prein (1):
hooks--pre-commit: detect non-ASCII when renaming
Junio C Hamano (44):
cache: add fake_lstat()
diff-lib: fix check_removed() when fsmonitor is active
checkout: refactor die_if_checked_out() caller
orphan/unborn: add to the glossary and use them consistently
orphan/unborn: fix use of 'orphan' in end-user facing messages
revision: parse integer arguments to --max-count, --skip, etc., more carefully
Start the 2.44 cycle
checkout: forbid "-B <branch>" from touching a branch used elsewhere
git.txt: HEAD is not that special
git-bisect.txt: BISECT_HEAD is not that special
refs.h: HEAD is not that special
docs: AUTO_MERGE is not that special
docs: MERGE_AUTOSTASH is not that special
doc: format.notes specify a ref under refs/notes/ hierarchy
The second batch
remote.h: retire CAS_OPT_NAME
The third batch
archive: "--list" does not take further options
sparse-checkout: use default patterns for 'set' only !stdin
The fourth batch
The fifth batch
The sixth batch
messages: mark some strings with "up-to-date" not to touch
The seventh batch
The eighth batch
The ninth batch
Docs: majordomo@vger.kernel.org has been decomissioned
CoC: whitespace fix
ls-files: avoid the verb "deprecate" for individual options
The tenth batch
builtin/worktree: comment style fixes
merge-ort.c: comment style fix
reftable/pq_test: comment style fix
The eleventh batch
t0091: allow test in a repository without tags
The twelfth batch
Makefile: reduce repetitive library paths
Makefile: simplify output of the libpath_template
The thirteenth batch
t/Makefile: say the default target upfront
The fourteenth batch
The fifteenth batch
Git 2.43.1
Git 2.44-rc0
Justin Tobler (2):
t1401: remove lockfile creation
t5541: remove lockfile creation
Kristoffer Haugsbakk (5):
config: format newlines
config: rename global config function
config: factor out global config file retrieval
maintenance: use XDG config if it exists
config: add back code comment
Kyle Lippincott (1):
setup: allow cwd=.git w/ bareRepository=explicit
Linus Arver (4):
commit: ignore_non_trailer computes number of bytes to ignore
trailer: find the end of the log message
trailer: use offsets for trailer_start/trailer_end
strvec: use correct member name in comments
M Hickford (1):
credential/wincred: store oauth_refresh_token
Maarten van der Schrieck (1):
Documentation: fix statement about rebase.instructionFormat
Marcel Krause (1):
doc: make the gitfile syntax easier to discover
Marcelo Roberto Jimenez (1):
gitweb: die when a configuration file cannot be read
Michael Lohmann (2):
Documentation/git-merge.txt: fix reference to synopsis
Documentation/git-merge.txt: use backticks for command wrapping
Nikolay Borisov (1):
rebase: fix documentation about used shell in -x
Nikolay Edigaryev (1):
rev-list-options: fix off-by-one in '--filter=blob:limit=<n>' explainer
Patrick Steinhardt (124):
t: allow skipping expected object ID in `ref-store update-ref`
t: convert tests to not write references via the filesystem
t: convert tests to not access symrefs via the filesystem
t: convert tests to not access reflog via the filesystem
t1450: convert tests to remove worktrees via git-worktree(1)
t4207: delete replace references via git-update-ref(1)
t7300: assert exact states of repo
t7900: assert the absence of refs via git-for-each-ref(1)
t: mark several tests that assume the files backend with REFFILES
ci: reorder definitions for grouping functions
ci: make grouping setup more generic
ci: group installation of Docker dependencies
ci: split out logic to set up failed test artifacts
ci: unify setup of some environment variables
ci: squelch warnings when testing with unusable Git repo
ci: install test dependencies for linux-musl
ci: add support for GitLab CI
t/lib-httpd: dynamically detect httpd and modules path
t/lib-httpd: stop using legacy crypt(3) for authentication
t9164: fix inability to find basename(1) in Subversion hooks
global: convert trivial usages of `test <expr> -a/-o <expr>`
contrib/subtree: stop using `-o` to test for number of args
contrib/subtree: convert subtree type check to use case statement
Makefile: stop using `test -o` when unlinking duplicate executables
t5510: ensure that the packed-refs file needs locking
refs/files: use transactions to delete references
refs: deduplicate code to delete references
refs: remove `delete_refs` callback from backends
commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default
t0410: mark tests to require the reffiles backend
t1400: split up generic reflog tests from the reffile-specific ones
t1401: stop treating FETCH_HEAD as real reference
t1410: use test-tool to create empty reflog
t1417: make `reflog --updateref` tests backend agnostic
t3310: stop checking for reference existence via `test -f`
t4013: simplify magic parsing and drop "failure"
t5401: speed up creation of many branches
t5551: stop writing packed-refs directly
t6301: write invalid object ID via `test-tool ref-store`
reftable: wrap EXPECT macros in do/while
reftable: handle interrupted reads
reftable: handle interrupted writes
reftable/stack: verify that `reftable_stack_add()` uses auto-compaction
reftable/stack: perform auto-compaction with transactional interface
reftable/stack: reuse buffers when reloading stack
reftable/stack: fix stale lock when dying
reftable/stack: fix use of unseeded randomness
reftable/merged: reuse buffer to compute record keys
reftable/block: introduce macro to initialize `struct block_iter`
reftable/block: reuse buffer to compute record keys
setup: extract function to create the refdb
setup: allow skipping creation of the refdb
remote-curl: rediscover repository when fetching refs
builtin/clone: fix bundle URIs with mismatching object formats
builtin/clone: set up sparse checkout later
builtin/clone: skip reading HEAD when retrieving remote
builtin/clone: create the refdb with the correct object format
wt-status: read HEAD and ORIG_HEAD via the refdb
refs: propagate errno when reading special refs fails
refs: complete list of special refs
bisect: consistently write BISECT_EXPECTED_REV via the refdb
tests: adjust whitespace in chainlint expectations
t: introduce DEFAULT_REPO_FORMAT prereq
worktree: skip reading HEAD when repairing worktrees
refs: refactor logic to look up storage backends
setup: start tracking ref storage format
setup: set repository's formats on init
setup: introduce "extensions.refStorage" extension
setup: introduce GIT_DEFAULT_REF_FORMAT envvar
t: introduce GIT_TEST_DEFAULT_REF_FORMAT envvar
builtin/rev-parse: introduce `--show-ref-format` flag
builtin/init: introduce `--ref-format=` value flag
builtin/clone: introduce `--ref-format=` value flag
t9500: write "extensions.refstorage" into config
reftable/stack: do not overwrite errors when compacting
reftable/stack: do not auto-compact twice in `reftable_stack_add()`
reftable/writer: fix index corruption when writing multiple indices
reftable/record: constify some parts of the interface
reftable/record: store "val1" hashes as static arrays
reftable/record: store "val2" hashes as static arrays
reftable/merged: really reuse buffers to compute record keys
reftable/merged: transfer ownership of records when iterating
git-prompt: stop manually parsing HEAD with unknown ref formats
ci: add job performing static analysis on GitLab CI
refs: prepare `refs_init_db()` for initializing worktree refs
setup: move creation of "refs/" into the files backend
refs/files: skip creation of "refs/{heads,tags}" for worktrees
builtin/worktree: move setup of commondir file earlier
worktree: expose interface to look up worktree by name
builtin/worktree: create refdb via ref backend
reftable/stack: refactor stack reloading to have common exit path
reftable/stack: refactor reloading to use file descriptor
reftable/stack: use stat info to avoid re-reading stack list
reftable/blocksource: refactor code to match our coding style
reftable/blocksource: use mmap to read tables
git-p4: stop reaching into the refdb
commit-graph: fix memory leak when not writing graph
completion: discover repo path in `__git_pseudoref_exists ()`
t9902: verify that completion does not print anything
completion: improve existence check for pseudo-refs
completion: silence pseudoref existence check
completion: treat dangling symrefs as existing pseudorefs
t7527: decrease likelihood of racing with fsmonitor daemon
Makefile: detect new Homebrew location for ARM-based Macs
ci: handle TEST_OUTPUT_DIRECTORY when printing test failures
ci: make p4 setup on macOS more robust
ci: add macOS jobs to GitLab CI
reftable/stack: unconditionally reload stack after commit
reftable/stack: fix race in up-to-date check
sequencer: clean up pseudo refs with REF_NO_DEREF
sequencer: delete REBASE_HEAD in correct repo when picking commits
refs: convert AUTO_MERGE to become a normal pseudo-ref
sequencer: introduce functions to handle autostashes via refs
refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref
refs: redefine special refs
Documentation: add "special refs" to the glossary
reftable/stack: adjust permissions of compacted tables
t1300: make tests more robust with non-default ref backends
t1301: mark test for `core.sharedRepository` as reffiles specific
t1302: make tests more robust with new extensions
t1419: mark test suite as files-backend specific
t5526: break test submodule differently
t: mark tests regarding git-pack-refs(1) to be backend specific
reftable/stack: fsync "tables.list" during compaction
Philippe Blain (6):
completion: complete missing rev-list options
completion: complete --patch-with-raw
completion: complete --encoding
completion: complete missing 'git log' options
ci(github): also skip logs of broken test cases
imap-send: add missing "strbuf.h" include under NO_CURL
Phillip Wood (1):
unit tests: add TAP unit test framework
René Scharfe (19):
column: release strbuf and string_list after use
i18n: factorize even more 'incompatible options' messages
push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror
repack: use die_for_incompatible_opt3() for -A/-k/--cruft
revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs
revision, rev-parse: factorize incompatibility messages about - -exclude-hidden
clean: factorize incompatibility message
worktree: standardize incompatibility messages
worktree: simplify incompatibility message for --orphan and commit-ish
show-ref: use die_for_incompatible_opt3()
t6300: avoid hard-coding object sizes
git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool
rebase: use strvec_pushf() for format-patch revisions
fast-import: use mem_pool_calloc()
mem-pool: fix big allocations
mem-pool: simplify alignment calculation
t1006: prefer shell loop to awk for packed object sizes
parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: simplify positivation handling
Rubén Justo (10):
status: fix branch shown when not only bisecting
branch: clarify <oldbranch> term
advice: sort the advice related lists
advice: fix an unexpected leading space
branch: make the advice to force-deleting a conditional one
advice: allow disabling the automatic hint in advise_if_enabled()
t5332: mark as leak-free
t6113: mark as leak-free
test-lib: check for TEST_PASSES_SANITIZE_LEAK
t0080: mark as leak-free
Sam Delmerico (1):
push: region_leave trace for negotiate_using_fetch
Shreyansh Paliwal (1):
test-lib-functions.sh: fix test_grep fail message wording
Simon Ser (1):
format-patch: fix ignored encode_email_headers for cover letter
Stan Hu (2):
completion: refactor existence checks for pseudorefs
completion: support pseudoref existence checks for reftables
Sören Krecker (1):
mingw: give more details about unsafe directory's ownership
Tamino Bauknecht (1):
fetch: add new config option fetch.all
Taylor Blau (27):
pack-objects: free packing_data in more places
pack-bitmap-write: deep-clear the `bb_commit` slab
pack-bitmap: plug leak in find_objects()
midx: factor out `fill_pack_info()`
midx: implement `BTMP` chunk
midx: implement `midx_locate_pack()`
pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions
ewah: implement `bitmap_is_empty()`
pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature
pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`
pack-objects: parameterize pack-reuse routines over a single pack
pack-objects: keep track of `pack_start` for each reuse pack
pack-objects: pass `bitmapped_pack`'s to pack-reuse functions
pack-objects: prepare `write_reused_pack()` for multi-pack reuse
pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse
pack-objects: include number of packs reused in output
git-compat-util.h: implement checked size_t to uint32_t conversion
midx: implement `midx_preferred_pack()`
pack-revindex: factor out `midx_key_to_pack_pos()` helper
pack-revindex: implement `midx_pair_to_pack_pos()`
pack-bitmap: prepare to mark objects from multiple packs for reuse
pack-objects: add tracing for various packfile metrics
t/test-lib-functions.sh: implement `test_trace2_data` helper
pack-objects: allow setting `pack.allowPackReuse` to "single"
pack-bitmap: enable reuse from all bitmapped packs
t/perf: add performance tests for multi-pack reuse
pack-bitmap: drop unused `reuse_objects`
Todd Zullinger (2):
perl: bump the required Perl version to 5.8.1 from 5.8.0
send-email: avoid duplicate specification warnings
Toon Claes (1):
builtin/show-ref: treat directory as non-existing in --exists
Victoria Dye (14):
ref-filter.c: really don't sort when using --no-sort
ref-filter.h: add max_count and omit_empty to ref_format
ref-filter.h: move contains caches into filter
ref-filter.h: add functions for filter/format & format-only
ref-filter.c: rename 'ref_filter_handler()' to 'filter_one()'
ref-filter.c: refactor to create common helper functions
ref-filter.c: filter & format refs in the same callback
for-each-ref: clean up documentation of --format
ref-filter.c: use peeled tag for '*' format fields
t/perf: add perf tests for for-each-ref
submodule-config.h: move check_submodule_url
test-submodule: remove command line handling for check-name
t7450: test submodule urls
submodule-config.c: strengthen URL fsck check
Zach FettersMoore (1):
subtree: fix split processing with multiple subtrees present
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.43.0
@ 2023-11-20 17:01 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-20 17:01 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.43.0 is now available at the
usual places. It is comprised of 464 non-merge commits since
v2.42.0, contributed by 80 people, 17 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.43.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.42.0 are as follows.
Welcome to the Git development community!
Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,
Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens
(heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,
Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul
Kumar, 王常新, and 谢致邦 (XIE Zhibang).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Andrei Rybak,
Andy Koppe, Arkadii Yakovets, Bagas Sanjaya, Beat Bolli, brian
m. carlson, Calvin Wan, Christian Couder, Christian Hesse,
Derrick Stolee, Drew DeVault, Elijah Newren, Emily Shaffer,
Emir SARI, Eric W. Biederman, Eric Wong, Evan Gates, Han Young,
Hariom Verma, Jacob Abel, Jacob Stopak, Jason Hatton, Jean-Noël
Avila, Jeff King, Johannes Schindelin, John Cai, Jordi Mas,
Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,
Kate Golovanova, Kousik Sanagavarapu, Kristoffer Haugsbakk,
Linus Arver, Mark Levedahl, Martin Ågren, Martin Storsjö,
M Hickford, Michael Strawbridge, Michal Suchanek, Oswald
Buddenhagen, Patrick Steinhardt, Peter Krefting, Philippe Blain,
Phillip Wood, Ralf Thielow, Randall S. Becker, René Scharfe,
Robert Coup, Rubén Justo, Sergey Organov, Shuqi Liang, Stefan
Haller, Štěpán Němec, Taylor Blau, Teng Long, Todd Zullinger,
Victoria Dye, Wesley Schwengle, and Yi-Jyun Pan.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.43 Release Notes
=======================
Backward Compatibility Notes
* The "--rfc" option of "git format-patch" used to be a valid way to
override an earlier "--subject-prefix=<something>" on the command
line and replace it with "[RFC PATCH]", but from this release, it
merely prefixes the string "RFC " in front of the given subject
prefix. If you are negatively affected by this change, please use
"--subject-prefix=PATCH --rfc" as a replacement.
* In Git 2.42, "git rev-list --stdin" learned to take non-revisions
(like "--not") from the standard input, but the way such a "--not" was
handled was quite confusing, which has been rethought. The updated
rule is that "--not" given from the command line only affects revs
given from the command line that comes but not revs read from the
standard input, and "--not" read from the standard input affects
revs given from the standard input and not revs given from the
command line.
UI, Workflows & Features
* A message written in olden time prevented a branch from getting
checked out, saying it is already checked out elsewhere. But these
days, we treat a branch that is being bisected or rebased just like
a branch that is checked out and protect it from getting modified
with the same codepath. The message has been rephrased to say that
the branch is "in use" to avoid confusion.
* Hourly and other schedules of "git maintenance" jobs are randomly
distributed now.
* "git cmd -h" learned to signal which options can be negated by
listing such options like "--[no-]opt".
* The way authentication related data other than passwords (e.g.,
oauth token and password expiration data) are stored in libsecret
keyrings has been rethought.
* Update the libsecret and wincred credential helpers to correctly
match which credential to erase; they erased the wrong entry in
some cases.
* Git GUI updates.
* "git format-patch" learned a new "--description-file" option that
lets cover letter description to be fed; this can be used on
detached HEAD where there is no branch description available, and
also can override the branch description if there is one.
* Use of the "--max-pack-size" option to allow multiple packfiles to
be created is now supported even when we are sending unreachable
objects to cruft packs.
* "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
"--subject-prefix" option and used "[RFC PATCH]"; now we will add
"RFC" prefix to whatever subject prefix is specified.
* "git log --format" has been taught the %(decorate) placeholder for
further customization over what the "--decorate" option offers.
* The default log message created by "git revert", when reverting a
commit that records a revert, has been tweaked, to encourage people
to describe complex "revert of revert of revert" situations better in
their own words.
* The command-line completion support (in contrib/) learned to
complete "git commit --trailer=" for possible trailer keys.
* "git update-index" learned the "--show-index-version" option to
inspect the index format version used by the on-disk index file.
* "git diff" learned the "diff.statNameWidth" configuration variable,
to give the default width for the name part in the "--stat" output.
* "git range-diff --notes=foo" compared "log --notes=foo --notes" of
the two ranges, instead of using just the specified notes tree,
which has been corrected to use only the specified notes tree.
* The command line completion script (in contrib/) can be told to
complete aliases by including ": git <cmd> ;" in the alias to tell
it that the alias should be completed in a similar way to how "git
<cmd>" is completed. The parsing code for the alias has been
loosened to allow ';' without an extra space before it.
* "git for-each-ref" and friends learned to apply mailmap to
authorname and other fields in a more flexible way than using
separate placeholder letters like %a[eElL] every time we want to
come up with small variants.
* "git repack" machinery learned to pay attention to the "--filter="
option.
* "git repack" learned the "--max-cruft-size" option to prevent cruft
packs from growing without bounds.
* "git merge-tree" learned to take strategy backend specific options
via the "-X" option, like "git merge" does.
* "git log" and friends learned the "--dd" option that is a
short-hand for "--diff-merges=first-parent -p".
* The attribute subsystem learned to honor the "attr.tree"
configuration variable that specifies which tree to read the
.gitattributes files from.
* "git merge-file" learns a mode to read three variants of the
contents to be merged from blob objects.
Performance, Internal Implementation, Development Support etc.
* "git check-attr" has been taught to work better with sparse-index.
* It may be tempting to leave the help text NULL for a command line
option that is either hidden or too obvious, but "git subcmd -h"
and "git subcmd --help-all" would have segfaulted if done so. Now
the help text is truly optional.
* Tests that are known to pass with LSan are now marked as such.
* Flaky "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.
* Tests with LSan from time to time seem to emit harmless messages
that make our tests unnecessarily flaky; we work around it by
filtering the uninteresting output.
* Unused parameters to functions are marked as such, and/or removed,
in order to bring us closer to "-Wunused-parameter" clean.
* The code to keep track of existing packs in the repository while
repacking has been refactored.
* The "streaming" interface used for bulk-checkin codepath has been
narrowed to take only blob objects for now, with no real loss of
functionality.
* GitHub CI workflow has learned to trigger Coverity check.
* Test coverage for trailers has been improved.
* The code to iterate over loose references has been optimized to
reduce the number of lstat() system calls.
* The codepaths that read "chunk" formatted files have been corrected
to pay attention to the chunk size and notice broken files.
* Replace macos-12 used at GitHub CI with macos-13.
(merge 682a868f67 js/ci-use-macos-13 later to maint).
Fixes since v2.42
-----------------
* Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.
* Scalar updates.
* Tweak GitHub Actions CI so that pushing the same commit to multiple
branch tips at the same time will not waste building and testing
the same thing twice.
* The commit-graph verification code that detects a mixture of zero and
non-zero generation numbers has been updated.
* "git diff -w --exit-code" with various options did not work
correctly, which has been corrected.
* The "transfer.unpackLimit" configuration variable ought to be used
as a fallback, but overrode the more specific "fetch.unpackLimit"
and "receive.unpackLimit" configuration variables by mistake, which
has been corrected.
* The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.
* "git diff --no-such-option" and other corner cases around the exit
status of the "diff" command have been corrected.
* "git for-each-ref --sort='contents:size'" sorted the refs according
to size numerically, giving a ref that points at a blob twelve-byte
(12) long before showing a blob hundred-byte (100) long, which has
been corrected.
* We now limit the depth of the tree objects and maximum length of
pathnames recorded in tree objects.
(merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
* Various fixes to the behavior of "rebase -i", when the command got
interrupted by conflicting changes, have been made.
* References from a description of the `--patch` option in various
manual pages have been simplified and improved.
* "git grep -e A --no-or -e B" is accepted, even though the negation
of the "--or" option did not mean anything, which has been tightened.
* The completion script (in contrib/) has been taught to treat the
"-t" option to "git checkout" and "git switch" just like the
"--track" option, to complete remote-tracking branches.
* "git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.
* "git maintenance" timers' implementation has been updated, based on
systemd timers, to work with WSL.
* "git diff --cached" codepath did not fill the necessary stat
information for a file when fsmonitor knows it is clean and ended
up behaving as if it were not clean, which has been corrected.
* How "alias.foo = : git cmd ; aliased-command-string" should be
spelled with necessary whitespace around punctuation marks to work
has been more clearly documented (but this will be moot with newer
versions of Git where the parsing rules have been improved).
* HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.
* An error message given by "git send-email", when given a malformed
address, did not show the offending address, which has been corrected.
* UBSan options were not propagated through the test framework to git
run via the httpd, unlike ASan options, which has been corrected.
* "checkout --merge -- path" and "update-index --unresolve path" did
not resurrect conflicted state that was resolved to remove path,
but now they do.
(merge 5bdedac3c7 jc/unresolve-removal later to maint).
* The display width table for unicode characters has been updated for
Unicode 15.1
(merge 872976c37e bb/unicode-width-table-15 later to maint).
* Update mailmap entry for Derrick.
(merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
* In the ".gitmodules" files, submodules are keyed by their names,
and the path to the submodule whose name is $name is specified by
the submodule.$name.path variable. There were a few codepaths that
mixed the name and path up when consulting the submodule database,
which have been corrected. It took long for these bugs to be found
as the name of a submodule initially is the same as its path, and
the problem does not surface until it is moved to a different path,
which apparently happens very rarely.
* "git diff --merge-base X other args..." insisted that X must be a
commit and errored out when given an annotated tag that peels to a
commit, but we only need it to be a committish. This has been
corrected.
(merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
* "git merge-tree" used to segfault when the "--attr-source"
option is used, which has been corrected.
(merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
* Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
not auto-initialize the decoration subsystem, which has been
corrected.
* Feeding "git stash store" with a random commit that was not created
by "git stash create" now errors out.
(merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
* The index file has room only for the lower 32-bit of the file size in
the cached stat information, which means cached stat information
will have 0 in its sd_size member for a file whose size is a multiple
of 4GiB. This is mistaken for a racily clean path. Avoid it by
storing a bogus sd_size value instead for such files.
(merge 5143ac07b1 bc/racy-4gb-files later to maint).
* "git p4" tried to store symlinks to LFS when told, but has been
fixed not to do so, because it does not make sense.
(merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
* The codepath to handle recipient addresses `git send-email
--compose` learns from the user was completely broken, which has
been corrected.
(merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
* "cd sub && git grep -f patterns" tried to read "patterns" file at
the top level of the working tree; it has been corrected to read
"sub/patterns" instead.
* "git reflog expire --single-worktree" has been broken for the past
20 months or so, which has been corrected.
* "git send-email" did not have certain pieces of data computed yet
when it tried to validate the outgoing messages and its recipient
addresses, which has been sorted out.
* "git bugreport" learned to complain when it received a command line
argument that it will not use.
* The codepath to traverse the commit-graph learned to notice that a
commit is missing (e.g., corrupt repository lost an object), even
though it knows something about the commit (like its parents) from
what is in commit-graph.
(merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).
* "git rev-list --missing" did not work for missing commit objects,
which has been corrected.
* "git rev-list --unpacked --objects" failed to exclude packed
non-commit objects, which has been corrected.
(merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).
* "To dereference" and "to peel" were sometimes used in in-code
comments and documentation but without description in the glossary.
(merge 893dce2ffb vd/glossary-dereference-peel later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
(merge 1bd809938a tb/format-pack-doc-update later to maint).
(merge 8f81532599 an/clang-format-typofix later to maint).
(merge 3ca86adc2d la/strvec-header-fix later to maint).
(merge 6789275d37 jc/test-i18ngrep later to maint).
(merge 9972cd6004 ps/leakfixes later to maint).
(merge 46edab516b tz/send-email-helpfix later to maint).
----------------------------------------------------------------
Changes since v2.42.0 are as follows:
Aditya Neelamraju (1):
clang-format: fix typo in comment
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5579t)
Alyssa Ross (1):
diff: fix --merge-base with annotated tags
Andrei Rybak (1):
SubmittingPatches: call gitk's command "Copy commit reference"
Andy Koppe (8):
pretty-formats: enclose options in angle brackets
decorate: refactor format_decorations()
decorate: avoid some unnecessary color overhead
decorate: color each token separately
pretty: add %(decorate[:<options>]) format
pretty: add pointer and tag options to %(decorate)
decorate: use commit color for HEAD arrow
pretty: fix ref filtering for %(decorate) formats
Arkadii Yakovets (1):
l10n: update uk localization for v2.43
Bagas Sanjaya (1):
l10n: po-id for 2.43 (round 1)
Beat Bolli (1):
unicode: update the width tables to Unicode 15.1
Caleb Hill (1):
git-clean doc: fix "without do cleaning" typo
Calvin Wan (4):
hex-ll: separate out non-hash-algo functions
wrapper: reduce scope of remove_or_warn()
config: correct bad boolean env value error message
parse: separate out parsing functions from config.h
Christian Couder (9):
pack-objects: allow `--filter` without `--stdout`
t/helper: add 'find-pack' test-tool
repack: refactor finishing pack-objects command
repack: refactor finding pack prefix
pack-bitmap-write: rebuild using new bitmap when remapping
repack: add `--filter=<filter-spec>` option
gc: add `gc.repackFilter` config option
repack: implement `--filter-to` for storing filtered out objects
gc: add `gc.repackFilterTo` config option
Christian Hesse (2):
t/lib-gpg: forcibly run a trustdb update
t/t6300: drop magic filtering
Derrick Stolee (13):
upload-pack: fix race condition in error messages
maintenance: add get_random_minute()
maintenance: use random minute in launchctl scheduler
maintenance: use random minute in Windows scheduler
maintenance: use random minute in cron scheduler
maintenance: swap method locations
maintenance: use random minute in systemd scheduler
maintenance: fix systemd schedule overlaps
maintenance: update schedule before config
scalar: add --[no-]src option
setup: add discover_git_directory_reason()
scalar reconfigure: help users remove buggy repos
mailmap: change primary address for Derrick Stolee
Dorcas AnonoLitunya (1):
t7601: use "test_path_is_file" etc. instead of "test -f"
Dragan Simic (2):
diff --stat: add config option to limit filename width
diff --stat: set the width defaults in a helper function
Drew DeVault (1):
format-patch: --rfc honors what --subject-prefix sets
Elijah Newren (26):
documentation: wording improvements
documentation: fix small error
documentation: fix typos
documentation: fix apostrophe usage
documentation: add missing words
documentation: remove extraneous words
documentation: fix subject/verb agreement
documentation: employ consistent verb tense for a list
documentation: fix verb tense
documentation: fix adjective vs. noun
documentation: fix verb vs. noun
documentation: fix singular vs. plural
documentation: whitespace is already generally plural
documentation: fix choice of article
documentation: add missing article
documentation: remove unnecessary hyphens
documentation: add missing hyphens
documentation: use clearer prepositions
documentation: fix punctuation
documentation: fix capitalization
documentation: fix whitespace issues
documentation: add some commas where they are helpful
documentation: add missing fullstops
documentation: add missing quotes
documentation: add missing parenthesis
RelNotes: minor wording fixes in 2.43.0 release notes
Emily Shaffer (2):
t0091-bugreport: stop using i18ngrep
bugreport: reject positional arguments
Emir SARI (1):
l10n: tr: v2.43.0
Eric W. Biederman (1):
bulk-checkin: only support blobs in index_bulk_checkin
Eric Wong (1):
treewide: fix various bugs w/ OpenSSL 3+ EVP API
Evan Gates (1):
git-config: fix misworded --type=path explanation
Han Young (1):
show doc: redirect user to git log manual instead of git diff-tree
Isoken June Ibizugbe (1):
builtin/branch.c: adjust error messages to coding guidelines
Jacob Abel (1):
builtin/worktree.c: fix typo in "forgot fetch" msg
Jacob Stopak (1):
Include gettext.h in MyFirstContribution tutorial
Jan Alexander Steffens (heftig) (6):
submodule--helper: use submodule_from_path in set-{url,branch}
submodule--helper: return error from set-url when modifying failed
t7419: actually test the branch switching
t7419, t7420: use test_cmp_config instead of grepping .gitmodules
t7419: test that we correctly handle renamed submodules
t7420: test that we correctly handle renamed submodules
Jason Hatton (1):
Prevent git from rehashing 4GiB files
Javier Mora (2):
git-status.txt: fix minor asciidoc format issue
doc/git-bisect: clarify `git bisect run` syntax
Jean-Noël Avila (1):
l10n: fr: v2.43.0 rnd 2
Jeff King (114):
hashmap: use expected signatures for comparison functions
diff-files: avoid negative exit value
diff: show usage for unknown builtin_diff_files() options
diff: die when failing to read index in git-diff builtin
diff: drop useless return from run_diff_{files,index} functions
diff: drop useless return values in git-diff helpers
diff: drop useless "status" parameter from diff_result_code()
commit-graph: verify swapped zero/non-zero generation cases
test-lib: ignore uninteresting LSan output
sequencer: use repository parameter in short_commit_name()
sequencer: mark repository argument as unused
ref-filter: mark unused parameters in parser callbacks
pack-bitmap: mark unused parameters in show_object callback
worktree: mark unused parameters in each_ref_fn callback
commit-graph: mark unused data parameters in generation callbacks
ls-tree: mark unused parameter in callback
stash: mark unused parameter in diff callback
trace2: mark unused us_elapsed_absolute parameters
trace2: mark unused config callback parameter
test-trace2: mark unused argv/argc parameters
grep: mark unused parameter in output function
add-interactive: mark unused callback parameters
negotiator/noop: mark unused callback parameters
worktree: mark unused parameters in noop repair callback
imap-send: mark unused parameters with NO_OPENSSL
grep: mark unused parmaeters in pcre fallbacks
credential: mark unused parameter in urlmatch callback
fetch: mark unused parameter in ref_transaction callback
bundle-uri: mark unused parameters in callbacks
gc: mark unused descriptors in scheduler callbacks
update-ref: mark unused parameter in parser callbacks
ci: allow branch selection through "vars"
ci: deprecate ci/config/allow-ref script
merge: make xopts a strvec
merge: simplify parsing of "-n" option
format-patch: use OPT_STRING_LIST for to/cc options
tree-walk: reduce stack size for recursive functions
tree-walk: drop MAX_TRAVERSE_TREES macro
tree-walk: rename "error" variable
fsck: detect very large tree pathnames
add core.maxTreeDepth config
traverse_trees(): respect max_allowed_tree_depth
read_tree(): respect max_allowed_tree_depth
list-objects: respect max_allowed_tree_depth
tree-diff: respect max_allowed_tree_depth
lower core.maxTreeDepth default to 2048
checkout-index: delay automatic setting of to_tempfile
parse-options: prefer opt->value to globals in callbacks
parse-options: mark unused "opt" parameter in callbacks
merge: do not pass unused opt->value parameter
parse-options: add more BUG_ON() annotations
interpret-trailers: mark unused "unset" parameters in option callbacks
parse-options: mark unused parameters in noop callback
merge-ort: drop custom err() function
merge-ort: stop passing "opt" to read_oid_strbuf()
merge-ort: drop unused parameters from detect_and_process_renames()
merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
http: factor out matching of curl http/2 trace lines
http: update curl http/2 info matching for curl 8.3.0
merge-ort: lowercase a few error messages
fsmonitor: prefer repo_git_path() to git_pathdup()
fsmonitor/win32: drop unused parameters
fsmonitor: mark some maybe-unused parameters
fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
fsmonitor: mark unused parameters in stub functions
fsmonitor/darwin: mark unused parameters in system callback
fsmonitor: mark unused hashmap callback parameters
run-command: mark unused parameters in start_bg_wait callbacks
test-lib: set UBSAN_OPTIONS to match ASan
commit-graph: factor out chain opening function
commit-graph: check mixed generation validation when loading chain file
t5324: harmonize sha1/sha256 graph chain corruption
commit-graph: detect read errors when verifying graph chain
commit-graph: tighten chain size check
commit-graph: report incomplete chains during verification
t6700: mark test as leak-free
commit-reach: free temporary list in get_octopus_merge_bases()
merge: free result of repo_get_merge_bases()
commit-graph: move slab-clearing to close_commit_graph()
commit-graph: free all elements of graph chain
commit-graph: delay base_graph assignment in add_graph_to_chain()
commit-graph: free graph struct that was not added to chain
commit-graph: free write-context entries before overwriting
commit-graph: free write-context base_graph_name during cleanup
commit-graph: clear oidset after finishing write
decorate: add clear_decoration() function
revision: clear decoration structs during release_revisions()
daemon: free listen_addr before returning
repack: free existing_cruft array after use
chunk-format: note that pair_chunk() is unsafe
t: add library for munging chunk-format files
midx: stop ignoring malformed oid fanout chunk
commit-graph: check size of oid fanout chunk
midx: check size of oid lookup chunk
commit-graph: check consistency of fanout table
midx: check size of pack names chunk
midx: enforce chunk alignment on reading
midx: check size of object offset chunk
midx: bounds-check large offset chunk
midx: check size of revindex chunk
commit-graph: check size of commit data chunk
commit-graph: detect out-of-bounds extra-edges pointers
commit-graph: bounds-check base graphs chunk
commit-graph: check size of generations chunk
commit-graph: bounds-check generation overflow chunk
commit-graph: check bounds when accessing BDAT chunk
commit-graph: check bounds when accessing BIDX chunk
commit-graph: detect out-of-order BIDX offsets
chunk-format: drop pair_chunk_unsafe()
t5319: make corrupted large-offset test more robust
doc/send-email: mention handling of "reply-to" with --compose
Revert "send-email: extract email-parsing code into a subroutine"
send-email: handle to/cc/bcc from --compose message
t: avoid perl's pack/unpack "Q" specifier
Johannes Schindelin (19):
windows: ignore empty `PATH` elements
is_Cygwin: avoid `exec`ing anything
Move is_<platform> functions to the beginning
Move the `_which` function (almost) to the top
Work around Tcl's default `PATH` lookup
rebase: allow overriding the maximal length of the generated labels
ci: avoid building from the same commit in parallel
ci(linux-asan-ubsan): let's save some time
var: avoid a segmentation fault when `HOME` is unset
completion(switch/checkout): treat --track and -t the same
maintenance(systemd): support the Windows Subsystem for Linux
ci: add a GitHub workflow to submit Coverity scans
coverity: cache the Coverity Build Tool
coverity: allow overriding the Coverity project
coverity: support building on Windows
coverity: allow running on macOS
coverity: detect and report when the token or project is incorrect
max_tree_depth: lower it for MSVC to avoid stack overflows
ci: upgrade to using macos-13
John Cai (3):
merge-ort: initialize repo in index state
attr: read attributes from HEAD when bare repo
attr: add attr.tree for setting the treeish to read attributes from
Jordi Mas (1):
l10n: Update Catalan translation
Josh Soref (1):
Documentation/git-status: add missing line breaks
Josip Sokcevic (1):
diff-lib: fix check_removed when fsmonitor is on
Junio C Hamano (57):
update-index: do not read HEAD and MERGE_HEAD unconditionally
resolve-undo: allow resurrecting conflicted state that resolved to deletion
update-index: use unmerge_index_entry() to support removal
update-index: remove stale fallback code for "--unresolve"
checkout/restore: refuse unmerging paths unless checking out of the index
checkout/restore: add basic tests for --merge
checkout: allow "checkout -m path" to unmerge removed paths
mv: fix error for moving directory to another
diff: move the fallback "--exit-code" code down
diff: mode-only change should be noticed by "--patch -w --exit-code"
diff: teach "--stat -w --exit-code" to notice differences
t4040: remove test that succeeded for a wrong reason
pretty-formats: define "literal formatting code"
diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
diff: the -w option breaks --exit-code for --raw and other output modes
transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
Start the 2.43 cycle
The second batch for 2.43
The extra batch to update credenthal helpers
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
update-index doc: v4 is OK with JGit and libgit2
update-index: add --show-index-version
test-tool: retire "index-version"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
completion: loosen and document the requirement around completing alias
The twelfth batch
The thirteenth batch
The fourteenth batch
The fifteenth batch
doc: update list archive reference to use lore.kernel.org
The sixteenth batch
merge: introduce {copy|clear}_merge_options()
stash: be careful what we store
grep: -f <path> is relative to $cwd
The seventeenth batch
The eighteenth batch
commit: do not use cryptic "new_index" in end-user facing messages
The nineteenth batch
am: align placeholder for --whitespace option with apply
The twentieth batch
The twenty-first batch
The twenty-second batch
test framework: further deprecate test_i18ngrep
Git 2.42.1
tests: teach callers of test_i18ngrep to use test_grep
A bit more before -rc1
Prepare for -rc1
Git 2.43-rc1
Git 2.43-rc2
Git 2.43
Karthik Nayak (3):
revision: rename bit to `do_not_die_on_missing_objects`
rev-list: move `show_commit()` to the bottom
rev-list: add commit object support in `--missing` option
Kousik Sanagavarapu (4):
ref-filter: sort numerically when ":size" is used
t/t6300: cleanup test_atom
t/t6300: introduce test_bad_atom
ref-filter: add mailmap support
Kristoffer Haugsbakk (2):
range-diff: treat notes like `log`
grep: die gracefully when outside repository
Linus Arver (17):
trailer tests: make test cases self-contained
trailer test description: this tests --where=after, not --where=before
trailer: add tests to check defaulting behavior with --no-* flags
trailer doc: narrow down scope of --where and related flags
trailer: trailer location is a place, not an action
trailer --no-divider help: describe usual "---" meaning
trailer --parse help: expose aliased options
trailer --only-input: prefer "configuration variables" over "rules"
trailer --parse docs: add explanation for its usefulness
trailer --unfold help: prefer "reformat" over "join"
trailer doc: emphasize the effect of configuration variables
trailer doc: separator within key suppresses default separator
trailer doc: <token> is a <key> or <keyAlias>, not both
trailer: separate public from internal portion of trailer_iterator
trailer: split process_input_file into separate pieces
trailer: split process_command_line_args into separate functions
strvec: drop unnecessary include of hex.h
M Hickford (3):
credential/libsecret: store new attributes
credential/libsecret: erase matching creds only
credential/wincred: erase matching creds only
Mark Levedahl (6):
git gui Makefile - remove Cygwin modifications
git-gui - remove obsolete Cygwin specific code
git-gui - use cygstart to browse on Cygwin
git-gui - use mkshortcut on Cygwin
git-gui - re-enable use of hook scripts
git-gui - use git-hook, honor core.hooksPath
Mark Ruvald Pedersen (1):
sequencer: truncate labels to accommodate loose refs
Martin Ågren (1):
git-merge-file doc: drop "-file" from argument placeholders
Matthew McClain (1):
git-p4 shouldn't attempt to store symlinks in LFS
Michael Strawbridge (1):
send-email: move validation code below process_address_list
Michal Suchanek (1):
git-push doc: more visibility for -q option
Naomi Ibe (1):
builtin/add.c: clean up die() messages
Oswald Buddenhagen (16):
t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
sequencer: simplify allocation of result array in todo_list_rearrange_squash()
t/lib-rebase: improve documentation of set_fake_editor()
t9001: fix indentation in test_no_confirm()
format-patch: add --description-file option
sequencer: rectify empty hint in call of require_clean_work_tree()
sequencer: beautify subject of reverts of reverts
git-revert.txt: add discussion
sequencer: fix error message on failure to copy SQUASH_MSG
t3404-rebase-interactive.sh: fix typos in title of a rewording test
sequencer: remove unreachable exit condition in pick_commits()
am: fix error message in parse_opt_show_current_patch()
rebase: simplify code related to imply_merge()
rebase: handle --strategy via imply_merge() as well
rebase: move parse_opt_keep_empty() down
Patrick Steinhardt (23):
upload-pack: fix exit code when denying fetch of unreachable object ID
revision: make pseudo-opt flags read via stdin behave consistently
doc/git-worktree: mention "refs/rewritten" as per-worktree refs
doc/git-repack: fix syntax for `-g` shorthand option
doc/git-repack: don't mention nonexistent "--unpacked" option
commit-graph: introduce envvar to disable commit existence checks
commit: detect commits that exist in commit-graph but not in the ODB
builtin/show-ref: convert pattern to a local variable
builtin/show-ref: split up different subcommands
builtin/show-ref: fix leaking string buffer
builtin/show-ref: fix dead code when passing patterns
builtin/show-ref: refactor `--exclude-existing` options
builtin/show-ref: stop using global variable to count matches
builtin/show-ref: stop using global vars for `show_one()`
builtin/show-ref: refactor options for patterns subcommand
builtin/show-ref: ensure mutual exclusiveness of subcommands
builtin/show-ref: explicitly spell out different modes in synopsis
builtin/show-ref: add new mode to check for reference existence
t: use git-show-ref(1) to check for ref existence
test-bloom: stop setting up Git directory twice
shallow: fix memory leak when registering shallow roots
setup: refactor `upgrade_repository_format()` to have common exit
setup: fix leaking repository format
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5579t)
Philippe Blain (3):
completion: commit: complete configured trailer tokens
completion: commit: complete trailers tokens more robustly
completion: improve doc for complex aliases
Phillip Wood (7):
rebase -i: move unlink() calls
rebase -i: remove patch file after conflict resolution
sequencer: use rebase_path_message()
sequencer: factor out part of pick_commits()
rebase: fix rewritten list for failed pick
rebase --continue: refuse to commit after failed command
rebase -i: fix adding failed command to the todo list
Ralf Thielow (1):
l10n: Update German translation
René Scharfe (18):
subtree: disallow --no-{help,quiet,debug,branch,message}
t1502, docs: disallow --no-help
t1502: move optionspec help output to a file
t1502: test option negation
parse-options: show negatability of options in short help
parse-options: factor out usage_indent() and usage_padding()
parse-options: no --[no-]no-...
parse-options: simplify usage_padding()
parse-options: allow omitting option help text
name-rev: use OPT_HIDDEN_BOOL for --peel-tag
grep: use OPT_INTEGER_F for --max-depth
grep: reject --no-or
diff --no-index: fix -R with stdin
parse-options: drop unused parse_opt_ctx_t member
parse-options: make CMDMODE errors more precise
am: simplify --show-current-patch handling
am, rebase: fix arghelp syntax of --empty
reflog: fix expire --single-worktree
Robert Coup (1):
upload-pack: add tracing for fetches
Rubén Justo (2):
branch: error message deleting a branch in use
branch: error message checking out a branch in use
Sergey Organov (4):
doc/diff-options: fix link to generating patch section
diff-merges: improve --diff-merges documentation
diff-merges: introduce '--dd' option
completion: complete '--dd'
Shuqi Liang (3):
t1092: add tests for 'git check-attr'
attr.c: read attributes in a sparse directory
check-attr: integrate with sparse-index
Tang Yuyi (1):
merge-tree: add -X strategy option
Taylor Blau (28):
repack: move `pack_geometry` struct to the stack
commit-graph: introduce `commit_graph_generation_from_graph()`
t/t5318-commit-graph.sh: test generation zero transitions during fsck
commit-graph: avoid repeated mixed generation number warnings
leak tests: mark a handful of tests as leak-free
leak tests: mark t3321-notes-stripspace.sh as leak-free
leak tests: mark t5583-push-branches.sh as leak-free
builtin/pack-objects.c: remove unnecessary strbuf_reset()
builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
Documentation/gitformat-pack.txt: drop mixed version section
builtin/repack.c: extract structure to store existing packs
builtin/repack.c: extract marking packs for deletion
builtin/repack.c: extract redundant pack cleanup for --geometric
builtin/repack.c: extract redundant pack cleanup for existing packs
builtin/repack.c: extract `has_existing_non_kept_packs()`
builtin/repack.c: store existing cruft packs separately
builtin/repack.c: avoid directly inspecting "util"
builtin/repack.c: extract common cruft pack loop
git-send-email.perl: avoid printing undef when validating addresses
t7700: split cruft-related tests to t7704
builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
builtin/repack.c: implement support for `--max-cruft-size`
builtin/repack.c: avoid making cruft packs preferred
Documentation/gitformat-pack.txt: fix typo
Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
list-objects: drop --unpacked non-commit objects from results
pack-bitmap: drop --unpacked non-commit objects from results
Teng Long (1):
l10n: zh_CN: for git 2.43.0-rc1
Todd Zullinger (3):
RelNotes: minor typo fixes in 2.43.0 draft
RelNotes: improve wording of credential helper notes
send-email: remove stray characters from usage
Victoria Dye (5):
ref-cache.c: fix prefix matching in ref iteration
dir.[ch]: expose 'get_dtype'
dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
files-backend.c: avoid stat in 'loose_fill_ref_dir'
glossary: add definitions for dereference & peel
Vipul Kumar (1):
git-gui: Fix a typo in README
Wesley Schwengle (2):
git-push.txt: fix grammar
git-svn: drop FakeTerm hack
Yi-Jyun Pan (1):
l10n: zh-TW: Git 2.43.0-rc1
brian m. carlson (2):
t: add a test helper to truncate files
merge-file: add an option to process object IDs
Ævar Arnfjörð Bjarmason (1):
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
Štěpán Němec (6):
doc: fix some typos, grammar and wording issues
doc/diff-options: improve wording of the log.diffMerges mention
git-jump: admit to passing merge mode args to ls-files
doc/gitk: s/sticked/stuck/
t/README: fix multi-prerequisite example
doc/cat-file: make synopsis and description less confusing
王常新 (1):
merge-ort.c: fix typo 'neeed' to 'needed'
谢致邦 (XIE Zhibang) (2):
doc: correct the 50 characters soft limit
doc: correct the 50 characters soft limit (+)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.43.0-rc2
@ 2023-11-14 17:25 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-14 17:25 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.43.0-rc2 is now available for testing at
the usual places. It is comprised of 451 non-merge commits since
v2.42.0, contributed by 71 people, 17 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.43.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.42.0 are as follows.
Welcome to the Git development community!
Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,
Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens
(heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,
Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul
Kumar, 王常新, and 谢致邦 (XIE Zhibang).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Andrei Rybak, Andy Koppe, Bagas
Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Christian
Couder, Christian Hesse, Derrick Stolee, Drew DeVault, Elijah
Newren, Emily Shaffer, Eric W. Biederman, Eric Wong, Evan
Gates, Han Young, Hariom Verma, Jacob Abel, Jacob Stopak,
Jason Hatton, Jeff King, Johannes Schindelin, John Cai,
Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,
Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark
Levedahl, Martin Ågren, Martin Storsjö, M Hickford, Michael
Strawbridge, Michal Suchanek, Oswald Buddenhagen, Patrick
Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker,
René Scharfe, Robert Coup, Rubén Justo, Sergey Organov, Shuqi
Liang, Stefan Haller, Štěpán Němec, Taylor Blau, Teng Long,
Todd Zullinger, Victoria Dye, and Wesley Schwengle.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.43 Release Notes (draft)
===============================
Backward Compatibility Notes
* The "--rfc" option of "git format-patch" used to be a valid way to
override an earlier "--subject-prefix=<something>" on the command
line and replace it with "[RFC PATCH]", but from this release, it
merely prefixes the string "RFC " in front of the given subject
prefix. If you are negatively affected by this change, please use
"--subject-prefix=PATCH --rfc" as a replacement.
* "git rev-list --stdin" learned to take non-revisions (like "--not")
recently from the standard input, but the way such a "--not" was
handled was quite confusing, which has been rethought. The updated
rule is that "--not" given from the command line only affects revs
given from the command line that comes but not revs read from the
standard input, and "--not" read from the standard input affects
revs given from the standard input and not revs given from the
command line.
UI, Workflows & Features
* A message written in olden time prevented a branch from getting
checked out saying it is already checked out elsewhere, but these
days, we treat a branch that is being bisected or rebased just like
a branch that is checked out and protect it. Rephrase the message
to say that the branch is in use.
* Hourly and other schedules of "git maintenance" jobs are randomly
distributed now.
* "git cmd -h" learned to signal which options can be negated by
listing such options like "--[no-]opt".
* The way authentication related data other than passwords (e.g.,
oauth token and password expiration data) are stored in libsecret
keyrings has been rethought.
* Update the libsecret and wincred credential helpers to correctly
match which credential to erase; they erased the wrong entry in
some cases.
* Git GUI updates.
* "git format-patch" learns a way to feed cover letter description,
that (1) can be used on detached HEAD where there is no branch
description available, and (2) also can override the branch
description if there is one.
* Use of --max-pack-size to allow multiple packfiles to be created is
now supported even when we are sending unreachable objects to cruft
packs.
* "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
"--subject-prefix" option and used "[RFC PATCH]"; now we will add
"RFC" prefix to whatever subject prefix is specified.
* "git log --format" has been taught the %(decorate) placeholder.
* The default log message created by "git revert", when reverting a
commit that records a revert, has been tweaked, to encourage people
to describe complex "revert of revert of revert" situations better in
their own words.
* The command-line completion support (in contrib/) learned to
complete "git commit --trailer=" for possible trailer keys.
* "git update-index" learns "--show-index-version" to inspect
the index format version used by the on-disk index file.
* "git diff" learned diff.statNameWidth configuration variable, to
give the default width for the name part in the "--stat" output.
* "git range-diff --notes=foo" compared "log --notes=foo --notes" of
the two ranges, instead of using just the specified notes tree.
* The command line completion script (in contrib/) can be told to
complete aliases by including ": git <cmd> ;" in the alias to tell
it that the alias should be completed in a similar way to how "git <cmd>" is
completed. The parsing code for the alias has been loosened to
allow ';' without an extra space before it.
* "git for-each-ref" and friends learned to apply mailmap to
authorname and other fields.
* "git repack" machinery learns to pay attention to the "--filter="
option.
* "git repack" learned "--max-cruft-size" to prevent cruft packs from
growing without bounds.
* "git merge-tree" learned to take strategy backend specific options
via the "-X" option, like "git merge" does.
* "git log" and friends learned "--dd" that is a short-hand for
"--diff-merges=first-parent -p".
* The attribute subsystem learned to honor `attr.tree` configuration
that specifies which tree to read the .gitattributes files from.
* "git merge-file" learns a mode to read three contents to be merged
from blob objects.
Performance, Internal Implementation, Development Support etc.
* "git check-attr" has been taught to work better with sparse-index.
* It may be tempting to leave the help text NULL for a command line
option that is either hidden or too obvious, but "git subcmd -h"
and "git subcmd --help-all" would have segfaulted if done so. Now
the help text is optional.
* Tests that are known to pass with LSan are now marked as such.
* Flaky "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.
* Tests with LSan from time to time seem to emit harmless messages
that make our tests unnecessarily flaky; we work around it by
filtering the uninteresting output.
* Unused parameters to functions are marked as such, and/or removed,
in order to bring us closer to -Wunused-parameter clean.
* The code to keep track of existing packs in the repository while
repacking has been refactored.
* The "streaming" interface used for bulk-checkin codepath has been
narrowed to take only blob objects for now, with no real loss of
functionality.
* GitHub CI workflow has learned to trigger Coverity check.
* Test coverage for trailers has been improved.
* The code to iterate over loose references has been optimized to
reduce the number of lstat() system calls.
* The codepaths that read "chunk" formatted files have been corrected
to pay attention to the chunk size and notice broken files.
* Replace macos-12 used at GitHub CI with macos-13.
(merge 682a868f67 js/ci-use-macos-13 later to maint).
Fixes since v2.42
-----------------
* Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.
* Scalar updates.
* Tweak GitHub Actions CI so that pushing the same commit to multiple
branch tips at the same time will not waste building and testing
the same thing twice.
* The commit-graph verification code that detects a mixture of zero and
non-zero generation numbers has been updated.
* "git diff -w --exit-code" with various options did not work
correctly, which is being addressed.
* transfer.unpackLimit ought to be used as a fallback, but overrode
fetch.unpackLimit and receive.unpackLimit instead.
* The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.
* "git diff --no-such-option" and other corner cases around the exit
status of the "diff" command have been corrected.
* "git for-each-ref --sort='contents:size'" sorts the refs according
to size numerically, giving a ref that points at a blob twelve-byte
(12) long before showing a blob hundred-byte (100) long.
* We now limit the depth of the tree objects and maximum length of
pathnames recorded in tree objects.
(merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
* Various fixes to the behavior of "rebase -i" when the command got
interrupted by conflicting changes.
* References from a description of the `--patch` option in various
manual pages have been simplified and improved.
* "git grep -e A --no-or -e B" is accepted, even though the negation
of "or" did not mean anything, which has been tightened.
* The completion script (in contrib/) has been taught to treat the
"-t" option to "git checkout" and "git switch" just like the
"--track" option, to complete remote-tracking branches.
* "git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.
* Update "git maintenance" timers' implementation based on systemd
timers to work with WSL.
* "git diff --cached" codepath did not fill the necessary stat
information for a file when fsmonitor knows it is clean and ended
up behaving as if it is not clean, which has been corrected.
* Clarify how "alias.foo = : git cmd ; aliased-command-string" should be
spelled with necessary whitespace around punctuation marks to
work.
* HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.
* An error message given by "git send-email" when given a malformed
address did not give correct information, which has been corrected.
* UBSan options were not propagated through the test framework to git
run via the httpd, unlike ASan options, which has been corrected.
* "checkout --merge -- path" and "update-index --unresolve path" did
not resurrect conflicted state that was resolved to remove path,
but now they do.
(merge 5bdedac3c7 jc/unresolve-removal later to maint).
* The display width table for unicode characters has been updated for
Unicode 15.1
(merge 872976c37e bb/unicode-width-table-15 later to maint).
* Update mailmap entry for Derrick.
(merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
* In .gitmodules files, submodules are keyed by their names, and the
path to the submodule whose name is $name is specified by the
submodule.$name.path variable. There were a few codepaths that
mixed the name and path up when consulting the submodule database,
which have been corrected. It took long for these bugs to be found
as the name of a submodule initially is the same as its path, and
the problem does not surface until it is moved to a different path,
which apparently happens very rarely.
* "git diff --merge-base X other args..." insisted that X must be a
commit and errored out when given an annotated tag that peels to a
commit, but we only need it to be a committish. This has been
corrected.
(merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
* Fix "git merge-tree" to stop segfaulting when the --attr-source
option is used.
(merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
* Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
not auto-initialize the decoration subsystem, which has been
corrected.
* Feeding "git stash store" with a random commit that was not created
by "git stash create" now errors out.
(merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
* The index file has room only for the lower 32-bit of the file size in
the cached stat information, which means cached stat information
will have 0 in its sd_size member for a file whose size is a multiple
of 4GiB. This is mistaken for a racily clean path. Avoid it by
storing a bogus sd_size value instead for such files.
(merge 5143ac07b1 bc/racy-4gb-files later to maint).
* "git p4" tried to store symlinks to LFS when told, but has been
fixed not to do so, because it does not make sense.
(merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
* The codepath to handle recipient addresses `git send-email
--compose` learns from the user was completely broken, which has
been corrected.
(merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
* "cd sub && git grep -f patterns" tried to read "patterns" file at
the top level of the working tree; it has been corrected to read
"sub/patterns" instead.
* "git reflog expire --single-worktree" has been broken for the past
20 months or so, which has been corrected.
* "git send-email" did not have certain pieces of data computed yet
when it tried to validate the outgoing messages and its recipient
addresses, which has been sorted out.
* "git bugreport" learned to complain when it received a command line
argument that it will not use.
* The codepath to traverse the commit-graph learned to notice that a
commit is missing (e.g., corrupt repository lost an object), even
though it knows something about the commit (like its parents) from
what is in commit-graph.
(merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).
* "git rev-list --missing" did not work for missing commit objects,
which has been corrected.
* "git rev-list --unpacked --objects" failed to exclude packed
non-commit objects, which has been corrected.
(merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
(merge 1bd809938a tb/format-pack-doc-update later to maint).
(merge 8f81532599 an/clang-format-typofix later to maint).
(merge 3ca86adc2d la/strvec-header-fix later to maint).
(merge 6789275d37 jc/test-i18ngrep later to maint).
(merge 9972cd6004 ps/leakfixes later to maint).
----------------------------------------------------------------
Changes since v2.42.0 are as follows:
Aditya Neelamraju (1):
clang-format: fix typo in comment
Alyssa Ross (1):
diff: fix --merge-base with annotated tags
Andrei Rybak (1):
SubmittingPatches: call gitk's command "Copy commit reference"
Andy Koppe (8):
pretty-formats: enclose options in angle brackets
decorate: refactor format_decorations()
decorate: avoid some unnecessary color overhead
decorate: color each token separately
pretty: add %(decorate[:<options>]) format
pretty: add pointer and tag options to %(decorate)
decorate: use commit color for HEAD arrow
pretty: fix ref filtering for %(decorate) formats
Beat Bolli (1):
unicode: update the width tables to Unicode 15.1
Caleb Hill (1):
git-clean doc: fix "without do cleaning" typo
Calvin Wan (4):
hex-ll: separate out non-hash-algo functions
wrapper: reduce scope of remove_or_warn()
config: correct bad boolean env value error message
parse: separate out parsing functions from config.h
Christian Couder (9):
pack-objects: allow `--filter` without `--stdout`
t/helper: add 'find-pack' test-tool
repack: refactor finishing pack-objects command
repack: refactor finding pack prefix
pack-bitmap-write: rebuild using new bitmap when remapping
repack: add `--filter=<filter-spec>` option
gc: add `gc.repackFilter` config option
repack: implement `--filter-to` for storing filtered out objects
gc: add `gc.repackFilterTo` config option
Christian Hesse (2):
t/lib-gpg: forcibly run a trustdb update
t/t6300: drop magic filtering
Derrick Stolee (13):
upload-pack: fix race condition in error messages
maintenance: add get_random_minute()
maintenance: use random minute in launchctl scheduler
maintenance: use random minute in Windows scheduler
maintenance: use random minute in cron scheduler
maintenance: swap method locations
maintenance: use random minute in systemd scheduler
maintenance: fix systemd schedule overlaps
maintenance: update schedule before config
scalar: add --[no-]src option
setup: add discover_git_directory_reason()
scalar reconfigure: help users remove buggy repos
mailmap: change primary address for Derrick Stolee
Dorcas AnonoLitunya (1):
t7601: use "test_path_is_file" etc. instead of "test -f"
Dragan Simic (2):
diff --stat: add config option to limit filename width
diff --stat: set the width defaults in a helper function
Drew DeVault (1):
format-patch: --rfc honors what --subject-prefix sets
Elijah Newren (26):
documentation: wording improvements
documentation: fix small error
documentation: fix typos
documentation: fix apostrophe usage
documentation: add missing words
documentation: remove extraneous words
documentation: fix subject/verb agreement
documentation: employ consistent verb tense for a list
documentation: fix verb tense
documentation: fix adjective vs. noun
documentation: fix verb vs. noun
documentation: fix singular vs. plural
documentation: whitespace is already generally plural
documentation: fix choice of article
documentation: add missing article
documentation: remove unnecessary hyphens
documentation: add missing hyphens
documentation: use clearer prepositions
documentation: fix punctuation
documentation: fix capitalization
documentation: fix whitespace issues
documentation: add some commas where they are helpful
documentation: add missing fullstops
documentation: add missing quotes
documentation: add missing parenthesis
RelNotes: minor wording fixes in 2.43.0 release notes
Emily Shaffer (2):
t0091-bugreport: stop using i18ngrep
bugreport: reject positional arguments
Eric W. Biederman (1):
bulk-checkin: only support blobs in index_bulk_checkin
Eric Wong (1):
treewide: fix various bugs w/ OpenSSL 3+ EVP API
Evan Gates (1):
git-config: fix misworded --type=path explanation
Han Young (1):
show doc: redirect user to git log manual instead of git diff-tree
Isoken June Ibizugbe (1):
builtin/branch.c: adjust error messages to coding guidelines
Jacob Abel (1):
builtin/worktree.c: fix typo in "forgot fetch" msg
Jacob Stopak (1):
Include gettext.h in MyFirstContribution tutorial
Jan Alexander Steffens (heftig) (6):
submodule--helper: use submodule_from_path in set-{url,branch}
submodule--helper: return error from set-url when modifying failed
t7419: actually test the branch switching
t7419, t7420: use test_cmp_config instead of grepping .gitmodules
t7419: test that we correctly handle renamed submodules
t7420: test that we correctly handle renamed submodules
Jason Hatton (1):
Prevent git from rehashing 4GiB files
Javier Mora (2):
git-status.txt: fix minor asciidoc format issue
doc/git-bisect: clarify `git bisect run` syntax
Jeff King (114):
hashmap: use expected signatures for comparison functions
diff-files: avoid negative exit value
diff: show usage for unknown builtin_diff_files() options
diff: die when failing to read index in git-diff builtin
diff: drop useless return from run_diff_{files,index} functions
diff: drop useless return values in git-diff helpers
diff: drop useless "status" parameter from diff_result_code()
commit-graph: verify swapped zero/non-zero generation cases
test-lib: ignore uninteresting LSan output
sequencer: use repository parameter in short_commit_name()
sequencer: mark repository argument as unused
ref-filter: mark unused parameters in parser callbacks
pack-bitmap: mark unused parameters in show_object callback
worktree: mark unused parameters in each_ref_fn callback
commit-graph: mark unused data parameters in generation callbacks
ls-tree: mark unused parameter in callback
stash: mark unused parameter in diff callback
trace2: mark unused us_elapsed_absolute parameters
trace2: mark unused config callback parameter
test-trace2: mark unused argv/argc parameters
grep: mark unused parameter in output function
add-interactive: mark unused callback parameters
negotiator/noop: mark unused callback parameters
worktree: mark unused parameters in noop repair callback
imap-send: mark unused parameters with NO_OPENSSL
grep: mark unused parmaeters in pcre fallbacks
credential: mark unused parameter in urlmatch callback
fetch: mark unused parameter in ref_transaction callback
bundle-uri: mark unused parameters in callbacks
gc: mark unused descriptors in scheduler callbacks
update-ref: mark unused parameter in parser callbacks
ci: allow branch selection through "vars"
ci: deprecate ci/config/allow-ref script
merge: make xopts a strvec
merge: simplify parsing of "-n" option
format-patch: use OPT_STRING_LIST for to/cc options
tree-walk: reduce stack size for recursive functions
tree-walk: drop MAX_TRAVERSE_TREES macro
tree-walk: rename "error" variable
fsck: detect very large tree pathnames
add core.maxTreeDepth config
traverse_trees(): respect max_allowed_tree_depth
read_tree(): respect max_allowed_tree_depth
list-objects: respect max_allowed_tree_depth
tree-diff: respect max_allowed_tree_depth
lower core.maxTreeDepth default to 2048
checkout-index: delay automatic setting of to_tempfile
parse-options: prefer opt->value to globals in callbacks
parse-options: mark unused "opt" parameter in callbacks
merge: do not pass unused opt->value parameter
parse-options: add more BUG_ON() annotations
interpret-trailers: mark unused "unset" parameters in option callbacks
parse-options: mark unused parameters in noop callback
merge-ort: drop custom err() function
merge-ort: stop passing "opt" to read_oid_strbuf()
merge-ort: drop unused parameters from detect_and_process_renames()
merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
http: factor out matching of curl http/2 trace lines
http: update curl http/2 info matching for curl 8.3.0
merge-ort: lowercase a few error messages
fsmonitor: prefer repo_git_path() to git_pathdup()
fsmonitor/win32: drop unused parameters
fsmonitor: mark some maybe-unused parameters
fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
fsmonitor: mark unused parameters in stub functions
fsmonitor/darwin: mark unused parameters in system callback
fsmonitor: mark unused hashmap callback parameters
run-command: mark unused parameters in start_bg_wait callbacks
test-lib: set UBSAN_OPTIONS to match ASan
commit-graph: factor out chain opening function
commit-graph: check mixed generation validation when loading chain file
t5324: harmonize sha1/sha256 graph chain corruption
commit-graph: detect read errors when verifying graph chain
commit-graph: tighten chain size check
commit-graph: report incomplete chains during verification
t6700: mark test as leak-free
commit-reach: free temporary list in get_octopus_merge_bases()
merge: free result of repo_get_merge_bases()
commit-graph: move slab-clearing to close_commit_graph()
commit-graph: free all elements of graph chain
commit-graph: delay base_graph assignment in add_graph_to_chain()
commit-graph: free graph struct that was not added to chain
commit-graph: free write-context entries before overwriting
commit-graph: free write-context base_graph_name during cleanup
commit-graph: clear oidset after finishing write
decorate: add clear_decoration() function
revision: clear decoration structs during release_revisions()
daemon: free listen_addr before returning
repack: free existing_cruft array after use
chunk-format: note that pair_chunk() is unsafe
t: add library for munging chunk-format files
midx: stop ignoring malformed oid fanout chunk
commit-graph: check size of oid fanout chunk
midx: check size of oid lookup chunk
commit-graph: check consistency of fanout table
midx: check size of pack names chunk
midx: enforce chunk alignment on reading
midx: check size of object offset chunk
midx: bounds-check large offset chunk
midx: check size of revindex chunk
commit-graph: check size of commit data chunk
commit-graph: detect out-of-bounds extra-edges pointers
commit-graph: bounds-check base graphs chunk
commit-graph: check size of generations chunk
commit-graph: bounds-check generation overflow chunk
commit-graph: check bounds when accessing BDAT chunk
commit-graph: check bounds when accessing BIDX chunk
commit-graph: detect out-of-order BIDX offsets
chunk-format: drop pair_chunk_unsafe()
t5319: make corrupted large-offset test more robust
doc/send-email: mention handling of "reply-to" with --compose
Revert "send-email: extract email-parsing code into a subroutine"
send-email: handle to/cc/bcc from --compose message
t: avoid perl's pack/unpack "Q" specifier
Johannes Schindelin (19):
windows: ignore empty `PATH` elements
is_Cygwin: avoid `exec`ing anything
Move is_<platform> functions to the beginning
Move the `_which` function (almost) to the top
Work around Tcl's default `PATH` lookup
rebase: allow overriding the maximal length of the generated labels
ci: avoid building from the same commit in parallel
ci(linux-asan-ubsan): let's save some time
var: avoid a segmentation fault when `HOME` is unset
completion(switch/checkout): treat --track and -t the same
maintenance(systemd): support the Windows Subsystem for Linux
ci: add a GitHub workflow to submit Coverity scans
coverity: cache the Coverity Build Tool
coverity: allow overriding the Coverity project
coverity: support building on Windows
coverity: allow running on macOS
coverity: detect and report when the token or project is incorrect
max_tree_depth: lower it for MSVC to avoid stack overflows
ci: upgrade to using macos-13
John Cai (3):
merge-ort: initialize repo in index state
attr: read attributes from HEAD when bare repo
attr: add attr.tree for setting the treeish to read attributes from
Josh Soref (1):
Documentation/git-status: add missing line breaks
Josip Sokcevic (1):
diff-lib: fix check_removed when fsmonitor is on
Junio C Hamano (56):
update-index: do not read HEAD and MERGE_HEAD unconditionally
resolve-undo: allow resurrecting conflicted state that resolved to deletion
update-index: use unmerge_index_entry() to support removal
update-index: remove stale fallback code for "--unresolve"
checkout/restore: refuse unmerging paths unless checking out of the index
checkout/restore: add basic tests for --merge
checkout: allow "checkout -m path" to unmerge removed paths
mv: fix error for moving directory to another
diff: move the fallback "--exit-code" code down
diff: mode-only change should be noticed by "--patch -w --exit-code"
diff: teach "--stat -w --exit-code" to notice differences
t4040: remove test that succeeded for a wrong reason
pretty-formats: define "literal formatting code"
diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
diff: the -w option breaks --exit-code for --raw and other output modes
transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
Start the 2.43 cycle
The second batch for 2.43
The extra batch to update credenthal helpers
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
update-index doc: v4 is OK with JGit and libgit2
update-index: add --show-index-version
test-tool: retire "index-version"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
completion: loosen and document the requirement around completing alias
The twelfth batch
The thirteenth batch
The fourteenth batch
The fifteenth batch
doc: update list archive reference to use lore.kernel.org
The sixteenth batch
merge: introduce {copy|clear}_merge_options()
stash: be careful what we store
grep: -f <path> is relative to $cwd
The seventeenth batch
The eighteenth batch
commit: do not use cryptic "new_index" in end-user facing messages
The nineteenth batch
am: align placeholder for --whitespace option with apply
The twentieth batch
The twenty-first batch
The twenty-second batch
test framework: further deprecate test_i18ngrep
Git 2.42.1
tests: teach callers of test_i18ngrep to use test_grep
A bit more before -rc1
Prepare for -rc1
Git 2.43-rc1
Git 2.43-rc2
Karthik Nayak (3):
revision: rename bit to `do_not_die_on_missing_objects`
rev-list: move `show_commit()` to the bottom
rev-list: add commit object support in `--missing` option
Kousik Sanagavarapu (4):
ref-filter: sort numerically when ":size" is used
t/t6300: cleanup test_atom
t/t6300: introduce test_bad_atom
ref-filter: add mailmap support
Kristoffer Haugsbakk (2):
range-diff: treat notes like `log`
grep: die gracefully when outside repository
Linus Arver (17):
trailer tests: make test cases self-contained
trailer test description: this tests --where=after, not --where=before
trailer: add tests to check defaulting behavior with --no-* flags
trailer doc: narrow down scope of --where and related flags
trailer: trailer location is a place, not an action
trailer --no-divider help: describe usual "---" meaning
trailer --parse help: expose aliased options
trailer --only-input: prefer "configuration variables" over "rules"
trailer --parse docs: add explanation for its usefulness
trailer --unfold help: prefer "reformat" over "join"
trailer doc: emphasize the effect of configuration variables
trailer doc: separator within key suppresses default separator
trailer doc: <token> is a <key> or <keyAlias>, not both
trailer: separate public from internal portion of trailer_iterator
trailer: split process_input_file into separate pieces
trailer: split process_command_line_args into separate functions
strvec: drop unnecessary include of hex.h
M Hickford (3):
credential/libsecret: store new attributes
credential/libsecret: erase matching creds only
credential/wincred: erase matching creds only
Mark Levedahl (6):
git gui Makefile - remove Cygwin modifications
git-gui - remove obsolete Cygwin specific code
git-gui - use cygstart to browse on Cygwin
git-gui - use mkshortcut on Cygwin
git-gui - re-enable use of hook scripts
git-gui - use git-hook, honor core.hooksPath
Mark Ruvald Pedersen (1):
sequencer: truncate labels to accommodate loose refs
Martin Ågren (1):
git-merge-file doc: drop "-file" from argument placeholders
Matthew McClain (1):
git-p4 shouldn't attempt to store symlinks in LFS
Michael Strawbridge (1):
send-email: move validation code below process_address_list
Michal Suchanek (1):
git-push doc: more visibility for -q option
Naomi Ibe (1):
builtin/add.c: clean up die() messages
Oswald Buddenhagen (16):
t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
sequencer: simplify allocation of result array in todo_list_rearrange_squash()
t/lib-rebase: improve documentation of set_fake_editor()
t9001: fix indentation in test_no_confirm()
format-patch: add --description-file option
sequencer: rectify empty hint in call of require_clean_work_tree()
sequencer: beautify subject of reverts of reverts
git-revert.txt: add discussion
sequencer: fix error message on failure to copy SQUASH_MSG
t3404-rebase-interactive.sh: fix typos in title of a rewording test
sequencer: remove unreachable exit condition in pick_commits()
am: fix error message in parse_opt_show_current_patch()
rebase: simplify code related to imply_merge()
rebase: handle --strategy via imply_merge() as well
rebase: move parse_opt_keep_empty() down
Patrick Steinhardt (23):
upload-pack: fix exit code when denying fetch of unreachable object ID
revision: make pseudo-opt flags read via stdin behave consistently
doc/git-worktree: mention "refs/rewritten" as per-worktree refs
doc/git-repack: fix syntax for `-g` shorthand option
doc/git-repack: don't mention nonexistent "--unpacked" option
commit-graph: introduce envvar to disable commit existence checks
commit: detect commits that exist in commit-graph but not in the ODB
builtin/show-ref: convert pattern to a local variable
builtin/show-ref: split up different subcommands
builtin/show-ref: fix leaking string buffer
builtin/show-ref: fix dead code when passing patterns
builtin/show-ref: refactor `--exclude-existing` options
builtin/show-ref: stop using global variable to count matches
builtin/show-ref: stop using global vars for `show_one()`
builtin/show-ref: refactor options for patterns subcommand
builtin/show-ref: ensure mutual exclusiveness of subcommands
builtin/show-ref: explicitly spell out different modes in synopsis
builtin/show-ref: add new mode to check for reference existence
t: use git-show-ref(1) to check for ref existence
test-bloom: stop setting up Git directory twice
shallow: fix memory leak when registering shallow roots
setup: refactor `upgrade_repository_format()` to have common exit
setup: fix leaking repository format
Philippe Blain (3):
completion: commit: complete configured trailer tokens
completion: commit: complete trailers tokens more robustly
completion: improve doc for complex aliases
Phillip Wood (7):
rebase -i: move unlink() calls
rebase -i: remove patch file after conflict resolution
sequencer: use rebase_path_message()
sequencer: factor out part of pick_commits()
rebase: fix rewritten list for failed pick
rebase --continue: refuse to commit after failed command
rebase -i: fix adding failed command to the todo list
René Scharfe (18):
subtree: disallow --no-{help,quiet,debug,branch,message}
t1502, docs: disallow --no-help
t1502: move optionspec help output to a file
t1502: test option negation
parse-options: show negatability of options in short help
parse-options: factor out usage_indent() and usage_padding()
parse-options: no --[no-]no-...
parse-options: simplify usage_padding()
parse-options: allow omitting option help text
name-rev: use OPT_HIDDEN_BOOL for --peel-tag
grep: use OPT_INTEGER_F for --max-depth
grep: reject --no-or
diff --no-index: fix -R with stdin
parse-options: drop unused parse_opt_ctx_t member
parse-options: make CMDMODE errors more precise
am: simplify --show-current-patch handling
am, rebase: fix arghelp syntax of --empty
reflog: fix expire --single-worktree
Robert Coup (1):
upload-pack: add tracing for fetches
Rubén Justo (2):
branch: error message deleting a branch in use
branch: error message checking out a branch in use
Sergey Organov (4):
doc/diff-options: fix link to generating patch section
diff-merges: improve --diff-merges documentation
diff-merges: introduce '--dd' option
completion: complete '--dd'
Shuqi Liang (3):
t1092: add tests for 'git check-attr'
attr.c: read attributes in a sparse directory
check-attr: integrate with sparse-index
Tang Yuyi (1):
merge-tree: add -X strategy option
Taylor Blau (28):
repack: move `pack_geometry` struct to the stack
commit-graph: introduce `commit_graph_generation_from_graph()`
t/t5318-commit-graph.sh: test generation zero transitions during fsck
commit-graph: avoid repeated mixed generation number warnings
leak tests: mark a handful of tests as leak-free
leak tests: mark t3321-notes-stripspace.sh as leak-free
leak tests: mark t5583-push-branches.sh as leak-free
builtin/pack-objects.c: remove unnecessary strbuf_reset()
builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
Documentation/gitformat-pack.txt: drop mixed version section
builtin/repack.c: extract structure to store existing packs
builtin/repack.c: extract marking packs for deletion
builtin/repack.c: extract redundant pack cleanup for --geometric
builtin/repack.c: extract redundant pack cleanup for existing packs
builtin/repack.c: extract `has_existing_non_kept_packs()`
builtin/repack.c: store existing cruft packs separately
builtin/repack.c: avoid directly inspecting "util"
builtin/repack.c: extract common cruft pack loop
git-send-email.perl: avoid printing undef when validating addresses
t7700: split cruft-related tests to t7704
builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
builtin/repack.c: implement support for `--max-cruft-size`
builtin/repack.c: avoid making cruft packs preferred
Documentation/gitformat-pack.txt: fix typo
Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
list-objects: drop --unpacked non-commit objects from results
pack-bitmap: drop --unpacked non-commit objects from results
Todd Zullinger (2):
RelNotes: minor typo fixes in 2.43.0 draft
RelNotes: improve wording of credential helper notes
Victoria Dye (4):
ref-cache.c: fix prefix matching in ref iteration
dir.[ch]: expose 'get_dtype'
dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
files-backend.c: avoid stat in 'loose_fill_ref_dir'
Vipul Kumar (1):
git-gui: Fix a typo in README
Wesley Schwengle (2):
git-push.txt: fix grammar
git-svn: drop FakeTerm hack
brian m. carlson (2):
t: add a test helper to truncate files
merge-file: add an option to process object IDs
Ævar Arnfjörð Bjarmason (1):
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
Štěpán Němec (6):
doc: fix some typos, grammar and wording issues
doc/diff-options: improve wording of the log.diffMerges mention
git-jump: admit to passing merge mode args to ls-files
doc/gitk: s/sticked/stuck/
t/README: fix multi-prerequisite example
doc/cat-file: make synopsis and description less confusing
王常新 (1):
merge-ort.c: fix typo 'neeed' to 'needed'
谢致邦 (XIE Zhibang) (2):
doc: correct the 50 characters soft limit
doc: correct the 50 characters soft limit (+)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.43.0-rc1
@ 2023-11-08 17:33 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-08 17:33 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.43.0-rc1 is now available for testing at
the usual places. It is comprised of 449 non-merge commits since
v2.42.0, contributed by 71 people, 17 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.43.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.42.0 are as follows.
Welcome to the Git development community!
Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,
Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens
(heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,
Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul
Kumar, 王常新, and 谢致邦 (XIE Zhibang).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Andrei Rybak, Andy Koppe, Bagas
Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Christian
Couder, Christian Hesse, Derrick Stolee, Drew DeVault, Elijah
Newren, Emily Shaffer, Eric W. Biederman, Eric Wong, Evan
Gates, Han Young, Hariom Verma, Jacob Abel, Jacob Stopak,
Jason Hatton, Jeff King, Johannes Schindelin, John Cai,
Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,
Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark
Levedahl, Martin Ågren, Martin Storsjö, M Hickford, Michael
Strawbridge, Michal Suchanek, Oswald Buddenhagen, Patrick
Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker,
René Scharfe, Robert Coup, Rubén Justo, Sergey Organov, Shuqi
Liang, Stefan Haller, Štěpán Němec, Taylor Blau, Teng Long,
Todd Zullinger, Victoria Dye, and Wesley Schwengle.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.43 Release Notes (draft)
===============================
Backward Compatibility Notes
* The "--rfc" option of "git format-patch" used to be a valid way to
override an earlier "--subject-prefix=<something>" on the command
line and replace it with "[RFC PATCH]", but from this release, it
merely prefixes the string "RFC " in front of the given subject
prefix. If you are negatively affected by this change, please use
"--subject-prefix=PATCH --rfc" as a replacement.
* "git rev-list --stdin" learned to take non-revisions (like "--not")
recently from the standard input, but the way such a "--not" was
handled was quite confusing, which has been rethought. The updated
rule is that "--not" given from the command line only affects revs
given from the command line that comes but not revs read from the
standard input, and "--not" read from the standard input affects
revs given from the standard input and not revs given from the
command line.
UI, Workflows & Features
* A message written in olden time prevented a branch from getting
checked out saying it is already checked out elsewhere, but these
days, we treat a branch that is being bisected or rebased just like
a branch that is checked out and protect it. Rephrase the message
to say that the branch is in use.
* Hourly and other schedule of "git maintenance" jobs are randomly
distributed now.
* "git cmd -h" learned to signal which options can be negated by
listing such options like "--[no-]opt".
* The way authentication related data other than passwords (e.g.
oath token and password expiration data) are stored in libsecret
keyrings has been rethought.
* Update the libsecret and wincred credential helpers to correctly
match which credential to erase; they erased the wrong entry in
some cases.
* Git GUI updates.
* "git format-patch" learns a way to feed cover letter description,
that (1) can be used on detached HEAD where there is no branch
description available, and (2) also can override the branch
description if there is one.
* Use of --max-pack-size to allow multiple packfiles to be created is
now supported even when we are sending unreachable objects to cruft
packs.
* "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
"--subject-prefix" option and used "[RFC PATCH]"; now we will add
"RFC" prefix to whatever subject prefix is specified.
* "git log --format" has been taught the %(decorate) placeholder.
* The default log message created by "git revert", when reverting a
commit that records a revert, has been tweaked, to encourage people
describe complex "revert of revert of revert" situation better in
their own words.
* The command-line completion support (in contrib/) learned to
complete "git commit --trailer=" for possible trailer keys.
* "git update-index" learns "--show-index-version" to inspect
the index format version used by the on-disk index file.
* "git diff" learned diff.statNameWidth configuration variable, to
give the default width for the name part in the "--stat" output.
* "git range-diff --notes=foo" compared "log --notes=foo --notes" of
the two ranges, instead of using just the specified notes tree.
* The command line completion script (in contrib/) can be told to
complete aliases by including ": git <cmd> ;" in the alias to tell
it that the alias should be completed similar to how "git <cmd>" is
completed. The parsing code for the alias as been loosened to
allow ';' without an extra space before it.
* "git for-each-ref" and friends learned to apply mailmap to
authorname and other fields.
* "git repack" machinery learns to pay attention to the "--filter="
option.
* "git repack" learned "--max-cruft-size" to prevent cruft packs from
growing without bounds.
* "git merge-tree" learned to take strategy backend specific options
via the "-X" option, like "git merge" does.
* "git log" and friends learned "--dd" that is a short-hand for
"--diff-merges=first-parent -p".
* The attribute subsystem learned to honor `attr.tree` configuration
that specifies which tree to read the .gitattributes files from.
* "git merge-file" learns a mode to read three contents to be merged
from blob objects.
Performance, Internal Implementation, Development Support etc.
* "git check-attr" has been taught to work better with sparse-index.
* It may be tempting to leave the help text NULL for a command line
option that is either hidden or too obvious, but "git subcmd -h"
and "git subcmd --help-all" would have segfaulted if done so. Now
the help text is optional.
* Tests that are known to pass with LSan are now marked as such.
* Flaky "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.
* Tests with LSan from time to time seem to emit harmless message
that makes our tests unnecessarily flaky; we work it around by
filtering the uninteresting output.
* Unused parameters to functions are marked as such, and/or removed,
in order to bring us closer to -Wunused-parameter clean.
* The code to keep track of existing packs in the repository while
repacking has been refactored.
* The "streaming" interface used for bulk-checkin codepath has been
narrowed to take only blob objects for now, with no real loss of
functionality.
* GitHub CI workflow has learned to trigger Coverity check.
* Test coverage for trailers has been improved.
* The code to iterate over loose references have been optimized to
reduce the number of lstat() system calls.
* The codepaths that read "chunk" formatted files have been corrected
to pay attention to the chunk size and notice broken files.
* Replace macos-12 used at GitHub CI with macos-13.
(merge 682a868f67 js/ci-use-macos-13 later to maint).
Fixes since v2.42
-----------------
* Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.
* Scalar updates.
* Tweak GitHub Actions CI so that pushing the same commit to multiple
branch tips at the same time will not waste building and testing
the same thing twice.
* The commit-graph verification code that detects mixture of zero and
non-zero generation numbers has been updated.
* "git diff -w --exit-code" with various options did not work
correctly, which is being addressed.
* transfer.unpackLimit ought to be used as a fallback, but overrode
fetch.unpackLimit and receive.unpackLimit instead.
* The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.
* "git diff --no-such-option" and other corner cases around the exit
status of the "diff" command has been corrected.
* "git for-each-ref --sort='contents:size'" sorts the refs according
to size numerically, giving a ref that points at a blob twelve-byte
(12) long before showing a blob hundred-byte (100) long.
* We now limit depth of the tree objects and maximum length of
pathnames recorded in tree objects.
(merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
* Various fixes to the behavior of "rebase -i" when the command got
interrupted by conflicting changes.
* References from description of the `--patch` option in various
manual pages have been simplified and improved.
* "git grep -e A --no-or -e B" is accepted, even though the negation
of "or" did not mean anything, which has been tightened.
* The completion script (in contrib/) has been taught to treat the
"-t" option to "git checkout" and "git switch" just like the
"--track" option, to complete remote-tracking branches.
* "git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.
* Update "git maintenance" timers' implementation based on systemd
timers to work with WSL.
* "git diff --cached" codepath did not fill the necessary stat
information for a file when fsmonitor knows it is clean and ended
up behaving as if it is not clean, which has been corrected.
* Clarify how "alias.foo = : git cmd ; aliased-command-string" should
be spelled with necessary whitespaces around punctuation marks to
work.
* HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.
* An error message given by "git send-email" when given a malformed
address did not give correct information, which has been corrected.
* UBSan options were not propagated through the test framework to git
run via the httpd, unlike ASan options, which has been corrected.
* "checkout --merge -- path" and "update-index --unresolve path" did
not resurrect conflicted state that was resolved to remove path,
but now they do.
(merge 5bdedac3c7 jc/unresolve-removal later to maint).
* The display width table for unicode characters has been updated for
Unicode 15.1
(merge 872976c37e bb/unicode-width-table-15 later to maint).
* Update mailmap entry for Derrick.
(merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
* In .gitmodules files, submodules are keyed by their names, and the
path to the submodule whose name is $name is specified by the
submodule.$name.path variable. There were a few codepaths that
mixed the name and path up when consulting the submodule database,
which have been corrected. It took long for these bugs to be found
as the name of a submodule initially is the same as its path, and
the problem does not surface until it is moved to a different path,
which apparently happens very rarely.
* "git diff --merge-base X other args..." insisted that X must be a
commit and errored out when given an annotated tag that peels to a
commit, but we only need it to be a committish. This has been
corrected.
(merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
* Fix "git merge-tree" to stop segfaulting when the --attr-source
option is used.
(merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
* Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
not auto-initialize the decoration subsystem, which has been
corrected.
* Feeding "git stash store" with a random commit that was not created
by "git stash create" now errors out.
(merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
* The index file has room only for lower 32-bit of the file size in
the cached stat information, which means cached stat information
will have 0 in its sd_size member for a file whose size is multiple
of 4GiB. This is mistaken for a racily clean path. Avoid it by
storing a bogus sd_size value instead for such files.
(merge 5143ac07b1 bc/racy-4gb-files later to maint).
* "git p4" tried to store symlinks to LFS when told, but has been
fixed not to do so, because it does not make sense.
(merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
* The codepath to handle recipient addresses `git send-email
--compose` learns from the user was completely broken, which has
been corrected.
(merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
* "cd sub && git grep -f patterns" tried to read "patterns" file at
the top level of the working tree; it has been corrected to read
"sub/patterns" instead.
* "git reflog expire --single-worktree" has been broken for the past
20 months or so, which has been corrected.
* "git send-email" did not have certain pieces of data computed yet
when it tried to validate the outging messages and its recipient
addresses, which has been sorted out.
* "git bugreport" learned to complain when it received a command line
argument that it will not use.
* The codepath to traverse the commit-graph learned to notice that a
commit is missing (e.g., corrupt repository lost an object), even
though it knows something about the commit (like its parents) from
what is in commit-graph.
(merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).
* "git rev-list --missing" did not work for missing commit objects,
which has been corrected.
* "git rev-list --unpacked --objects" failed to exclude packed
non-commit objects, which has been corrected.
(merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
(merge 1bd809938a tb/format-pack-doc-update later to maint).
(merge 8f81532599 an/clang-format-typofix later to maint).
(merge 3ca86adc2d la/strvec-header-fix later to maint).
(merge 6789275d37 jc/test-i18ngrep later to maint).
(merge 9972cd6004 ps/leakfixes later to maint).
----------------------------------------------------------------
Changes since v2.42.0 are as follows:
Aditya Neelamraju (1):
clang-format: fix typo in comment
Alyssa Ross (1):
diff: fix --merge-base with annotated tags
Andrei Rybak (1):
SubmittingPatches: call gitk's command "Copy commit reference"
Andy Koppe (8):
pretty-formats: enclose options in angle brackets
decorate: refactor format_decorations()
decorate: avoid some unnecessary color overhead
decorate: color each token separately
pretty: add %(decorate[:<options>]) format
pretty: add pointer and tag options to %(decorate)
decorate: use commit color for HEAD arrow
pretty: fix ref filtering for %(decorate) formats
Beat Bolli (1):
unicode: update the width tables to Unicode 15.1
Caleb Hill (1):
git-clean doc: fix "without do cleaning" typo
Calvin Wan (4):
hex-ll: separate out non-hash-algo functions
wrapper: reduce scope of remove_or_warn()
config: correct bad boolean env value error message
parse: separate out parsing functions from config.h
Christian Couder (9):
pack-objects: allow `--filter` without `--stdout`
t/helper: add 'find-pack' test-tool
repack: refactor finishing pack-objects command
repack: refactor finding pack prefix
pack-bitmap-write: rebuild using new bitmap when remapping
repack: add `--filter=<filter-spec>` option
gc: add `gc.repackFilter` config option
repack: implement `--filter-to` for storing filtered out objects
gc: add `gc.repackFilterTo` config option
Christian Hesse (2):
t/lib-gpg: forcibly run a trustdb update
t/t6300: drop magic filtering
Derrick Stolee (13):
upload-pack: fix race condition in error messages
maintenance: add get_random_minute()
maintenance: use random minute in launchctl scheduler
maintenance: use random minute in Windows scheduler
maintenance: use random minute in cron scheduler
maintenance: swap method locations
maintenance: use random minute in systemd scheduler
maintenance: fix systemd schedule overlaps
maintenance: update schedule before config
scalar: add --[no-]src option
setup: add discover_git_directory_reason()
scalar reconfigure: help users remove buggy repos
mailmap: change primary address for Derrick Stolee
Dorcas AnonoLitunya (1):
t7601: use "test_path_is_file" etc. instead of "test -f"
Dragan Simic (2):
diff --stat: add config option to limit filename width
diff --stat: set the width defaults in a helper function
Drew DeVault (1):
format-patch: --rfc honors what --subject-prefix sets
Elijah Newren (25):
documentation: wording improvements
documentation: fix small error
documentation: fix typos
documentation: fix apostrophe usage
documentation: add missing words
documentation: remove extraneous words
documentation: fix subject/verb agreement
documentation: employ consistent verb tense for a list
documentation: fix verb tense
documentation: fix adjective vs. noun
documentation: fix verb vs. noun
documentation: fix singular vs. plural
documentation: whitespace is already generally plural
documentation: fix choice of article
documentation: add missing article
documentation: remove unnecessary hyphens
documentation: add missing hyphens
documentation: use clearer prepositions
documentation: fix punctuation
documentation: fix capitalization
documentation: fix whitespace issues
documentation: add some commas where they are helpful
documentation: add missing fullstops
documentation: add missing quotes
documentation: add missing parenthesis
Emily Shaffer (2):
t0091-bugreport: stop using i18ngrep
bugreport: reject positional arguments
Eric W. Biederman (1):
bulk-checkin: only support blobs in index_bulk_checkin
Eric Wong (1):
treewide: fix various bugs w/ OpenSSL 3+ EVP API
Evan Gates (1):
git-config: fix misworded --type=path explanation
Han Young (1):
show doc: redirect user to git log manual instead of git diff-tree
Isoken June Ibizugbe (1):
builtin/branch.c: adjust error messages to coding guidelines
Jacob Abel (1):
builtin/worktree.c: fix typo in "forgot fetch" msg
Jacob Stopak (1):
Include gettext.h in MyFirstContribution tutorial
Jan Alexander Steffens (heftig) (6):
submodule--helper: use submodule_from_path in set-{url,branch}
submodule--helper: return error from set-url when modifying failed
t7419: actually test the branch switching
t7419, t7420: use test_cmp_config instead of grepping .gitmodules
t7419: test that we correctly handle renamed submodules
t7420: test that we correctly handle renamed submodules
Jason Hatton (1):
Prevent git from rehashing 4GiB files
Javier Mora (2):
git-status.txt: fix minor asciidoc format issue
doc/git-bisect: clarify `git bisect run` syntax
Jeff King (114):
hashmap: use expected signatures for comparison functions
diff-files: avoid negative exit value
diff: show usage for unknown builtin_diff_files() options
diff: die when failing to read index in git-diff builtin
diff: drop useless return from run_diff_{files,index} functions
diff: drop useless return values in git-diff helpers
diff: drop useless "status" parameter from diff_result_code()
commit-graph: verify swapped zero/non-zero generation cases
test-lib: ignore uninteresting LSan output
sequencer: use repository parameter in short_commit_name()
sequencer: mark repository argument as unused
ref-filter: mark unused parameters in parser callbacks
pack-bitmap: mark unused parameters in show_object callback
worktree: mark unused parameters in each_ref_fn callback
commit-graph: mark unused data parameters in generation callbacks
ls-tree: mark unused parameter in callback
stash: mark unused parameter in diff callback
trace2: mark unused us_elapsed_absolute parameters
trace2: mark unused config callback parameter
test-trace2: mark unused argv/argc parameters
grep: mark unused parameter in output function
add-interactive: mark unused callback parameters
negotiator/noop: mark unused callback parameters
worktree: mark unused parameters in noop repair callback
imap-send: mark unused parameters with NO_OPENSSL
grep: mark unused parmaeters in pcre fallbacks
credential: mark unused parameter in urlmatch callback
fetch: mark unused parameter in ref_transaction callback
bundle-uri: mark unused parameters in callbacks
gc: mark unused descriptors in scheduler callbacks
update-ref: mark unused parameter in parser callbacks
ci: allow branch selection through "vars"
ci: deprecate ci/config/allow-ref script
merge: make xopts a strvec
merge: simplify parsing of "-n" option
format-patch: use OPT_STRING_LIST for to/cc options
tree-walk: reduce stack size for recursive functions
tree-walk: drop MAX_TRAVERSE_TREES macro
tree-walk: rename "error" variable
fsck: detect very large tree pathnames
add core.maxTreeDepth config
traverse_trees(): respect max_allowed_tree_depth
read_tree(): respect max_allowed_tree_depth
list-objects: respect max_allowed_tree_depth
tree-diff: respect max_allowed_tree_depth
lower core.maxTreeDepth default to 2048
checkout-index: delay automatic setting of to_tempfile
parse-options: prefer opt->value to globals in callbacks
parse-options: mark unused "opt" parameter in callbacks
merge: do not pass unused opt->value parameter
parse-options: add more BUG_ON() annotations
interpret-trailers: mark unused "unset" parameters in option callbacks
parse-options: mark unused parameters in noop callback
merge-ort: drop custom err() function
merge-ort: stop passing "opt" to read_oid_strbuf()
merge-ort: drop unused parameters from detect_and_process_renames()
merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
http: factor out matching of curl http/2 trace lines
http: update curl http/2 info matching for curl 8.3.0
merge-ort: lowercase a few error messages
fsmonitor: prefer repo_git_path() to git_pathdup()
fsmonitor/win32: drop unused parameters
fsmonitor: mark some maybe-unused parameters
fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
fsmonitor: mark unused parameters in stub functions
fsmonitor/darwin: mark unused parameters in system callback
fsmonitor: mark unused hashmap callback parameters
run-command: mark unused parameters in start_bg_wait callbacks
test-lib: set UBSAN_OPTIONS to match ASan
commit-graph: factor out chain opening function
commit-graph: check mixed generation validation when loading chain file
t5324: harmonize sha1/sha256 graph chain corruption
commit-graph: detect read errors when verifying graph chain
commit-graph: tighten chain size check
commit-graph: report incomplete chains during verification
t6700: mark test as leak-free
commit-reach: free temporary list in get_octopus_merge_bases()
merge: free result of repo_get_merge_bases()
commit-graph: move slab-clearing to close_commit_graph()
commit-graph: free all elements of graph chain
commit-graph: delay base_graph assignment in add_graph_to_chain()
commit-graph: free graph struct that was not added to chain
commit-graph: free write-context entries before overwriting
commit-graph: free write-context base_graph_name during cleanup
commit-graph: clear oidset after finishing write
decorate: add clear_decoration() function
revision: clear decoration structs during release_revisions()
daemon: free listen_addr before returning
repack: free existing_cruft array after use
chunk-format: note that pair_chunk() is unsafe
t: add library for munging chunk-format files
midx: stop ignoring malformed oid fanout chunk
commit-graph: check size of oid fanout chunk
midx: check size of oid lookup chunk
commit-graph: check consistency of fanout table
midx: check size of pack names chunk
midx: enforce chunk alignment on reading
midx: check size of object offset chunk
midx: bounds-check large offset chunk
midx: check size of revindex chunk
commit-graph: check size of commit data chunk
commit-graph: detect out-of-bounds extra-edges pointers
commit-graph: bounds-check base graphs chunk
commit-graph: check size of generations chunk
commit-graph: bounds-check generation overflow chunk
commit-graph: check bounds when accessing BDAT chunk
commit-graph: check bounds when accessing BIDX chunk
commit-graph: detect out-of-order BIDX offsets
chunk-format: drop pair_chunk_unsafe()
t5319: make corrupted large-offset test more robust
doc/send-email: mention handling of "reply-to" with --compose
Revert "send-email: extract email-parsing code into a subroutine"
send-email: handle to/cc/bcc from --compose message
t: avoid perl's pack/unpack "Q" specifier
Johannes Schindelin (19):
windows: ignore empty `PATH` elements
is_Cygwin: avoid `exec`ing anything
Move is_<platform> functions to the beginning
Move the `_which` function (almost) to the top
Work around Tcl's default `PATH` lookup
rebase: allow overriding the maximal length of the generated labels
ci: avoid building from the same commit in parallel
ci(linux-asan-ubsan): let's save some time
var: avoid a segmentation fault when `HOME` is unset
completion(switch/checkout): treat --track and -t the same
maintenance(systemd): support the Windows Subsystem for Linux
ci: add a GitHub workflow to submit Coverity scans
coverity: cache the Coverity Build Tool
coverity: allow overriding the Coverity project
coverity: support building on Windows
coverity: allow running on macOS
coverity: detect and report when the token or project is incorrect
max_tree_depth: lower it for MSVC to avoid stack overflows
ci: upgrade to using macos-13
John Cai (3):
merge-ort: initialize repo in index state
attr: read attributes from HEAD when bare repo
attr: add attr.tree for setting the treeish to read attributes from
Josh Soref (1):
Documentation/git-status: add missing line breaks
Josip Sokcevic (1):
diff-lib: fix check_removed when fsmonitor is on
Junio C Hamano (55):
update-index: do not read HEAD and MERGE_HEAD unconditionally
resolve-undo: allow resurrecting conflicted state that resolved to deletion
update-index: use unmerge_index_entry() to support removal
update-index: remove stale fallback code for "--unresolve"
checkout/restore: refuse unmerging paths unless checking out of the index
checkout/restore: add basic tests for --merge
checkout: allow "checkout -m path" to unmerge removed paths
mv: fix error for moving directory to another
diff: move the fallback "--exit-code" code down
diff: mode-only change should be noticed by "--patch -w --exit-code"
diff: teach "--stat -w --exit-code" to notice differences
t4040: remove test that succeeded for a wrong reason
pretty-formats: define "literal formatting code"
diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
diff: the -w option breaks --exit-code for --raw and other output modes
transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
Start the 2.43 cycle
The second batch for 2.43
The extra batch to update credenthal helpers
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
update-index doc: v4 is OK with JGit and libgit2
update-index: add --show-index-version
test-tool: retire "index-version"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
completion: loosen and document the requirement around completing alias
The twelfth batch
The thirteenth batch
The fourteenth batch
The fifteenth batch
doc: update list archive reference to use lore.kernel.org
The sixteenth batch
merge: introduce {copy|clear}_merge_options()
stash: be careful what we store
grep: -f <path> is relative to $cwd
The seventeenth batch
The eighteenth batch
commit: do not use cryptic "new_index" in end-user facing messages
The nineteenth batch
am: align placeholder for --whitespace option with apply
The twentieth batch
The twenty-first batch
The twenty-second batch
test framework: further deprecate test_i18ngrep
Git 2.42.1
tests: teach callers of test_i18ngrep to use test_grep
A bit more before -rc1
Prepare for -rc1
Git 2.43-rc1
Karthik Nayak (3):
revision: rename bit to `do_not_die_on_missing_objects`
rev-list: move `show_commit()` to the bottom
rev-list: add commit object support in `--missing` option
Kousik Sanagavarapu (4):
ref-filter: sort numerically when ":size" is used
t/t6300: cleanup test_atom
t/t6300: introduce test_bad_atom
ref-filter: add mailmap support
Kristoffer Haugsbakk (2):
range-diff: treat notes like `log`
grep: die gracefully when outside repository
Linus Arver (17):
trailer tests: make test cases self-contained
trailer test description: this tests --where=after, not --where=before
trailer: add tests to check defaulting behavior with --no-* flags
trailer doc: narrow down scope of --where and related flags
trailer: trailer location is a place, not an action
trailer --no-divider help: describe usual "---" meaning
trailer --parse help: expose aliased options
trailer --only-input: prefer "configuration variables" over "rules"
trailer --parse docs: add explanation for its usefulness
trailer --unfold help: prefer "reformat" over "join"
trailer doc: emphasize the effect of configuration variables
trailer doc: separator within key suppresses default separator
trailer doc: <token> is a <key> or <keyAlias>, not both
trailer: separate public from internal portion of trailer_iterator
trailer: split process_input_file into separate pieces
trailer: split process_command_line_args into separate functions
strvec: drop unnecessary include of hex.h
M Hickford (3):
credential/libsecret: store new attributes
credential/libsecret: erase matching creds only
credential/wincred: erase matching creds only
Mark Levedahl (6):
git gui Makefile - remove Cygwin modifications
git-gui - remove obsolete Cygwin specific code
git-gui - use cygstart to browse on Cygwin
git-gui - use mkshortcut on Cygwin
git-gui - re-enable use of hook scripts
git-gui - use git-hook, honor core.hooksPath
Mark Ruvald Pedersen (1):
sequencer: truncate labels to accommodate loose refs
Martin Ågren (1):
git-merge-file doc: drop "-file" from argument placeholders
Matthew McClain (1):
git-p4 shouldn't attempt to store symlinks in LFS
Michael Strawbridge (1):
send-email: move validation code below process_address_list
Michal Suchanek (1):
git-push doc: more visibility for -q option
Naomi Ibe (1):
builtin/add.c: clean up die() messages
Oswald Buddenhagen (16):
t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
sequencer: simplify allocation of result array in todo_list_rearrange_squash()
t/lib-rebase: improve documentation of set_fake_editor()
t9001: fix indentation in test_no_confirm()
format-patch: add --description-file option
sequencer: rectify empty hint in call of require_clean_work_tree()
sequencer: beautify subject of reverts of reverts
git-revert.txt: add discussion
sequencer: fix error message on failure to copy SQUASH_MSG
t3404-rebase-interactive.sh: fix typos in title of a rewording test
sequencer: remove unreachable exit condition in pick_commits()
am: fix error message in parse_opt_show_current_patch()
rebase: simplify code related to imply_merge()
rebase: handle --strategy via imply_merge() as well
rebase: move parse_opt_keep_empty() down
Patrick Steinhardt (23):
upload-pack: fix exit code when denying fetch of unreachable object ID
revision: make pseudo-opt flags read via stdin behave consistently
doc/git-worktree: mention "refs/rewritten" as per-worktree refs
doc/git-repack: fix syntax for `-g` shorthand option
doc/git-repack: don't mention nonexistent "--unpacked" option
commit-graph: introduce envvar to disable commit existence checks
commit: detect commits that exist in commit-graph but not in the ODB
builtin/show-ref: convert pattern to a local variable
builtin/show-ref: split up different subcommands
builtin/show-ref: fix leaking string buffer
builtin/show-ref: fix dead code when passing patterns
builtin/show-ref: refactor `--exclude-existing` options
builtin/show-ref: stop using global variable to count matches
builtin/show-ref: stop using global vars for `show_one()`
builtin/show-ref: refactor options for patterns subcommand
builtin/show-ref: ensure mutual exclusiveness of subcommands
builtin/show-ref: explicitly spell out different modes in synopsis
builtin/show-ref: add new mode to check for reference existence
t: use git-show-ref(1) to check for ref existence
test-bloom: stop setting up Git directory twice
shallow: fix memory leak when registering shallow roots
setup: refactor `upgrade_repository_format()` to have common exit
setup: fix leaking repository format
Philippe Blain (3):
completion: commit: complete configured trailer tokens
completion: commit: complete trailers tokens more robustly
completion: improve doc for complex aliases
Phillip Wood (7):
rebase -i: move unlink() calls
rebase -i: remove patch file after conflict resolution
sequencer: use rebase_path_message()
sequencer: factor out part of pick_commits()
rebase: fix rewritten list for failed pick
rebase --continue: refuse to commit after failed command
rebase -i: fix adding failed command to the todo list
René Scharfe (18):
subtree: disallow --no-{help,quiet,debug,branch,message}
t1502, docs: disallow --no-help
t1502: move optionspec help output to a file
t1502: test option negation
parse-options: show negatability of options in short help
parse-options: factor out usage_indent() and usage_padding()
parse-options: no --[no-]no-...
parse-options: simplify usage_padding()
parse-options: allow omitting option help text
name-rev: use OPT_HIDDEN_BOOL for --peel-tag
grep: use OPT_INTEGER_F for --max-depth
grep: reject --no-or
diff --no-index: fix -R with stdin
parse-options: drop unused parse_opt_ctx_t member
parse-options: make CMDMODE errors more precise
am: simplify --show-current-patch handling
am, rebase: fix arghelp syntax of --empty
reflog: fix expire --single-worktree
Robert Coup (1):
upload-pack: add tracing for fetches
Rubén Justo (2):
branch: error message deleting a branch in use
branch: error message checking out a branch in use
Sergey Organov (4):
doc/diff-options: fix link to generating patch section
diff-merges: improve --diff-merges documentation
diff-merges: introduce '--dd' option
completion: complete '--dd'
Shuqi Liang (3):
t1092: add tests for 'git check-attr'
attr.c: read attributes in a sparse directory
check-attr: integrate with sparse-index
Tang Yuyi (1):
merge-tree: add -X strategy option
Taylor Blau (28):
repack: move `pack_geometry` struct to the stack
commit-graph: introduce `commit_graph_generation_from_graph()`
t/t5318-commit-graph.sh: test generation zero transitions during fsck
commit-graph: avoid repeated mixed generation number warnings
leak tests: mark a handful of tests as leak-free
leak tests: mark t3321-notes-stripspace.sh as leak-free
leak tests: mark t5583-push-branches.sh as leak-free
builtin/pack-objects.c: remove unnecessary strbuf_reset()
builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
Documentation/gitformat-pack.txt: drop mixed version section
builtin/repack.c: extract structure to store existing packs
builtin/repack.c: extract marking packs for deletion
builtin/repack.c: extract redundant pack cleanup for --geometric
builtin/repack.c: extract redundant pack cleanup for existing packs
builtin/repack.c: extract `has_existing_non_kept_packs()`
builtin/repack.c: store existing cruft packs separately
builtin/repack.c: avoid directly inspecting "util"
builtin/repack.c: extract common cruft pack loop
git-send-email.perl: avoid printing undef when validating addresses
t7700: split cruft-related tests to t7704
builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
builtin/repack.c: implement support for `--max-cruft-size`
builtin/repack.c: avoid making cruft packs preferred
Documentation/gitformat-pack.txt: fix typo
Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
list-objects: drop --unpacked non-commit objects from results
pack-bitmap: drop --unpacked non-commit objects from results
Todd Zullinger (2):
RelNotes: minor typo fixes in 2.43.0 draft
RelNotes: improve wording of credential helper notes
Victoria Dye (4):
ref-cache.c: fix prefix matching in ref iteration
dir.[ch]: expose 'get_dtype'
dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
files-backend.c: avoid stat in 'loose_fill_ref_dir'
Vipul Kumar (1):
git-gui: Fix a typo in README
Wesley Schwengle (2):
git-push.txt: fix grammar
git-svn: drop FakeTerm hack
brian m. carlson (2):
t: add a test helper to truncate files
merge-file: add an option to process object IDs
Ævar Arnfjörð Bjarmason (1):
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
Štěpán Němec (6):
doc: fix some typos, grammar and wording issues
doc/diff-options: improve wording of the log.diffMerges mention
git-jump: admit to passing merge mode args to ls-files
doc/gitk: s/sticked/stuck/
t/README: fix multi-prerequisite example
doc/cat-file: make synopsis and description less confusing
王常新 (1):
merge-ort.c: fix typo 'neeed' to 'needed'
谢致邦 (XIE Zhibang) (2):
doc: correct the 50 characters soft limit
doc: correct the 50 characters soft limit (+)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.43.0-rc0
@ 2023-11-02 17:36 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-02 17:36 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.43.0-rc0 is now available for
testing at the usual places. It is comprised of 399 non-merge
commits since v2.42.0, contributed by 61 people, 16 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.43.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.42.0 are as follows.
Welcome to the Git development community!
Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya, Dragan Simic,
Isoken June Ibizugbe, Jan Alexander Steffens (heftig), Javier
Mora, ks1322 ks1322, Mark Ruvald Pedersen, Matthew McClain,
Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul Kumar, 王常新,
and 谢致邦 (XIE Zhibang).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Andy Koppe, Bagas Sanjaya,
Beat Bolli, brian m. carlson, Calvin Wan, Christian Couder,
Christian Hesse, Derrick Stolee, Drew DeVault, Elijah Newren,
Eric W. Biederman, Eric Wong, Evan Gates, Han Young, Hariom
Verma, Jacob Abel, Jason Hatton, Jeff King, Johannes Schindelin,
John Cai, Josh Soref, Josip Sokcevic, Junio C Hamano, Kousik
Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark Levedahl,
Martin Storsjö, M Hickford, Michal Suchanek, Oswald Buddenhagen,
Patrick Steinhardt, Philippe Blain, Phillip Wood, René Scharfe,
Rubén Justo, Sergey Organov, Shuqi Liang, Stefan Haller,
Štěpán Němec, Taylor Blau, Teng Long, Victoria Dye, and
Wesley Schwengle.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.43 Release Notes (draft)
===============================
Backward Compatibility Notes
* The "--rfc" option of "git format-patch" used to be a valid way to
override an earlier "--subject-prefix=<something>" on the command
line and replace it with "[RFC PATCH]", but from this release, it
merely prefixes the string "RFC " in front of the given subject
prefix. If you are negatively affected by this change, please use
"--subject-prefix=PATCH --rfc" as a replacement.
* "git rev-list --stdin" learned to take non-revisions (like "--not")
recently from the standard input, but the way such a "--not" was
handled was quite confusing, which has been rethought. The updated
rule is that "--not" given from the command line only affects revs
given from the command line that comes but not revs read from the
standard input, and "--not" read from the standard input affects
revs given from the stanrdard input and not revs given from the
command line.
UI, Workflows & Features
* A message written in olden time prevented a branch from getting
checked out saying it is already checked out elsewhere, but these
days, we treat a branch that is being bisected or rebased just like
a branch that is checked out and protect it. Rephrase the message
to say that the branch is in use.
* Hourly and other schedule of "git maintenance" jobs are randomly
distributed now.
* "git cmd -h" learned to signal which options can be negated by
listing such options like "--[no-]opt".
* The way authentication related data other than passwords (e.g.
oath token and password expiration data) are stored in libsecret
keyrings has been rethought.
* Update two credential helpers to correctly match which credential
to erase; they dropped not the ones with stale password.
* Git GUI updates.
* "git format-patch" learns a way to feed cover letter description,
that (1) can be used on detached HEAD where there is no branch
description available, and (2) also can override the branch
description if there is one.
* Use of --max-pack-size to allow multiple packfiles to be created is
now supported even when we are sending unreachable objects to cruft
packs.
* "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
"--subject-prefix" option and used "[RFC PATCH]"; now we will add
"RFC" prefix to whatever subject prefix is specified.
* "git log --format" has been taught the %(decorate) placeholder.
* The default log message created by "git revert", when reverting a
commit that records a revert, has been tweaked, to encourage people
describe complex "revert of revert of revert" situation better in
their own words.
* The command-line complation support (in contrib/) learned to
complete "git commit --trailer=" for possible trailer keys.
* "git update-index" learns "--show-index-version" to inspect
the index format version used by the on-disk index file.
* "git diff" learned diff.statNameWidth configuration variable, to
give the default width for the name part in the "--stat" output.
* "git range-diff --notes=foo" compared "log --notes=foo --notes" of
the two ranges, instead of using just the specified notes tree.
* The command line completion script (in contrib/) can be told to
complete aliases by including ": git <cmd> ;" in the alias to tell
it that the alias should be completed similar to how "git <cmd>" is
completed. The parsing code for the alias as been loosened to
allow ';' without an extra space before it.
* "git for-each-ref" and friends learned to apply mailmap to
authorname and other fields.
* "git repack" machinery learns to pay attention to the "--filter="
option.
* "git repack" learned "--max-cruft-size" to prevent cruft packs from
growing without bounds.
* "git merge-tree" learned to take strategy backend specific options
via the "-X" option, like "git merge" does.
* "git log" and friends learned "--dd" that is a short-hand for
"--diff-merges=first-parent -p".
* The attribute subsystem learned to honor `attr.tree` configuration
that specifies which tree to read the .gitattributes files from.
Performance, Internal Implementation, Development Support etc.
* "git check-attr" has been taught to work better with sparse-index.
* It may be tempting to leave the help text NULL for a command line
option that is either hidden or too obvious, but "git subcmd -h"
and "git subcmd --help-all" would have segfaulted if done so. Now
the help text is optional.
* Tests that are known to pass with LSan are now marked as such.
(merge 5fafe8c95f tb/mark-more-tests-as-leak-free later to maint).
* Flaky "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.
(merge 6ba913629f js/ci-san-skip-p4-and-svn-tests later to maint).
* Tests with LSan from time to time seem to emit harmless message
that makes our tests unnecessarily flaky; we work it around by
filtering the uninteresting output.
(merge 370ef7e40d jk/test-lsan-denoise-output later to maint).
* Unused parameters to functions are marked as such, and/or removed,
in order to bring us closer to -Wunused-parameter clean.
* The code to keep track of existing packs in the repository while
repacking has been refactored.
* The "streaming" interface used for bulk-checkin codepath has been
narrowed to take only blob objects for now, with no real loss of
functionality.
* GitHub CI workflow has learned to trigger Coverity check.
(merge 3349520e1a js/ci-coverity later to maint).
* Test coverage for trailers has been improved.
* The code to iterate over loose references have been optimized to
reduce the number of lstat() system calls.
(merge 2cdb796101 vd/loose-ref-iteration-optimization later to maint).
* The codepaths that read "chunk" formatted files have been corrected
to pay attention to the chunk size and notice broken files.
Fixes since v2.42
-----------------
* Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.
(merge ac300bda10 mp/rebase-label-length-limit later to maint).
* Scalar updates.
(merge f9a547d3a7 ds/scalar-updates later to maint).
* Tweak GitHub Actions CI so that pushing the same commit to multiple
branch tips at the same time will not waste building and testing
the same thing twice.
(merge 99fe06cbfd jc/ci-skip-same-commit later to maint).
* The commit-graph verification code that detects mixture of zero and
non-zero generation numbers has been updated.
(merge db6044d762 tb/commit-graph-verify-fix later to maint).
* "git diff -w --exit-code" with various options did not work
correctly, which is being addressed.
(merge a64f8b2595 jc/diff-exit-code-with-w-fixes later to maint).
* transfer.unpackLimit ought to be used as a fallback, but overrode
fetch.unpackLimit and receive.unpackLimit instead.
(merge f3d33f8cfe ts/unpacklimit-config-fix later to maint).
* The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.
(merge a9b5955e07 ob/sequencer-empty-hint-fix later to maint).
* "git diff --no-such-option" and other corner cases around the exit
status of the "diff" command has been corrected.
(merge 5cc6b2d70b jk/diff-result-code-cleanup later to maint).
* "git for-each-ref --sort='contents:size'" sorts the refs according
to size numerically, giving a ref that points at a blob twelve-byte
(12) long before showing a blob hundred-byte (100) long.
(merge 6d79cd8474 ks/ref-filter-sort-numerically later to maint).
* We now limit depth of the tree objects and maximum length of
pathnames recorded in tree objects.
(merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).
* Various fixes to the behavior of "rebase -i" when the command got
interrupted by conflicting changes.
(merge 203573b024 pw/rebase-i-after-failure later to maint).
* References from description of the `--patch` option in various
manual pages have been simplified and improved.
(merge 11422f23e3 so/diff-doc-for-patch-update later to maint).
* "git grep -e A --no-or -e B" is accepted, even though the negation
of "or" did not mean anything, which has been tightened.
(merge aae8558b10 rs/grep-no-no-or later to maint).
* The completion script (in contrib/) has been taught to treat the
"-t" option to "git checkout" and "git switch" just like the
"--track" option, to complete remote-tracking branches.
(merge 9f892830d6 js/complete-checkout-t later to maint).
* "git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.
(merge 48944f214c pw/diff-no-index-from-named-pipes later to maint).
* Update "git maintenance" timers' implementation based on systemd
timers to work with WSL.
(merge 5e8515e8e8 js/systemd-timers-wsl-fix later to maint).
* "git diff --cached" codepath did not fill the necessary stat
information for a file when fsmonitor knows it is clean and ended
up behaving as if it is not clean, which has been corrected.
(merge 6a044a2048 js/diff-cached-fsmonitor-fix later to maint).
* Clarify how "alias.foo = : git cmd ; aliased-command-string" should
be spelled with necessary whitespaces around punctuation marks to
work.
(merge 4333267995 pb/completion-aliases-doc later to maint).
* HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.
(merge 0763c3a2c4 jk/redact-h2h3-headers-fix later to maint).
* An error message given by "git send-email" when given a malformed
address did not give correct information, which has been corrected.
(merge 12288cc44e tb/send-email-extract-valid-address-error-message-fix later to maint).
* UBSan options were not propagated through the test framework to git
run via the httpd, unlike ASan options, which has been corrected.
(merge 252d693797 jk/test-pass-ubsan-options-to-http-test later to maint).
* "checkout --merge -- path" and "update-index --unresolve path" did
not resurrect conflicted state that was resolved to remove path,
but now they do.
(merge 5bdedac3c7 jc/unresolve-removal later to maint).
* The display width table for unicode characters has been updated for
Unicode 15.1
(merge 872976c37e bb/unicode-width-table-15 later to maint).
* Update mailmap entry for Derrick.
(merge 6e5457d8c7 ds/mailmap-entry-update later to maint).
* In .gitmodules files, submodules are keyed by their names, and the
path to the submodule whose name is $name is specified by the
submodule.$name.path variable. There were a few codepaths that
mixed the name and path up when consulting the submodule database,
which have been corrected. It took long for these bugs to be found
as the name of a submodule initially is the same as its path, and
the problem does not surface until it is moved to a different path,
which apparently happens very rarely.
* "git diff --merge-base X other args..." insisted that X must be a
commit and errored out when given an annotated tag that peels to a
commit, but we only need it to be a committish. This has been
corrected.
(merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).
* Fix "git merge-tree" to stop segfaulting when the --attr-source
option is used.
(merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).
* Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
not auto-initialize the decoration subsystem, which has been
corrected.
* Feeding "git stash store" with a random commit that was not created
by "git stash create" now errors out.
(merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).
* The index file has room only for lower 32-bit of the file size in
the cached stat information, which means cached stat information
will have 0 in its sd_size member for a file whose size is multiple
of 4GiB. This is mistaken for a racily clean path. Avoid it by
storing a bogus sd_size value instead for such files.
(merge 5143ac07b1 bc/racy-4gb-files later to maint).
* "git p4" tried to store symlinks to LFS when told, but has been
fixed not to do so, because it does not make sense.
(merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).
* The codepath to handle recipient addresses `git send-email
--compose` learns from the user was completely broken, which has
been corrected.
(merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fd3ba590d8 ws/git-push-doc-grammofix later to maint).
(merge 5f33a843de ds/upload-pack-error-sequence-fix later to maint).
(merge beaa1d952b jk/function-pointer-mismatches-fix later to maint).
(merge b46d806ea5 ob/t9001-indent-fix later to maint).
(merge fdc9914c28 ja/worktree-orphan later to maint).
(merge c2cbefc510 jc/mv-d-to-d-error-message-fix later to maint).
(merge d0fc552bfc ch/t6300-verify-commit-test-cleanup later to maint).
(merge aa4b83dd5e ws/git-svn-retire-faketerm later to maint).
(merge edf80d23f1 jk/ci-retire-allow-ref later to maint).
(merge 256a94ef6c bc/more-git-var later to maint).
(merge 82af2c639c ob/sequencer-reword-error-message later to maint).
(merge 2a63c79dae rs/grep-parseopt-simplify later to maint).
(merge 078c42531e rs/name-rev-use-opt-hidden-bool later to maint).
(merge 63642d58b4 ob/sequencer-remove-dead-code later to maint).
(merge 8aae489756 ob/t3404-typofix later to maint).
(merge 58be11432e eg/config-type-path-docfix later to maint).
(merge 563f339d98 ch/clean-docfix later to maint).
(merge 4fbe83fcd9 hy/doc-show-is-like-log-not-diff-tree later to maint).
(merge 43abaaf008 ob/am-msgfix later to maint).
(merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
(merge f4cbb32c27 rs/parse-opt-ctx-cleanup later to maint).
(merge badf2fe1c3 jk/decoration-and-other-leak-fixes later to maint).
(merge cebfaaa333 sn/cat-file-doc-update later to maint).
(merge 8b3aa36f5a ps/rewritten-is-per-worktree-doc later to maint).
(merge ffbf6a748d jc/update-list-references-to-lore later to maint).
(merge 14d569b1a7 jc/am-doc-whitespace-action-fix later to maint).
(merge 48399e9cf0 ni/die-message-fix-for-git-add later to maint).
(merge ca3285dd69 ps/git-repack-doc-fixes later to maint).
(merge 243c79fdc7 wx/merge-ort-comment-typofix later to maint).
(merge a060705d94 jc/commit-new-underscore-index-fix later to maint).
(merge f6d83e2115 ms/doc-push-fix later to maint).
----------------------------------------------------------------
Changes since v2.42.0 are as follows:
Alyssa Ross (1):
diff: fix --merge-base with annotated tags
Andy Koppe (8):
pretty-formats: enclose options in angle brackets
decorate: refactor format_decorations()
decorate: avoid some unnecessary color overhead
decorate: color each token separately
pretty: add %(decorate[:<options>]) format
pretty: add pointer and tag options to %(decorate)
decorate: use commit color for HEAD arrow
pretty: fix ref filtering for %(decorate) formats
Beat Bolli (1):
unicode: update the width tables to Unicode 15.1
Caleb Hill (1):
git-clean doc: fix "without do cleaning" typo
Calvin Wan (4):
hex-ll: separate out non-hash-algo functions
wrapper: reduce scope of remove_or_warn()
config: correct bad boolean env value error message
parse: separate out parsing functions from config.h
Christian Couder (9):
pack-objects: allow `--filter` without `--stdout`
t/helper: add 'find-pack' test-tool
repack: refactor finishing pack-objects command
repack: refactor finding pack prefix
pack-bitmap-write: rebuild using new bitmap when remapping
repack: add `--filter=<filter-spec>` option
gc: add `gc.repackFilter` config option
repack: implement `--filter-to` for storing filtered out objects
gc: add `gc.repackFilterTo` config option
Christian Hesse (2):
t/lib-gpg: forcibly run a trustdb update
t/t6300: drop magic filtering
Derrick Stolee (13):
upload-pack: fix race condition in error messages
maintenance: add get_random_minute()
maintenance: use random minute in launchctl scheduler
maintenance: use random minute in Windows scheduler
maintenance: use random minute in cron scheduler
maintenance: swap method locations
maintenance: use random minute in systemd scheduler
maintenance: fix systemd schedule overlaps
maintenance: update schedule before config
scalar: add --[no-]src option
setup: add discover_git_directory_reason()
scalar reconfigure: help users remove buggy repos
mailmap: change primary address for Derrick Stolee
Dorcas AnonoLitunya (1):
t7601: use "test_path_is_file" etc. instead of "test -f"
Dragan Simic (2):
diff --stat: add config option to limit filename width
diff --stat: set the width defaults in a helper function
Drew DeVault (1):
format-patch: --rfc honors what --subject-prefix sets
Elijah Newren (25):
documentation: wording improvements
documentation: fix small error
documentation: fix typos
documentation: fix apostrophe usage
documentation: add missing words
documentation: remove extraneous words
documentation: fix subject/verb agreement
documentation: employ consistent verb tense for a list
documentation: fix verb tense
documentation: fix adjective vs. noun
documentation: fix verb vs. noun
documentation: fix singular vs. plural
documentation: whitespace is already generally plural
documentation: fix choice of article
documentation: add missing article
documentation: remove unnecessary hyphens
documentation: add missing hyphens
documentation: use clearer prepositions
documentation: fix punctuation
documentation: fix capitalization
documentation: fix whitespace issues
documentation: add some commas where they are helpful
documentation: add missing fullstops
documentation: add missing quotes
documentation: add missing parenthesis
Eric W. Biederman (1):
bulk-checkin: only support blobs in index_bulk_checkin
Eric Wong (1):
treewide: fix various bugs w/ OpenSSL 3+ EVP API
Evan Gates (1):
git-config: fix misworded --type=path explanation
Han Young (1):
show doc: redirect user to git log manual instead of git diff-tree
Isoken June Ibizugbe (1):
builtin/branch.c: adjust error messages to coding guidelines
Jacob Abel (1):
builtin/worktree.c: fix typo in "forgot fetch" msg
Jan Alexander Steffens (heftig) (6):
submodule--helper: use submodule_from_path in set-{url,branch}
submodule--helper: return error from set-url when modifying failed
t7419: actually test the branch switching
t7419, t7420: use test_cmp_config instead of grepping .gitmodules
t7419: test that we correctly handle renamed submodules
t7420: test that we correctly handle renamed submodules
Jason Hatton (1):
Prevent git from rehashing 4GiB files
Javier Mora (2):
git-status.txt: fix minor asciidoc format issue
doc/git-bisect: clarify `git bisect run` syntax
Jeff King (113):
hashmap: use expected signatures for comparison functions
diff-files: avoid negative exit value
diff: show usage for unknown builtin_diff_files() options
diff: die when failing to read index in git-diff builtin
diff: drop useless return from run_diff_{files,index} functions
diff: drop useless return values in git-diff helpers
diff: drop useless "status" parameter from diff_result_code()
commit-graph: verify swapped zero/non-zero generation cases
test-lib: ignore uninteresting LSan output
sequencer: use repository parameter in short_commit_name()
sequencer: mark repository argument as unused
ref-filter: mark unused parameters in parser callbacks
pack-bitmap: mark unused parameters in show_object callback
worktree: mark unused parameters in each_ref_fn callback
commit-graph: mark unused data parameters in generation callbacks
ls-tree: mark unused parameter in callback
stash: mark unused parameter in diff callback
trace2: mark unused us_elapsed_absolute parameters
trace2: mark unused config callback parameter
test-trace2: mark unused argv/argc parameters
grep: mark unused parameter in output function
add-interactive: mark unused callback parameters
negotiator/noop: mark unused callback parameters
worktree: mark unused parameters in noop repair callback
imap-send: mark unused parameters with NO_OPENSSL
grep: mark unused parmaeters in pcre fallbacks
credential: mark unused parameter in urlmatch callback
fetch: mark unused parameter in ref_transaction callback
bundle-uri: mark unused parameters in callbacks
gc: mark unused descriptors in scheduler callbacks
update-ref: mark unused parameter in parser callbacks
ci: allow branch selection through "vars"
ci: deprecate ci/config/allow-ref script
merge: make xopts a strvec
merge: simplify parsing of "-n" option
format-patch: use OPT_STRING_LIST for to/cc options
tree-walk: reduce stack size for recursive functions
tree-walk: drop MAX_TRAVERSE_TREES macro
tree-walk: rename "error" variable
fsck: detect very large tree pathnames
add core.maxTreeDepth config
traverse_trees(): respect max_allowed_tree_depth
read_tree(): respect max_allowed_tree_depth
list-objects: respect max_allowed_tree_depth
tree-diff: respect max_allowed_tree_depth
lower core.maxTreeDepth default to 2048
checkout-index: delay automatic setting of to_tempfile
parse-options: prefer opt->value to globals in callbacks
parse-options: mark unused "opt" parameter in callbacks
merge: do not pass unused opt->value parameter
parse-options: add more BUG_ON() annotations
interpret-trailers: mark unused "unset" parameters in option callbacks
parse-options: mark unused parameters in noop callback
merge-ort: drop custom err() function
merge-ort: stop passing "opt" to read_oid_strbuf()
merge-ort: drop unused parameters from detect_and_process_renames()
merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
http: factor out matching of curl http/2 trace lines
http: update curl http/2 info matching for curl 8.3.0
merge-ort: lowercase a few error messages
fsmonitor: prefer repo_git_path() to git_pathdup()
fsmonitor/win32: drop unused parameters
fsmonitor: mark some maybe-unused parameters
fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
fsmonitor: mark unused parameters in stub functions
fsmonitor/darwin: mark unused parameters in system callback
fsmonitor: mark unused hashmap callback parameters
run-command: mark unused parameters in start_bg_wait callbacks
test-lib: set UBSAN_OPTIONS to match ASan
commit-graph: factor out chain opening function
commit-graph: check mixed generation validation when loading chain file
t5324: harmonize sha1/sha256 graph chain corruption
commit-graph: detect read errors when verifying graph chain
commit-graph: tighten chain size check
commit-graph: report incomplete chains during verification
t6700: mark test as leak-free
commit-reach: free temporary list in get_octopus_merge_bases()
merge: free result of repo_get_merge_bases()
commit-graph: move slab-clearing to close_commit_graph()
commit-graph: free all elements of graph chain
commit-graph: delay base_graph assignment in add_graph_to_chain()
commit-graph: free graph struct that was not added to chain
commit-graph: free write-context entries before overwriting
commit-graph: free write-context base_graph_name during cleanup
commit-graph: clear oidset after finishing write
decorate: add clear_decoration() function
revision: clear decoration structs during release_revisions()
daemon: free listen_addr before returning
repack: free existing_cruft array after use
chunk-format: note that pair_chunk() is unsafe
t: add library for munging chunk-format files
midx: stop ignoring malformed oid fanout chunk
commit-graph: check size of oid fanout chunk
midx: check size of oid lookup chunk
commit-graph: check consistency of fanout table
midx: check size of pack names chunk
midx: enforce chunk alignment on reading
midx: check size of object offset chunk
midx: bounds-check large offset chunk
midx: check size of revindex chunk
commit-graph: check size of commit data chunk
commit-graph: detect out-of-bounds extra-edges pointers
commit-graph: bounds-check base graphs chunk
commit-graph: check size of generations chunk
commit-graph: bounds-check generation overflow chunk
commit-graph: check bounds when accessing BDAT chunk
commit-graph: check bounds when accessing BIDX chunk
commit-graph: detect out-of-order BIDX offsets
chunk-format: drop pair_chunk_unsafe()
t5319: make corrupted large-offset test more robust
doc/send-email: mention handling of "reply-to" with --compose
Revert "send-email: extract email-parsing code into a subroutine"
send-email: handle to/cc/bcc from --compose message
Johannes Schindelin (17):
windows: ignore empty `PATH` elements
is_Cygwin: avoid `exec`ing anything
Move is_<platform> functions to the beginning
Move the `_which` function (almost) to the top
Work around Tcl's default `PATH` lookup
rebase: allow overriding the maximal length of the generated labels
ci: avoid building from the same commit in parallel
ci(linux-asan-ubsan): let's save some time
var: avoid a segmentation fault when `HOME` is unset
completion(switch/checkout): treat --track and -t the same
maintenance(systemd): support the Windows Subsystem for Linux
ci: add a GitHub workflow to submit Coverity scans
coverity: cache the Coverity Build Tool
coverity: allow overriding the Coverity project
coverity: support building on Windows
coverity: allow running on macOS
coverity: detect and report when the token or project is incorrect
John Cai (3):
merge-ort: initialize repo in index state
attr: read attributes from HEAD when bare repo
attr: add attr.tree for setting the treeish to read attributes from
Josh Soref (1):
Documentation/git-status: add missing line breaks
Josip Sokcevic (1):
diff-lib: fix check_removed when fsmonitor is on
Junio C Hamano (49):
update-index: do not read HEAD and MERGE_HEAD unconditionally
resolve-undo: allow resurrecting conflicted state that resolved to deletion
update-index: use unmerge_index_entry() to support removal
update-index: remove stale fallback code for "--unresolve"
checkout/restore: refuse unmerging paths unless checking out of the index
checkout/restore: add basic tests for --merge
checkout: allow "checkout -m path" to unmerge removed paths
mv: fix error for moving directory to another
diff: move the fallback "--exit-code" code down
diff: mode-only change should be noticed by "--patch -w --exit-code"
diff: teach "--stat -w --exit-code" to notice differences
t4040: remove test that succeeded for a wrong reason
pretty-formats: define "literal formatting code"
diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
diff: the -w option breaks --exit-code for --raw and other output modes
transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
Start the 2.43 cycle
The second batch for 2.43
The extra batch to update credenthal helpers
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
update-index doc: v4 is OK with JGit and libgit2
update-index: add --show-index-version
test-tool: retire "index-version"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
completion: loosen and document the requirement around completing alias
The twelfth batch
The thirteenth batch
The fourteenth batch
The fifteenth batch
doc: update list archive reference to use lore.kernel.org
The sixteenth batch
merge: introduce {copy|clear}_merge_options()
stash: be careful what we store
The seventeenth batch
The eighteenth batch
commit: do not use cryptic "new_index" in end-user facing messages
The nineteenth batch
am: align placeholder for --whitespace option with apply
The twentieth batch
The twenty-first batch
The twenty-second batch
Git 2.42.1
Kousik Sanagavarapu (4):
ref-filter: sort numerically when ":size" is used
t/t6300: cleanup test_atom
t/t6300: introduce test_bad_atom
ref-filter: add mailmap support
Kristoffer Haugsbakk (2):
range-diff: treat notes like `log`
grep: die gracefully when outside repository
Linus Arver (16):
trailer tests: make test cases self-contained
trailer test description: this tests --where=after, not --where=before
trailer: add tests to check defaulting behavior with --no-* flags
trailer doc: narrow down scope of --where and related flags
trailer: trailer location is a place, not an action
trailer --no-divider help: describe usual "---" meaning
trailer --parse help: expose aliased options
trailer --only-input: prefer "configuration variables" over "rules"
trailer --parse docs: add explanation for its usefulness
trailer --unfold help: prefer "reformat" over "join"
trailer doc: emphasize the effect of configuration variables
trailer doc: separator within key suppresses default separator
trailer doc: <token> is a <key> or <keyAlias>, not both
trailer: separate public from internal portion of trailer_iterator
trailer: split process_input_file into separate pieces
trailer: split process_command_line_args into separate functions
M Hickford (3):
credential/libsecret: store new attributes
credential/libsecret: erase matching creds only
credential/wincred: erase matching creds only
Mark Levedahl (6):
git gui Makefile - remove Cygwin modifications
git-gui - remove obsolete Cygwin specific code
git-gui - use cygstart to browse on Cygwin
git-gui - use mkshortcut on Cygwin
git-gui - re-enable use of hook scripts
git-gui - use git-hook, honor core.hooksPath
Mark Ruvald Pedersen (1):
sequencer: truncate labels to accommodate loose refs
Matthew McClain (1):
git-p4 shouldn't attempt to store symlinks in LFS
Michal Suchanek (1):
git-push doc: more visibility for -q option
Naomi Ibe (1):
builtin/add.c: clean up die() messages
Oswald Buddenhagen (16):
t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
sequencer: simplify allocation of result array in todo_list_rearrange_squash()
t/lib-rebase: improve documentation of set_fake_editor()
t9001: fix indentation in test_no_confirm()
format-patch: add --description-file option
sequencer: rectify empty hint in call of require_clean_work_tree()
sequencer: beautify subject of reverts of reverts
git-revert.txt: add discussion
sequencer: fix error message on failure to copy SQUASH_MSG
t3404-rebase-interactive.sh: fix typos in title of a rewording test
sequencer: remove unreachable exit condition in pick_commits()
am: fix error message in parse_opt_show_current_patch()
rebase: simplify code related to imply_merge()
rebase: handle --strategy via imply_merge() as well
rebase: move parse_opt_keep_empty() down
Patrick Steinhardt (5):
upload-pack: fix exit code when denying fetch of unreachable object ID
revision: make pseudo-opt flags read via stdin behave consistently
doc/git-worktree: mention "refs/rewritten" as per-worktree refs
doc/git-repack: fix syntax for `-g` shorthand option
doc/git-repack: don't mention nonexistent "--unpacked" option
Philippe Blain (3):
completion: commit: complete configured trailer tokens
completion: commit: complete trailers tokens more robustly
completion: improve doc for complex aliases
Phillip Wood (7):
rebase -i: move unlink() calls
rebase -i: remove patch file after conflict resolution
sequencer: use rebase_path_message()
sequencer: factor out part of pick_commits()
rebase: fix rewritten list for failed pick
rebase --continue: refuse to commit after failed command
rebase -i: fix adding failed command to the todo list
René Scharfe (14):
subtree: disallow --no-{help,quiet,debug,branch,message}
t1502, docs: disallow --no-help
t1502: move optionspec help output to a file
t1502: test option negation
parse-options: show negatability of options in short help
parse-options: factor out usage_indent() and usage_padding()
parse-options: no --[no-]no-...
parse-options: simplify usage_padding()
parse-options: allow omitting option help text
name-rev: use OPT_HIDDEN_BOOL for --peel-tag
grep: use OPT_INTEGER_F for --max-depth
grep: reject --no-or
diff --no-index: fix -R with stdin
parse-options: drop unused parse_opt_ctx_t member
Rubén Justo (2):
branch: error message deleting a branch in use
branch: error message checking out a branch in use
Sergey Organov (4):
doc/diff-options: fix link to generating patch section
diff-merges: improve --diff-merges documentation
diff-merges: introduce '--dd' option
completion: complete '--dd'
Shuqi Liang (3):
t1092: add tests for 'git check-attr'
attr.c: read attributes in a sparse directory
check-attr: integrate with sparse-index
Tang Yuyi (1):
merge-tree: add -X strategy option
Taylor Blau (24):
repack: move `pack_geometry` struct to the stack
commit-graph: introduce `commit_graph_generation_from_graph()`
t/t5318-commit-graph.sh: test generation zero transitions during fsck
commit-graph: avoid repeated mixed generation number warnings
leak tests: mark a handful of tests as leak-free
leak tests: mark t3321-notes-stripspace.sh as leak-free
leak tests: mark t5583-push-branches.sh as leak-free
builtin/pack-objects.c: remove unnecessary strbuf_reset()
builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
Documentation/gitformat-pack.txt: drop mixed version section
builtin/repack.c: extract structure to store existing packs
builtin/repack.c: extract marking packs for deletion
builtin/repack.c: extract redundant pack cleanup for --geometric
builtin/repack.c: extract redundant pack cleanup for existing packs
builtin/repack.c: extract `has_existing_non_kept_packs()`
builtin/repack.c: store existing cruft packs separately
builtin/repack.c: avoid directly inspecting "util"
builtin/repack.c: extract common cruft pack loop
git-send-email.perl: avoid printing undef when validating addresses
t7700: split cruft-related tests to t7704
builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
builtin/repack.c: implement support for `--max-cruft-size`
builtin/repack.c: avoid making cruft packs preferred
Victoria Dye (4):
ref-cache.c: fix prefix matching in ref iteration
dir.[ch]: expose 'get_dtype'
dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
files-backend.c: avoid stat in 'loose_fill_ref_dir'
Vipul Kumar (1):
git-gui: Fix a typo in README
Wesley Schwengle (2):
git-push.txt: fix grammar
git-svn: drop FakeTerm hack
brian m. carlson (1):
t: add a test helper to truncate files
Ævar Arnfjörð Bjarmason (1):
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
Štěpán Němec (6):
doc: fix some typos, grammar and wording issues
doc/diff-options: improve wording of the log.diffMerges mention
git-jump: admit to passing merge mode args to ls-files
doc/gitk: s/sticked/stuck/
t/README: fix multi-prerequisite example
doc/cat-file: make synopsis and description less confusing
王常新 (1):
merge-ort.c: fix typo 'neeed' to 'needed'
谢致邦 (XIE Zhibang) (2):
doc: correct the 50 characters soft limit
doc: correct the 50 characters soft limit (+)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.42.0
@ 2023-08-21 18:12 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-21 18:12 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.42.0 is now available at the
usual places. It is comprised of 453 non-merge commits since
v2.41.0, contributed by 78 people, 17 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.42.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.41.0 are as follows.
Welcome to the Git development community!
Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob
Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref,
Josip Sokcevic, Louis Strous, Lumynous, Petar Vutov, Premek
Vysoky, Sebastian Thiel, Tribo Dar, and Vinayak Dev.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
, Alejandro R. Sedeño, Alex Henrie, Arkadii Yakovets, Bagas
Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Carlo Marcelo
Arenas Belón, Christian Couder, D. Ben Knoble, Derrick Stolee,
Dimitriy Ryazantcev, Elijah Newren, Emir SARI, Eric Sunshine,
Eric Wong, Glen Choo, Hariom Verma, Jacob Keller, Jaydeep Das,
Jean-Noël Avila, Jeff King, Johannes Schindelin, John Cai,
Jonathan Nieder, Jonathan Tan, Jordi Mas, Junio C Hamano,
Kate Golovanova, Kousik Sanagavarapu, Kristoffer Haugsbakk,
Linus Arver, Martin Ågren, Matthew Hughes, Matthias Aßhauer, M
Hickford, Michael Haggerty, Mike Hommey, Nsengiyumva Wilberforce,
Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting,
Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
René Scharfe, Rubén Justo, Sean Allred, Shuqi Liang, SZEDER
Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon Claes,
Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan, Yuyi Wang,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.42 Release Notes
=======================
UI, Workflows & Features
* "git pack-refs" learns "--include" and "--exclude" to tweak the ref
hierarchy to be packed using pattern matching.
* 'git worktree add' learned how to create a worktree based on an
orphaned branch with `--orphan`.
* "git pack-objects" learned to invoke a new hook program that
enumerates extra objects to be used as anchoring points to keep
otherwise unreachable objects in cruft packs.
* Add more "git var" for toolsmiths to learn various locations Git is
configured with either via the configuration or hard-coded defaults.
* 'git notes append' was taught '--separator' to specify string to insert
between paragraphs.
* The "git for-each-ref" family of commands learned placeholders
related to GPG signature verification.
* "git diff --no-index" learned to read from named pipes as if they
were regular files, to allow "git diff <(process) <(substitution)"
some shells support.
* Help newbies by suggesting that there are cases where force-pushing
is a valid and sensible thing to update a branch at a remote
repository, rather than reconciling with merge/rebase.
* "git blame --contents=file" has been taught to work in a bare
repository.
* "git branch -f X" to repoint the branch X said that X was "checked
out" in another worktree, even when branch X was not and instead
being bisected or rebased. The message was reworded to say the
branch was "in use".
* Tone down the warning on SHA-256 repositories being an experimental
curiosity. We do not have support for them to interoperate with
traditional SHA-1 repositories, but at this point, we do not plan
to make breaking changes to SHA-256 repositories and there is no
longer need for such a strongly phrased warning.
Performance, Internal Implementation, Development Support etc.
* "git diff-tree" has been taught to take advantage of the
sparse-index feature.
* Clang's sanitizer implementation seems to work better than GCC's.
(merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
* The object traversal using reachability bitmap done by
"pack-object" has been tweaked to take advantage of the fact that
using "boundary" commits as representative of all the uninteresting
ones can save quite a lot of object enumeration.
* discover_git_directory() no longer touches the_repository.
* "git worktree" learned to work better with sparse index feature.
* When the external merge driver is killed by a signal, its output
should not be trusted as a resolution with conflicts that is
proposed by the driver, but the code did.
* The set-up code for the get_revision() API now allows feeding
options like --all and --not in the --stdin mode.
* Move functions that are not about pure string manipulation out of
strbuf.[ch]
* "imap-send" codepaths got cleaned up to get rid of unused
parameters.
* Enumerating refs in the packed-refs file, while excluding refs that
match certain patterns, has been optimized.
* Mark-up unused parameters in the code so that we can eventually
enable -Wunused-parameter by default.
* Instead of inventing a custom counter variables for debugging,
use existing trace2 facility in the fsync customization codepath.
* "git branch --list --format=<format>" and friends are taught
a new "%(describe)" placeholder.
* Clarify how to choose the starting point for a new topic in
developer guidance document.
* The implementation of "get_sha1_hex()" that reads a hexadecimal
string that spells a full object name has been extended to cope
with any hash function used in the repository, but the "sha1" in
its name survived. Rename it to get_hash_hex(), a name that is
more consistent within its friends like get_hash_hex_algop().
* Command line parser fix, and a small parse-options API update.
Fixes since v2.41
-----------------
* "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
command failed, so that the user can salvage what they typed.
(merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).
* The "-s" (silent, squelch) option of the "diff" family of commands
did not interact with other options that specify the output format
well. This has been cleaned up so that it will clear all the
formatting options given before.
(merge 9d484b92ed jc/diff-s-with-other-options later to maint).
* Update documentation regarding Coccinelle patches.
(merge 3bd0097cfc gc/doc-cocci-updates later to maint).
* Some atoms that can be used in "--format=<format>" for "git ls-tree"
were not supported by "git ls-files", even though they were relevant
in the context of the latter.
(merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
* Document more pseudo-refs and teach the command line completion
machinery to complete AUTO_MERGE.
(merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
* "git submodule" code trusted the data coming from the config (and
the in-tree .gitmodules file) too much without validating, leading
to NULL dereference if the user mucks with a repository (e.g.
submodule.<name>.url is removed). This has been corrected.
(merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
* The value of config.worktree is per-repository, but has been kept
in a singleton global variable per process. This has been OK as
most Git operations interacted with a single repository at a time,
but not right for operations like recursive "grep" that want to
access multiple repositories from a single process without forking.
The global variable has been eliminated and made into a member in
the per-repository data structure.
(merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
* "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
(merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
* Introduce a mechanism to disable replace refs globally and per
repository.
(merge 9c7d1b057f ds/disable-replace-refs later to maint).
* "git cat-file --batch" and friends learned "-Z" that uses NUL
delimiter for both input and output.
(merge f79e18849b ps/cat-file-null-output later to maint).
* The reimplemented "git add -i" did not honor color.ui configuration.
(merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
* Compilation fix for platforms without D_TYPE in struct dirent.
(merge 03bf92b9bf as/dtype-compilation-fix later to maint).
* Suggest to refrain from using hex literals that are non-portable
when writing printf(1) format strings.
(merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
* Simplify error message when run-command fails to start a command.
(merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
* Gracefully deal with a stale MIDX file that lists a packfile that
no longer exists.
(merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
* Even when diff.ignoreSubmodules tells us to ignore submodule
changes, "git commit" with an index that already records changes to
submodules should include the submodule changes in the resulting
commit, but it did not.
(merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
* When "git commit --trailer=..." invokes the interpret-trailers
machinery, it knows what it feeds to interpret-trailers is a full
log message without any patch, but failed to express that by
passing the "--no-divider" option, which has been corrected.
(merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).
* Avoid breakage of "git pack-objects --cruft" due to inconsistency
between the way the code enumerates packfiles in the repository.
(merge 73320e49ad tb/collect-pack-filenames-fix later to maint).
* We create .pack and then .idx, we consider only packfiles that have
.idx usable (those with only .pack are not ready yet), so we should
remove .idx before removing .pack for consistency.
(merge 0dd1324a73 ds/remove-idx-before-pack later to maint).
* Partially revert a sanity check that the rest of the config code
was not ready, to avoid triggering it in a corner case.
(merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).
* "git apply" punts when it is fed too large a patch input; the error
message it gives when it happens has been clarified.
(merge 42612e18d2 pw/apply-too-large later to maint).
* During a cherry-pick or revert session that works on multiple
commits, "git status" did not give correct information, which has
been corrected.
(merge a096a889f4 jk/cherry-pick-revert-status later to maint).
* A few places failed to differentiate the case where the index is
truly empty (nothing added) and we haven't yet read from the
on-disk index file, which have been corrected.
(merge 2ee045eea1 js/empty-index-fixes later to maint).
* "git bugreport" tests did not test what it wanted to test, which
has been corrected.
(merge 1aa92b8500 ma/t0091-fixup later to maint).
* Code snippets in a tutorial document no longer compiled after
recent header shuffling, which have been corrected.
(merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).
* "git ls-files '(attr:X)D/'" that triggers the common prefix
optimization codepath failed to read from "D/.gitattributes",
which has been corrected.
(merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).
* "git fsck --no-progress" still spewed noise from the commit-graph
subsystem, which has been corrected.
(merge 9281cd07f0 tb/fsck-no-progress later to maint).
* Various offset computation in the code that accesses the packfiles
and other data in the object layer has been hardened against
arithmetic overflow, especially on 32-bit systems.
(merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).
* Names of MinGW header files are spelled in mixed case in some
source files, but the build host can be using case sensitive
filesystem with header files with their name spelled in all
lowercase.
(merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).
* Update message mark-up for i18n in "git bundle".
(merge bbb6acd998 dk/bundle-i18n-more later to maint).
* "git tag --list --points-at X" showed tags that directly refers to
object X, but did not list a tag that points at such a tag, which
has been corrected.
* "./configure --with-expat=no" did not work as a way to refuse use
of the expat library on a system with the library installed, which
has been corrected.
(merge fb8f7269c2 ah/autoconf-fixes later to maint).
* When the user edits "rebase -i" todo file so that it starts with a
"fixup", which would make it invalid, the command truncated the
rest of the file before giving an error and returning the control
back to the user. Stop truncating to make it easier to correct
such a malformed todo file.
(merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).
* Rewrite the description of giving a custom command to the
submodule.<name>.update configuration variable.
(merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).
* Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
its traditional API, by using its EVP API instead.
(merge bda9c12073 ew/hash-with-openssl-evp later to maint).
* Exclude "." from the set of characters to be removed from the
beginning and the end of the human-readable name.
(merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).
* "git bisect visualize" stopped running "gitk" on Git for Windows
when the command was reimplemented in C around Git 2.34 timeframe.
This has been corrected.
(merge fff1594fa7 ma/locate-in-path-for-windows later to maint).
* "git rebase -i" with a series of squash/fixup, when one of the
steps stopped in conflicts and ended up getting skipped, did not
handle the accumulated commit log messages, which has been
corrected.
(merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).
* Adjust to newer Term::ReadLine to prevent it from breaking
the interactive prompt code in send-email.
(merge c016726c2d jk/send-email-with-new-readline later to maint).
* Windows updates.
(merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).
* Correct use of lstat() that assumed a failing call would not
clobber the statbuf.
(merge 72695d8214 st/mv-lstat-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 51f9d2e563 sa/doc-ls-remote later to maint).
(merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
(merge f7e063f326 ps/fetch-cleanups later to maint).
(merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
(merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
(merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
(merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
(merge aeee1408ce kh/use-default-notes-doc later to maint).
(merge 3b8724bce6 jc/test-modernization later to maint).
(merge 447a3b7331 jc/test-modernization-2 later to maint).
(merge d57fa7fc73 la/doc-interpret-trailers later to maint).
(merge 548afb0d9a la/docs-typofixes later to maint).
(merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
(merge 6c26da8404 mh/credential-erase-improvements later to maint).
(merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
(merge 80d32e84b5 rj/leakfixes later to maint).
(merge 0a868031ed pb/complete-diff-options later to maint).
(merge d4f28279ad jc/doc-hash-object-types later to maint).
(merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
(merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
(merge 3e81b896f7 rs/packet-length-simplify later to maint).
(merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
(merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
(merge 947ebd62a0 jc/am-parseopt-fix later to maint).
(merge e12cb98e1e jc/branch-parseopt-fix later to maint).
(merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
(merge a2dad4868b jc/transport-parseopt-fix later to maint).
(merge 68cbb20e73 jc/parse-options-show-branch later to maint).
(merge 3821eb6c3d jc/parse-options-reset later to maint).
(merge c48af99a3e bb/trace2-comment-fix later to maint).
(merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
(merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
(merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
(merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
(merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
(merge a5c01603b3 bc/ignore-clangd-cache later to maint).
(merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).
(merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).
----------------------------------------------------------------
Changes since v2.41.0 are as follows:
Adam Majer (1):
doc: sha256 is no longer experimental
Alejandro R. Sedeño (1):
statinfo.h: move DTYPE defines from dir.h
Alex Henrie (4):
wt-status: don't show divergence advice when committing
remote: don't imply that integration is always required before pushing
push: don't imply that integration is always required before pushing
sequencer: finish parsing the todo list despite an invalid first line
Andreas Herrmann (3):
configure.ac: don't overwrite NO_EXPAT option
configure.ac: don't overwrite NO_CURL option
configure.ac: always save NO_ICONV to config.status
Arkadii Yakovets (1):
l10n: uk: update translation (2.42.0)
Bagas Sanjaya (1):
l10n: po-id for 2.42 (round 1)
Beat Bolli (2):
trace2: fix a comment
wrapper: use trace2 counters to collect fsync stats
Calvin Wan (13):
strbuf: clarify API boundary
strbuf: clarify dependency
abspath: move related functions to abspath
credential-store: move related functions to credential-store file
object-name: move related functions to object-name
path: move related function to path
strbuf: remove global variable
git-compat-util: move strbuf.c funcs to its header
git-compat-util: move wrapper.c funcs to its header
sane-ctype.h: create header for sane-ctype macros
kwset: move translation table from ctype
treewide: remove unnecessary includes for wrapper.h
git-compat-util: move alloc macros to git-compat-util.h
D. Ben Knoble (2):
i18n: mark more bundle.c strings for translation
t4002: fix "diff can read from stdin" syntax
Derrick Stolee (7):
add: check color.ui for interactive add
add: test use of brackets when color is disabled
repository: create disable_replace_refs()
replace-objects: create wrapper around setting
repository: create read_replace_refs setting
packfile: delete .idx files before .pack files
builtin/repack.c: only repack `.pack`s that exist
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elijah Newren (28):
init-db: document existing bug with core.bare in template config
init-db: remove unnecessary global variable
init-db, clone: change unnecessary global into passed parameter
setup: adopt shared init-db & clone code
read-cache: move shared commit and ls-files code
add: modify add_files_to_cache() to avoid globals
read-cache: move shared add/checkout/commit code
statinfo: move stat_{data,validity} functions from cache/read-cache
run-command.h: move declarations for run-command.c from cache.h
name-hash.h: move declarations for name-hash.c from cache.h
sparse-index.h: move declarations for sparse-index.c from cache.h
preload-index.h: move declarations for preload-index.c from elsewhere
diff.h: move declaration for global in diff.c from cache.h
merge.h: move declarations for merge.c from cache.h
repository.h: move declaration of the_index from cache.h
read-cache*.h: move declarations for read-cache.c functions from cache.h
cache.h: remove this no-longer-used header
log-tree: replace include of revision.h with simple forward declaration
repository: remove unnecessary include of path.h
diff.h: remove unnecessary include of oidset.h
list-objects-filter-options.h: remove unneccessary include
builtin.h: remove unneccessary includes
git-compat-util.h: remove unneccessary include of wildmatch.h
merge-ll: rename from ll-merge
khash: name the structs that khash declares
object-store-ll.h: split this header out of object-store.h
hash-ll, hashmap: move oidhash() to hash-ll
fsmonitor-ll.h: split this header out of fsmonitor.h
Emir SARI (1):
l10n: tr: git 2.42.0
Eric Sunshine (1):
fsck: avoid misleading variable name
Eric Wong (5):
sha256/gcrypt: fix build with SANITIZE=leak
sha256/gcrypt: fix memory leak with SHA-256 repos
sha256/gcrypt: die on gcry_md_open failures
sha256: avoid functions deprecated in OpenSSL 3+
avoid SHA-1 functions deprecated in OpenSSL 3+
Glen Choo (16):
cocci: add headings to and reword README
cocci: codify authoring and reviewing practices
setup.c: don't setup in discover_git_directory()
config: don't BUG when both kvi and source are set
config: inline git_color_default_config
urlmatch.h: use config_fn_t type
config: add ctx arg to config_fn_t
config.c: pass ctx in configsets
config: pass ctx with config files
config.c: pass ctx with CLI config
trace2: plumb config kvi
config: pass kvi to die_bad_number()
config.c: remove config_reader from configsets
config: add kvi.path, use it to evaluate includes
config: pass source to config_parser_event_fn_t
mailmap: change primary address for Glen Choo
Han Young (1):
blame: allow --contents to work with bare repo
Jacob Abel (11):
worktree add: include -B in usage docs
t2400: cleanup created worktree in test
t2400: refactor "worktree add" opt exclusion tests
t2400: add tests to verify --quiet
worktree add: add --orphan flag
worktree add: introduce "try --orphan" hint
worktree add: extend DWIM to infer --orphan
worktree add: emit warn when there is a bad HEAD
t2400: drop no-op `--sq` from rev-parse call
builtin/worktree.c: convert tab in advice to space
t2400: rewrite regex to avoid unintentional PCRE
Jacob Keller (1):
fix cherry-pick/revert status when doing multiple commits
Jan Klötzke (1):
ref-filter: handle nested tags in --points-at option
Jean-Noël Avila (2):
l10n: fr v2.42.0 rnd 1
l10n: fr v2.42.0 rnd 2
Jeff King (41):
format-patch: free rev.message_id when exiting
format-patch: free elements of rev.ref_message_ids list
pathspec: factor out magic-to-name function
diff: factor out --follow pathspec check
diff: detect pathspec magic not supported by --follow
ci: use clang for ASan/UBSan checks
ci: run ASan/UBSan in a single job
ci: drop linux-clang job
commit: pass --no-divider to interpret-trailers
http: handle both "h2" and "h2h3" in curl info lines
var: mark unused parameters in git_var callbacks
imap-send: use server conf argument in setup_curl()
imap-send: drop unused parameter from imap_cmd_cb callback
imap-send: drop unused fields from imap_cmd_cb
refs.c: rename `ref_filter`
ref-filter.h: provide `REF_FILTER_INIT`
ref-filter: clear reachable list pointers after freeing
ref-filter: add `ref_filter_clear()`
ref-filter.c: parameterize match functions over patterns
test-ref-store: drop unimplemented reflog-expire command
do_for_each_ref_helper(): mark unused repository parameter
http: mark unused parameters in curl callbacks
http-push: mark unused parameter in xml callback
am: mark unused keep_cr parameters
count-objects: mark unused parameter in alternates callback
revisions: drop unused "opt" parameter in "tweak" callbacks
fsck: mark unused parameters in various fsck callbacks
merge-tree: mark unused parameter in traverse callback
replace: mark unused parameter in ref callback
replace: mark unused parameter in each_mergetag_fn callback
rev-parse: mark unused parameter in for_each_abbrev callback
tag: mark unused parameters in each_tag_name_fn callbacks
t/helper: mark unused callback void data parameters
ref-filter: avoid parsing tagged objects in match_points_at()
ref-filter: avoid parsing non-tags in match_points_at()
ref-filter: simplify return type of match_points_at
send-email: drop FakeTerm hack
send-email: avoid creating more than one Term::ReadLine object
repack: free geometry struct
t4053: avoid writing to unopened pipe
fsck: use enum object_type for fsck_walk callback
Johan Ruokangas (1):
gitignore.txt: use backticks instead of double quotes
Johannes Schindelin (6):
do_read_index(): always mark index as initialized unless erroring out
split-index: accept that a base index can be empty
commit -a -m: allow the top-level tree to become empty again
t0040: declare non-tab indentation to be okay in this script
win32: add a helper to run `git.exe` without a foreground window
git maintenance: avoid console window in scheduled tasks on Windows
John Cai (34):
docs: clarify git-pack-refs --all will pack all refs
pack-refs: teach --exclude option to exclude refs from being packed
pack-refs: teach pack-refs --include option
t0000-basic: modernize test format
t0030-stripspace: modernize test format
t3210-pack-refs: modernize test format
t1001-read-tree-m-2way: modernize test format
t1002-read-tree-m-u-2way: modernize test format
t1006-cat-file: modernize test format
t3500-cherry: modernize test format
t3700-add: modernize test format
t3903-stash: modernize test format
t4002-diff-basic: modernize test format
t4003-diff-rename-1: modernize test format
t4004-diff-rename-symlink: modernize test format
t4202-log: modernize test format
t4206-log-follow-harder-copies: modernize test format
t5300-pack-object: modernize test format
t5301-sliding-window: modernize test format
t5303-pack-corruption-resilience: modernize test format
t5306-pack-nobase: modernize test format
t6050-replace: modernize test format
t7101-reset-empty-subdirs: modernize test format
t7110-reset-merge: modernize test format
t7111-reset-table: modernize test format
t7201-co: modernize test format
t7508-status: modernize test format
t7600-merge: modernize test format
t7700-repack: modernize test format
t9100-git-svn-basic: modernize test format
t9104-git-svn-follow-parent: modernize test format
t9200-git-cvsexportcommit: modernize test format
t9400-git-cvsserver-server: modernize test format
docs: add git hash-object -t option's possible values
Jonathan Tan (1):
CodingGuidelines: use octal escapes, not hex
Jordi Mas (1):
l10n: Update Catalan translation
Josip Sokcevic (1):
diff-lib: honor override_submodule_config flag bit
Junio C Hamano (48):
diff: fix interaction between the "-s" option and other options
show-branch doc: say <ref>, not <reference>
Start the 2.42 cycle
The second batch for 2.42
The third batch
ll-merge: killing the external merge driver aborts the merge
The fourth batch
t6406: skip "external merge driver getting killed by a signal" test on Windows
The fifth batch
The sixth batch
The seventh batch
The eighth batch
t6135: attr magic with path pattern
tree-walk: lose base_offset that is never used in tree_entry_interesting
tree-walk: drop unused base_offset from do_match()
The ninth batch
dir: match "attr" pathspec magic with correct paths
The tenth batch
The eleventh batch
The twelfth batch
gitignore.txt: mark up explanation of patterns consistently
am: simplify parsing of "--[no-]keep-cr"
branch: reject "--no-all" and "--no-remotes" early
parse-options: introduce OPT_IPVERSION()
fetch: reject --no-ipv[46]
show-branch: --no-sparse should give dense output
short help: allow multi-line opthelp
remote: simplify "remote add --tags" help text
short help: allow a gap smaller than USAGE_GAP
show-branch: reject --[no-](topo|date)-order
reset: reject --no-(mixed|soft|hard|merge|keep) option
The thirteenth batch
branch: update the message to refuse touching a branch in-use
hex: retire get_sha1_hex()
The fourteenth batch
SubmittingPatches: choice of base for fixing an older maintenance track
The fifteenth batch
SubmittingPatches: explain why 'next' and above are inappropriate base
SubmittingPatches: use of older maintenance tracks is an exception
The sixteenth batch
MyFirstContribution: refrain from self-iterating too much
The seventeenth batch
The eighteenth batch
Git 2.42-rc0
A few more topics before -rc1
Git 2.42-rc1
Git 2.42-rc2
Git 2.42
Kousik Sanagavarapu (5):
t/lib-gpg: introduce new prereq GPG2
ref-filter: add new "signature" atom
t4205: correctly test %(describe:abbrev=...)
ref-filter: add multiple-option parsing functions
ref-filter: add new "describe" atom
Kristoffer Haugsbakk (5):
doc: tag: document `TAG_EDITMSG`
t/t7004-tag: add regression test for successful tag creation
tag: keep the message file in case ref transaction fails
notes: update documentation for `use_default_notes`
notes: move the documentation to the struct
Linus Arver (15):
docs: typofixes
doc: trailer: fix grammar
doc: trailer: swap verb order
doc: trailer: drop "commit message part" phrasing
doc: trailer: examples: avoid the word "message" by itself
doc: trailer: remove redundant phrasing
doc: trailer: use angle brackets for <token> and <value>
doc: trailer.<token>.command: emphasize deprecation
doc: trailer: mention 'key' in DESCRIPTION
doc: trailer: add more examples in DESCRIPTION
SubmittingPatches: reword awkward phrasing
SubmittingPatches: discuss subsystems separately from git.git
SubmittingPatches: de-emphasize branches as starting points
SubmittingPatches: emphasize need to communicate non-default starting points
SubmittingPatches: simplify guidance for choosing a starting point
M Hickford (3):
credential: avoid erasing distinct password
credential: erase all matching credentials
doc: gitcredentials: link to helper list
Martin Ågren (5):
t0091-bugreport.sh: actually verify some content of report
notes doc: split up run-on sentences
notes doc: tidy up `--no-stripspace` paragraph
show-ref doc: fix carets in monospace
rev-list-options: fix typo in `--stdin` documentation
Matthias Aßhauer (3):
run-command: conditionally define locate_in_PATH()
compat/mingw: implement a native locate_in_PATH()
docs: update when `git bisect visualize` uses `gitk`
Mike Hommey (2):
commit-reach: fix memory leak in get_reachable_subset()
mingw: use lowercase includes for some Windows headers
Oswald Buddenhagen (2):
advice: handle "rebase" in error_resolve_conflict()
t9001: remove excessive GIT_SEND_EMAIL_NOTTY=1
Patrick Steinhardt (17):
fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
fetch: drop unneeded NULL-check for `remote_ref`
fetch: pass through `fetch_config` directly
fetch: use `fetch_config` to store "fetch.prune" value
fetch: use `fetch_config` to store "fetch.pruneTags" value
fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
fetch: use `fetch_config` to store "fetch.parallel" value
fetch: use `fetch_config` to store "submodule.fetchJobs" value
t1006: don't strip timestamps from expected results
t1006: modernize test style to use `test_cmp`
strbuf: provide CRLF-aware helper to read until a specified delimiter
cat-file: simplify reading from standard input
cat-file: add option '-Z' that delimits input and output with NUL
revision: reorder `read_revisions_from_stdin()`
revision: small readability improvement for reading from stdin
revision: handle pseudo-opts in `--stdin` mode
Petar Vutov (1):
doc: highlight that .gitmodules does not support !command
Peter Krefting (1):
l10n: sv.po: Update Swedish translation 5549t0f0u
Philippe Blain (30):
revisions.txt: use description list for special refs
revisions.txt: document more special refs
completion: complete REVERT_HEAD and BISECT_HEAD
git-merge.txt: modernize word choice in "True merge" section
Documentation: document AUTO_MERGE
completion: complete AUTO_MERGE
completion: add comments describing __git_diff_* globals
completion: complete --break-rewrites
completion: complete --cc
completion: complete --combined-all-paths
completion: complete --compact-summary
completion: complete --default-prefix
completion: complete --find-copies
completion: complete --find-object
completion: complete --find-renames
completion: complete --function-context
completion: complete --ignore-matching-lines
completion: complete --irreversible-delete
completion: complete --ita-invisible-in-index and --ita-visible-in-index
completion: complete --line-prefix
completion: complete --no-relative
completion: complete --no-stat
completion: complete --output
completion: complete --output-indicator-{context,new,old}
completion: complete --unified
completion: complete --ws-error-highlight
completion: move --pickaxe-{all,regex} to __git_diff_common_options
completion: complete --diff-merges, its options and --no-diff-merges
completion: complete --remerge-diff
diff.c: mention completion above add_diff_options
Phillip Wood (7):
apply: improve error messages when reading patch
diff --no-index: refuse to compare stdin to a directory
diff --no-index: die on error reading stdin
t4054: test diff --no-index with stdin
diff --no-index: support reading from named pipes
rebase --skip: fix commit message clean up when skipping squash
t4053: avoid race when killing background processes
Ralf Thielow (1):
l10n: Update German translation
René Scharfe (20):
t1800: loosen matching of error message for bad shebang
run-command: report exec error even on ENOENT
ls-tree: fix documentation of %x format placeholder
pretty: factor out expand_separator()
strbuf: factor out strbuf_expand_step()
replace strbuf_expand_dict_cb() with strbuf_expand_step()
replace strbuf_expand() with strbuf_expand_step()
strbuf: simplify strbuf_expand_literal_cb()
ls-tree: simplify prefix handling
pretty: avoid double negative in format_commit_item()
pkt-line: add size parameter to packet_length()
pretty: use strchr(3) in userformat_find_requirements()
t6300: fix setup with GPGSSH but without GPG
strbuf: use skip_prefix() in strbuf_addftime()
ls-tree: fix --no-full-name
describe: fix --no-exact-match
pack-objects: fix --no-keep-true-parents
pack-objects: fix --no-quiet
bundle: use OPT_PASSTHRU_ARGV
parse-options: disallow negating OPTION_SET_INT 0
Rubén Justo (11):
config: fix a leak in git_config_copy_or_rename_section_in_file
remote: fix a leak in query_matches_negative_refspec
branch: fix a leak in dwim_and_setup_tracking
branch: fix a leak in inherit_tracking
branch: fix a leak in check_tracking_branch
branch: fix a leak in setup_tracking
rev-parse: fix a leak with --abbrev-ref
branch: fix a leak in setup_tracking
branch: fix a leak in cmd_branch
config: fix a leak in git_config_copy_or_rename_section_in_file
tests: mark as passing with SANITIZE=leak
Sean Allred (5):
show-ref doc: update for internal consistency
ls-remote doc: remove redundant --tags example
ls-remote doc: show peeled tags in examples
ls-remote doc: explain what each example does
ls-remote doc: document the output format
Sebastian Thiel (1):
mv: handle lstat() failure correctly
Shuqi Liang (2):
diff-tree: integrate with sparse index
worktree: integrate with sparse-index
Taylor Blau (53):
object: add object_array initializer helper function
pack-bitmap.c: extract `fill_in_bitmap()`
pack-bitmap.c: use commit boundary during bitmap traversal
builtin/submodule--helper.c: handle missing submodule URLs
builtin/repack.c: only collect fully-formed packs
reachable.c: extract `obj_is_recent()`
gc: introduce `gc.recentObjectsHook`
pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
t7701: make annotated tag unreachable
fsck: suppress commit-graph output with `--no-progress`
fsck: suppress MIDX output with `--no-progress`
commit-graph.c: extract `verify_one_commit_graph()`
commit-graph.c: iteratively verify commit-graph chains
commit-graph.c: pass progress to `verify_one_commit_graph()`
commit-graph.c: avoid duplicated progress output during `verify`
builtin/for-each-ref.c: add `--exclude` option
refs: plumb `exclude_patterns` argument throughout
refs/packed-backend.c: refactor `find_reference_location()`
refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
refs/packed-backend.c: add trace2 counters for jump list
revision.h: store hidden refs in a `strvec`
refs.h: let `for_each_namespaced_ref()` take excluded patterns
refs.h: implement `hidden_refs_to_excludes()`
builtin/receive-pack.c: avoid enumerating hidden references
upload-pack.c: avoid enumerating hidden refs where possible
ls-refs.c: avoid enumerating hidden refs where possible
builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
packfile.c: prevent overflow in `nth_packed_object_id()`
packfile.c: prevent overflow in `load_idx()`
packfile.c: use checked arithmetic in `nth_packed_object_offset()`
midx.c: use `size_t`'s for fanout nr and alloc
midx.c: prevent overflow in `nth_midxed_object_oid()`
midx.c: prevent overflow in `nth_midxed_offset()`
midx.c: store `nr`, `alloc` variables as `size_t`'s
midx.c: prevent overflow in `write_midx_internal()`
midx.c: prevent overflow in `fill_included_packs_batch()`
pack-bitmap.c: ensure that eindex lookups don't overflow
commit-graph.c: prevent overflow in `write_commit_graph_file()`
commit-graph.c: prevent overflow in add_graph_to_chain()
commit-graph.c: prevent overflow in `load_oid_from_graph()`
commit-graph.c: prevent overflow in `fill_commit_graph_info()`
commit-graph.c: prevent overflow in `fill_commit_in_graph()`
commit-graph.c: prevent overflow in `load_tree_for_commit()`
commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
commit-graph.c: prevent overflow in `merge_commit_graph()`
commit-graph.c: prevent overflow in `write_commit_graph()`
commit-graph.c: prevent overflow in `verify_commit_graph()`
t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
t5318: avoid top-level directory changes
t5328: avoid top-level directory changes
t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
Documentation/RelNotes/2.42.0.txt: typofix
Teng Long (10):
surround %s with quotes when failed to lookup commit
notes.c: cleanup 'strbuf_grow' call in 'append_edit'
notes.c: use designated initializers for clarity
t3321: add test cases about the notes stripspace behavior
notes.c: introduce '--separator=<paragraph-break>' option
notes.c: append separator instead of insert by pos
notes.c: introduce "--[no-]stripspace" option
notes: introduce "--no-separator" option
l10n: zh_CN: v2.42.0 round 1
l10n: zh_CN: 2.42.0 round 2
Todd Zullinger (3):
trace2 tests: fix PTHREADS prereq
t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq
Victoria Dye (3):
config: use gitdir to get worktree config
config: pass 'repo' directly to 'config_with_options()'
repository: move 'repository_format_worktree_config' to repo scope
Vinayak Dev (1):
docs: add necessary headers to Documentation/MFOW.txt
Yi-Jyun Pan (1):
l10n: zh_TW.po: Git 2.42
ZheNing Hu (1):
ls-files: align format atoms with ls-tree
brian m. carlson (9):
t: add a function to check executable bit
var: add support for listing the shell
var: format variable structure with C99 initializers
var: adjust memory allocation for strings
attr: expose and rename accessor functions
var: add attributes files locations
var: add config file locations
ident: don't consider '.' a crud
gitignore: ignore clangd .cache directory
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.42.0-rc2
@ 2023-08-15 21:22 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-15 21:22 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.42.0-rc2 is now available for testing at
the usual places. It is comprised of 435 non-merge commits since
v2.41.0, contributed by 67 people, 16 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.42.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.41.0 are as follows.
Welcome to the Git development community!
Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob
Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref, Josip
Sokcevic, Louis Strous, Petar Vutov, Premek Vysoky, Sebastian
Thiel, Tribo Dar, and Vinayak Dev.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian m. carlson,
Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder, D. Ben
Knoble, Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
Glen Choo, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
Johannes Schindelin, John Cai, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus
Arver, Martin Ågren, Matthew Hughes, Matthias Aßhauer, M Hickford,
Michael Haggerty, Mike Hommey, Nsengiyumva Wilberforce, Oswald
Buddenhagen, Patrick Steinhardt, Philippe Blain, Phillip Wood,
Randall S. Becker, René Scharfe, Rubén Justo, Sean Allred, Shuqi
Liang, SZEDER Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon
Claes, Torsten Bögershausen, Victoria Dye, Yuyi Wang, and ZheNing
Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.42 Release Notes (draft)
===============================
UI, Workflows & Features
* "git pack-refs" learns "--include" and "--exclude" to tweak the ref
hierarchy to be packed using pattern matching.
* 'git worktree add' learned how to create a worktree based on an
orphaned branch with `--orphan`.
* "git pack-objects" learned to invoke a new hook program that
enumerates extra objects to be used as anchoring points to keep
otherwise unreachable objects in cruft packs.
* Add more "git var" for toolsmiths to learn various locations Git is
configured with either via the configuration or hardcoded defaults.
* 'git notes append' was taught '--separator' to specify string to insert
between paragraphs.
* The "git for-each-ref" family of commands learned placeholders
related to GPG signature verification.
* "git diff --no-index" learned to read from named pipes as if they
were regular files, to allow "git diff <(process) <(substitution)"
some shells support.
* Help newbies by suggesting that there are cases where force-pushing
is a valid and sensible thing to update a branch at a remote
repository, rather than reconciling with merge/rebase.
* "git blame --contents=file" has been taught to work in a bare
repository.
* "git branch -f X" to repoint the branch X said that X was "checked
out" in another worktree, even when branch X was not and instead
being bisected or rebased. The message was reworded to say the
branch was "in use".
* Tone down the warning on SHA-256 repositories being an experimental
curiosity. We do not have support for them to interoperate with
traditional SHA-1 repositories, but at this point, we do not plan
to make breaking changes to SHA-256 repositories and there is no
longer need for such a strongly phrased warning.
Performance, Internal Implementation, Development Support etc.
* "git diff-tree" has been taught to take advantage of the
sparse-index feature.
* Clang's sanitizer implementation seems to work better than GCC's.
(merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
* The object traversal using reachability bitmap done by
"pack-object" has been tweaked to take advantage of the fact that
using "boundary" commits as representative of all the uninteresting
ones can save quite a lot of object enumeration.
* discover_git_directory() no longer touches the_repository.
* "git worktree" learned to work better with sparse index feature.
* When the external merge driver is killed by a signal, its output
should not be trusted as a resolution with conflicts that is
proposed by the driver, but the code did.
* The set-up code for the get_revision() API now allows feeding
options like --all and --not in the --stdin mode.
* Move functions that are not about pure string manipulation out of
strbuf.[ch]
* "imap-send" codepaths got cleaned up to get rid of unused
parameters.
* Enumerating refs in the packed-refs file, while excluding refs that
match certain patterns, has been optimized.
* Mark-up unused parameters in the code so that we can eventually
enable -Wunused-parameter by default.
* Instead of inventing a custom counter variables for debugging,
use existing trace2 facility in the fsync customization codepath.
* "git branch --list --format=<format>" and friends are taught
a new "%(describe)" placeholder.
* Clarify how to choose the starting point for a new topic in
developer guidance document.
* The implementation of "get_sha1_hex()" that reads a hexadecimal
string that spells a full object name has been extended to cope
with any hash function used in the repository, but the "sha1" in
its name survived. Rename it to get_hash_hex(), a name that is
more consistent within its friends like get_hash_hex_algop().
* Command line parser fix, and a small parse-options API update.
Fixes since v2.41
-----------------
* "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
command failed, so that the user can salvage what they typed.
(merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).
* The "-s" (silent, squelch) option of the "diff" family of commands
did not interact with other options that specify the output format
well. This has been cleaned up so that it will clear all the
formatting options given before.
(merge 9d484b92ed jc/diff-s-with-other-options later to maint).
* Update documentation regarding Coccinelle patches.
(merge 3bd0097cfc gc/doc-cocci-updates later to maint).
* Some atoms that can be used in "--format=<format>" for "git ls-tree"
were not supported by "git ls-files", even though they were relevant
in the context of the latter.
(merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
* Document more pseudo-refs and teach the command line completion
machinery to complete AUTO_MERGE.
(merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
* "git submodule" code trusted the data coming from the config (and
the in-tree .gitmodules file) too much without validating, leading
to NULL dereference if the user mucks with a repository (e.g.
submodule.<name>.url is removed). This has been corrected.
(merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
* The value of config.worktree is per-repository, but has been kept
in a singleton global variable per process. This has been OK as
most Git operations interacted with a single repository at a time,
but not right for operations like recursive "grep" that want to
access multiple repositories from a single process without forking.
The global variable has been eliminated and made into a member in
the per-repository data structure.
(merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
* "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
(merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
* Introduce a mechanism to disable replace refs globally and per
repository.
(merge 9c7d1b057f ds/disable-replace-refs later to maint).
* "git cat-file --batch" and friends learned "-Z" that uses NUL
delimiter for both input and output.
(merge f79e18849b ps/cat-file-null-output later to maint).
* The reimplemented "git add -i" did not honor color.ui configuration.
(merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
* Compilation fix for platforms without D_TYPE in struct dirent.
(merge 03bf92b9bf as/dtype-compilation-fix later to maint).
* Suggest to refrain from using hex literals that are non-portable
when writing printf(1) format strings.
(merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
* Simplify error message when run-command fails to start a command.
(merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
* Gracefully deal with a stale MIDX file that lists a packfile that
no longer exists.
(merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
* Even when diff.ignoreSubmodules tells us to ignore submodule
changes, "git commit" with an index that already records changes to
submodules should include the submodule changes in the resulting
commit, but it did not.
(merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
* When "git commit --trailer=..." invokes the interpret-trailers
machinery, it knows what it feeds to interpret-trailers is a full
log message without any patch, but failed to express that by
passing the "--no-divider" option, which has been corrected.
(merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).
* Avoid breakage of "git pack-objects --cruft" due to inconsistency
between the way the code enumerates packfiles in the repository.
(merge 73320e49ad tb/collect-pack-filenames-fix later to maint).
* We create .pack and then .idx, we consider only packfiles that have
.idx usable (those with only .pack are not ready yet), so we should
remove .idx before removing .pack for consistency.
(merge 0dd1324a73 ds/remove-idx-before-pack later to maint).
* Partially revert a sanity check that the rest of the config code
was not ready, to avoid triggering it in a corner case.
(merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).
* "git apply" punts when it is fed too large a patch input; the error
message it gives when it happens has been clarified.
(merge 42612e18d2 pw/apply-too-large later to maint).
* During a cherry-pick or revert session that works on multiple
commits, "git status" did not give correct information, which has
been corrected.
(merge a096a889f4 jk/cherry-pick-revert-status later to maint).
* A few places failed to differentiate the case where the index is
truly empty (nothing added) and we haven't yet read from the
on-disk index file, which have been corrected.
(merge 2ee045eea1 js/empty-index-fixes later to maint).
* "git bugreport" tests did not test what it wanted to test, which
has been corrected.
(merge 1aa92b8500 ma/t0091-fixup later to maint).
* Code snippets in a tutorial document no longer compiled after
recent header shuffling, which have been corrected.
(merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).
* "git ls-files '(attr:X)D/'" that triggers the common prefix
optimization codepath failed to read from "D/.gitattributes",
which has been corrected.
(merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).
* "git fsck --no-progress" still spewed noise from the commit-graph
subsystem, which has been corrected.
(merge 9281cd07f0 tb/fsck-no-progress later to maint).
* Various offset computation in the code that accesses the packfiles
and other data in the object layer has been hardened against
arithmetic overflow, especially on 32-bit systems.
(merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).
* Names of MinGW header files are spelled in mixed case in some
source files, but the build host can be using case sensitive
filesystem with header files with their name spelled in all
lowercase.
(merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).
* Update message mark-up for i18n in "git bundle".
(merge bbb6acd998 dk/bundle-i18n-more later to maint).
* "git tag --list --points-at X" showed tags that directly refers to
object X, but did not list a tag that points at such a tag, which
has been corrected.
* "./configure --with-expat=no" did not work as a way to refuse use
of the expat library on a system with the library installed, which
has been corrected.
(merge fb8f7269c2 ah/autoconf-fixes later to maint).
* When the user edits "rebase -i" todo file so that it starts with a
"fixup", which would make it invalid, the command truncated the
rest of the file before giving an error and returning the control
back to the user. Stop truncating to make it easier to correct
such a malformed todo file.
(merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).
* Rewrite the description of giving a custom command to the
submodule.<name>.update configuration variable.
(merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).
* Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
its traditional API, by using its EVP API instead.
(merge bda9c12073 ew/hash-with-openssl-evp later to maint).
* Exclude "." from the set of characters to be removed from the
beginning and the end of the human-readable name.
(merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).
* "git bisect visualize" stopped running "gitk" on Git for Windows
when the command was reimplemented in C around Git 2.34 timeframe.
This has been corrected.
(merge fff1594fa7 ma/locate-in-path-for-windows later to maint).
* "git rebase -i" with a series of squash/fixup, when one of the
steps stopped in conflicts and ended up getting skipped, did not
handle the accumulated commit log messages, which has been
corrected.
(merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).
* Adjust to newer Term::ReadLine to prevent it from breaking
the interactive prompt code in send-email.
(merge c016726c2d jk/send-email-with-new-readline later to maint).
* Windows updates.
(merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).
* Correct use of lstat() that assumed a failing call would not
clobber the statbuf.
(merge 72695d8214 st/mv-lstat-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 51f9d2e563 sa/doc-ls-remote later to maint).
(merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
(merge f7e063f326 ps/fetch-cleanups later to maint).
(merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
(merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
(merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
(merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
(merge aeee1408ce kh/use-default-notes-doc later to maint).
(merge 3b8724bce6 jc/test-modernization later to maint).
(merge 447a3b7331 jc/test-modernization-2 later to maint).
(merge d57fa7fc73 la/doc-interpret-trailers later to maint).
(merge 548afb0d9a la/docs-typofixes later to maint).
(merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
(merge 6c26da8404 mh/credential-erase-improvements later to maint).
(merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
(merge 80d32e84b5 rj/leakfixes later to maint).
(merge 0a868031ed pb/complete-diff-options later to maint).
(merge d4f28279ad jc/doc-hash-object-types later to maint).
(merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
(merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
(merge 3e81b896f7 rs/packet-length-simplify later to maint).
(merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
(merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
(merge 947ebd62a0 jc/am-parseopt-fix later to maint).
(merge e12cb98e1e jc/branch-parseopt-fix later to maint).
(merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
(merge a2dad4868b jc/transport-parseopt-fix later to maint).
(merge 68cbb20e73 jc/parse-options-show-branch later to maint).
(merge 3821eb6c3d jc/parse-options-reset later to maint).
(merge c48af99a3e bb/trace2-comment-fix later to maint).
(merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
(merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
(merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
(merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
(merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
(merge a5c01603b3 bc/ignore-clangd-cache later to maint).
(merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).
(merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).
----------------------------------------------------------------
Changes since v2.41.0 are as follows:
Adam Majer (1):
doc: sha256 is no longer experimental
Alejandro R. Sedeño (1):
statinfo.h: move DTYPE defines from dir.h
Alex Henrie (4):
wt-status: don't show divergence advice when committing
remote: don't imply that integration is always required before pushing
push: don't imply that integration is always required before pushing
sequencer: finish parsing the todo list despite an invalid first line
Andreas Herrmann (3):
configure.ac: don't overwrite NO_EXPAT option
configure.ac: don't overwrite NO_CURL option
configure.ac: always save NO_ICONV to config.status
Beat Bolli (2):
trace2: fix a comment
wrapper: use trace2 counters to collect fsync stats
Calvin Wan (13):
strbuf: clarify API boundary
strbuf: clarify dependency
abspath: move related functions to abspath
credential-store: move related functions to credential-store file
object-name: move related functions to object-name
path: move related function to path
strbuf: remove global variable
git-compat-util: move strbuf.c funcs to its header
git-compat-util: move wrapper.c funcs to its header
sane-ctype.h: create header for sane-ctype macros
kwset: move translation table from ctype
treewide: remove unnecessary includes for wrapper.h
git-compat-util: move alloc macros to git-compat-util.h
D. Ben Knoble (2):
i18n: mark more bundle.c strings for translation
t4002: fix "diff can read from stdin" syntax
Derrick Stolee (7):
add: check color.ui for interactive add
add: test use of brackets when color is disabled
repository: create disable_replace_refs()
replace-objects: create wrapper around setting
repository: create read_replace_refs setting
packfile: delete .idx files before .pack files
builtin/repack.c: only repack `.pack`s that exist
Elijah Newren (28):
init-db: document existing bug with core.bare in template config
init-db: remove unnecessary global variable
init-db, clone: change unnecessary global into passed parameter
setup: adopt shared init-db & clone code
read-cache: move shared commit and ls-files code
add: modify add_files_to_cache() to avoid globals
read-cache: move shared add/checkout/commit code
statinfo: move stat_{data,validity} functions from cache/read-cache
run-command.h: move declarations for run-command.c from cache.h
name-hash.h: move declarations for name-hash.c from cache.h
sparse-index.h: move declarations for sparse-index.c from cache.h
preload-index.h: move declarations for preload-index.c from elsewhere
diff.h: move declaration for global in diff.c from cache.h
merge.h: move declarations for merge.c from cache.h
repository.h: move declaration of the_index from cache.h
read-cache*.h: move declarations for read-cache.c functions from cache.h
cache.h: remove this no-longer-used header
log-tree: replace include of revision.h with simple forward declaration
repository: remove unnecessary include of path.h
diff.h: remove unnecessary include of oidset.h
list-objects-filter-options.h: remove unneccessary include
builtin.h: remove unneccessary includes
git-compat-util.h: remove unneccessary include of wildmatch.h
merge-ll: rename from ll-merge
khash: name the structs that khash declares
object-store-ll.h: split this header out of object-store.h
hash-ll, hashmap: move oidhash() to hash-ll
fsmonitor-ll.h: split this header out of fsmonitor.h
Eric Sunshine (1):
fsck: avoid misleading variable name
Eric Wong (5):
sha256/gcrypt: fix build with SANITIZE=leak
sha256/gcrypt: fix memory leak with SHA-256 repos
sha256/gcrypt: die on gcry_md_open failures
sha256: avoid functions deprecated in OpenSSL 3+
avoid SHA-1 functions deprecated in OpenSSL 3+
Glen Choo (16):
cocci: add headings to and reword README
cocci: codify authoring and reviewing practices
setup.c: don't setup in discover_git_directory()
config: don't BUG when both kvi and source are set
config: inline git_color_default_config
urlmatch.h: use config_fn_t type
config: add ctx arg to config_fn_t
config.c: pass ctx in configsets
config: pass ctx with config files
config.c: pass ctx with CLI config
trace2: plumb config kvi
config: pass kvi to die_bad_number()
config.c: remove config_reader from configsets
config: add kvi.path, use it to evaluate includes
config: pass source to config_parser_event_fn_t
mailmap: change primary address for Glen Choo
Han Young (1):
blame: allow --contents to work with bare repo
Jacob Abel (11):
worktree add: include -B in usage docs
t2400: cleanup created worktree in test
t2400: refactor "worktree add" opt exclusion tests
t2400: add tests to verify --quiet
worktree add: add --orphan flag
worktree add: introduce "try --orphan" hint
worktree add: extend DWIM to infer --orphan
worktree add: emit warn when there is a bad HEAD
t2400: drop no-op `--sq` from rev-parse call
builtin/worktree.c: convert tab in advice to space
t2400: rewrite regex to avoid unintentional PCRE
Jacob Keller (1):
fix cherry-pick/revert status when doing multiple commits
Jan Klötzke (1):
ref-filter: handle nested tags in --points-at option
Jeff King (40):
format-patch: free rev.message_id when exiting
format-patch: free elements of rev.ref_message_ids list
pathspec: factor out magic-to-name function
diff: factor out --follow pathspec check
diff: detect pathspec magic not supported by --follow
ci: use clang for ASan/UBSan checks
ci: run ASan/UBSan in a single job
ci: drop linux-clang job
commit: pass --no-divider to interpret-trailers
http: handle both "h2" and "h2h3" in curl info lines
var: mark unused parameters in git_var callbacks
imap-send: use server conf argument in setup_curl()
imap-send: drop unused parameter from imap_cmd_cb callback
imap-send: drop unused fields from imap_cmd_cb
refs.c: rename `ref_filter`
ref-filter.h: provide `REF_FILTER_INIT`
ref-filter: clear reachable list pointers after freeing
ref-filter: add `ref_filter_clear()`
ref-filter.c: parameterize match functions over patterns
test-ref-store: drop unimplemented reflog-expire command
do_for_each_ref_helper(): mark unused repository parameter
http: mark unused parameters in curl callbacks
http-push: mark unused parameter in xml callback
am: mark unused keep_cr parameters
count-objects: mark unused parameter in alternates callback
revisions: drop unused "opt" parameter in "tweak" callbacks
fsck: mark unused parameters in various fsck callbacks
merge-tree: mark unused parameter in traverse callback
replace: mark unused parameter in ref callback
replace: mark unused parameter in each_mergetag_fn callback
rev-parse: mark unused parameter in for_each_abbrev callback
tag: mark unused parameters in each_tag_name_fn callbacks
t/helper: mark unused callback void data parameters
ref-filter: avoid parsing tagged objects in match_points_at()
ref-filter: avoid parsing non-tags in match_points_at()
ref-filter: simplify return type of match_points_at
send-email: drop FakeTerm hack
send-email: avoid creating more than one Term::ReadLine object
repack: free geometry struct
t4053: avoid writing to unopened pipe
Johan Ruokangas (1):
gitignore.txt: use backticks instead of double quotes
Johannes Schindelin (6):
do_read_index(): always mark index as initialized unless erroring out
split-index: accept that a base index can be empty
commit -a -m: allow the top-level tree to become empty again
t0040: declare non-tab indentation to be okay in this script
win32: add a helper to run `git.exe` without a foreground window
git maintenance: avoid console window in scheduled tasks on Windows
John Cai (34):
docs: clarify git-pack-refs --all will pack all refs
pack-refs: teach --exclude option to exclude refs from being packed
pack-refs: teach pack-refs --include option
t0000-basic: modernize test format
t0030-stripspace: modernize test format
t3210-pack-refs: modernize test format
t1001-read-tree-m-2way: modernize test format
t1002-read-tree-m-u-2way: modernize test format
t1006-cat-file: modernize test format
t3500-cherry: modernize test format
t3700-add: modernize test format
t3903-stash: modernize test format
t4002-diff-basic: modernize test format
t4003-diff-rename-1: modernize test format
t4004-diff-rename-symlink: modernize test format
t4202-log: modernize test format
t4206-log-follow-harder-copies: modernize test format
t5300-pack-object: modernize test format
t5301-sliding-window: modernize test format
t5303-pack-corruption-resilience: modernize test format
t5306-pack-nobase: modernize test format
t6050-replace: modernize test format
t7101-reset-empty-subdirs: modernize test format
t7110-reset-merge: modernize test format
t7111-reset-table: modernize test format
t7201-co: modernize test format
t7508-status: modernize test format
t7600-merge: modernize test format
t7700-repack: modernize test format
t9100-git-svn-basic: modernize test format
t9104-git-svn-follow-parent: modernize test format
t9200-git-cvsexportcommit: modernize test format
t9400-git-cvsserver-server: modernize test format
docs: add git hash-object -t option's possible values
Jonathan Tan (1):
CodingGuidelines: use octal escapes, not hex
Josip Sokcevic (1):
diff-lib: honor override_submodule_config flag bit
Junio C Hamano (47):
diff: fix interaction between the "-s" option and other options
show-branch doc: say <ref>, not <reference>
Start the 2.42 cycle
The second batch for 2.42
The third batch
ll-merge: killing the external merge driver aborts the merge
The fourth batch
t6406: skip "external merge driver getting killed by a signal" test on Windows
The fifth batch
The sixth batch
The seventh batch
The eighth batch
t6135: attr magic with path pattern
tree-walk: lose base_offset that is never used in tree_entry_interesting
tree-walk: drop unused base_offset from do_match()
The ninth batch
dir: match "attr" pathspec magic with correct paths
The tenth batch
The eleventh batch
The twelfth batch
gitignore.txt: mark up explanation of patterns consistently
am: simplify parsing of "--[no-]keep-cr"
branch: reject "--no-all" and "--no-remotes" early
parse-options: introduce OPT_IPVERSION()
fetch: reject --no-ipv[46]
show-branch: --no-sparse should give dense output
short help: allow multi-line opthelp
remote: simplify "remote add --tags" help text
short help: allow a gap smaller than USAGE_GAP
show-branch: reject --[no-](topo|date)-order
reset: reject --no-(mixed|soft|hard|merge|keep) option
The thirteenth batch
branch: update the message to refuse touching a branch in-use
hex: retire get_sha1_hex()
The fourteenth batch
SubmittingPatches: choice of base for fixing an older maintenance track
The fifteenth batch
SubmittingPatches: explain why 'next' and above are inappropriate base
SubmittingPatches: use of older maintenance tracks is an exception
The sixteenth batch
MyFirstContribution: refrain from self-iterating too much
The seventeenth batch
The eighteenth batch
Git 2.42-rc0
A few more topics before -rc1
Git 2.42-rc1
Git 2.42-rc2
Kousik Sanagavarapu (5):
t/lib-gpg: introduce new prereq GPG2
ref-filter: add new "signature" atom
t4205: correctly test %(describe:abbrev=...)
ref-filter: add multiple-option parsing functions
ref-filter: add new "describe" atom
Kristoffer Haugsbakk (5):
doc: tag: document `TAG_EDITMSG`
t/t7004-tag: add regression test for successful tag creation
tag: keep the message file in case ref transaction fails
notes: update documentation for `use_default_notes`
notes: move the documentation to the struct
Linus Arver (15):
docs: typofixes
doc: trailer: fix grammar
doc: trailer: swap verb order
doc: trailer: drop "commit message part" phrasing
doc: trailer: examples: avoid the word "message" by itself
doc: trailer: remove redundant phrasing
doc: trailer: use angle brackets for <token> and <value>
doc: trailer.<token>.command: emphasize deprecation
doc: trailer: mention 'key' in DESCRIPTION
doc: trailer: add more examples in DESCRIPTION
SubmittingPatches: reword awkward phrasing
SubmittingPatches: discuss subsystems separately from git.git
SubmittingPatches: de-emphasize branches as starting points
SubmittingPatches: emphasize need to communicate non-default starting points
SubmittingPatches: simplify guidance for choosing a starting point
M Hickford (3):
credential: avoid erasing distinct password
credential: erase all matching credentials
doc: gitcredentials: link to helper list
Martin Ågren (1):
t0091-bugreport.sh: actually verify some content of report
Matthias Aßhauer (3):
run-command: conditionally define locate_in_PATH()
compat/mingw: implement a native locate_in_PATH()
docs: update when `git bisect visualize` uses `gitk`
Mike Hommey (2):
commit-reach: fix memory leak in get_reachable_subset()
mingw: use lowercase includes for some Windows headers
Oswald Buddenhagen (2):
advice: handle "rebase" in error_resolve_conflict()
t9001: remove excessive GIT_SEND_EMAIL_NOTTY=1
Patrick Steinhardt (17):
fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
fetch: drop unneeded NULL-check for `remote_ref`
fetch: pass through `fetch_config` directly
fetch: use `fetch_config` to store "fetch.prune" value
fetch: use `fetch_config` to store "fetch.pruneTags" value
fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
fetch: use `fetch_config` to store "fetch.parallel" value
fetch: use `fetch_config` to store "submodule.fetchJobs" value
t1006: don't strip timestamps from expected results
t1006: modernize test style to use `test_cmp`
strbuf: provide CRLF-aware helper to read until a specified delimiter
cat-file: simplify reading from standard input
cat-file: add option '-Z' that delimits input and output with NUL
revision: reorder `read_revisions_from_stdin()`
revision: small readability improvement for reading from stdin
revision: handle pseudo-opts in `--stdin` mode
Petar Vutov (1):
doc: highlight that .gitmodules does not support !command
Philippe Blain (30):
revisions.txt: use description list for special refs
revisions.txt: document more special refs
completion: complete REVERT_HEAD and BISECT_HEAD
git-merge.txt: modernize word choice in "True merge" section
Documentation: document AUTO_MERGE
completion: complete AUTO_MERGE
completion: add comments describing __git_diff_* globals
completion: complete --break-rewrites
completion: complete --cc
completion: complete --combined-all-paths
completion: complete --compact-summary
completion: complete --default-prefix
completion: complete --find-copies
completion: complete --find-object
completion: complete --find-renames
completion: complete --function-context
completion: complete --ignore-matching-lines
completion: complete --irreversible-delete
completion: complete --ita-invisible-in-index and --ita-visible-in-index
completion: complete --line-prefix
completion: complete --no-relative
completion: complete --no-stat
completion: complete --output
completion: complete --output-indicator-{context,new,old}
completion: complete --unified
completion: complete --ws-error-highlight
completion: move --pickaxe-{all,regex} to __git_diff_common_options
completion: complete --diff-merges, its options and --no-diff-merges
completion: complete --remerge-diff
diff.c: mention completion above add_diff_options
Phillip Wood (7):
apply: improve error messages when reading patch
diff --no-index: refuse to compare stdin to a directory
diff --no-index: die on error reading stdin
t4054: test diff --no-index with stdin
diff --no-index: support reading from named pipes
rebase --skip: fix commit message clean up when skipping squash
t4053: avoid race when killing background processes
René Scharfe (20):
t1800: loosen matching of error message for bad shebang
run-command: report exec error even on ENOENT
ls-tree: fix documentation of %x format placeholder
pretty: factor out expand_separator()
strbuf: factor out strbuf_expand_step()
replace strbuf_expand_dict_cb() with strbuf_expand_step()
replace strbuf_expand() with strbuf_expand_step()
strbuf: simplify strbuf_expand_literal_cb()
ls-tree: simplify prefix handling
pretty: avoid double negative in format_commit_item()
pkt-line: add size parameter to packet_length()
pretty: use strchr(3) in userformat_find_requirements()
t6300: fix setup with GPGSSH but without GPG
strbuf: use skip_prefix() in strbuf_addftime()
ls-tree: fix --no-full-name
describe: fix --no-exact-match
pack-objects: fix --no-keep-true-parents
pack-objects: fix --no-quiet
bundle: use OPT_PASSTHRU_ARGV
parse-options: disallow negating OPTION_SET_INT 0
Rubén Justo (11):
config: fix a leak in git_config_copy_or_rename_section_in_file
remote: fix a leak in query_matches_negative_refspec
branch: fix a leak in dwim_and_setup_tracking
branch: fix a leak in inherit_tracking
branch: fix a leak in check_tracking_branch
branch: fix a leak in setup_tracking
rev-parse: fix a leak with --abbrev-ref
branch: fix a leak in setup_tracking
branch: fix a leak in cmd_branch
config: fix a leak in git_config_copy_or_rename_section_in_file
tests: mark as passing with SANITIZE=leak
Sean Allred (5):
show-ref doc: update for internal consistency
ls-remote doc: remove redundant --tags example
ls-remote doc: show peeled tags in examples
ls-remote doc: explain what each example does
ls-remote doc: document the output format
Sebastian Thiel (1):
mv: handle lstat() failure correctly
Shuqi Liang (2):
diff-tree: integrate with sparse index
worktree: integrate with sparse-index
Taylor Blau (53):
object: add object_array initializer helper function
pack-bitmap.c: extract `fill_in_bitmap()`
pack-bitmap.c: use commit boundary during bitmap traversal
builtin/submodule--helper.c: handle missing submodule URLs
builtin/repack.c: only collect fully-formed packs
reachable.c: extract `obj_is_recent()`
gc: introduce `gc.recentObjectsHook`
pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
t7701: make annotated tag unreachable
fsck: suppress commit-graph output with `--no-progress`
fsck: suppress MIDX output with `--no-progress`
commit-graph.c: extract `verify_one_commit_graph()`
commit-graph.c: iteratively verify commit-graph chains
commit-graph.c: pass progress to `verify_one_commit_graph()`
commit-graph.c: avoid duplicated progress output during `verify`
builtin/for-each-ref.c: add `--exclude` option
refs: plumb `exclude_patterns` argument throughout
refs/packed-backend.c: refactor `find_reference_location()`
refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
refs/packed-backend.c: add trace2 counters for jump list
revision.h: store hidden refs in a `strvec`
refs.h: let `for_each_namespaced_ref()` take excluded patterns
refs.h: implement `hidden_refs_to_excludes()`
builtin/receive-pack.c: avoid enumerating hidden references
upload-pack.c: avoid enumerating hidden refs where possible
ls-refs.c: avoid enumerating hidden refs where possible
builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
packfile.c: prevent overflow in `nth_packed_object_id()`
packfile.c: prevent overflow in `load_idx()`
packfile.c: use checked arithmetic in `nth_packed_object_offset()`
midx.c: use `size_t`'s for fanout nr and alloc
midx.c: prevent overflow in `nth_midxed_object_oid()`
midx.c: prevent overflow in `nth_midxed_offset()`
midx.c: store `nr`, `alloc` variables as `size_t`'s
midx.c: prevent overflow in `write_midx_internal()`
midx.c: prevent overflow in `fill_included_packs_batch()`
pack-bitmap.c: ensure that eindex lookups don't overflow
commit-graph.c: prevent overflow in `write_commit_graph_file()`
commit-graph.c: prevent overflow in add_graph_to_chain()
commit-graph.c: prevent overflow in `load_oid_from_graph()`
commit-graph.c: prevent overflow in `fill_commit_graph_info()`
commit-graph.c: prevent overflow in `fill_commit_in_graph()`
commit-graph.c: prevent overflow in `load_tree_for_commit()`
commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
commit-graph.c: prevent overflow in `merge_commit_graph()`
commit-graph.c: prevent overflow in `write_commit_graph()`
commit-graph.c: prevent overflow in `verify_commit_graph()`
t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
t5318: avoid top-level directory changes
t5328: avoid top-level directory changes
t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
Documentation/RelNotes/2.42.0.txt: typofix
Teng Long (8):
surround %s with quotes when failed to lookup commit
notes.c: cleanup 'strbuf_grow' call in 'append_edit'
notes.c: use designated initializers for clarity
t3321: add test cases about the notes stripspace behavior
notes.c: introduce '--separator=<paragraph-break>' option
notes.c: append separator instead of insert by pos
notes.c: introduce "--[no-]stripspace" option
notes: introduce "--no-separator" option
Todd Zullinger (3):
trace2 tests: fix PTHREADS prereq
t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq
Victoria Dye (3):
config: use gitdir to get worktree config
config: pass 'repo' directly to 'config_with_options()'
repository: move 'repository_format_worktree_config' to repo scope
Vinayak Dev (1):
docs: add necessary headers to Documentation/MFOW.txt
ZheNing Hu (1):
ls-files: align format atoms with ls-tree
brian m. carlson (9):
t: add a function to check executable bit
var: add support for listing the shell
var: format variable structure with C99 initializers
var: adjust memory allocation for strings
attr: expose and rename accessor functions
var: add attributes files locations
var: add config file locations
ident: don't consider '.' a crud
gitignore: ignore clangd .cache directory
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.42.0-rc1
@ 2023-08-10 16:45 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-10 16:45 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.42.0-rc1 is now available for testing at
the usual places. It is comprised of 422 non-merge commits since
v2.41.0, contributed by 63 people, 15 of which are new faces [*].
There are still some corners to be rounded before everything is
ready to go, but I've already extended -rc1 by a day, so let's not
wait for the regression fixes we already know of but haven't got
around to. They will be in 'master' before -rc2 is tagged. On the
other hand, changes that are not about fixing new regressions
introduced during this cycle are to be postponed until the next
cycle.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.42.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.41.0 are as follows.
Welcome to the Git development community!
Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob
Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref,
Josip Sokcevic, Louis Strous, Petar Vutov, Premek Vysoky,
Tribo Dar, and Vinayak Dev.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian m. carlson,
Calvin Wan, Christian Couder, D. Ben Knoble, Derrick Stolee,
Elijah Newren, Eric Sunshine, Eric Wong, Glen Choo, Hariom Verma,
Jacob Keller, Jaydeep Das, Jeff King, Johannes Schindelin, John
Cai, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kousik
Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Martin Ågren,
Matthew Hughes, Matthias Aßhauer, M Hickford, Michael Haggerty,
Mike Hommey, Nsengiyumva Wilberforce, Patrick Steinhardt, Philippe
Blain, Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
Sean Allred, Shuqi Liang, SZEDER Gábor, Taylor Blau, Teng Long,
Todd Zullinger, Toon Claes, Torsten Bögershausen, Victoria Dye,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.42 Release Notes (draft)
===============================
UI, Workflows & Features
* "git pack-refs" learns "--include" and "--exclude" to tweak the ref
hierarchy to be packed using pattern matching.
* 'git worktree add' learned how to create a worktree based on an
orphaned branch with `--orphan`.
* "git pack-objects" learned to invoke a new hook program that
enumerates extra objects to be used as anchoring points to keep
otherwise unreachable objects in cruft packs.
* Add more "git var" for toolsmiths to learn various locations Git is
configured with either via the configuration or hardcoded defaults.
* 'git notes append' was taught '--separator' to specify string to insert
between paragraphs.
* The "git for-each-ref" family of commands learned placeholders
related to GPG signature verification.
* "git diff --no-index" learned to read from named pipes as if they
were regular files, to allow "git diff <(process) <(substitution)"
some shells support.
* Help newbies by suggesting that there are cases where force-pushing
is a valid and sensible thing to update a branch at a remote
repository, rather than reconciling with merge/rebase.
* "git blame --contents=file" has been taught to work in a bare
repository.
* "git branch -f X" to repoint the branch X said that X was "checked
out" in another worktree, even when branch X was not and instead
being bisected or rebased. The message was reworded to say the
branch was "in use".
* Tone down the warning on SHA-256 repositories being an experimental
curiosity. We do not have support for them to interoperate with
traditional SHA-1 repositories, but at this point, we do not plan
to make breaking changes to SHA-256 repositories and there is no
longer need for such a strongly phrased warning.
Performance, Internal Implementation, Development Support etc.
* "git diff-tree" has been taught to take advantage of the
sparse-index feature.
* Clang's sanitizer implementation seems to work better than GCC's.
(merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
* The object traversal using reachability bitmap done by
"pack-object" has been tweaked to take advantage of the fact that
using "boundary" commits as representative of all the uninteresting
ones can save quite a lot of object enumeration.
* discover_git_directory() no longer touches the_repository.
* "git worktree" learned to work better with sparse index feature.
* When the external merge driver is killed by a signal, its output
should not be trusted as a resolution with conflicts that is
proposed by the driver, but the code did.
* The set-up code for the get_revision() API now allows feeding
options like --all and --not in the --stdin mode.
* Move functions that are not about pure string manipulation out of
strbuf.[ch]
* "imap-send" codepaths got cleaned up to get rid of unused
parameters.
* Enumerating refs in the packed-refs file, while excluding refs that
match certain patterns, has been optimized.
* Mark-up unused parameters in the code so that we can eventually
enable -Wunused-parameter by default.
* Instead of inventing a custom counter variables for debugging,
use existing trace2 facility in the fsync customization codepath.
* "git branch --list --format=<format>" and friends are taught
a new "%(describe)" placeholder.
* Clarify how to choose the starting point for a new topic in
developer guidance document.
* The implementation of "get_sha1_hex()" that reads a hexadecimal
string that spells a full object name has been extended to cope
with any hash function used in the repository, but the "sha1" in
its name survived. Rename it to get_hash_hex(), a name that is
more consistent within its friends like get_hash_hex_algop().
* Command line parser fix, and a small parse-options API update.
Fixes since v2.41
-----------------
* "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
command failed, so that the user can salvage what they typed.
(merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).
* The "-s" (silent, squelch) option of the "diff" family of commands
did not interact with other options that specify the output format
well. This has been cleaned up so that it will clear all the
formatting options given before.
(merge 9d484b92ed jc/diff-s-with-other-options later to maint).
* Update documentation regarding Coccinelle patches.
(merge 3bd0097cfc gc/doc-cocci-updates later to maint).
* Some atoms that can be used in "--format=<format>" for "git ls-tree"
were not supported by "git ls-files", even though they were relevant
in the context of the latter.
(merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
* Document more pseudo-refs and teach the command line completion
machinery to complete AUTO_MERGE.
(merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
* "git submodule" code trusted the data coming from the config (and
the in-tree .gitmodules file) too much without validating, leading
to NULL dereference if the user mucks with a repository (e.g.
submodule.<name>.url is removed). This has been corrected.
(merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
* The value of config.worktree is per-repository, but has been kept
in a singleton global variable per process. This has been OK as
most Git operations interacted with a single repository at a time,
but not right for operations like recursive "grep" that want to
access multiple repositories from a single process without forking.
The global variable has been eliminated and made into a member in
the per-repository data structure.
(merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
* "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
(merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
* Introduce a mechanism to disable replace refs globally and per
repository.
(merge 9c7d1b057f ds/disable-replace-refs later to maint).
* "git cat-file --batch" and friends learned "-Z" that uses NUL
delimiter for both input and output.
(merge f79e18849b ps/cat-file-null-output later to maint).
* The reimplemented "git add -i" did not honor color.ui configuration.
(merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
* Compilation fix for platforms without D_TYPE in struct dirent.
(merge 03bf92b9bf as/dtype-compilation-fix later to maint).
* Suggest to refrain from using hex literals that are non-portable
when writing printf(1) format strings.
(merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
* Simplify error message when run-command fails to start a command.
(merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
* Gracefully deal with a stale MIDX file that lists a packfile that
no longer exists.
(merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
* Even when diff.ignoreSubmodules tells us to ignore submodule
changes, "git commit" with an index that already records changes to
submodules should include the submodule changes in the resulting
commit, but it did not.
(merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
* When "git commit --trailer=..." invokes the interpret-trailers
machinery, it knows what it feeds to interpret-trailers is a full
log message without any patch, but failed to express that by
passing the "--no-divider" option, which has been corrected.
(merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).
* Avoid breakage of "git pack-objects --cruft" due to inconsistency
between the way the code enumerates packfiles in the repository.
(merge 73320e49ad tb/collect-pack-filenames-fix later to maint).
* We create .pack and then .idx, we consider only packfiles that have
.idx usable (those with only .pack are not ready yet), so we should
remove .idx before removing .pack for consistency.
(merge 0dd1324a73 ds/remove-idx-before-pack later to maint).
* Partially revert a sanity check that the rest of the config code
was not ready, to avoid triggering it in a corner case.
(merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).
* "git apply" punts when it is fed too large a patch input; the error
message it gives when it happens has been clarified.
(merge 42612e18d2 pw/apply-too-large later to maint).
* During a cherry-pick or revert session that works on multiple
commits, "git status" did not give correct information, which has
been corrected.
(merge a096a889f4 jk/cherry-pick-revert-status later to maint).
* A few places failed to differentiate the case where the index is
truly empty (nothing added) and we haven't yet read from the
on-disk index file, which have been corrected.
(merge 2ee045eea1 js/empty-index-fixes later to maint).
* "git bugreport" tests did not test what it wanted to test, which
has been corrected.
(merge 1aa92b8500 ma/t0091-fixup later to maint).
* Code snippets in a tutorial document no longer compiled after
recent header shuffling, which have been corrected.
(merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).
* "git ls-files '(attr:X)D/'" that triggers the common prefix
optimization codepath failed to read from "D/.gitattributes",
which has been corrected.
(merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).
* "git fsck --no-progress" still spewed noise from the commit-graph
subsystem, which has been corrected.
(merge 9281cd07f0 tb/fsck-no-progress later to maint).
* Various offset computation in the code that accesses the packfiles
and other data in the object layer has been hardened against
arithmetic overflow, especially on 32-bit systems.
(merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).
* Names of MinGW header files are spelled in mixed case in some
source files, but the build host can be using case sensitive
filesystem with header files with their name spelled in all
lowercase.
(merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).
* Update message mark-up for i18n in "git bundle".
(merge bbb6acd998 dk/bundle-i18n-more later to maint).
* "git tag --list --points-at X" showed tags that directly refers to
object X, but did not list a tag that points at such a tag, which
has been corrected.
* "./configure --with-expat=no" did not work as a way to refuse use
of the expat library on a system with the library installed, which
has been corrected.
(merge fb8f7269c2 ah/autoconf-fixes later to maint).
* When the user edits "rebase -i" todo file so that it starts with a
"fixup", which would make it invalid, the command truncated the
rest of the file before giving an error and returning the control
back to the user. Stop truncating to make it easier to correct
such a malformed todo file.
(merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).
* Rewrite the description of giving a custom command to the
submodule.<name>.update configuration variable.
(merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).
* Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
its traditional API, by using its EVP API instead.
(merge bda9c12073 ew/hash-with-openssl-evp later to maint).
* Exclude "." from the set of characters to be removed from the
beginning and the end of the human-readable name.
(merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).
* "git bisect visualize" stopped running "gitk" on Git for Windows
when the command was reimplemented in C around Git 2.34 timeframe.
This has been corrected.
(merge fff1594fa7 ma/locate-in-path-for-windows later to maint).
* "git rebase -i" with a series of squash/fixup, when one of the
steps stopped in conflicts and ended up getting skipped, did not
handle the accumulated commit log messages, which has been
corrected.
(merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 51f9d2e563 sa/doc-ls-remote later to maint).
(merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
(merge f7e063f326 ps/fetch-cleanups later to maint).
(merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
(merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
(merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
(merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
(merge aeee1408ce kh/use-default-notes-doc later to maint).
(merge 3b8724bce6 jc/test-modernization later to maint).
(merge 447a3b7331 jc/test-modernization-2 later to maint).
(merge d57fa7fc73 la/doc-interpret-trailers later to maint).
(merge 548afb0d9a la/docs-typofixes later to maint).
(merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
(merge 6c26da8404 mh/credential-erase-improvements later to maint).
(merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
(merge 80d32e84b5 rj/leakfixes later to maint).
(merge 0a868031ed pb/complete-diff-options later to maint).
(merge d4f28279ad jc/doc-hash-object-types later to maint).
(merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
(merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
(merge 3e81b896f7 rs/packet-length-simplify later to maint).
(merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
(merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
(merge 947ebd62a0 jc/am-parseopt-fix later to maint).
(merge e12cb98e1e jc/branch-parseopt-fix later to maint).
(merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
(merge a2dad4868b jc/transport-parseopt-fix later to maint).
(merge 68cbb20e73 jc/parse-options-show-branch later to maint).
(merge 3821eb6c3d jc/parse-options-reset later to maint).
(merge c48af99a3e bb/trace2-comment-fix later to maint).
(merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
(merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
(merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
(merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
(merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
(merge a5c01603b3 bc/ignore-clangd-cache later to maint).
----------------------------------------------------------------
Changes since v2.41.0 are as follows:
Adam Majer (1):
doc: sha256 is no longer experimental
Alejandro R. Sedeño (1):
statinfo.h: move DTYPE defines from dir.h
Alex Henrie (4):
wt-status: don't show divergence advice when committing
remote: don't imply that integration is always required before pushing
push: don't imply that integration is always required before pushing
sequencer: finish parsing the todo list despite an invalid first line
Andreas Herrmann (3):
configure.ac: don't overwrite NO_EXPAT option
configure.ac: don't overwrite NO_CURL option
configure.ac: always save NO_ICONV to config.status
Beat Bolli (2):
trace2: fix a comment
wrapper: use trace2 counters to collect fsync stats
Calvin Wan (13):
strbuf: clarify API boundary
strbuf: clarify dependency
abspath: move related functions to abspath
credential-store: move related functions to credential-store file
object-name: move related functions to object-name
path: move related function to path
strbuf: remove global variable
git-compat-util: move strbuf.c funcs to its header
git-compat-util: move wrapper.c funcs to its header
sane-ctype.h: create header for sane-ctype macros
kwset: move translation table from ctype
treewide: remove unnecessary includes for wrapper.h
git-compat-util: move alloc macros to git-compat-util.h
D. Ben Knoble (2):
i18n: mark more bundle.c strings for translation
t4002: fix "diff can read from stdin" syntax
Derrick Stolee (7):
add: check color.ui for interactive add
add: test use of brackets when color is disabled
repository: create disable_replace_refs()
replace-objects: create wrapper around setting
repository: create read_replace_refs setting
packfile: delete .idx files before .pack files
builtin/repack.c: only repack `.pack`s that exist
Elijah Newren (28):
init-db: document existing bug with core.bare in template config
init-db: remove unnecessary global variable
init-db, clone: change unnecessary global into passed parameter
setup: adopt shared init-db & clone code
read-cache: move shared commit and ls-files code
add: modify add_files_to_cache() to avoid globals
read-cache: move shared add/checkout/commit code
statinfo: move stat_{data,validity} functions from cache/read-cache
run-command.h: move declarations for run-command.c from cache.h
name-hash.h: move declarations for name-hash.c from cache.h
sparse-index.h: move declarations for sparse-index.c from cache.h
preload-index.h: move declarations for preload-index.c from elsewhere
diff.h: move declaration for global in diff.c from cache.h
merge.h: move declarations for merge.c from cache.h
repository.h: move declaration of the_index from cache.h
read-cache*.h: move declarations for read-cache.c functions from cache.h
cache.h: remove this no-longer-used header
log-tree: replace include of revision.h with simple forward declaration
repository: remove unnecessary include of path.h
diff.h: remove unnecessary include of oidset.h
list-objects-filter-options.h: remove unneccessary include
builtin.h: remove unneccessary includes
git-compat-util.h: remove unneccessary include of wildmatch.h
merge-ll: rename from ll-merge
khash: name the structs that khash declares
object-store-ll.h: split this header out of object-store.h
hash-ll, hashmap: move oidhash() to hash-ll
fsmonitor-ll.h: split this header out of fsmonitor.h
Eric Sunshine (1):
fsck: avoid misleading variable name
Eric Wong (5):
sha256/gcrypt: fix build with SANITIZE=leak
sha256/gcrypt: fix memory leak with SHA-256 repos
sha256/gcrypt: die on gcry_md_open failures
sha256: avoid functions deprecated in OpenSSL 3+
avoid SHA-1 functions deprecated in OpenSSL 3+
Glen Choo (16):
cocci: add headings to and reword README
cocci: codify authoring and reviewing practices
setup.c: don't setup in discover_git_directory()
config: don't BUG when both kvi and source are set
config: inline git_color_default_config
urlmatch.h: use config_fn_t type
config: add ctx arg to config_fn_t
config.c: pass ctx in configsets
config: pass ctx with config files
config.c: pass ctx with CLI config
trace2: plumb config kvi
config: pass kvi to die_bad_number()
config.c: remove config_reader from configsets
config: add kvi.path, use it to evaluate includes
config: pass source to config_parser_event_fn_t
mailmap: change primary address for Glen Choo
Han Young (1):
blame: allow --contents to work with bare repo
Jacob Abel (11):
worktree add: include -B in usage docs
t2400: cleanup created worktree in test
t2400: refactor "worktree add" opt exclusion tests
t2400: add tests to verify --quiet
worktree add: add --orphan flag
worktree add: introduce "try --orphan" hint
worktree add: extend DWIM to infer --orphan
worktree add: emit warn when there is a bad HEAD
t2400: drop no-op `--sq` from rev-parse call
builtin/worktree.c: convert tab in advice to space
t2400: rewrite regex to avoid unintentional PCRE
Jacob Keller (1):
fix cherry-pick/revert status when doing multiple commits
Jan Klötzke (1):
ref-filter: handle nested tags in --points-at option
Jeff King (36):
format-patch: free rev.message_id when exiting
format-patch: free elements of rev.ref_message_ids list
pathspec: factor out magic-to-name function
diff: factor out --follow pathspec check
diff: detect pathspec magic not supported by --follow
ci: use clang for ASan/UBSan checks
ci: run ASan/UBSan in a single job
ci: drop linux-clang job
commit: pass --no-divider to interpret-trailers
http: handle both "h2" and "h2h3" in curl info lines
var: mark unused parameters in git_var callbacks
imap-send: use server conf argument in setup_curl()
imap-send: drop unused parameter from imap_cmd_cb callback
imap-send: drop unused fields from imap_cmd_cb
refs.c: rename `ref_filter`
ref-filter.h: provide `REF_FILTER_INIT`
ref-filter: clear reachable list pointers after freeing
ref-filter: add `ref_filter_clear()`
ref-filter.c: parameterize match functions over patterns
test-ref-store: drop unimplemented reflog-expire command
do_for_each_ref_helper(): mark unused repository parameter
http: mark unused parameters in curl callbacks
http-push: mark unused parameter in xml callback
am: mark unused keep_cr parameters
count-objects: mark unused parameter in alternates callback
revisions: drop unused "opt" parameter in "tweak" callbacks
fsck: mark unused parameters in various fsck callbacks
merge-tree: mark unused parameter in traverse callback
replace: mark unused parameter in ref callback
replace: mark unused parameter in each_mergetag_fn callback
rev-parse: mark unused parameter in for_each_abbrev callback
tag: mark unused parameters in each_tag_name_fn callbacks
t/helper: mark unused callback void data parameters
ref-filter: avoid parsing tagged objects in match_points_at()
ref-filter: avoid parsing non-tags in match_points_at()
ref-filter: simplify return type of match_points_at
Johan Ruokangas (1):
gitignore.txt: use backticks instead of double quotes
Johannes Schindelin (3):
do_read_index(): always mark index as initialized unless erroring out
split-index: accept that a base index can be empty
commit -a -m: allow the top-level tree to become empty again
John Cai (34):
docs: clarify git-pack-refs --all will pack all refs
pack-refs: teach --exclude option to exclude refs from being packed
pack-refs: teach pack-refs --include option
t0000-basic: modernize test format
t0030-stripspace: modernize test format
t3210-pack-refs: modernize test format
t1001-read-tree-m-2way: modernize test format
t1002-read-tree-m-u-2way: modernize test format
t1006-cat-file: modernize test format
t3500-cherry: modernize test format
t3700-add: modernize test format
t3903-stash: modernize test format
t4002-diff-basic: modernize test format
t4003-diff-rename-1: modernize test format
t4004-diff-rename-symlink: modernize test format
t4202-log: modernize test format
t4206-log-follow-harder-copies: modernize test format
t5300-pack-object: modernize test format
t5301-sliding-window: modernize test format
t5303-pack-corruption-resilience: modernize test format
t5306-pack-nobase: modernize test format
t6050-replace: modernize test format
t7101-reset-empty-subdirs: modernize test format
t7110-reset-merge: modernize test format
t7111-reset-table: modernize test format
t7201-co: modernize test format
t7508-status: modernize test format
t7600-merge: modernize test format
t7700-repack: modernize test format
t9100-git-svn-basic: modernize test format
t9104-git-svn-follow-parent: modernize test format
t9200-git-cvsexportcommit: modernize test format
t9400-git-cvsserver-server: modernize test format
docs: add git hash-object -t option's possible values
Jonathan Tan (1):
CodingGuidelines: use octal escapes, not hex
Josip Sokcevic (1):
diff-lib: honor override_submodule_config flag bit
Junio C Hamano (46):
diff: fix interaction between the "-s" option and other options
show-branch doc: say <ref>, not <reference>
Start the 2.42 cycle
The second batch for 2.42
The third batch
ll-merge: killing the external merge driver aborts the merge
The fourth batch
t6406: skip "external merge driver getting killed by a signal" test on Windows
The fifth batch
The sixth batch
The seventh batch
The eighth batch
t6135: attr magic with path pattern
tree-walk: lose base_offset that is never used in tree_entry_interesting
tree-walk: drop unused base_offset from do_match()
The ninth batch
dir: match "attr" pathspec magic with correct paths
The tenth batch
The eleventh batch
The twelfth batch
gitignore.txt: mark up explanation of patterns consistently
am: simplify parsing of "--[no-]keep-cr"
branch: reject "--no-all" and "--no-remotes" early
parse-options: introduce OPT_IPVERSION()
fetch: reject --no-ipv[46]
show-branch: --no-sparse should give dense output
short help: allow multi-line opthelp
remote: simplify "remote add --tags" help text
short help: allow a gap smaller than USAGE_GAP
show-branch: reject --[no-](topo|date)-order
reset: reject --no-(mixed|soft|hard|merge|keep) option
The thirteenth batch
branch: update the message to refuse touching a branch in-use
hex: retire get_sha1_hex()
The fourteenth batch
SubmittingPatches: choice of base for fixing an older maintenance track
The fifteenth batch
SubmittingPatches: explain why 'next' and above are inappropriate base
SubmittingPatches: use of older maintenance tracks is an exception
The sixteenth batch
MyFirstContribution: refrain from self-iterating too much
The seventeenth batch
The eighteenth batch
Git 2.42-rc0
A few more topics before -rc1
Git 2.42-rc1
Kousik Sanagavarapu (5):
t/lib-gpg: introduce new prereq GPG2
ref-filter: add new "signature" atom
t4205: correctly test %(describe:abbrev=...)
ref-filter: add multiple-option parsing functions
ref-filter: add new "describe" atom
Kristoffer Haugsbakk (5):
doc: tag: document `TAG_EDITMSG`
t/t7004-tag: add regression test for successful tag creation
tag: keep the message file in case ref transaction fails
notes: update documentation for `use_default_notes`
notes: move the documentation to the struct
Linus Arver (15):
docs: typofixes
doc: trailer: fix grammar
doc: trailer: swap verb order
doc: trailer: drop "commit message part" phrasing
doc: trailer: examples: avoid the word "message" by itself
doc: trailer: remove redundant phrasing
doc: trailer: use angle brackets for <token> and <value>
doc: trailer.<token>.command: emphasize deprecation
doc: trailer: mention 'key' in DESCRIPTION
doc: trailer: add more examples in DESCRIPTION
SubmittingPatches: reword awkward phrasing
SubmittingPatches: discuss subsystems separately from git.git
SubmittingPatches: de-emphasize branches as starting points
SubmittingPatches: emphasize need to communicate non-default starting points
SubmittingPatches: simplify guidance for choosing a starting point
M Hickford (3):
credential: avoid erasing distinct password
credential: erase all matching credentials
doc: gitcredentials: link to helper list
Martin Ågren (1):
t0091-bugreport.sh: actually verify some content of report
Matthias Aßhauer (3):
run-command: conditionally define locate_in_PATH()
compat/mingw: implement a native locate_in_PATH()
docs: update when `git bisect visualize` uses `gitk`
Mike Hommey (2):
commit-reach: fix memory leak in get_reachable_subset()
mingw: use lowercase includes for some Windows headers
Patrick Steinhardt (17):
fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
fetch: drop unneeded NULL-check for `remote_ref`
fetch: pass through `fetch_config` directly
fetch: use `fetch_config` to store "fetch.prune" value
fetch: use `fetch_config` to store "fetch.pruneTags" value
fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
fetch: use `fetch_config` to store "fetch.parallel" value
fetch: use `fetch_config` to store "submodule.fetchJobs" value
t1006: don't strip timestamps from expected results
t1006: modernize test style to use `test_cmp`
strbuf: provide CRLF-aware helper to read until a specified delimiter
cat-file: simplify reading from standard input
cat-file: add option '-Z' that delimits input and output with NUL
revision: reorder `read_revisions_from_stdin()`
revision: small readability improvement for reading from stdin
revision: handle pseudo-opts in `--stdin` mode
Petar Vutov (1):
doc: highlight that .gitmodules does not support !command
Philippe Blain (30):
revisions.txt: use description list for special refs
revisions.txt: document more special refs
completion: complete REVERT_HEAD and BISECT_HEAD
git-merge.txt: modernize word choice in "True merge" section
Documentation: document AUTO_MERGE
completion: complete AUTO_MERGE
completion: add comments describing __git_diff_* globals
completion: complete --break-rewrites
completion: complete --cc
completion: complete --combined-all-paths
completion: complete --compact-summary
completion: complete --default-prefix
completion: complete --find-copies
completion: complete --find-object
completion: complete --find-renames
completion: complete --function-context
completion: complete --ignore-matching-lines
completion: complete --irreversible-delete
completion: complete --ita-invisible-in-index and --ita-visible-in-index
completion: complete --line-prefix
completion: complete --no-relative
completion: complete --no-stat
completion: complete --output
completion: complete --output-indicator-{context,new,old}
completion: complete --unified
completion: complete --ws-error-highlight
completion: move --pickaxe-{all,regex} to __git_diff_common_options
completion: complete --diff-merges, its options and --no-diff-merges
completion: complete --remerge-diff
diff.c: mention completion above add_diff_options
Phillip Wood (6):
apply: improve error messages when reading patch
diff --no-index: refuse to compare stdin to a directory
diff --no-index: die on error reading stdin
t4054: test diff --no-index with stdin
diff --no-index: support reading from named pipes
rebase --skip: fix commit message clean up when skipping squash
René Scharfe (19):
t1800: loosen matching of error message for bad shebang
run-command: report exec error even on ENOENT
ls-tree: fix documentation of %x format placeholder
pretty: factor out expand_separator()
strbuf: factor out strbuf_expand_step()
replace strbuf_expand_dict_cb() with strbuf_expand_step()
replace strbuf_expand() with strbuf_expand_step()
strbuf: simplify strbuf_expand_literal_cb()
ls-tree: simplify prefix handling
pretty: avoid double negative in format_commit_item()
pkt-line: add size parameter to packet_length()
pretty: use strchr(3) in userformat_find_requirements()
t6300: fix setup with GPGSSH but without GPG
strbuf: use skip_prefix() in strbuf_addftime()
ls-tree: fix --no-full-name
describe: fix --no-exact-match
pack-objects: fix --no-keep-true-parents
pack-objects: fix --no-quiet
bundle: use OPT_PASSTHRU_ARGV
Rubén Justo (11):
config: fix a leak in git_config_copy_or_rename_section_in_file
remote: fix a leak in query_matches_negative_refspec
branch: fix a leak in dwim_and_setup_tracking
branch: fix a leak in inherit_tracking
branch: fix a leak in check_tracking_branch
branch: fix a leak in setup_tracking
rev-parse: fix a leak with --abbrev-ref
branch: fix a leak in setup_tracking
branch: fix a leak in cmd_branch
config: fix a leak in git_config_copy_or_rename_section_in_file
tests: mark as passing with SANITIZE=leak
Sean Allred (5):
show-ref doc: update for internal consistency
ls-remote doc: remove redundant --tags example
ls-remote doc: show peeled tags in examples
ls-remote doc: explain what each example does
ls-remote doc: document the output format
Shuqi Liang (2):
diff-tree: integrate with sparse index
worktree: integrate with sparse-index
Taylor Blau (53):
object: add object_array initializer helper function
pack-bitmap.c: extract `fill_in_bitmap()`
pack-bitmap.c: use commit boundary during bitmap traversal
builtin/submodule--helper.c: handle missing submodule URLs
builtin/repack.c: only collect fully-formed packs
reachable.c: extract `obj_is_recent()`
gc: introduce `gc.recentObjectsHook`
pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
t7701: make annotated tag unreachable
fsck: suppress commit-graph output with `--no-progress`
fsck: suppress MIDX output with `--no-progress`
commit-graph.c: extract `verify_one_commit_graph()`
commit-graph.c: iteratively verify commit-graph chains
commit-graph.c: pass progress to `verify_one_commit_graph()`
commit-graph.c: avoid duplicated progress output during `verify`
builtin/for-each-ref.c: add `--exclude` option
refs: plumb `exclude_patterns` argument throughout
refs/packed-backend.c: refactor `find_reference_location()`
refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
refs/packed-backend.c: add trace2 counters for jump list
revision.h: store hidden refs in a `strvec`
refs.h: let `for_each_namespaced_ref()` take excluded patterns
refs.h: implement `hidden_refs_to_excludes()`
builtin/receive-pack.c: avoid enumerating hidden references
upload-pack.c: avoid enumerating hidden refs where possible
ls-refs.c: avoid enumerating hidden refs where possible
builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
packfile.c: prevent overflow in `nth_packed_object_id()`
packfile.c: prevent overflow in `load_idx()`
packfile.c: use checked arithmetic in `nth_packed_object_offset()`
midx.c: use `size_t`'s for fanout nr and alloc
midx.c: prevent overflow in `nth_midxed_object_oid()`
midx.c: prevent overflow in `nth_midxed_offset()`
midx.c: store `nr`, `alloc` variables as `size_t`'s
midx.c: prevent overflow in `write_midx_internal()`
midx.c: prevent overflow in `fill_included_packs_batch()`
pack-bitmap.c: ensure that eindex lookups don't overflow
commit-graph.c: prevent overflow in `write_commit_graph_file()`
commit-graph.c: prevent overflow in add_graph_to_chain()
commit-graph.c: prevent overflow in `load_oid_from_graph()`
commit-graph.c: prevent overflow in `fill_commit_graph_info()`
commit-graph.c: prevent overflow in `fill_commit_in_graph()`
commit-graph.c: prevent overflow in `load_tree_for_commit()`
commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
commit-graph.c: prevent overflow in `merge_commit_graph()`
commit-graph.c: prevent overflow in `write_commit_graph()`
commit-graph.c: prevent overflow in `verify_commit_graph()`
t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
t5318: avoid top-level directory changes
t5328: avoid top-level directory changes
t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
Documentation/RelNotes/2.42.0.txt: typofix
Teng Long (8):
surround %s with quotes when failed to lookup commit
notes.c: cleanup 'strbuf_grow' call in 'append_edit'
notes.c: use designated initializers for clarity
t3321: add test cases about the notes stripspace behavior
notes.c: introduce '--separator=<paragraph-break>' option
notes.c: append separator instead of insert by pos
notes.c: introduce "--[no-]stripspace" option
notes: introduce "--no-separator" option
Todd Zullinger (3):
trace2 tests: fix PTHREADS prereq
t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq
Victoria Dye (3):
config: use gitdir to get worktree config
config: pass 'repo' directly to 'config_with_options()'
repository: move 'repository_format_worktree_config' to repo scope
Vinayak Dev (1):
docs: add necessary headers to Documentation/MFOW.txt
ZheNing Hu (1):
ls-files: align format atoms with ls-tree
brian m. carlson (9):
t: add a function to check executable bit
var: add support for listing the shell
var: format variable structure with C99 initializers
var: adjust memory allocation for strings
attr: expose and rename accessor functions
var: add attributes files locations
var: add config file locations
ident: don't consider '.' a crud
gitignore: ignore clangd .cache directory
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.42.0-rc0
@ 2023-08-04 19:30 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-04 19:30 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.42.0-rc0 is now available for
testing at the usual places. It is comprised of 401 non-merge
commits since v2.41.0, contributed by 59 people, 13 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.42.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.41.0 are as follows.
Welcome to the Git development community!
Andreas Herrmann, Greg Alexander, Han Young, Jacob Abel, Jan
Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref, Josip Sokcevic,
Petar Vutov, Premek Vysoky, Tribo Dar, and Vinayak Dev.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
, Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian
m. carlson, Calvin Wan, Christian Couder, D. Ben Knoble, Derrick
Stolee, Elijah Newren, Eric Sunshine, Glen Choo, Hariom Verma,
Jacob Keller, Jaydeep Das, Jeff King, Johannes Schindelin,
John Cai, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kousik
Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Martin Ågren,
Matthew Hughes, M Hickford, Michael Haggerty, Mike Hommey,
Nsengiyumva Wilberforce, Patrick Steinhardt, Philippe Blain,
Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
Sean Allred, Shuqi Liang, SZEDER Gábor, Taylor Blau, Teng Long,
Todd Zullinger, Toon Claes, Torsten Bögershausen, Victoria Dye,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.42 Release Notes (draft)
===============================
UI, Workflows & Features
* "git pack-refs" learns "--include" and "--exclude" to tweak the ref
hierarchy to be packed using pattern matching.
* 'git worktree add' learned how to create a worktree based on an
orphaned branch with `--orphan`.
* "git pack-objects" learned to invoke a new hook program that
enumerates extra objects to be used as anchoring points to keep
otherwise unreachable objects in cruft packs.
* Add more "git var" for toolsmiths to learn various locations Git is
configured with either via the configuration or hardcoded defaults.
* 'git notes append' was taught '--separator' to specify string to insert
between paragraphs.
* The "git for-each-ref" family of commands learned placeholders
related to GPG signature verification.
* "git diff --no-index" learned to read from named pipes as if they
were regular files, to allow "git diff <(process) <(substitution)"
some shells support.
* Help newbies by suggesting that there are cases where force-pushing
is a valid and sensible thing to update a branch at a remote
repository, rather than reconciling with merge/rebase.
* "git blame --contents=file" has been taught to work in a bare
repository.
* "git branch -f X" to repoint the branch X said that X was "checked
out" in another worktree, even when branch X was not and instead
being bisected or rebased. The message was reworded to say the
branch was "in use".
Performance, Internal Implementation, Development Support etc.
* "git diff-tree" has been taught to take advantage of the
sparse-index feature.
* Clang's sanitizer implementation seems to work better than GCC's.
(merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
* The object traversal using reachability bitmap done by
"pack-object" has been tweaked to take advantage of the fact that
using "boundary" commits as representative of all the uninteresting
ones can save quite a lot of object enumeration.
* discover_git_directory() no longer touches the_repository.
* "git worktree" learned to work better with sparse index feature.
* When the external merge driver is killed by a signal, its output
should not be trusted as a resolution with conflicts that is
proposed by the driver, but the code did.
* The set-up code for the get_revision() API now allows feeding
options like --all and --not in the --stdin mode.
* Move functions that are not about pure string manipulation out of
strbuf.[ch]
* "imap-send" codepaths got cleaned up to get rid of unused
parameters.
* Enumerating refs in the packed-refs file, while excluding refs that
match certain patterns, has been optimized.
* Mark-up unused parameters in the code so that we can eventually
enable -Wunused-parameter by default.
* Instead of inventing a custom counter variables for debugging,
use existing trace2 facility in the fsync customization codepath.
* "git branch --list --format=<format>" and friends are taught
a new "%(describe)" placeholder.
* Clarify how to choose the starting point for a new topic in
developer guidance document.
* The implementation of "get_sha1_hex()" that reads a hexadecimal
string that spells a full object name has been extended to cope
with any hash function used in the repository, but the "sha1" in
its name survived. Rename it to get_hash_hex(), a name that is
more consistent within its friends like get_hash_hex_algop().
* Command line parser fix, and a small parse-options API update.
Fixes since v2.41
-----------------
* "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
command failed, so that the user can salvage what they typed.
(merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).
* The "-s" (silent, squelch) option of the "diff" family of commands
did not interact with other options that specify the output format
well. This has been cleaned up so that it will clear all the
formatting options given before.
(merge 9d484b92ed jc/diff-s-with-other-options later to maint).
* Update documentation regarding Coccinelle patches.
(merge 3bd0097cfc gc/doc-cocci-updates later to maint).
* Some atoms that can be used in "--format=<format>" for "git ls-tree"
were not supported by "git ls-files", even though they were relevant
in the context of the latter.
(merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
* Document more pseudo-refs and teach the command line completion
machinery to complete AUTO_MERGE.
(merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
* "git submodule" code trusted the data coming from the config (and
the in-tree .gitmodules file) too much without validating, leading
to NULL dereference if the user mucks with a repository (e.g.
submodule.<name>.url is removed). This has been corrected.
(merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
* The value of config.worktree is per-repository, but has been kept
in a singleton global variable per process. This has been OK as
most Git operations interacted with a single repository at a time,
but not right for operations like recursive "grep" that want to
access multiple repositories from a single process without forking.
The global variable has been eliminated and made into a member in
the per-repository data structure.
(merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
* "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
(merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
* Introduce a mechanism to disable replace refs globally and per
repository.
(merge 9c7d1b057f ds/disable-replace-refs later to maint).
* "git cat-file --batch" and friends learned "-Z" that uses NUL
delimiter for both input and output.
(merge f79e18849b ps/cat-file-null-output later to maint).
* The reimplemented "git add -i" did not honor color.ui configuration.
(merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
* Compilation fix for platforms without D_TYPE in struct dirent.
(merge 03bf92b9bf as/dtype-compilation-fix later to maint).
* Suggest to refrain from using hex literals that are non-portable
when writing printf(1) format strings.
(merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
* Simplify error message when run-command fails to start a command.
(merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
* Gracefully deal with a stale MIDX file that lists a packfile that
no longer exists.
(merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
* Even when diff.ignoreSubmodules tells us to ignore submodule
changes, "git commit" with an index that already records changes to
submodules should include the submodule changes in the resulting
commit, but it did not.
(merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
* When "git commit --trailer=..." invokes the interpret-trailers
machinery, it knows what it feeds to interpret-trailers is a full
log message without any patch, but failed to express that by
passing the "--no-divider" option, which has been corrected.
(merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).
* Avoid breakage of "git pack-objects --cruft" due to inconsistency
between the way the code enumerates packfiles in the repository.
(merge 73320e49ad tb/collect-pack-filenames-fix later to maint).
* We create .pack and then .idx, we consider only packfiles that have
.idx usable (those with only .pack are not ready yet), so we should
remove .idx before removing .pack for consistency.
(merge 0dd1324a73 ds/remove-idx-before-pack later to maint).
* Partially revert a sanity check that the rest of the config code
was not ready, to avoid triggering it in a corner case.
(merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).
* "git apply" punts when it is fed too large a patch input; the error
message it gives when it happens has been clarified.
(merge 42612e18d2 pw/apply-too-large later to maint).
* During a cherry-pick or revert session that works on multiple
commits, "git status" did not give correct information, which has
been corrected.
(merge a096a889f4 jk/cherry-pick-revert-status later to maint).
* A few places failed to differentiate the case where the index is
truly empty (nothing added) and we haven't yet read from the
on-disk index file, which have been corrected.
(merge 2ee045eea1 js/empty-index-fixes later to maint).
* "git bugreport" tests did not test what it wanted to test, which
has been corrected.
(merge 1aa92b8500 ma/t0091-fixup later to maint).
* Code snippets in a tutorial document no longer compiled after
recent header shuffling, which have been corrected.
(merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).
* "git ls-files '(attr:X)D/'" that triggers the common prefix
optimization codepath failed to read from "D/.gitattributes",
which has been corrected.
(merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).
* "git fsck --no-progress" still spewed noise from the commit-graph
subsystem, which has been corrected.
(merge 9281cd07f0 tb/fsck-no-progress later to maint).
* Various offset computation in the code that accesses the packfiles
and other data in the object layer has been hardened against
arithmetic overflow, especially on 32-bit systems.
(merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).
* Names of MinGW header files are spelled in mixed case in some
source files, but the build host can be using case sensitive
filesystem with header files with their name spelled in all
lowercase.
(merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).
* Update message mark-up for i18n in "git bundle".
(merge bbb6acd998 dk/bundle-i18n-more later to maint).
* "git tag --list --points-at X" showed tags that directly refers to
object X, but did not list a tag that points at such a tag, which
has been corrected.
* "./configure --with-expat=no" did not work as a way to refuse use
of the expat library on a system with the library installed, which
has been corrected.
(merge fb8f7269c2 ah/autoconf-fixes later to maint).
* When the user edits "rebase -i" todo file so that it starts with a
"fixup", which would make it invalid, the command truncated the
rest of the file before giving an error and returning the control
back to the user. Stop truncating to make it easier to correct
such a malformed todo file.
(merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).
* Rewrite the description of giving a custom command to the
submodule.<name>.update configuration variable.
(merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 51f9d2e563 sa/doc-ls-remote later to maint).
(merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
(merge f7e063f326 ps/fetch-cleanups later to maint).
(merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
(merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
(merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
(merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
(merge aeee1408ce kh/use-default-notes-doc later to maint).
(merge 3b8724bce6 jc/test-modernization later to maint).
(merge 447a3b7331 jc/test-modernization-2 later to maint).
(merge d57fa7fc73 la/doc-interpret-trailers later to maint).
(merge 548afb0d9a la/docs-typofixes later to maint).
(merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
(merge 6c26da8404 mh/credential-erase-improvements later to maint).
(merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
(merge 80d32e84b5 rj/leakfixes later to maint).
(merge 0a868031ed pb/complete-diff-options later to maint).
(merge d4f28279ad jc/doc-hash-object-types later to maint).
(merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
(merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
(merge 3e81b896f7 rs/packet-length-simplify later to maint).
(merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
(merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
(merge 947ebd62a0 jc/am-parseopt-fix later to maint).
(merge e12cb98e1e jc/branch-parseopt-fix later to maint).
(merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
(merge a2dad4868b jc/transport-parseopt-fix later to maint).
(merge 68cbb20e73 jc/parse-options-show-branch later to maint).
(merge 3821eb6c3d jc/parse-options-reset later to maint).
(merge c48af99a3e bb/trace2-comment-fix later to maint).
(merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
(merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
(merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
----------------------------------------------------------------
Changes since v2.41.0 are as follows:
Alejandro R. Sedeño (1):
statinfo.h: move DTYPE defines from dir.h
Alex Henrie (4):
wt-status: don't show divergence advice when committing
remote: don't imply that integration is always required before pushing
push: don't imply that integration is always required before pushing
sequencer: finish parsing the todo list despite an invalid first line
Andreas Herrmann (3):
configure.ac: don't overwrite NO_EXPAT option
configure.ac: don't overwrite NO_CURL option
configure.ac: always save NO_ICONV to config.status
Beat Bolli (2):
trace2: fix a comment
wrapper: use trace2 counters to collect fsync stats
Calvin Wan (13):
strbuf: clarify API boundary
strbuf: clarify dependency
abspath: move related functions to abspath
credential-store: move related functions to credential-store file
object-name: move related functions to object-name
path: move related function to path
strbuf: remove global variable
git-compat-util: move strbuf.c funcs to its header
git-compat-util: move wrapper.c funcs to its header
sane-ctype.h: create header for sane-ctype macros
kwset: move translation table from ctype
treewide: remove unnecessary includes for wrapper.h
git-compat-util: move alloc macros to git-compat-util.h
D. Ben Knoble (2):
i18n: mark more bundle.c strings for translation
t4002: fix "diff can read from stdin" syntax
Derrick Stolee (7):
add: check color.ui for interactive add
add: test use of brackets when color is disabled
repository: create disable_replace_refs()
replace-objects: create wrapper around setting
repository: create read_replace_refs setting
packfile: delete .idx files before .pack files
builtin/repack.c: only repack `.pack`s that exist
Elijah Newren (28):
init-db: document existing bug with core.bare in template config
init-db: remove unnecessary global variable
init-db, clone: change unnecessary global into passed parameter
setup: adopt shared init-db & clone code
read-cache: move shared commit and ls-files code
add: modify add_files_to_cache() to avoid globals
read-cache: move shared add/checkout/commit code
statinfo: move stat_{data,validity} functions from cache/read-cache
run-command.h: move declarations for run-command.c from cache.h
name-hash.h: move declarations for name-hash.c from cache.h
sparse-index.h: move declarations for sparse-index.c from cache.h
preload-index.h: move declarations for preload-index.c from elsewhere
diff.h: move declaration for global in diff.c from cache.h
merge.h: move declarations for merge.c from cache.h
repository.h: move declaration of the_index from cache.h
read-cache*.h: move declarations for read-cache.c functions from cache.h
cache.h: remove this no-longer-used header
log-tree: replace include of revision.h with simple forward declaration
repository: remove unnecessary include of path.h
diff.h: remove unnecessary include of oidset.h
list-objects-filter-options.h: remove unneccessary include
builtin.h: remove unneccessary includes
git-compat-util.h: remove unneccessary include of wildmatch.h
merge-ll: rename from ll-merge
khash: name the structs that khash declares
object-store-ll.h: split this header out of object-store.h
hash-ll, hashmap: move oidhash() to hash-ll
fsmonitor-ll.h: split this header out of fsmonitor.h
Eric Sunshine (1):
fsck: avoid misleading variable name
Glen Choo (15):
cocci: add headings to and reword README
cocci: codify authoring and reviewing practices
setup.c: don't setup in discover_git_directory()
config: don't BUG when both kvi and source are set
config: inline git_color_default_config
urlmatch.h: use config_fn_t type
config: add ctx arg to config_fn_t
config.c: pass ctx in configsets
config: pass ctx with config files
config.c: pass ctx with CLI config
trace2: plumb config kvi
config: pass kvi to die_bad_number()
config.c: remove config_reader from configsets
config: add kvi.path, use it to evaluate includes
config: pass source to config_parser_event_fn_t
Han Young (1):
blame: allow --contents to work with bare repo
Jacob Abel (11):
worktree add: include -B in usage docs
t2400: cleanup created worktree in test
t2400: refactor "worktree add" opt exclusion tests
t2400: add tests to verify --quiet
worktree add: add --orphan flag
worktree add: introduce "try --orphan" hint
worktree add: extend DWIM to infer --orphan
worktree add: emit warn when there is a bad HEAD
t2400: drop no-op `--sq` from rev-parse call
builtin/worktree.c: convert tab in advice to space
t2400: rewrite regex to avoid unintentional PCRE
Jacob Keller (1):
fix cherry-pick/revert status when doing multiple commits
Jan Klötzke (1):
ref-filter: handle nested tags in --points-at option
Jeff King (36):
format-patch: free rev.message_id when exiting
format-patch: free elements of rev.ref_message_ids list
pathspec: factor out magic-to-name function
diff: factor out --follow pathspec check
diff: detect pathspec magic not supported by --follow
ci: use clang for ASan/UBSan checks
ci: run ASan/UBSan in a single job
ci: drop linux-clang job
commit: pass --no-divider to interpret-trailers
http: handle both "h2" and "h2h3" in curl info lines
var: mark unused parameters in git_var callbacks
imap-send: use server conf argument in setup_curl()
imap-send: drop unused parameter from imap_cmd_cb callback
imap-send: drop unused fields from imap_cmd_cb
refs.c: rename `ref_filter`
ref-filter.h: provide `REF_FILTER_INIT`
ref-filter: clear reachable list pointers after freeing
ref-filter: add `ref_filter_clear()`
ref-filter.c: parameterize match functions over patterns
test-ref-store: drop unimplemented reflog-expire command
do_for_each_ref_helper(): mark unused repository parameter
http: mark unused parameters in curl callbacks
http-push: mark unused parameter in xml callback
am: mark unused keep_cr parameters
count-objects: mark unused parameter in alternates callback
revisions: drop unused "opt" parameter in "tweak" callbacks
fsck: mark unused parameters in various fsck callbacks
merge-tree: mark unused parameter in traverse callback
replace: mark unused parameter in ref callback
replace: mark unused parameter in each_mergetag_fn callback
rev-parse: mark unused parameter in for_each_abbrev callback
tag: mark unused parameters in each_tag_name_fn callbacks
t/helper: mark unused callback void data parameters
ref-filter: avoid parsing tagged objects in match_points_at()
ref-filter: avoid parsing non-tags in match_points_at()
ref-filter: simplify return type of match_points_at
Johan Ruokangas (1):
gitignore.txt: use backticks instead of double quotes
Johannes Schindelin (3):
do_read_index(): always mark index as initialized unless erroring out
split-index: accept that a base index can be empty
commit -a -m: allow the top-level tree to become empty again
John Cai (34):
docs: clarify git-pack-refs --all will pack all refs
pack-refs: teach --exclude option to exclude refs from being packed
pack-refs: teach pack-refs --include option
t0000-basic: modernize test format
t0030-stripspace: modernize test format
t3210-pack-refs: modernize test format
t1001-read-tree-m-2way: modernize test format
t1002-read-tree-m-u-2way: modernize test format
t1006-cat-file: modernize test format
t3500-cherry: modernize test format
t3700-add: modernize test format
t3903-stash: modernize test format
t4002-diff-basic: modernize test format
t4003-diff-rename-1: modernize test format
t4004-diff-rename-symlink: modernize test format
t4202-log: modernize test format
t4206-log-follow-harder-copies: modernize test format
t5300-pack-object: modernize test format
t5301-sliding-window: modernize test format
t5303-pack-corruption-resilience: modernize test format
t5306-pack-nobase: modernize test format
t6050-replace: modernize test format
t7101-reset-empty-subdirs: modernize test format
t7110-reset-merge: modernize test format
t7111-reset-table: modernize test format
t7201-co: modernize test format
t7508-status: modernize test format
t7600-merge: modernize test format
t7700-repack: modernize test format
t9100-git-svn-basic: modernize test format
t9104-git-svn-follow-parent: modernize test format
t9200-git-cvsexportcommit: modernize test format
t9400-git-cvsserver-server: modernize test format
docs: add git hash-object -t option's possible values
Jonathan Tan (1):
CodingGuidelines: use octal escapes, not hex
Josip Sokcevic (1):
diff-lib: honor override_submodule_config flag bit
Junio C Hamano (44):
diff: fix interaction between the "-s" option and other options
show-branch doc: say <ref>, not <reference>
Start the 2.42 cycle
The second batch for 2.42
The third batch
ll-merge: killing the external merge driver aborts the merge
The fourth batch
t6406: skip "external merge driver getting killed by a signal" test on Windows
The fifth batch
The sixth batch
The seventh batch
The eighth batch
t6135: attr magic with path pattern
tree-walk: lose base_offset that is never used in tree_entry_interesting
tree-walk: drop unused base_offset from do_match()
The ninth batch
dir: match "attr" pathspec magic with correct paths
The tenth batch
The eleventh batch
The twelfth batch
gitignore.txt: mark up explanation of patterns consistently
am: simplify parsing of "--[no-]keep-cr"
branch: reject "--no-all" and "--no-remotes" early
parse-options: introduce OPT_IPVERSION()
fetch: reject --no-ipv[46]
show-branch: --no-sparse should give dense output
short help: allow multi-line opthelp
remote: simplify "remote add --tags" help text
short help: allow a gap smaller than USAGE_GAP
show-branch: reject --[no-](topo|date)-order
reset: reject --no-(mixed|soft|hard|merge|keep) option
The thirteenth batch
branch: update the message to refuse touching a branch in-use
hex: retire get_sha1_hex()
The fourteenth batch
SubmittingPatches: choice of base for fixing an older maintenance track
The fifteenth batch
SubmittingPatches: explain why 'next' and above are inappropriate base
SubmittingPatches: use of older maintenance tracks is an exception
The sixteenth batch
MyFirstContribution: refrain from self-iterating too much
The seventeenth batch
The eighteenth batch
Git 2.42-rc0
Kousik Sanagavarapu (5):
t/lib-gpg: introduce new prereq GPG2
ref-filter: add new "signature" atom
t4205: correctly test %(describe:abbrev=...)
ref-filter: add multiple-option parsing functions
ref-filter: add new "describe" atom
Kristoffer Haugsbakk (5):
doc: tag: document `TAG_EDITMSG`
t/t7004-tag: add regression test for successful tag creation
tag: keep the message file in case ref transaction fails
notes: update documentation for `use_default_notes`
notes: move the documentation to the struct
Linus Arver (15):
docs: typofixes
doc: trailer: fix grammar
doc: trailer: swap verb order
doc: trailer: drop "commit message part" phrasing
doc: trailer: examples: avoid the word "message" by itself
doc: trailer: remove redundant phrasing
doc: trailer: use angle brackets for <token> and <value>
doc: trailer.<token>.command: emphasize deprecation
doc: trailer: mention 'key' in DESCRIPTION
doc: trailer: add more examples in DESCRIPTION
SubmittingPatches: reword awkward phrasing
SubmittingPatches: discuss subsystems separately from git.git
SubmittingPatches: de-emphasize branches as starting points
SubmittingPatches: emphasize need to communicate non-default starting points
SubmittingPatches: simplify guidance for choosing a starting point
M Hickford (3):
credential: avoid erasing distinct password
credential: erase all matching credentials
doc: gitcredentials: link to helper list
Martin Ågren (1):
t0091-bugreport.sh: actually verify some content of report
Mike Hommey (2):
commit-reach: fix memory leak in get_reachable_subset()
mingw: use lowercase includes for some Windows headers
Patrick Steinhardt (17):
fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
fetch: drop unneeded NULL-check for `remote_ref`
fetch: pass through `fetch_config` directly
fetch: use `fetch_config` to store "fetch.prune" value
fetch: use `fetch_config` to store "fetch.pruneTags" value
fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
fetch: use `fetch_config` to store "fetch.parallel" value
fetch: use `fetch_config` to store "submodule.fetchJobs" value
t1006: don't strip timestamps from expected results
t1006: modernize test style to use `test_cmp`
strbuf: provide CRLF-aware helper to read until a specified delimiter
cat-file: simplify reading from standard input
cat-file: add option '-Z' that delimits input and output with NUL
revision: reorder `read_revisions_from_stdin()`
revision: small readability improvement for reading from stdin
revision: handle pseudo-opts in `--stdin` mode
Petar Vutov (1):
doc: highlight that .gitmodules does not support !command
Philippe Blain (30):
revisions.txt: use description list for special refs
revisions.txt: document more special refs
completion: complete REVERT_HEAD and BISECT_HEAD
git-merge.txt: modernize word choice in "True merge" section
Documentation: document AUTO_MERGE
completion: complete AUTO_MERGE
completion: add comments describing __git_diff_* globals
completion: complete --break-rewrites
completion: complete --cc
completion: complete --combined-all-paths
completion: complete --compact-summary
completion: complete --default-prefix
completion: complete --find-copies
completion: complete --find-object
completion: complete --find-renames
completion: complete --function-context
completion: complete --ignore-matching-lines
completion: complete --irreversible-delete
completion: complete --ita-invisible-in-index and --ita-visible-in-index
completion: complete --line-prefix
completion: complete --no-relative
completion: complete --no-stat
completion: complete --output
completion: complete --output-indicator-{context,new,old}
completion: complete --unified
completion: complete --ws-error-highlight
completion: move --pickaxe-{all,regex} to __git_diff_common_options
completion: complete --diff-merges, its options and --no-diff-merges
completion: complete --remerge-diff
diff.c: mention completion above add_diff_options
Phillip Wood (5):
apply: improve error messages when reading patch
diff --no-index: refuse to compare stdin to a directory
diff --no-index: die on error reading stdin
t4054: test diff --no-index with stdin
diff --no-index: support reading from named pipes
René Scharfe (18):
t1800: loosen matching of error message for bad shebang
run-command: report exec error even on ENOENT
ls-tree: fix documentation of %x format placeholder
pretty: factor out expand_separator()
strbuf: factor out strbuf_expand_step()
replace strbuf_expand_dict_cb() with strbuf_expand_step()
replace strbuf_expand() with strbuf_expand_step()
strbuf: simplify strbuf_expand_literal_cb()
ls-tree: simplify prefix handling
pretty: avoid double negative in format_commit_item()
pkt-line: add size parameter to packet_length()
pretty: use strchr(3) in userformat_find_requirements()
t6300: fix setup with GPGSSH but without GPG
strbuf: use skip_prefix() in strbuf_addftime()
ls-tree: fix --no-full-name
describe: fix --no-exact-match
pack-objects: fix --no-keep-true-parents
pack-objects: fix --no-quiet
Rubén Justo (11):
config: fix a leak in git_config_copy_or_rename_section_in_file
remote: fix a leak in query_matches_negative_refspec
branch: fix a leak in dwim_and_setup_tracking
branch: fix a leak in inherit_tracking
branch: fix a leak in check_tracking_branch
branch: fix a leak in setup_tracking
rev-parse: fix a leak with --abbrev-ref
branch: fix a leak in setup_tracking
branch: fix a leak in cmd_branch
config: fix a leak in git_config_copy_or_rename_section_in_file
tests: mark as passing with SANITIZE=leak
Sean Allred (5):
show-ref doc: update for internal consistency
ls-remote doc: remove redundant --tags example
ls-remote doc: show peeled tags in examples
ls-remote doc: explain what each example does
ls-remote doc: document the output format
Shuqi Liang (2):
diff-tree: integrate with sparse index
worktree: integrate with sparse-index
Taylor Blau (48):
object: add object_array initializer helper function
pack-bitmap.c: extract `fill_in_bitmap()`
pack-bitmap.c: use commit boundary during bitmap traversal
builtin/submodule--helper.c: handle missing submodule URLs
builtin/repack.c: only collect fully-formed packs
reachable.c: extract `obj_is_recent()`
gc: introduce `gc.recentObjectsHook`
pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
t7701: make annotated tag unreachable
fsck: suppress commit-graph output with `--no-progress`
fsck: suppress MIDX output with `--no-progress`
commit-graph.c: extract `verify_one_commit_graph()`
commit-graph.c: iteratively verify commit-graph chains
commit-graph.c: pass progress to `verify_one_commit_graph()`
commit-graph.c: avoid duplicated progress output during `verify`
builtin/for-each-ref.c: add `--exclude` option
refs: plumb `exclude_patterns` argument throughout
refs/packed-backend.c: refactor `find_reference_location()`
refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
refs/packed-backend.c: add trace2 counters for jump list
revision.h: store hidden refs in a `strvec`
refs.h: let `for_each_namespaced_ref()` take excluded patterns
refs.h: implement `hidden_refs_to_excludes()`
builtin/receive-pack.c: avoid enumerating hidden references
upload-pack.c: avoid enumerating hidden refs where possible
ls-refs.c: avoid enumerating hidden refs where possible
builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
packfile.c: prevent overflow in `nth_packed_object_id()`
packfile.c: prevent overflow in `load_idx()`
packfile.c: use checked arithmetic in `nth_packed_object_offset()`
midx.c: use `size_t`'s for fanout nr and alloc
midx.c: prevent overflow in `nth_midxed_object_oid()`
midx.c: prevent overflow in `nth_midxed_offset()`
midx.c: store `nr`, `alloc` variables as `size_t`'s
midx.c: prevent overflow in `write_midx_internal()`
midx.c: prevent overflow in `fill_included_packs_batch()`
pack-bitmap.c: ensure that eindex lookups don't overflow
commit-graph.c: prevent overflow in `write_commit_graph_file()`
commit-graph.c: prevent overflow in add_graph_to_chain()
commit-graph.c: prevent overflow in `load_oid_from_graph()`
commit-graph.c: prevent overflow in `fill_commit_graph_info()`
commit-graph.c: prevent overflow in `fill_commit_in_graph()`
commit-graph.c: prevent overflow in `load_tree_for_commit()`
commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
commit-graph.c: prevent overflow in `merge_commit_graph()`
commit-graph.c: prevent overflow in `write_commit_graph()`
commit-graph.c: prevent overflow in `verify_commit_graph()`
Documentation/RelNotes/2.42.0.txt: typofix
Teng Long (8):
surround %s with quotes when failed to lookup commit
notes.c: cleanup 'strbuf_grow' call in 'append_edit'
notes.c: use designated initializers for clarity
t3321: add test cases about the notes stripspace behavior
notes.c: introduce '--separator=<paragraph-break>' option
notes.c: append separator instead of insert by pos
notes.c: introduce "--[no-]stripspace" option
notes: introduce "--no-separator" option
Todd Zullinger (3):
trace2 tests: fix PTHREADS prereq
t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq
Victoria Dye (3):
config: use gitdir to get worktree config
config: pass 'repo' directly to 'config_with_options()'
repository: move 'repository_format_worktree_config' to repo scope
Vinayak Dev (1):
docs: add necessary headers to Documentation/MFOW.txt
ZheNing Hu (1):
ls-files: align format atoms with ls-tree
brian m. carlson (7):
t: add a function to check executable bit
var: add support for listing the shell
var: format variable structure with C99 initializers
var: adjust memory allocation for strings
attr: expose and rename accessor functions
var: add attributes files locations
var: add config file locations
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.41.0
@ 2023-06-01 10:11 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-06-01 10:11 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.41.0 is now available at the
usual places. It is comprised of 542 non-merge commits since
v2.40.0, contributed by 95 people, 29 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.41.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.40.0 are as follows.
Welcome to the Git development community!
Adam Johnson, André Baptista, Andy Koppe, Arkadii Yakovets,
Benjamin Jorand, Clement Mabileau, Corentin Garcia, Cristian Le,
Daniel Watson, D. Ben Knoble, Douglas Anderson, Edwin Kofler,
Jonas Haag, Jouke Witteveen, Kate Golovanova, Matthias Görgens,
Maxim Cournoyer, Michael Henry, Michael Strawbridge, Nico Rieck,
Peter Dave Hello, Raghul Nanth A, Rolf Eike Beer, Shuqi Liang,
Siddharth Singh, Stanislav Malishevskiy, Stephane Odul, Vítor
Pinho, and Xin Xing.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Andreas Schwab, Andrei Rybak, Bagas Sanjaya, Beat Bolli, brian
m. carlson, Christian Hesse, Daniel Santos, Derrick Stolee,
Elijah Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Eric
Wong, Fangyi Zhou, Felipe Contreras, Glen Choo, Han Xin, Jacob
Keller, Jean-Noël Avila, Jeff King, Jiang Xin, Joakim Petersen,
Johannes Schindelin, Johannes Sixt, John Cai, John Keeping,
Jordi Mas, Josh Soref, Junio C Hamano, Kristoffer Haugsbakk,
Linus Arver, Linus Torvalds, Martin Ågren, Mathias Krause,
Matthew John Cheetham, Matthias Rüster, M Hickford, Michael
J Gruber, Mike Hommey, Oswald Buddenhagen, Øystein Walle,
Patrick Steinhardt, Paul Eggert, Peter Krefting, Philippe Blain,
Phillip Wood, Ralf Thielow, Randall S. Becker, René Scharfe,
Robin Jarry, Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor,
Tao Klerks, Taylor Blau, Teng Long, Todd Zullinger, Torsten
Bögershausen, William Sprent, Yi-Jyun Pan, ZheNing Hu,
and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.41 Release Notes
=======================
UI, Workflows & Features
* Allow information carried on the WWW-Authenticate header to be
passed to the credential helpers.
* A new "fetch.hideRefs" option can be used to exclude specified refs
from "rev-list --objects --stdin --not --all" traversal for
checking object connectivity, most useful when there are many
unrelated histories in a single repository.
* "git push" has been taught to allow deletion of refs with one-level
names to help repairing a repository who acquired such a ref by
mistake. In general, we don't encourage use of such a ref, and
creation or update to such a ref is rejected as before.
* Allow "git bisect reset" to check out the original branch when the
branch is already checked out in a different worktree linked to the
same repository.
* A few subcommands have been taught to stop users from working on a
branch that is being used in another worktree linked to the same
repository.
* "git format-patch" learned to write a log-message only output file
for empty commits.
* "git format-patch" honors the src/dst prefixes set to nonstandard
values with configuration variables like "diff.noprefix", causing
receiving end of the patch that expects the standard -p1 format to
break. "format-patch" has been taught to ignore end-user configuration
and always use the standard prefixes.
This is a backward compatibility breaking change.
* Lift the limitation that colored prompts can only be used with
PROMPT_COMMAND mode.
* "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
but now it finds the origins of lines starting at <file> contents
through the history that leads to <rev>.
* "git pack-redundant" gave a warning when run, as the command has
outlived its usefulness long ago and is nominated for future
removal. Now we escalate to give an error.
* "git clone" from an empty repository learned to propagate the
choice of the hash algorithm from the source repository to the
newly created repository over any one of the v0/v1/v2 protocol.
* "git mergetool" and "git difftool" learns a new configuration
guiDefault to optionally favor configured guitool over non-gui-tool
automatically when $DISPLAY is set.
* "git branch -d origin/master" would say "no such branch", but it is
likely a missed "-r" if refs/remotes/origin/master exists. The
command has been taught to give such a hint in its error message.
* Clean-up of the code path that deals with merge strategy option
handling in "git rebase".
* "git clone --local" stops copying from an original repository that
has symbolic links inside its $GIT_DIR; an error message when that
happens has been updated.
* The "--format=..." option of "git for-each-ref", "git branch", and
"git tag" commands learn "--omit-empty" to hide refs whose
formatting results in an empty string from the output.
* The sendemail-validate validate hook learned to pass the total
number of input files and where in the sequence each invocation is
via environment variables.
* When "gc" needs to retain unreachable objects, packing them into
cruft packs (instead of exploding them into loose object files) has
been offered as a more efficient option for some time. Now the use
of cruft packs has been made the default and no longer considered
an experimental feature.
* The output given by "git blame" that attributes a line to contents
taken from the file specified by the "--contents" option shows it
differently from a line attributed to the working tree file.
* "git send-email" learned to give the e-mail headers to the validate
hook by passing an extra argument from the command line.
* The credential subsystem learns to help OAuth framework.
* The titles of manual pages used to be chomped at an unreasonably
short limit, which has been removed.
* Error messages given when working on an unborn branch that is
checked out in another worktree have been improved.
* The documentation was misleading about the interaction between
GIT_DEFAULT_HASH and "git clone", which has been clarified to
stress that the variable is to be ignored by the command.
* "git send-email" learned "--header-cmd=<cmd>" that can inject
arbitrary e-mail header lines to the outgoing messages.
* "git fsck" learned to detect bit-flip breakages in the reachability
bitmap files.
* The "--stdin" option of "git name-rev" has been replaced with
the "--annotate-stdin" option more than a year ago. We stop
advertising it in the "git name-rev -h" output.
* "git push --all" gained an alias "git push --branches".
* "git fetch" learned the "--porcelain" option that emits what it did
in a machine-parseable format.
* "git --attr-source=<tree> cmd $args" is a new way to have any
command to read attributes not from the working tree but from the
given tree object.
Performance, Internal Implementation, Development Support etc.
* Code clean-up to clarify directory traversal API.
* Code clean-up to clarify the rule that "git-compat-util.h" must be
the first to be included.
* More work towards -Wunused.
* Instead of forcing each command to choose to honor GPG related
configuration variables, make the subsystem lazily initialize
itself.
* Remove workaround for ancient versions of DocBook to make it work
correctly with groff, which has not been necessary since docbook
1.76 from 2010.
* Code clean-up to include and/or uninclude parse-options.h file as
needed.
* The code path that reports what "git fetch" did to each ref has
been cleaned up.
* Assorted config API updates.
* A few configuration variables to tell the cURL library that
different types of ssl-cert and ssl-key are in use have been added.
* Split key function and data structure definitions out of cache.h to
new header files and adjust the users.
* "git fetch --all" does not have to download and handle the same
bundleURI over and over, which has been corrected.
* "git sparse-checkout" command learns a debugging aid for the sparse
rule definitions.
* "git write-tree" learns to work better with sparse-index.
* The on-disk reverse index that allows mapping from the pack offset
to the object name for the object stored at the offset has been
enabled by default.
* "git fsck" learned to validate the on-disk pack reverse index files.
* strtok() and strtok_r() are banned in this codebase.
* The detect-compilers script to help auto-tweaking the build system
had trouble working with compilers whose version number has extra
suffixes. The script has been taught that certain suffixes (like
"-win32" in "gcc 10-win32") can be safely stripped as they share
the same features and bugs with the version without the suffix.
* ctype tests have been taught to test EOF, too.
* The implementation of credential helpers used fgets() over fixed
size buffers to read protocol messages, causing the remainder of
the folded long line to trigger unexpected behaviour, which has
been corrected.
* The implementation of the default "negotiator", used to find common
ancestor over the network for object tranfer, used to be recursive;
it was updated to be iterative to conserve stackspace usage.
* Our custom callout formatter is no longer used in the documentation
formatting toolchain, as the upstream default ones give better
output these days.
* The tracing mechanism learned to notice and report when
auto-discovered bare repositories are being used, as allowing so
without explicitly stating the user intends to do so (with setting
GIT_DIR for example) can be used with social engineering as an
attack vector.
* "git diff-files" learned not to expand sparse-index unless needed.
Fixes since v2.40
-----------------
* "git fsck" learned to check the index files in other worktrees,
just like "git gc" honors them as anchoring points.
(merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).
* Fix a segfaulting loop. The function and its caller may need
further clean-up.
(merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).
* "git restore" supports options like "--ours" that are only
meaningful during a conflicted merge, but these options are only
meaningful when updating the working tree files. These options are
marked to be incompatible when both "--staged" and "--worktree" are
in effect.
(merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).
* Simplify UI to control progress meter given by "git bundle" command.
(merge 8b95521edb jk/bundle-progress later to maint).
* "git bundle" learned that "-" is a common way to say that the input
comes from the standard input and/or the output goes to the
standard output. It used to work only for output and only from the
root level of the working tree.
(merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).
* Once we start running, we assumed that the list of alternate object
databases would never change. Hook into the machinery used to
update the list of packfiles during runtime to update this list as
well.
(merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).
* The code to parse "git rebase -X<opt>" was not prepared to see an
unparsable option string, which has been corrected.
(merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).
* "git add -p" while the index is unmerged sometimes failed to parse
the diff output it internally produces and died, which has been
corrected.
(merge 28d1122f9c jk/add-p-unmerged-fix later to maint).
* Fix for a "ls-files --format="%(path)" that produced nonsense
output, which was a bug in 2.38.
(merge cfb62dd006 aj/ls-files-format-fix later to maint).
* "git receive-pack" that responds to "git push" requests failed to
clean a stale lockfile when killed in the middle, which has been
corrected.
(merge c55c30669c ps/receive-pack-unlock-before-die later to maint).
* "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
parsed with GET_OID_QUIETLY option, did not quietly fail, which has
been corrected.
(merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).
* Transports that do not support protocol v2 did not correctly fall
back to protocol v0 under certain conditions, which has been
corrected.
(merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).
* time(2) on glib 2.31+, especially on Linux, goes out of sync with
higher resolution timers used for gettimeofday(2) and by the
filesystem. Replace all calls to it with a git_time() wrapper and
(merge 370ddcbc89 pe/time-use-gettimeofday later to maint).
* Code clean-up to use designated initializers in parse-options API.
(merge 353e6d4554 sg/parse-options-h-initializers later to maint).
* A recent-ish change to allow unicode character classes to be used
with "grep -P" triggered a JIT bug in older pcre2 libraries.
The problematic change in Git built with these older libraries has
been disabled to work around the bug.
(merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).
* The wildmatch library code unlearns exponential behaviour it
acquired some time ago since it was borrowed from rsync.
(merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).
* The index files can become corrupt under certain conditions when
the split-index feature is in use, especially together with
fsmonitor, which have been corrected.
(merge 061dd722dc js/split-index-fixes later to maint).
* Document what the pathname-looking strings in "rev-list --object"
output are for and what they mean.
(merge 15364d2a3c jk/document-rev-list-object-name later to maint).
* Fix unnecessary truncation of generation numbers used in-core.
(merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).
* Code clean-up around the use of the_repository.
(merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).
* Consistently spell "Message-ID" as such, not "Message-Id".
(merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).
* Correct use of an uninitialized structure member.
(merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).
* Tests had a few places where we ignored PERL_PATH and blindly used
/usr/bin/perl, which have been corrected.
(merge c1917156a0 jk/use-perl-path-consistently later to maint).
* Documentation mark-up fix.
(merge 78b6369e67 la/mfc-markup-fix later to maint).
* Doc toolchain update to remove old workaround for AsciiDoc.
(merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).
* The userdiff regexp patterns for various filetypes that are built
into the system have been updated to avoid triggering regexp errors
from UTF-8 aware regex engines.
(merge be39144954 rs/userdiff-multibyte-regex later to maint).
* The approxidate() API has been simplified by losing an extra
function that did the same thing as another one.
(merge 8a7f0b666f rs/remove-approxidate-relative later to maint).
* Code clean-up to replace a hardcoded constant with a CPP macro.
(merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).
* Doc build simplification.
(merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).
* "git archive" run from a subdirectory mishandled attributes and
paths outside the current directory.
(merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).
* The code to parse capability list for v0 on-wire protocol fell into
an infinite loop when a capability appears multiple times, which
has been corrected.
* Geometric repacking ("git repack --geometric=<n>") in a repository
that borrows from an alternate object database had various corner
case bugs, which have been corrected.
(merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).
* The "%GT" placeholder for the "--format" option of "git log" and
friends caused BUG() to trigger on a commit signed with an unknown
key, which has been corrected.
(merge 7891e46585 jk/gpg-trust-level-fix later to maint).
* The completion script used to use bare "read" without the "-r"
option to read the contents of various state files, which risked
getting confused with backslashes in them. This has been
corrected.
(merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).
* A small API fix to the ort merge strategy backend.
(merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).
* The commit object parser has been taught to be a bit more lenient
to parse timestamps on the author/committer line with a malformed
author/committer ident.
(merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).
* Retitle a test script with an overly narrow name.
(merge 8bb19c14fb ob/t3501-retitle later to maint).
* Doc update to clarify how text and eol attributes interact to
specify the end-of-line conversion.
(merge 6696077ace ah/doc-attributes-text later to maint).
* Gitk updates from GfW project.
(merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).
* "git diff --dirstat" leaked memory, which has been plugged.
(merge 83973981eb jc/dirstat-plug-leaks later to maint).
* "git merge-tree" reads the basic configuration, which can be used
by git forges to disable replace-refs feature.
(merge b6551feadf ds/merge-tree-use-config later to maint).
* A few bugs in the sequencer machinery that results in miscounting
the steps have been corrected.
(merge 170eea9750 js/rebase-count-fixes later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f7111175df as/doc-markup-fix later to maint).
(merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
(merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
(merge b10cbdac4c bb/unicode-width-table-15 later to maint).
(merge 3457b50e8c ab/retire-scripted-add-p later to maint).
(merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
(merge ec063d2591 ss/hashmap-typofix later to maint).
(merge 1aaed69d11 rs/archive-mtime later to maint).
(merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
(merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
(merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
(merge cc48ddd937 jk/chainlint-fixes later to maint).
(merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
(merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
(merge fd72637423 ar/t2024-checkout-output-fix later to maint).
(merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
(merge b734fe49fd ob/messages-capitalize-exception later to maint).
(merge ad353d7e77 ma/gittutorial-fixes later to maint).
(merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
(merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
(merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
(merge 3d77fbb664 ar/config-count-tests-updates later to maint).
(merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).
----------------------------------------------------------------
Changes since v2.40.0 are as follows:
Adam Johnson (1):
ls-files: fix "--format" output of relative paths
Alex Henrie (5):
rebase: add documentation and test for --no-rebase-merges
rebase: deprecate --rebase-merges=""
rebase: add a config option for --rebase-merges
format-patch: correct documentation of --thread without an argument
docs: rewrite the documentation of the text and eol attributes
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5515t)
Andreas Schwab (1):
git-merge-tree.txt: replace spurious HTML entity
Andrei Rybak (19):
t1005: assert output of ls-files
t1006: assert error output of cat-file
t1010: don't create unused files
t1302: don't create unused file
t1400: assert output of update-ref
t1404: don't create unused file
t1507: assert output of rev-parse
t3060: fix mention of function prune_index
t2107: fix mention of the_index.cache_changed
t2024: fix loose/strict local base branch DWIM test
t1300: drop duplicate test
t1300: check stderr for "ignores pairs" tests
t1300: add tests for missing keys
t0300: don't create unused file
t1300: fix config file syntax error descriptions
t1300: don't create unused files
t1450: don't create unused files
t1502: don't create unused files
t2019: don't create unused files
Andy Koppe (1):
restore: fault --staged --worktree with merge opts
Arkadii Yakovets (3):
l10n: uk: add initial translation
l10n: uk: remove stale lines
l10n: update uk localization
Bagas Sanjaya (1):
l10n: po-id for 2.41 (round 1)
Beat Bolli (1):
unicode: update the width tables to Unicode 15
Benjamin Jorand (1):
l10n: fr: fix translation of stash save help
Christian Hesse (1):
imap-send: include strbuf.h
Clement Mabileau (1):
branch: improve error log on branch not found by checking remotes refs
Corentin Garcia (1):
doc/git-config: add unit for http.lowSpeedLimit
Daniel Santos (1):
l10n: TEAMS: Update pt_PT repo link
Daniel Watson (1):
SubmittingPatches: clarify MUA discussion with "the"
Derrick Stolee (19):
object-file: reprepare alternates when necessary
for-each-ref: add --stdin option
for-each-ref: explicitly test no matches
commit-graph: refactor compute_topological_levels()
commit-graph: simplify compute_generation_numbers()
commit-graph: return generation from memory
commit-reach: implement ahead_behind() logic
for-each-ref: add ahead-behind format atom
commit-reach: add tips_reachable_from_bases()
p2000: remove stray '--sparse' flag from test
fetch: download bundles once, even with --all
ci: update 'static-analysis' to Ubuntu 22.04
fsck: create scaffolding for rev-index checks
fsck: check rev-index checksums
fsck: check rev-index position values
fsck: validate .rev file header
fsck: verify checksums of all .bitmap files
fsck: use local repository
merge-tree: load default git config
Edwin Kofler (1):
completion: suppress unwanted unescaping of `read`
Elijah Newren (94):
treewide: ensure one of the appropriate headers is sourced first
treewide: remove unnecessary git-compat-util.h includes in headers
treewide: remove unnecessary cache.h includes
treewide: remove unnecessary cache.h includes in source files
alloc.h: move ALLOC_GROW() functions from cache.h
hash.h: move some oid-related declarations from cache.h
hex.h: move some hex-related declarations from cache.h
cache.h: remove dependence on hex.h; make other files include it explicitly
pretty.h: move has_non_ascii() declaration from commit.h
ident.h: move ident-related declarations out of cache.h
object.h: stop depending on cache.h; make cache.h depend on object.h
dir.h: refactor to no longer need to include cache.h
object-store.h: move struct object_info from cache.h
replace-object.h: move read_replace_refs declaration from cache.h to here
treewide: replace cache.h with more direct headers, where possible
Remove unnecessary includes of builtin.h
diff.h: remove unnecessary include of object.h
t2021: fix platform-specific leftover cruft
unpack-trees: heed requests to overwrite ignored files
dir: separate public from internal portion of dir_struct
dir: add a usage note to exclude_per_dir
dir: mark output only fields of dir_struct as such
unpack-trees: clean up some flow control
sparse-checkout: avoid using internal API of unpack-trees
sparse-checkout: avoid using internal API of unpack-trees, take 2
unpack_trees: start splitting internal fields from public API
unpack-trees: mark fields only used internally as internal
unpack-trees: rewrap a few overlong lines from previous patch
unpack-trees: special case read-tree debugging as internal usage
unpack-trees: add usage notices around df_conflict_entry
treewide: remove unnecessary cache.h inclusion from a few headers
treewide: be explicit about dependence on gettext.h
treewide: remove unnecessary inclusion of gettext.h
treewide: remove unnecessary cache.h inclusion from several sources
environment: move comment_line_char from cache.h
abspath.h: move absolute path functions from cache.h
cache.h: remove expand_user_path()
path.h: move function declarations for path.c functions from cache.h
wrapper.h: move declarations for wrapper.c functions from cache.h
treewide: remove unnecessary includes of cache.h
environment.h: move declarations for environment.c functions from cache.h
treewide: remove cache.h inclusion due to environment.h changes
setup.h: move declarations for setup.c functions from cache.h
treewide: remove cache.h inclusion due to setup.h changes
write-or-die.h: move declarations for write-or-die.c functions from cache.h
csum-file.h: remove unnecessary inclusion of cache.h
treewide: be explicit about dependence on trace.h & trace2.h
treewide: be explicit about dependence on advice.h
treewide: be explicit about dependence on convert.h
treewide: be explicit about dependence on pack-revindex.h
treewide: be explicit about dependence on oid-array.h
treewide: be explicit about dependence on mem-pool.h
treewide: remove unnecessary cache.h inclusion
object-name.h: move declarations for object-name.c functions from cache.h
treewide: remove cache.h inclusion due to object-name.h changes
git-zlib: move declarations for git-zlib functions from cache.h
treewide: remove cache.h inclusion due to git-zlib changes
object-file.h: move declarations for object-file.c functions from cache.h
treewide: remove cache.h inclusion due to object-file.h changes
object.h: move some inline functions and defines from cache.h
treewide: remove cache.h inclusion due to object.h changes
editor: move editor-related functions and declarations into common file
treewide: remove cache.h inclusion due to editor.h changes
pager.h: move declarations for pager.c functions from cache.h
treewide: remove cache.h inclusion due to pager.h changes
cache.h: remove unnecessary includes
treewide: remove double forward declaration of read_in_full
treewide: reduce includes of cache.h in other headers
mailmap, quote: move declarations of global vars to correct unit
protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
treewide: be explicit about dependence on strbuf.h
symlinks.h: move declarations for symlinks.c functions from cache.h
packfile.h: move pack_window and pack_entry from cache.h
server-info.h: move declarations for server-info.c functions from cache.h
copy.h: move declarations for copy.c functions from cache.h
base85.h: move declarations for base85.c functions from cache.h
pkt-line.h: move declarations for pkt-line.c functions from cache.h
match-trees.h: move declarations for match-trees.c functions from cache.h
ws.h: move declarations for ws.c functions from cache.h
versioncmp.h: move declarations for versioncmp.c functions from cache.h
dir.h: move DTYPE defines from cache.h
tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
hash-ll.h: split out of hash.h to remove dependency on repository.h
cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
cache,tree: move basic name compare functions from read-cache to tree
treewide: remove cache.h inclusion due to previous changes
cache.h: remove unnecessary headers
fsmonitor: reduce includes of cache.h
commit.h: reduce unnecessary includes
object-store.h: reduce unnecessary includes
diff.h: reduce unnecessary includes
reftable: ensure git-compat-util.h is the first (indirect) include
merge-ort: fix calling merge_finalize() with no intermediate merge
t5583: fix shebang line
Emily Shaffer (1):
mailmap: change primary address for Emily Shaffer
Emir SARI (1):
l10n: tr: Update Turkish translations for 2.41.0
Eric Sunshine (1):
tests: diagnose unclosed here-doc in chainlint.pl
Eric Wong (3):
commit-reach: avoid NULL dereference
fetch: support hideRefs to speed up connectivity checks
fetch: pass --no-write-fetch-head to subprocesses
Fangyi Zhou (1):
rebase: fix capitalisation autoSquash in i18n string
Felipe Contreras (16):
advice: add diverging advice for novices
test: simplify counts aggregation
test: don't print aggregate-results command
object-name: fix quiet @{u} parsing
completion: prompt: use generic colors
doc: remove GNU troff workaround
doc: remove manpage-base-url workaround
doc: asciidoc: remove custom header macro
doc: simplify man version
doc: set actual revdate for manpages
doc: git-checkout: trivial callout cleanup
doc: git-checkout: reorganize examples
doc: remove custom callouts format
doc: manpage: remove maximum title length
doc: doc-diff: specify date
test: rev-parse-upstream: add missing cmp
Glen Choo (10):
config.c: plumb config_source through static fns
config.c: don't assign to "cf_global" directly
config.c: create config_reader and the_reader
config.c: plumb the_reader through callbacks
config.c: remove current_config_kvi
config.c: remove current_parsing_scope
config: report cached filenames in die_bad_number()
config.c: rename "struct config_source cf"
clone: error specifically with --local and symlinked objects
setup: trace bare repository setups
Han Xin (2):
negotiator/default: avoid stack overflow
negotiator/skipping: fix some problems in mark_common()
Jacob Keller (2):
blame: allow --contents to work with non-HEAD commit
blame: use different author name for fake commit generated by --contents
Jean-Noël Avila (2):
l10n: fr.po v2.41.0 rnd1
l10n: fr.po v2.41.0 rnd2
Jeff King (90):
ref-filter: drop unused atom parameter from get_worktree_path()
ls-refs: drop config caching
serve: use repository pointer to get config
serve: mark unused parameters in virtual functions
object-name: mark unused parameters in disambiguate callbacks
http-backend: mark argc/argv unused
http-backend: mark unused parameters in virtual functions
ref-filter: mark unused callback parameters
mark "pointless" data pointers in callbacks
run-command: mark error routine parameters as unused
mark unused parameters in signal handlers
list-objects: mark unused callback parameters
for_each_object: mark unused callback parameters
prio-queue: mark unused parameters in comparison functions
notes: mark unused callback parameters
fetch-pack: mark unused parameter in callback function
rewrite_parents(): mark unused callback parameter
for_each_commit_graft(): mark unused callback parameter
userformat_want_item(): mark unused parameter
run_processes_parallel: mark unused callback parameters
help: mark unused parameter in git_unknown_cmd_config()
fsck: factor out index fsck
fsck: check index files in all worktrees
fsck: mention file path for index errors
fsck: check even zero-entry index files
drop pure pass-through config callbacks
bundle: turn on --all-progress-implied by default
bundle: let "-" mean stdin for reading operations
bundle: document handling of "-" as stdin
parse-options: consistently allocate memory in fix_filename()
parse-options: use prefix_filename_except_for_dash() helper
diff: factor out src/dst prefix setup
t4013: add tests for diff prefix options
diff: add --default-prefix option
format-patch: do not respect diff.noprefix
format-patch: add format.noprefix option
add-patch: handle "* Unmerged path" lines
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
range-diff: drop useless "offset" variable from read_patches()
http: support CURLOPT_PROTOCOLS_STR
range-diff: handle unterminated lines in read_patches()
range-diff: use ssize_t for parsed "len" in read_patches()
rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
mailmap: drop debugging code
http: drop unused parameter from start_object_request()
http: mark unused parameter in fill_active_slot() callbacks
transport: mark unused parameters in fetch_refs_from_bundle()
git_connect(): fix corner cases in downgrading v2 to v0
fast-export: drop const when storing anonymized values
fast-export: simplify initialization of anonymized hashmaps
fast-export: factor out anonymized_entry creation
fast-export: de-obfuscate --anonymize-map handling
fast-export: drop data parameter from anonymous generators
fast-export: drop unused parameter from anonymize_commit_message()
Makefile: force -O0 when compiling with SANITIZE=leak
pack-redundant: escalate deprecation warning to an error
docs: document caveats of rev-list's object-name output
fast-import: fix file access when run from subdir
builtins: always pass prefix to parse_options()
builtins: annotate always-empty prefix parameters
builtins: mark unused prefix parameters
mark "argv" as unused when we check argc
t/helper: mark unused argv/argc arguments
parse-options: drop parse_opt_unknown_cb()
pack-redundant: document deprecation
tests: run internal chain-linter under "make test"
tests: replace chainlint subshell with a function
tests: drop here-doc check from internal chain-linter
tests: skip test_eval_ in internal chain-lint
t/lib-httpd: pass PERL_PATH to CGI scripts
v0 protocol: fix infinite loop when parsing multi-valued capabilities
t5512: stop referring to "v1" protocol
v0 protocol: fix sha1/sha256 confusion for capabilities^{}
t5512: add v2 support for "ls-remote --symref" test
t5512: allow any protocol version for filtered symref test
t5512: test "ls-remote --heads --symref" filtering with v0 and v2
v0 protocol: use size_t for capability length/offset
gpg-interface: set trust level of missing key to "undefined"
notes: clean up confusing NULL checks in init_notes()
fetch_bundle_uri(): drop pointless NULL check
t4212: avoid putting git on left-hand side of pipe
parse_commit(): parse timestamp from end of line
parse_commit(): handle broken whitespace-only timestamp
parse_commit(): describe more date-parsing failure modes
doc-diff: drop SOURCE_DATE_EPOCH override
t7001: avoid git on upstream of pipe
t7001: use "ls-files --format" instead of "cut"
t: drop "verbose" helper function
t/lib-httpd: make CGIPassAuth support conditional
Jiang Xin (5):
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
object-info: init request_info before reading arg
Johannes Schindelin (31):
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
t0033: GETTEXT_POISON fix
t0003: GETTEXT_POISON fix, part 1
t0003: GETTEXT_POISON fix, conclusion
t5619: GETTEXT_POISON fix
t5604: GETTEXT_POISON fix, part 1
t5604: GETTEXT_POISON fix, conclusion
clone.c: avoid "exceeds maximum object size" error with GCC v12.x
split-index & fsmonitor: demonstrate a bug
split-index; stop abusing the `base_oid` to strip the "link" extension
fsmonitor: avoid overriding `cache_changed` bits
unpack-trees: take care to propagate the split-index flag
t3701: we don't need no Perl for `add -i` anymore
t5563: prevent "ambiguous redirect"
apply --reject: overwrite existing `.rej` symlink if it exists
gettext: avoid using gettext if the locale dir is not present
tests: avoid using `test_i18ncmp`
Git 2.31.8
Git 2.32.7
Git 2.33.8
Git 2.34.8
Git 2.35.8
Git 2.36.6
Git 2.37.7
Git 2.38.5
Git 2.39.3
Git 2.40.1
gitk: prevent overly long command lines
rebase --update-refs: fix loops
rebase -r: fix the total number shown in the progress
John Cai (2):
name-rev: make --stdin hidden
attr: teach "--attr-source=<tree>" global option to "git"
John Keeping (1):
format-patch: output header for empty commits
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Soref (1):
subtree: support long global flags
Jouke Witteveen (1):
send-email docs: Remove mention of discontinued gmail feature
Junio C Hamano (39):
gpg-interface: lazily initialize and read the configuration
bundle: don't blindly apply prefix_filename() to "-"
Start the 2.41 cycle
The second batch
am: refer to format-patch in the documentation
The third batch
http.c: clear the 'finished' member once we are done with it
The fourth batch
The fifth batch
The sixth batch
e-mail workflow: Message-ID is spelled with ID in both capital letters
The seventh batch
clone: propagate object-format when cloning from void
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
The fourteenth batch
The fifteenth batch
The sixteenth batch
diff: refactor common tail part of dirstat computation
diff: plug leaks in dirstat
t9800: correct misuse of 'show -s --raw' in a test
The seventeenth batch
The eighteenth batch
Git 2.41-rc0
tests: do not negate test_path_exists
t2021: do not negate test_path_is_dir
test: do not negate test_path_is_* to assert absense
A bit more before -rc1
send-email: clear the $message_id after validation
t9001: mark the script as no longer leak checker clean
Git 2.41-rc1
A few more topics after 2.41-rc1
Git 2.41-rc2
Git 2.41
Kristoffer Haugsbakk (5):
config: tell the user that we expect an ASCII character
doc: interpret-trailers: don’t use heredoc in examples
doc: interpret-trailers: use input redirection
doc: interpret-trailers: don’t use deprecated config
doc: interpret-trailers: fix example
Linus Arver (1):
MyFirstContribution: render literal *
M Hickford (3):
credential/wincred: include wincred.h
credential/wincred: store password_expiry_utc
credential: new attribute oauth_refresh_token
Martin Ågren (2):
gittutorial: drop early mention of origin
gittutorial: wrap literal examples in backticks
Mathias Krause (1):
grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34
Matthew John Cheetham (3):
t5563: add tests for basic and anoymous HTTP access
http: read HTTP WWW-Authenticate response headers
credential: add WWW-Authenticate header to cred requests
Maxim Cournoyer (3):
send-email: extract execute_cmd from recipients_cmd
send-email: add --header-cmd, --no-header-cmd options
send-email: detect empty blank lines in command output
Michael J Gruber (1):
t3070: make chain lint tester happy
Michael Strawbridge (2):
send-email: refactor header generation functions
send-email: expose header information to git-send-email's sendemail-validate hook
Mike Hommey (1):
Handle some compiler versions containing a dash
Nico Rieck (1):
gitk: escape file paths before piping to git log
Oswald Buddenhagen (5):
sequencer: remove pointless rollback_lock_file()
sequencer: rewrite save_head() in terms of write_message()
sequencer: actually translate report in do_exec()
messages: capitalization and punctuation exceptions
t/t3501-revert-cherry-pick.sh: clarify scope of the file
Patrick Steinhardt (27):
receive-pack: fix stale packfile locks when dying
fetch: move reference width calculation into `display_state`
fetch: move output format into `display_state`
fetch: pass the full local reference name to `format_display`
fetch: centralize handling of per-reference format
fetch: centralize logic to print remote URL
fetch: centralize printing of reference updates
commit-graph: fix truncated generation numbers
midx: fix segfault with no packs and invalid preferred pack
repack: fix trying to use preferred pack in alternates
repack: fix generating multi-pack-index with only non-local packs
pack-objects: split out `--stdin-packs` tests into separate file
pack-objects: fix error when packing same pack twice
pack-objects: fix error when same packfile is included and excluded
pack-objects: extend test coverage of `--stdin-packs` with alternates
t/helper: allow chmtime to print verbosely without modifying mtime
repack: honor `-l` when calculating pack geometry
repack: disable writing bitmaps when doing a local repack
fetch: fix `--no-recurse-submodules` with multi-remote fetches
fetch: split out tests for output format
fetch: add a test to exercise invalid output formats
fetch: print left-hand side when fetching HEAD:foo
fetch: refactor calculation of the display table width
fetch: introduce `display_format` enum
fetch: lift up parsing of "fetch.output" config variable
fetch: move option related variables into main function
fetch: introduce machine-parseable "porcelain" output format
Paul Eggert (1):
git-compat-util: use gettimeofday(2) for time(2)
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5515t0f0u)
Phillip Wood (8):
wildmatch: fix exponential behavior
wildmatch: avoid undefined behavior
wildmatch: hide internal return values
rebase: stop reading and writing unnecessary strategy state
sequencer: use struct strvec to store merge strategy options
rebase -m: cleanup --strategy-option handling
rebase -m: fix serialization of strategy options
rebase: remove a couple of redundant strategy tests
Raghul Nanth A (1):
describe: enable sparse index for describe
Ralf Thielow (1):
l10n: Update German translation
René Scharfe (6):
archive: improve support for running in subdirectory
t5000: use check_mtime()
userdiff: support regexec(3) with multi-byte support
date: remove approxidate_relative()
get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
test-ctype: check EOF
Robin Jarry (1):
send-email: export patch counters in validate environment
Rubén Justo (10):
bisect: fix "reset" when branch is checked out elsewhere
worktree: introduce is_shared_symref()
branch: fix die_if_checked_out() when ignore_current_worktree
rebase: refuse to switch to a branch already checked out elsewhere (test)
switch: reject if the branch is already checked out elsewhere (test)
branch: test for failures while renaming branches
branch: use get_worktrees() in copy_or_rename_branch()
branch: description for orphan branch errors
branch: rename orphan branches in any worktree
branch: avoid unnecessary worktrees traversals
SZEDER Gábor (6):
treewide: include parse-options.h in source files
treewide: remove unnecessary inclusions of parse-options.h from headers
parse-options.h: use consistent name for the callback parameters
parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
parse-options.h: use designated initializers in OPT_* macros
cocci: remove 'unused.cocci'
Shuqi Liang (4):
write-tree: integrate with sparse index
t1092: update a write-tree test
t1092: add tests for `git diff-files`
diff-files: integrate with sparse index
Siddharth Singh (1):
hashmap.h: fix minor typo
Sohom Datta (1):
docs: clarify git rm --cached function in gitignore note
Stanislav Malishevskiy (1):
http: add support for different sslcert and sslkey types.
Tao Klerks (1):
mergetool: new config guiDefault supports auto-toggling gui by DISPLAY
Taylor Blau (37):
commit-graph: introduce `ensure_generations_valid()`
pack-write.c: plug a leak in stage_tmp_packfiles()
t5325: mark as leak-free
pack-revindex: make `load_pack_revindex` take a repository
pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
pack-revindex: introduce `pack.readReverseIndex`
config: enable `pack.writeReverseIndex` by default
t: invert `GIT_TEST_WRITE_REV_INDEX`
t1300: demonstrate failure when renaming sections with long lines
config: avoid fixed-sized buffer when renaming/deleting a section
config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
Git 2.30.9
pack-write.c: plug a leak in stage_tmp_packfiles()
builtin/repack.c: fix incorrect reference to '-C'
builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
t/t5304-prune.sh: prepare for `gc --cruft` by default
t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
t/t6500-gc.sh: refactor cruft pack tests
t/t6500-gc.sh: add additional test cases
t/t9300-fast-import.sh: prepare for `gc --cruft` by default
builtin/gc.c: make `gc.cruftPacks` enabled by default
repository.h: drop unused `gc_cruft_packs`
string-list: multi-delimiter `string_list_split_in_place()`
string-list: introduce `string_list_setlen()`
t/helper/test-hashmap.c: avoid using `strtok()`
t/helper/test-oidmap.c: avoid using `strtok()`
t/helper/test-json-writer.c: avoid using `strtok()`
banned.h: mark `strtok()` and `strtok_r()` as banned
credential.c: store "wwwauth[]" values in `credential_read()`
t/lib-credential.sh: ensure credential helpers handle long headers
contrib/credential: avoid fixed-size buffer in osxkeychain
contrib/credential: remove 'gnome-keyring' credential helper
contrib/credential: .gitignore libsecret build artifacts
contrib/credential: avoid fixed-size buffer in libsecret
contrib/credential: embiggen fixed-size buffer in wincred
run-command.c: fix missing include under `NO_PTHREADS`
Teng Long (2):
push: introduce '--branches' option
l10n: zh_CN: Git 2.41.0 round #1
William Sprent (2):
builtin/sparse-checkout: remove NEED_WORK_TREE flag
builtin/sparse-checkout: add check-rules command
Yi-Jyun Pan (1):
l10n: zh_TW.po: Git 2.41.0
ZheNing Hu (2):
receive-pack: fix funny ref error messsage
push: allow delete single-level ref
brian m. carlson (1):
upload-pack: advertise capabilities when cloning empty repos
Ævar Arnfjörð Bjarmason (33):
auto-crlf tests: don't lose exit code in loops and outside tests
t/lib-patch-mode.sh: fix ignored exit codes
tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
tests: don't lose "git" exit codes in "! ( git ... | grep )"
tests: don't lose exit status with "test <op> $(git ...)"
tests: don't lose misc "git" exit codes
sequencer.c: fix overflow & segfault in parse_strategy_opts()
cocci: remove dead rule from "the_repository.pending.cocci"
cocci: fix incorrect & verbose "the_repository" rules
cocci: sort "the_repository" rules by header
cocci: add missing "the_repository" macros to "pending"
cocci: apply the "cache.h" part of "the_repository.pending"
cocci: apply the "commit-reach.h" part of "the_repository.pending"
cocci: apply the "commit.h" part of "the_repository.pending"
cocci: apply the "diff.h" part of "the_repository.pending"
cocci: apply the "object-store.h" part of "the_repository.pending"
cocci: apply the "pretty.h" part of "the_repository.pending"
cocci: apply the "packfile.h" part of "the_repository.pending"
cocci: apply the "promisor-remote.h" part of "the_repository.pending"
cocci: apply the "refs.h" part of "the_repository.pending"
cocci: apply the "rerere.h" part of "the_repository.pending"
cocci: apply the "revision.h" part of "the_repository.pending"
post-cocci: adjust comments for recent repo_* migration
libs: use "struct repository *" argument, not "the_repository"
config tests: cover blind spots in git_die_config() tests
config tests: add "NULL" tests for *_get_value_multi()
config API: add and use a "git_config_get()" family of functions
versioncmp.c: refactor config reading next commit
config API: have *_multi() return an "int" and take a "dest"
for-each-repo: error on bad --config
config API users: test for *_get_value_multi() segfaults
config API: add "string" version of *_value_multi(), fix segfaults
for-each-repo: with bad config, don't conflate <path> and <cmd>
Øystein Walle (2):
ref-filter: remove unused ref_format member
branch, for-each-ref, tag: add option to omit empty lines
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.41.0-rc2
@ 2023-05-24 21:41 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-05-24 21:41 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.41.0-rc2 is now available for testing at
the usual places. It is comprised of 525 non-merge commits since
v2.40.0, contributed by 80 people, 25 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.41.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.40.0 are as follows.
Welcome to the Git development community!
Adam Johnson, André Baptista, Andy Koppe, Clement Mabileau,
Corentin Garcia, Cristian Le, Daniel Watson, D. Ben Knoble,
Douglas Anderson, Edwin Kofler, Jonas Haag, Jouke Witteveen,
Matthias Görgens, Maxim Cournoyer, Michael Henry, Michael
Strawbridge, Nico Rieck, Raghul Nanth A, Rolf Eike Beer, Shuqi
Liang, Siddharth Singh, Stanislav Malishevskiy, Stephane Odul,
Vítor Pinho, and Xin Xing.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Andreas Schwab,
Andrei Rybak, Beat Bolli, brian m. carlson, Christian Hesse,
Derrick Stolee, Elijah Newren, Emily Shaffer, Eric Sunshine,
Eric Wong, Fangyi Zhou, Felipe Contreras, Glen Choo, Han Xin,
Jacob Keller, Jeff King, Jiang Xin, Joakim Petersen, Johannes
Schindelin, Johannes Sixt, John Cai, John Keeping, Josh Soref,
Junio C Hamano, Kristoffer Haugsbakk, Linus Arver, Linus
Torvalds, Martin Ågren, Mathias Krause, Matthew John Cheetham,
M Hickford, Michael J Gruber, Mike Hommey, Oswald Buddenhagen,
Øystein Walle, Patrick Steinhardt, Paul Eggert, Philippe Blain,
Phillip Wood, Randall S. Becker, René Scharfe, Robin Jarry,
Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor, Tao Klerks,
Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
William Sprent, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.41 Release Notes (draft)
===============================
UI, Workflows & Features
* Allow information carried on the WWW-Authenticate header to be
passed to the credential helpers.
* A new "fetch.hideRefs" option can be used to exclude specified refs
from "rev-list --objects --stdin --not --all" traversal for
checking object connectivity, most useful when there are many
unrelated histories in a single repository.
* "git push" has been taught to allow deletion of refs with one-level
names to help repairing a repository who acquired such a ref by
mistake. In general, we don't encourage use of such a ref, and
creation or update to such a ref is rejected as before.
* Allow "git bisect reset" to check out the original branch when the
branch is already checked out in a different worktree linked to the
same repository.
* A few subcommands have been taught to stop users from working on a
branch that is being used in another worktree linked to the same
repository.
* "git format-patch" learned to write a log-message only output file
for empty commits.
* "git format-patch" honors the src/dst prefixes set to nonstandard
values with configuration variables like "diff.noprefix", causing
receiving end of the patch that expects the standard -p1 format to
break. "format-patch" has been taught to ignore end-user configuration
and always use the standard prefixes.
This is a backward compatibility breaking change.
* Lift the limitation that colored prompts can only be used with
PROMPT_COMMAND mode.
* "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
but now it finds the origins of lines starting at <file> contents
through the history that leads to <rev>.
* "git pack-redundant" gave a warning when run, as the command has
outlived its usefulness long ago and is nominated for future
removal. Now we escalate to give an error.
* "git clone" from an empty repository learned to propagate the
choice of the hash algorithm from the source repository to the
newly created repository over any one of the v0/v1/v2 protocol.
* "git mergetool" and "git difftool" learns a new configuration
guiDefault to optionally favor configured guitool over non-gui-tool
automatically when $DISPLAY is set.
* "git branch -d origin/master" would say "no such branch", but it is
likely a missed "-r" if refs/remotes/origin/master exists. The
command has been taught to give such a hint in its error message.
* Clean-up of the code path that deals with merge strategy option
handling in "git rebase".
* "git clone --local" stops copying from an original repository that
has symbolic links inside its $GIT_DIR; an error message when that
happens has been updated.
* The "--format=..." option of "git for-each-ref", "git branch", and
"git tag" commands learn "--omit-empty" to hide refs whose
formatting results in an empty string from the output.
* The sendemail-validate validate hook learned to pass the total
number of input files and where in the sequence each invocation is
via environment variables.
* When "gc" needs to retain unreachable objects, packing them into
cruft packs (instead of exploding them into loose object files) has
been offered as a more efficient option for some time. Now the use
of cruft packs has been made the default and no longer considered
an experimental feature.
* The output given by "git blame" that attributes a line to contents
taken from the file specified by the "--contents" option shows it
differently from a line attributed to the working tree file.
* "git send-email" learned to give the e-mail headers to the validate
hook by passing an extra argument from the command line.
* The credential subsystem learns to help OAuth framework.
* The titles of manual pages used to be chomped at an unreasonably
short limit, which has been removed.
* Error messages given when working on an unborn branch that is
checked out in another worktree have been improved.
* The documentation was misleading about the interaction between
GIT_DEFAULT_HASH and "git clone", which has been clarified to
stress that the variable is to be ignored by the command.
* "git send-email" learned "--header-cmd=<cmd>" that can inject
arbitrary e-mail header lines to the outgoing messages.
* "git fsck" learned to detect bit-flip breakages in the reachability
bitmap files.
* The "--stdin" option of "git name-rev" has been replaced with
the "--annotate-stdin" option more than a year ago. We stop
advertising it in the "git name-rev -h" output.
* "git push --all" gained an alias "git push --branches".
* "git fetch" learned the "--porcelain" option that emits what it did
in a machine-parseable format.
* "git --attr-source=<tree> cmd $args" is a new way to have any
command to read attributes not from the working tree but from the
given tree object.
Performance, Internal Implementation, Development Support etc.
* Code clean-up to clarify directory traversal API.
* Code clean-up to clarify the rule that "git-compat-util.h" must be
the first to be included.
* More work towards -Wunused.
* Instead of forcing each command to choose to honor GPG related
configuration variables, make the subsystem lazily initialize
itself.
* Remove workaround for ancient versions of DocBook to make it work
correctly with groff, which has not been necessary since docbook
1.76 from 2010.
* Code clean-up to include and/or uninclude parse-options.h file as
needed.
* The code path that reports what "git fetch" did to each ref has
been cleaned up.
* Assorted config API updates.
* A few configuration variables to tell the cURL library that
different types of ssl-cert and ssl-key are in use have been added.
* Split key function and data structure definitions out of cache.h to
new header files and adjust the users.
* "git fetch --all" does not have to download and handle the same
bundleURI over and over, which has been corrected.
* "git sparse-checkout" command learns a debugging aid for the sparse
rule definitions.
* "git write-tree" learns to work better with sparse-index.
* The on-disk reverse index that allows mapping from the pack offset
to the object name for the object stored at the offset has been
enabled by default.
* "git fsck" learned to validate the on-disk pack reverse index files.
* strtok() and strtok_r() are banned in this codebase.
* The detect-compilers script to help auto-tweaking the build system
had trouble working with compilers whose version number has extra
suffixes. The script has been taught that certain suffixes (like
"-win32" in "gcc 10-win32") can be safely stripped as they share
the same features and bugs with the version without the suffix.
* ctype tests have been taught to test EOF, too.
* The implementation of credential helpers used fgets() over fixed
size buffers to read protocol messages, causing the remainder of
the folded long line to trigger unexpected behaviour, which has
been corrected.
* The implementation of the default "negotiator", used to find common
ancestor over the network for object tranfer, used to be recursive;
it was updated to be iterative to conserve stackspace usage.
* Our custom callout formatter is no longer used in the documentation
formatting toolchain, as the upstream default ones give better
output these days.
* The tracing mechanism learned to notice and report when
auto-discovered bare repositories are being used, as allowing so
without explicitly stating the user intends to do so (with setting
GIT_DIR for example) can be used with social engineering as an
attack vector.
* "git diff-files" learned not to expand sparse-index unless needed.
Fixes since v2.40
-----------------
* "git fsck" learned to check the index files in other worktrees,
just like "git gc" honors them as anchoring points.
(merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).
* Fix a segfaulting loop. The function and its caller may need
further clean-up.
(merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).
* "git restore" supports options like "--ours" that are only
meaningful during a conflicted merge, but these options are only
meaningful when updating the working tree files. These options are
marked to be incompatible when both "--staged" and "--worktree" are
in effect.
(merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).
* Simplify UI to control progress meter given by "git bundle" command.
(merge 8b95521edb jk/bundle-progress later to maint).
* "git bundle" learned that "-" is a common way to say that the input
comes from the standard input and/or the output goes to the
standard output. It used to work only for output and only from the
root level of the working tree.
(merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).
* Once we start running, we assumed that the list of alternate object
databases would never change. Hook into the machinery used to
update the list of packfiles during runtime to update this list as
well.
(merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).
* The code to parse "git rebase -X<opt>" was not prepared to see an
unparsable option string, which has been corrected.
(merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).
* "git add -p" while the index is unmerged sometimes failed to parse
the diff output it internally produces and died, which has been
corrected.
(merge 28d1122f9c jk/add-p-unmerged-fix later to maint).
* Fix for a "ls-files --format="%(path)" that produced nonsense
output, which was a bug in 2.38.
(merge cfb62dd006 aj/ls-files-format-fix later to maint).
* "git receive-pack" that responds to "git push" requests failed to
clean a stale lockfile when killed in the middle, which has been
corrected.
(merge c55c30669c ps/receive-pack-unlock-before-die later to maint).
* "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
parsed with GET_OID_QUIETLY option, did not quietly fail, which has
been corrected.
(merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).
* Transports that do not support protocol v2 did not correctly fall
back to protocol v0 under certain conditions, which has been
corrected.
(merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).
* time(2) on glib 2.31+, especially on Linux, goes out of sync with
higher resolution timers used for gettimeofday(2) and by the
filesystem. Replace all calls to it with a git_time() wrapper and
(merge 370ddcbc89 pe/time-use-gettimeofday later to maint).
* Code clean-up to use designated initializers in parse-options API.
(merge 353e6d4554 sg/parse-options-h-initializers later to maint).
* A recent-ish change to allow unicode character classes to be used
with "grep -P" triggered a JIT bug in older pcre2 libraries.
The problematic change in Git built with these older libraries has
been disabled to work around the bug.
(merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).
* The wildmatch library code unlearns exponential behaviour it
acquired some time ago since it was borrowed from rsync.
(merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).
* The index files can become corrupt under certain conditions when
the split-index feature is in use, especially together with
fsmonitor, which have been corrected.
(merge 061dd722dc js/split-index-fixes later to maint).
* Document what the pathname-looking strings in "rev-list --object"
output are for and what they mean.
(merge 15364d2a3c jk/document-rev-list-object-name later to maint).
* Fix unnecessary truncation of generation numbers used in-core.
(merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).
* Code clean-up around the use of the_repository.
(merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).
* Consistently spell "Message-ID" as such, not "Message-Id".
(merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).
* Correct use of an uninitialized structure member.
(merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).
* Tests had a few places where we ignored PERL_PATH and blindly used
/usr/bin/perl, which have been corrected.
(merge c1917156a0 jk/use-perl-path-consistently later to maint).
* Documentation mark-up fix.
(merge 78b6369e67 la/mfc-markup-fix later to maint).
* Doc toolchain update to remove old workaround for AsciiDoc.
(merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).
* The userdiff regexp patterns for various filetypes that are built
into the system have been updated to avoid triggering regexp errors
from UTF-8 aware regex engines.
(merge be39144954 rs/userdiff-multibyte-regex later to maint).
* The approxidate() API has been simplified by losing an extra
function that did the same thing as another one.
(merge 8a7f0b666f rs/remove-approxidate-relative later to maint).
* Code clean-up to replace a hardcoded constant with a CPP macro.
(merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).
* Doc build simplification.
(merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).
* "git archive" run from a subdirectory mishandled attributes and
paths outside the current directory.
(merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).
* The code to parse capability list for v0 on-wire protocol fell into
an infinite loop when a capability appears multiple times, which
has been corrected.
* Geometric repacking ("git repack --geometric=<n>") in a repository
that borrows from an alternate object database had various corner
case bugs, which have been corrected.
(merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).
* The "%GT" placeholder for the "--format" option of "git log" and
friends caused BUG() to trigger on a commit signed with an unknown
key, which has been corrected.
(merge 7891e46585 jk/gpg-trust-level-fix later to maint).
* The completion script used to use bare "read" without the "-r"
option to read the contents of various state files, which risked
getting confused with backslashes in them. This has been
corrected.
(merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).
* A small API fix to the ort merge strategy backend.
(merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).
* The commit object parser has been taught to be a bit more lenient
to parse timestamps on the author/committer line with a malformed
author/committer ident.
(merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).
* Retitle a test script with an overly narrow name.
(merge 8bb19c14fb ob/t3501-retitle later to maint).
* Doc update to clarify how text and eol attributes interact to
specify the end-of-line conversion.
(merge 6696077ace ah/doc-attributes-text later to maint).
* Gitk updates from GfW project.
(merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).
* "git diff --dirstat" leaked memory, which has been plugged.
(merge 83973981eb jc/dirstat-plug-leaks later to maint).
* "git merge-tree" reads the basic configuration, which can be used
by git forges to disable replace-refs feature.
(merge b6551feadf ds/merge-tree-use-config later to maint).
* A few bugs in the sequencer machinery that results in miscounting
the steps have been corrected.
(merge 170eea9750 js/rebase-count-fixes later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f7111175df as/doc-markup-fix later to maint).
(merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
(merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
(merge b10cbdac4c bb/unicode-width-table-15 later to maint).
(merge 3457b50e8c ab/retire-scripted-add-p later to maint).
(merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
(merge ec063d2591 ss/hashmap-typofix later to maint).
(merge 1aaed69d11 rs/archive-mtime later to maint).
(merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
(merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
(merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
(merge cc48ddd937 jk/chainlint-fixes later to maint).
(merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
(merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
(merge fd72637423 ar/t2024-checkout-output-fix later to maint).
(merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
(merge b734fe49fd ob/messages-capitalize-exception later to maint).
(merge ad353d7e77 ma/gittutorial-fixes later to maint).
(merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
(merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
(merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
(merge 3d77fbb664 ar/config-count-tests-updates later to maint).
(merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).
----------------------------------------------------------------
Changes since v2.40.0 are as follows:
Adam Johnson (1):
ls-files: fix "--format" output of relative paths
Alex Henrie (5):
rebase: add documentation and test for --no-rebase-merges
rebase: deprecate --rebase-merges=""
rebase: add a config option for --rebase-merges
format-patch: correct documentation of --thread without an argument
docs: rewrite the documentation of the text and eol attributes
Andreas Schwab (1):
git-merge-tree.txt: replace spurious HTML entity
Andrei Rybak (19):
t1005: assert output of ls-files
t1006: assert error output of cat-file
t1010: don't create unused files
t1302: don't create unused file
t1400: assert output of update-ref
t1404: don't create unused file
t1507: assert output of rev-parse
t3060: fix mention of function prune_index
t2107: fix mention of the_index.cache_changed
t2024: fix loose/strict local base branch DWIM test
t1300: drop duplicate test
t1300: check stderr for "ignores pairs" tests
t1300: add tests for missing keys
t0300: don't create unused file
t1300: fix config file syntax error descriptions
t1300: don't create unused files
t1450: don't create unused files
t1502: don't create unused files
t2019: don't create unused files
Andy Koppe (1):
restore: fault --staged --worktree with merge opts
Beat Bolli (1):
unicode: update the width tables to Unicode 15
Christian Hesse (1):
imap-send: include strbuf.h
Clement Mabileau (1):
branch: improve error log on branch not found by checking remotes refs
Corentin Garcia (1):
doc/git-config: add unit for http.lowSpeedLimit
Daniel Watson (1):
SubmittingPatches: clarify MUA discussion with "the"
Derrick Stolee (19):
object-file: reprepare alternates when necessary
for-each-ref: add --stdin option
for-each-ref: explicitly test no matches
commit-graph: refactor compute_topological_levels()
commit-graph: simplify compute_generation_numbers()
commit-graph: return generation from memory
commit-reach: implement ahead_behind() logic
for-each-ref: add ahead-behind format atom
commit-reach: add tips_reachable_from_bases()
p2000: remove stray '--sparse' flag from test
fetch: download bundles once, even with --all
ci: update 'static-analysis' to Ubuntu 22.04
fsck: create scaffolding for rev-index checks
fsck: check rev-index checksums
fsck: check rev-index position values
fsck: validate .rev file header
fsck: verify checksums of all .bitmap files
fsck: use local repository
merge-tree: load default git config
Edwin Kofler (1):
completion: suppress unwanted unescaping of `read`
Elijah Newren (94):
treewide: ensure one of the appropriate headers is sourced first
treewide: remove unnecessary git-compat-util.h includes in headers
treewide: remove unnecessary cache.h includes
treewide: remove unnecessary cache.h includes in source files
alloc.h: move ALLOC_GROW() functions from cache.h
hash.h: move some oid-related declarations from cache.h
hex.h: move some hex-related declarations from cache.h
cache.h: remove dependence on hex.h; make other files include it explicitly
pretty.h: move has_non_ascii() declaration from commit.h
ident.h: move ident-related declarations out of cache.h
object.h: stop depending on cache.h; make cache.h depend on object.h
dir.h: refactor to no longer need to include cache.h
object-store.h: move struct object_info from cache.h
replace-object.h: move read_replace_refs declaration from cache.h to here
treewide: replace cache.h with more direct headers, where possible
Remove unnecessary includes of builtin.h
diff.h: remove unnecessary include of object.h
t2021: fix platform-specific leftover cruft
unpack-trees: heed requests to overwrite ignored files
dir: separate public from internal portion of dir_struct
dir: add a usage note to exclude_per_dir
dir: mark output only fields of dir_struct as such
unpack-trees: clean up some flow control
sparse-checkout: avoid using internal API of unpack-trees
sparse-checkout: avoid using internal API of unpack-trees, take 2
unpack_trees: start splitting internal fields from public API
unpack-trees: mark fields only used internally as internal
unpack-trees: rewrap a few overlong lines from previous patch
unpack-trees: special case read-tree debugging as internal usage
unpack-trees: add usage notices around df_conflict_entry
treewide: remove unnecessary cache.h inclusion from a few headers
treewide: be explicit about dependence on gettext.h
treewide: remove unnecessary inclusion of gettext.h
treewide: remove unnecessary cache.h inclusion from several sources
environment: move comment_line_char from cache.h
abspath.h: move absolute path functions from cache.h
cache.h: remove expand_user_path()
path.h: move function declarations for path.c functions from cache.h
wrapper.h: move declarations for wrapper.c functions from cache.h
treewide: remove unnecessary includes of cache.h
environment.h: move declarations for environment.c functions from cache.h
treewide: remove cache.h inclusion due to environment.h changes
setup.h: move declarations for setup.c functions from cache.h
treewide: remove cache.h inclusion due to setup.h changes
write-or-die.h: move declarations for write-or-die.c functions from cache.h
csum-file.h: remove unnecessary inclusion of cache.h
treewide: be explicit about dependence on trace.h & trace2.h
treewide: be explicit about dependence on advice.h
treewide: be explicit about dependence on convert.h
treewide: be explicit about dependence on pack-revindex.h
treewide: be explicit about dependence on oid-array.h
treewide: be explicit about dependence on mem-pool.h
treewide: remove unnecessary cache.h inclusion
object-name.h: move declarations for object-name.c functions from cache.h
treewide: remove cache.h inclusion due to object-name.h changes
git-zlib: move declarations for git-zlib functions from cache.h
treewide: remove cache.h inclusion due to git-zlib changes
object-file.h: move declarations for object-file.c functions from cache.h
treewide: remove cache.h inclusion due to object-file.h changes
object.h: move some inline functions and defines from cache.h
treewide: remove cache.h inclusion due to object.h changes
editor: move editor-related functions and declarations into common file
treewide: remove cache.h inclusion due to editor.h changes
pager.h: move declarations for pager.c functions from cache.h
treewide: remove cache.h inclusion due to pager.h changes
cache.h: remove unnecessary includes
treewide: remove double forward declaration of read_in_full
treewide: reduce includes of cache.h in other headers
mailmap, quote: move declarations of global vars to correct unit
protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
treewide: be explicit about dependence on strbuf.h
symlinks.h: move declarations for symlinks.c functions from cache.h
packfile.h: move pack_window and pack_entry from cache.h
server-info.h: move declarations for server-info.c functions from cache.h
copy.h: move declarations for copy.c functions from cache.h
base85.h: move declarations for base85.c functions from cache.h
pkt-line.h: move declarations for pkt-line.c functions from cache.h
match-trees.h: move declarations for match-trees.c functions from cache.h
ws.h: move declarations for ws.c functions from cache.h
versioncmp.h: move declarations for versioncmp.c functions from cache.h
dir.h: move DTYPE defines from cache.h
tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
hash-ll.h: split out of hash.h to remove dependency on repository.h
cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
cache,tree: move basic name compare functions from read-cache to tree
treewide: remove cache.h inclusion due to previous changes
cache.h: remove unnecessary headers
fsmonitor: reduce includes of cache.h
commit.h: reduce unnecessary includes
object-store.h: reduce unnecessary includes
diff.h: reduce unnecessary includes
reftable: ensure git-compat-util.h is the first (indirect) include
merge-ort: fix calling merge_finalize() with no intermediate merge
t5583: fix shebang line
Emily Shaffer (1):
mailmap: change primary address for Emily Shaffer
Eric Sunshine (1):
tests: diagnose unclosed here-doc in chainlint.pl
Eric Wong (3):
commit-reach: avoid NULL dereference
fetch: support hideRefs to speed up connectivity checks
fetch: pass --no-write-fetch-head to subprocesses
Fangyi Zhou (1):
rebase: fix capitalisation autoSquash in i18n string
Felipe Contreras (16):
advice: add diverging advice for novices
test: simplify counts aggregation
test: don't print aggregate-results command
object-name: fix quiet @{u} parsing
completion: prompt: use generic colors
doc: remove GNU troff workaround
doc: remove manpage-base-url workaround
doc: asciidoc: remove custom header macro
doc: simplify man version
doc: set actual revdate for manpages
doc: git-checkout: trivial callout cleanup
doc: git-checkout: reorganize examples
doc: remove custom callouts format
doc: manpage: remove maximum title length
doc: doc-diff: specify date
test: rev-parse-upstream: add missing cmp
Glen Choo (10):
config.c: plumb config_source through static fns
config.c: don't assign to "cf_global" directly
config.c: create config_reader and the_reader
config.c: plumb the_reader through callbacks
config.c: remove current_config_kvi
config.c: remove current_parsing_scope
config: report cached filenames in die_bad_number()
config.c: rename "struct config_source cf"
clone: error specifically with --local and symlinked objects
setup: trace bare repository setups
Han Xin (2):
negotiator/default: avoid stack overflow
negotiator/skipping: fix some problems in mark_common()
Jacob Keller (2):
blame: allow --contents to work with non-HEAD commit
blame: use different author name for fake commit generated by --contents
Jeff King (90):
ref-filter: drop unused atom parameter from get_worktree_path()
ls-refs: drop config caching
serve: use repository pointer to get config
serve: mark unused parameters in virtual functions
object-name: mark unused parameters in disambiguate callbacks
http-backend: mark argc/argv unused
http-backend: mark unused parameters in virtual functions
ref-filter: mark unused callback parameters
mark "pointless" data pointers in callbacks
run-command: mark error routine parameters as unused
mark unused parameters in signal handlers
list-objects: mark unused callback parameters
for_each_object: mark unused callback parameters
prio-queue: mark unused parameters in comparison functions
notes: mark unused callback parameters
fetch-pack: mark unused parameter in callback function
rewrite_parents(): mark unused callback parameter
for_each_commit_graft(): mark unused callback parameter
userformat_want_item(): mark unused parameter
run_processes_parallel: mark unused callback parameters
help: mark unused parameter in git_unknown_cmd_config()
fsck: factor out index fsck
fsck: check index files in all worktrees
fsck: mention file path for index errors
fsck: check even zero-entry index files
drop pure pass-through config callbacks
bundle: turn on --all-progress-implied by default
bundle: let "-" mean stdin for reading operations
bundle: document handling of "-" as stdin
parse-options: consistently allocate memory in fix_filename()
parse-options: use prefix_filename_except_for_dash() helper
diff: factor out src/dst prefix setup
t4013: add tests for diff prefix options
diff: add --default-prefix option
format-patch: do not respect diff.noprefix
format-patch: add format.noprefix option
add-patch: handle "* Unmerged path" lines
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
range-diff: drop useless "offset" variable from read_patches()
http: support CURLOPT_PROTOCOLS_STR
range-diff: handle unterminated lines in read_patches()
range-diff: use ssize_t for parsed "len" in read_patches()
rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
mailmap: drop debugging code
http: drop unused parameter from start_object_request()
http: mark unused parameter in fill_active_slot() callbacks
transport: mark unused parameters in fetch_refs_from_bundle()
git_connect(): fix corner cases in downgrading v2 to v0
fast-export: drop const when storing anonymized values
fast-export: simplify initialization of anonymized hashmaps
fast-export: factor out anonymized_entry creation
fast-export: de-obfuscate --anonymize-map handling
fast-export: drop data parameter from anonymous generators
fast-export: drop unused parameter from anonymize_commit_message()
Makefile: force -O0 when compiling with SANITIZE=leak
pack-redundant: escalate deprecation warning to an error
docs: document caveats of rev-list's object-name output
fast-import: fix file access when run from subdir
builtins: always pass prefix to parse_options()
builtins: annotate always-empty prefix parameters
builtins: mark unused prefix parameters
mark "argv" as unused when we check argc
t/helper: mark unused argv/argc arguments
parse-options: drop parse_opt_unknown_cb()
pack-redundant: document deprecation
tests: run internal chain-linter under "make test"
tests: replace chainlint subshell with a function
tests: drop here-doc check from internal chain-linter
tests: skip test_eval_ in internal chain-lint
t/lib-httpd: pass PERL_PATH to CGI scripts
v0 protocol: fix infinite loop when parsing multi-valued capabilities
t5512: stop referring to "v1" protocol
v0 protocol: fix sha1/sha256 confusion for capabilities^{}
t5512: add v2 support for "ls-remote --symref" test
t5512: allow any protocol version for filtered symref test
t5512: test "ls-remote --heads --symref" filtering with v0 and v2
v0 protocol: use size_t for capability length/offset
gpg-interface: set trust level of missing key to "undefined"
notes: clean up confusing NULL checks in init_notes()
fetch_bundle_uri(): drop pointless NULL check
t4212: avoid putting git on left-hand side of pipe
parse_commit(): parse timestamp from end of line
parse_commit(): handle broken whitespace-only timestamp
parse_commit(): describe more date-parsing failure modes
doc-diff: drop SOURCE_DATE_EPOCH override
t7001: avoid git on upstream of pipe
t7001: use "ls-files --format" instead of "cut"
t: drop "verbose" helper function
t/lib-httpd: make CGIPassAuth support conditional
Jiang Xin (5):
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
object-info: init request_info before reading arg
Johannes Schindelin (31):
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
t0033: GETTEXT_POISON fix
t0003: GETTEXT_POISON fix, part 1
t0003: GETTEXT_POISON fix, conclusion
t5619: GETTEXT_POISON fix
t5604: GETTEXT_POISON fix, part 1
t5604: GETTEXT_POISON fix, conclusion
clone.c: avoid "exceeds maximum object size" error with GCC v12.x
split-index & fsmonitor: demonstrate a bug
split-index; stop abusing the `base_oid` to strip the "link" extension
fsmonitor: avoid overriding `cache_changed` bits
unpack-trees: take care to propagate the split-index flag
t3701: we don't need no Perl for `add -i` anymore
t5563: prevent "ambiguous redirect"
apply --reject: overwrite existing `.rej` symlink if it exists
gettext: avoid using gettext if the locale dir is not present
tests: avoid using `test_i18ncmp`
Git 2.31.8
Git 2.32.7
Git 2.33.8
Git 2.34.8
Git 2.35.8
Git 2.36.6
Git 2.37.7
Git 2.38.5
Git 2.39.3
Git 2.40.1
gitk: prevent overly long command lines
rebase --update-refs: fix loops
rebase -r: fix the total number shown in the progress
John Cai (2):
name-rev: make --stdin hidden
attr: teach "--attr-source=<tree>" global option to "git"
John Keeping (1):
format-patch: output header for empty commits
Josh Soref (1):
subtree: support long global flags
Jouke Witteveen (1):
send-email docs: Remove mention of discontinued gmail feature
Junio C Hamano (38):
gpg-interface: lazily initialize and read the configuration
bundle: don't blindly apply prefix_filename() to "-"
Start the 2.41 cycle
The second batch
am: refer to format-patch in the documentation
The third batch
http.c: clear the 'finished' member once we are done with it
The fourth batch
The fifth batch
The sixth batch
e-mail workflow: Message-ID is spelled with ID in both capital letters
The seventh batch
clone: propagate object-format when cloning from void
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
The fourteenth batch
The fifteenth batch
The sixteenth batch
diff: refactor common tail part of dirstat computation
diff: plug leaks in dirstat
t9800: correct misuse of 'show -s --raw' in a test
The seventeenth batch
The eighteenth batch
Git 2.41-rc0
tests: do not negate test_path_exists
t2021: do not negate test_path_is_dir
test: do not negate test_path_is_* to assert absense
A bit more before -rc1
send-email: clear the $message_id after validation
t9001: mark the script as no longer leak checker clean
Git 2.41-rc1
A few more topics after 2.41-rc1
Git 2.41-rc2
Kristoffer Haugsbakk (5):
config: tell the user that we expect an ASCII character
doc: interpret-trailers: don’t use heredoc in examples
doc: interpret-trailers: use input redirection
doc: interpret-trailers: don’t use deprecated config
doc: interpret-trailers: fix example
Linus Arver (1):
MyFirstContribution: render literal *
M Hickford (3):
credential/wincred: include wincred.h
credential/wincred: store password_expiry_utc
credential: new attribute oauth_refresh_token
Martin Ågren (2):
gittutorial: drop early mention of origin
gittutorial: wrap literal examples in backticks
Mathias Krause (1):
grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34
Matthew John Cheetham (3):
t5563: add tests for basic and anoymous HTTP access
http: read HTTP WWW-Authenticate response headers
credential: add WWW-Authenticate header to cred requests
Maxim Cournoyer (3):
send-email: extract execute_cmd from recipients_cmd
send-email: add --header-cmd, --no-header-cmd options
send-email: detect empty blank lines in command output
Michael J Gruber (1):
t3070: make chain lint tester happy
Michael Strawbridge (2):
send-email: refactor header generation functions
send-email: expose header information to git-send-email's sendemail-validate hook
Mike Hommey (1):
Handle some compiler versions containing a dash
Nico Rieck (1):
gitk: escape file paths before piping to git log
Oswald Buddenhagen (5):
sequencer: remove pointless rollback_lock_file()
sequencer: rewrite save_head() in terms of write_message()
sequencer: actually translate report in do_exec()
messages: capitalization and punctuation exceptions
t/t3501-revert-cherry-pick.sh: clarify scope of the file
Patrick Steinhardt (27):
receive-pack: fix stale packfile locks when dying
fetch: move reference width calculation into `display_state`
fetch: move output format into `display_state`
fetch: pass the full local reference name to `format_display`
fetch: centralize handling of per-reference format
fetch: centralize logic to print remote URL
fetch: centralize printing of reference updates
commit-graph: fix truncated generation numbers
midx: fix segfault with no packs and invalid preferred pack
repack: fix trying to use preferred pack in alternates
repack: fix generating multi-pack-index with only non-local packs
pack-objects: split out `--stdin-packs` tests into separate file
pack-objects: fix error when packing same pack twice
pack-objects: fix error when same packfile is included and excluded
pack-objects: extend test coverage of `--stdin-packs` with alternates
t/helper: allow chmtime to print verbosely without modifying mtime
repack: honor `-l` when calculating pack geometry
repack: disable writing bitmaps when doing a local repack
fetch: fix `--no-recurse-submodules` with multi-remote fetches
fetch: split out tests for output format
fetch: add a test to exercise invalid output formats
fetch: print left-hand side when fetching HEAD:foo
fetch: refactor calculation of the display table width
fetch: introduce `display_format` enum
fetch: lift up parsing of "fetch.output" config variable
fetch: move option related variables into main function
fetch: introduce machine-parseable "porcelain" output format
Paul Eggert (1):
git-compat-util: use gettimeofday(2) for time(2)
Phillip Wood (8):
wildmatch: fix exponential behavior
wildmatch: avoid undefined behavior
wildmatch: hide internal return values
rebase: stop reading and writing unnecessary strategy state
sequencer: use struct strvec to store merge strategy options
rebase -m: cleanup --strategy-option handling
rebase -m: fix serialization of strategy options
rebase: remove a couple of redundant strategy tests
Raghul Nanth A (1):
describe: enable sparse index for describe
René Scharfe (6):
archive: improve support for running in subdirectory
t5000: use check_mtime()
userdiff: support regexec(3) with multi-byte support
date: remove approxidate_relative()
get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
test-ctype: check EOF
Robin Jarry (1):
send-email: export patch counters in validate environment
Rubén Justo (10):
bisect: fix "reset" when branch is checked out elsewhere
worktree: introduce is_shared_symref()
branch: fix die_if_checked_out() when ignore_current_worktree
rebase: refuse to switch to a branch already checked out elsewhere (test)
switch: reject if the branch is already checked out elsewhere (test)
branch: test for failures while renaming branches
branch: use get_worktrees() in copy_or_rename_branch()
branch: description for orphan branch errors
branch: rename orphan branches in any worktree
branch: avoid unnecessary worktrees traversals
SZEDER Gábor (6):
treewide: include parse-options.h in source files
treewide: remove unnecessary inclusions of parse-options.h from headers
parse-options.h: use consistent name for the callback parameters
parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
parse-options.h: use designated initializers in OPT_* macros
cocci: remove 'unused.cocci'
Shuqi Liang (4):
write-tree: integrate with sparse index
t1092: update a write-tree test
t1092: add tests for `git diff-files`
diff-files: integrate with sparse index
Siddharth Singh (1):
hashmap.h: fix minor typo
Sohom Datta (1):
docs: clarify git rm --cached function in gitignore note
Stanislav Malishevskiy (1):
http: add support for different sslcert and sslkey types.
Tao Klerks (1):
mergetool: new config guiDefault supports auto-toggling gui by DISPLAY
Taylor Blau (37):
commit-graph: introduce `ensure_generations_valid()`
pack-write.c: plug a leak in stage_tmp_packfiles()
t5325: mark as leak-free
pack-revindex: make `load_pack_revindex` take a repository
pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
pack-revindex: introduce `pack.readReverseIndex`
config: enable `pack.writeReverseIndex` by default
t: invert `GIT_TEST_WRITE_REV_INDEX`
t1300: demonstrate failure when renaming sections with long lines
config: avoid fixed-sized buffer when renaming/deleting a section
config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
Git 2.30.9
pack-write.c: plug a leak in stage_tmp_packfiles()
builtin/repack.c: fix incorrect reference to '-C'
builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
t/t5304-prune.sh: prepare for `gc --cruft` by default
t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
t/t6500-gc.sh: refactor cruft pack tests
t/t6500-gc.sh: add additional test cases
t/t9300-fast-import.sh: prepare for `gc --cruft` by default
builtin/gc.c: make `gc.cruftPacks` enabled by default
repository.h: drop unused `gc_cruft_packs`
string-list: multi-delimiter `string_list_split_in_place()`
string-list: introduce `string_list_setlen()`
t/helper/test-hashmap.c: avoid using `strtok()`
t/helper/test-oidmap.c: avoid using `strtok()`
t/helper/test-json-writer.c: avoid using `strtok()`
banned.h: mark `strtok()` and `strtok_r()` as banned
credential.c: store "wwwauth[]" values in `credential_read()`
t/lib-credential.sh: ensure credential helpers handle long headers
contrib/credential: avoid fixed-size buffer in osxkeychain
contrib/credential: remove 'gnome-keyring' credential helper
contrib/credential: .gitignore libsecret build artifacts
contrib/credential: avoid fixed-size buffer in libsecret
contrib/credential: embiggen fixed-size buffer in wincred
run-command.c: fix missing include under `NO_PTHREADS`
Teng Long (1):
push: introduce '--branches' option
William Sprent (2):
builtin/sparse-checkout: remove NEED_WORK_TREE flag
builtin/sparse-checkout: add check-rules command
ZheNing Hu (2):
receive-pack: fix funny ref error messsage
push: allow delete single-level ref
brian m. carlson (1):
upload-pack: advertise capabilities when cloning empty repos
Ævar Arnfjörð Bjarmason (33):
auto-crlf tests: don't lose exit code in loops and outside tests
t/lib-patch-mode.sh: fix ignored exit codes
tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
tests: don't lose "git" exit codes in "! ( git ... | grep )"
tests: don't lose exit status with "test <op> $(git ...)"
tests: don't lose misc "git" exit codes
sequencer.c: fix overflow & segfault in parse_strategy_opts()
cocci: remove dead rule from "the_repository.pending.cocci"
cocci: fix incorrect & verbose "the_repository" rules
cocci: sort "the_repository" rules by header
cocci: add missing "the_repository" macros to "pending"
cocci: apply the "cache.h" part of "the_repository.pending"
cocci: apply the "commit-reach.h" part of "the_repository.pending"
cocci: apply the "commit.h" part of "the_repository.pending"
cocci: apply the "diff.h" part of "the_repository.pending"
cocci: apply the "object-store.h" part of "the_repository.pending"
cocci: apply the "pretty.h" part of "the_repository.pending"
cocci: apply the "packfile.h" part of "the_repository.pending"
cocci: apply the "promisor-remote.h" part of "the_repository.pending"
cocci: apply the "refs.h" part of "the_repository.pending"
cocci: apply the "rerere.h" part of "the_repository.pending"
cocci: apply the "revision.h" part of "the_repository.pending"
post-cocci: adjust comments for recent repo_* migration
libs: use "struct repository *" argument, not "the_repository"
config tests: cover blind spots in git_die_config() tests
config tests: add "NULL" tests for *_get_value_multi()
config API: add and use a "git_config_get()" family of functions
versioncmp.c: refactor config reading next commit
config API: have *_multi() return an "int" and take a "dest"
for-each-repo: error on bad --config
config API users: test for *_get_value_multi() segfaults
config API: add "string" version of *_value_multi(), fix segfaults
for-each-repo: with bad config, don't conflate <path> and <cmd>
Øystein Walle (2):
ref-filter: remove unused ref_format member
branch, for-each-ref, tag: add option to omit empty lines
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.41.0-rc1
@ 2023-05-19 17:39 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-05-19 17:39 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.41.0-rc1 is now available for testing at
the usual places. It is comprised of 516 non-merge commits since
v2.40.0, contributed by 79 people, 24 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.41.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.40.0 are as
follows. Welcome to the Git development community!
Adam Johnson, André Baptista, Andy Koppe, Clement Mabileau,
Cristian Le, Daniel Watson, D. Ben Knoble, Douglas Anderson,
Edwin Kofler, Jonas Haag, Jouke Witteveen, Matthias Görgens,
Maxim Cournoyer, Michael Henry, Michael Strawbridge, Nico
Rieck, Raghul Nanth A, Rolf Eike Beer, Shuqi Liang, Siddharth
Singh, Stanislav Malishevskiy, Stephane Odul, Vítor Pinho,
and Xin Xing.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Andreas Schwab,
Andrei Rybak, Beat Bolli, brian m. carlson, Christian Hesse,
Derrick Stolee, Elijah Newren, Emily Shaffer, Eric Sunshine,
Eric Wong, Fangyi Zhou, Felipe Contreras, Glen Choo, Han Xin,
Jacob Keller, Jeff King, Jiang Xin, Joakim Petersen, Johannes
Schindelin, Johannes Sixt, John Cai, John Keeping, Josh Soref,
Junio C Hamano, Kristoffer Haugsbakk, Linus Arver, Linus
Torvalds, Martin Ågren, Mathias Krause, Matthew John Cheetham,
M Hickford, Michael J Gruber, Mike Hommey, Oswald Buddenhagen,
Øystein Walle, Patrick Steinhardt, Paul Eggert, Philippe Blain,
Phillip Wood, Randall S. Becker, René Scharfe, Robin Jarry,
Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor, Tao Klerks,
Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
William Sprent, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.41 Release Notes (draft)
===============================
UI, Workflows & Features
* Allow information carried on the WWW-Authenticate header to be
passed to the credential helpers.
* A new "fetch.hideRefs" option can be used to exclude specified refs
from "rev-list --objects --stdin --not --all" traversal for
checking object connectivity, most useful when there are many
unrelated histories in a single repository.
* "git push" has been taught to allow deletion of refs with one-level
names to help repairing a repository who acquired such a ref by
mistake. In general, we don't encourage use of such a ref, and
creation or update to such a ref is rejected as before.
* Allow "git bisect reset" to check out the original branch when the
branch is already checked out in a different worktree linked to the
same repository.
* A few subcommands have been taught to stop users from working on a
branch that is being used in another worktree linked to the same
repository.
* "git format-patch" learned to write a log-message only output file
for empty commits.
* "git format-patch" honors the src/dst prefixes set to nonstandard
values with configuration variables like "diff.noprefix", causing
receiving end of the patch that expects the standard -p1 format to
break. "format-patch" has been taught to ignore end-user configuration
and always use the standard prefixes.
This is a backward compatibility breaking change.
* Lift the limitation that colored prompts can only be used with
PROMPT_COMMAND mode.
* "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
but now it finds the origins of lines starting at <file> contents
through the history that leads to <rev>.
* "git pack-redundant" gave a warning when run, as the command has
outlived its usefulness long ago and is nominated for future
removal. Now we escalate to give an error.
* "git clone" from an empty repository learned to propagate the
choice of the hash algorithm from the source repository to the
newly created repository over any one of the v0/v1/v2 protocol.
* "git mergetool" and "git difftool" learns a new configuration
guiDefault to optionally favor configured guitool over non-gui-tool
automatically when $DISPLAY is set.
* "git branch -d origin/master" would say "no such branch", but it is
likely a missed "-r" if refs/remotes/origin/master exists. The
command has been taught to give such a hint in its error message.
* Clean-up of the code path that deals with merge strategy option
handling in "git rebase".
* "git clone --local" stops copying from an original repository that
has symbolic links inside its $GIT_DIR; an error message when that
happens has been updated.
* "git branch --format=..." and "git format-patch --format=..."
learns "--omit-empty" to hide refs that whose formatting result
becomes an empty string from the output.
* The sendemail-validate validate hook learned to pass the total
number of input files and where in the sequence each invocation is
via environment variables.
* When "gc" needs to retain unreachable objects, packing them into
cruft packs (instead of exploding them into loose object files) has
been offered as a more efficient option for some time. Now the use
of cruft packs has been made the default and no longer considered
an experimental feature.
* The output given by "git blame" that attributes a line to contents
taken from the file specified by the "--contents" option shows it
differently from a line attributed to the working tree file.
* "git send-email" learned to give the e-mail headers to the validate
hook by passing an extra argument from the command line.
* The credential subsystem learns to help OAuth framework.
* The titles of manual pages used to be chomped at an unreasonably
short limit, which has been removed.
* Error messages given when working on an unborn branch that is
checked out in another worktree have been improved.
* The documentation was misleading about the interaction between
GIT_DEFAULT_HASH and "git clone", which has been clarified to
stress that the variable is to be ignored by the command.
* "git send-email" learned "--header-cmd=<cmd>" that can inject
arbitrary e-mail header lines to the outgoing messages.
* "git fsck" learned to detect bit-flip breakages in the reachability
bitmap files.
* The "--stdin" option of "git name-rev" has been replaced with
the "--annotate-stdin" option more than a year ago. We stop
advertising it in the "git name-rev -h" output.
* "git push --all" gained an alias "git push --branches".
* "git fetch" learned the "--porcelain" option that emits what it did
in a machine-parseable format.
* "git --attr-source=<tree> cmd $args" is a new way to have any
command to read attributes not from the working tree but from the
given tree object.
Performance, Internal Implementation, Development Support etc.
* Code clean-up to clarify directory traversal API.
* Code clean-up to clarify the rule that "git-compat-util.h" must be
the first to be included.
* More work towards -Wunused.
* Instead of forcing each command to choose to honor GPG related
configuration variables, make the subsystem lazily initialize
itself.
* Remove workaround for ancient versions of DocBook to make it work
correctly with groff, which has not been necessary since docbook
1.76 from 2010.
* Code clean-up to include and/or uninclude parse-options.h file as
needed.
* The code path that reports what "git fetch" did to each ref has
been cleaned up.
* Assorted config API updates.
* A few configuration variables to tell the cURL library that
different types of ssl-cert and ssl-key are in use have been added.
* Split key function and data structure definitions out of cache.h to
new header files and adjust the users.
* "git fetch --all" does not have to download and handle the same
bundleURI over and over, which has been corrected.
* "git sparse-checkout" command learns a debugging aid for the sparse
rule definitions.
* "git write-tree" learns to work better with sparse-index.
* The on-disk reverse index that allows mapping from the pack offset
to the object name for the object stored at the offset has been
enabled by default.
* "git fsck" learned to validate the on-disk pack reverse index files.
* strtok() and strtok_r() are banned in this codebase.
* The detect-compilers script to help auto-tweaking the build system
had trouble working with compilers whose version number has extra
suffixes. The script has been taught that certain suffixes (like
"-win32" in "gcc 10-win32") can be safely stripped as they share
the same features and bugs with the version without the suffix.
* ctype tests have been taught to test EOF, too.
* The implementation of credential helpers used fgets() over fixed
size buffers to read protocol messages, causing the remainder of
the folded long line to trigger unexpected behaviour, which has
been corrected.
* The implementation of the default "negotiator", used to find common
ancestor over the network for object tranfer, used to be recursive;
it was updated to be iterative to conserve stackspace usage.
* Our custom callout formatter is no longer used in the documentation
formatting toolchain, as the upstream default ones give better
output these days.
* The tracing mechanism learned to notice and report when
auto-discovered bare repositories are being used, as allowing so
without explicitly stating the user intends to do so (with setting
GIT_DIR for example) can be used with social engineering as an
attack vector.
* "git diff-files" learned not to expand sparse-index unless needed.
Fixes since v2.40
-----------------
* "git fsck" learned to check the index files in other worktrees,
just like "git gc" honors them as anchoring points.
(merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).
* Fix a segfaulting loop. The function and its caller may need
further clean-up.
(merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).
* "git restore" supports options like "--ours" that are only
meaningful during a conflicted merge, but these options are only
meaningful when updating the working tree files. These options are
marked to be incompatible when both "--staged" and "--worktree" are
in effect.
(merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).
* Simplify UI to control progress meter given by "git bundle" command.
(merge 8b95521edb jk/bundle-progress later to maint).
* "git bundle" learned that "-" is a common way to say that the input
comes from the standard input and/or the output goes to the
standard output. It used to work only for output and only from the
root level of the working tree.
(merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).
* Once we start running, we assumed that the list of alternate object
databases would never change. Hook into the machinery used to
update the list of packfiles during runtime to update this list as
well.
(merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).
* The code to parse "git rebase -X<opt>" was not prepared to see an
unparsable option string, which has been corrected.
(merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).
* "git add -p" while the index is unmerged sometimes failed to parse
the diff output it internally produces and died, which has been
corrected.
(merge 28d1122f9c jk/add-p-unmerged-fix later to maint).
* Fix for a "ls-files --format="%(path)" that produced nonsense
output, which was a bug in 2.38.
(merge cfb62dd006 aj/ls-files-format-fix later to maint).
* "git receive-pack" that responds to "git push" requests failed to
clean a stale lockfile when killed in the middle, which has been
corrected.
(merge c55c30669c ps/receive-pack-unlock-before-die later to maint).
* "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
parsed with GET_OID_QUIETLY option, did not quietly fail, which has
been corrected.
(merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).
* Transports that do not support protocol v2 did not correctly fall
back to protocol v0 under certain conditions, which has been
corrected.
(merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).
* time(2) on glib 2.31+, especially on Linux, goes out of sync with
higher resolution timers used for gettimeofday(2) and by the
filesystem. Replace all calls to it with a git_time() wrapper and
(merge 370ddcbc89 pe/time-use-gettimeofday later to maint).
* Code clean-up to use designated initializers in parse-options API.
(merge 353e6d4554 sg/parse-options-h-initializers later to maint).
* A recent-ish change to allow unicode character classes to be used
with "grep -P" triggered a JIT bug in older pcre2 libraries.
The problematic change in Git built with these older libraries has
been disabled to work around the bug.
(merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).
* The wildmatch library code unlearns exponential behaviour it
acquired some time ago since it was borrowed from rsync.
(merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).
* The index files can become corrupt under certain conditions when
the split-index feature is in use, especially together with
fsmonitor, which have been corrected.
(merge 061dd722dc js/split-index-fixes later to maint).
* Document what the pathname-looking strings in "rev-list --object"
output are for and what they mean.
(merge 15364d2a3c jk/document-rev-list-object-name later to maint).
* Fix unnecessary truncation of generation numbers used in-core.
(merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).
* Code clean-up around the use of the_repository.
(merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).
* Consistently spell "Message-ID" as such, not "Message-Id".
(merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).
* Correct use of an uninitialized structure member.
(merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).
* Tests had a few places where we ignored PERL_PATH and blindly used
/usr/bin/perl, which have been corrected.
(merge c1917156a0 jk/use-perl-path-consistently later to maint).
* Documentation mark-up fix.
(merge 78b6369e67 la/mfc-markup-fix later to maint).
* Doc toolchain update to remove old workaround for AsciiDoc.
(merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).
* The userdiff regexp patterns for various filetypes that are built
into the system have been updated to avoid triggering regexp errors
from UTF-8 aware regex engines.
(merge be39144954 rs/userdiff-multibyte-regex later to maint).
* The approxidate() API has been simplified by losing an extra
function that did the same thing as another one.
(merge 8a7f0b666f rs/remove-approxidate-relative later to maint).
* Code clean-up to replace a hardcoded constant with a CPP macro.
(merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).
* Doc build simplification.
(merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).
* "git archive" run from a subdirectory mishandled attributes and
paths outside the current directory.
(merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).
* The code to parse capability list for v0 on-wire protocol fell into
an infinite loop when a capability appears multiple times, which
has been corrected.
* Geometric repacking ("git repack --geometric=<n>") in a repository
that borrows from an alternate object database had various corner
case bugs, which have been corrected.
(merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).
* The "%GT" placeholder for the "--format" option of "git log" and
friends caused BUG() to trigger on a commit signed with an unknown
key, which has been corrected.
(merge 7891e46585 jk/gpg-trust-level-fix later to maint).
* The completion script used to use bare "read" without the "-r"
option to read the contents of various state files, which risked
getting confused with backslashes in them. This has been
corrected.
(merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).
* A small API fix to the ort merge strategy backend.
(merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).
* The commit object parser has been taught to be a bit more lenient
to parse timestamps on the author/committer line with a malformed
author/committer ident.
(merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).
* Retitle a test script with an overly narrow name.
(merge 8bb19c14fb ob/t3501-retitle later to maint).
* Doc update to clarify how text and eol attributes interact to
specify the end-of-line conversion.
(merge 6696077ace ah/doc-attributes-text later to maint).
* Gitk updates from GfW project.
(merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).
* "git diff --dirstat" leaked memory, which has been plugged.
(merge 83973981eb jc/dirstat-plug-leaks later to maint).
* "git merge-tree" reads the basic configuration, which can be used
by git forges to disable replace-refs feature.
(merge b6551feadf ds/merge-tree-use-config later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f7111175df as/doc-markup-fix later to maint).
(merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
(merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
(merge b10cbdac4c bb/unicode-width-table-15 later to maint).
(merge 3457b50e8c ab/retire-scripted-add-p later to maint).
(merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
(merge ec063d2591 ss/hashmap-typofix later to maint).
(merge 1aaed69d11 rs/archive-mtime later to maint).
(merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
(merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
(merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
(merge cc48ddd937 jk/chainlint-fixes later to maint).
(merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
(merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
(merge fd72637423 ar/t2024-checkout-output-fix later to maint).
(merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
(merge b734fe49fd ob/messages-capitalize-exception later to maint).
(merge ad353d7e77 ma/gittutorial-fixes later to maint).
(merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
(merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
(merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
(merge 3d77fbb664 ar/config-count-tests-updates later to maint).
(merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).
----------------------------------------------------------------
Changes since v2.40.0 are as follows:
Adam Johnson (1):
ls-files: fix "--format" output of relative paths
Alex Henrie (5):
rebase: add documentation and test for --no-rebase-merges
rebase: deprecate --rebase-merges=""
rebase: add a config option for --rebase-merges
format-patch: correct documentation of --thread without an argument
docs: rewrite the documentation of the text and eol attributes
Andreas Schwab (1):
git-merge-tree.txt: replace spurious HTML entity
Andrei Rybak (19):
t1005: assert output of ls-files
t1006: assert error output of cat-file
t1010: don't create unused files
t1302: don't create unused file
t1400: assert output of update-ref
t1404: don't create unused file
t1507: assert output of rev-parse
t3060: fix mention of function prune_index
t2107: fix mention of the_index.cache_changed
t2024: fix loose/strict local base branch DWIM test
t1300: drop duplicate test
t1300: check stderr for "ignores pairs" tests
t1300: add tests for missing keys
t0300: don't create unused file
t1300: fix config file syntax error descriptions
t1300: don't create unused files
t1450: don't create unused files
t1502: don't create unused files
t2019: don't create unused files
Andy Koppe (1):
restore: fault --staged --worktree with merge opts
Beat Bolli (1):
unicode: update the width tables to Unicode 15
Christian Hesse (1):
imap-send: include strbuf.h
Clement Mabileau (1):
branch: improve error log on branch not found by checking remotes refs
Daniel Watson (1):
SubmittingPatches: clarify MUA discussion with "the"
Derrick Stolee (19):
object-file: reprepare alternates when necessary
for-each-ref: add --stdin option
for-each-ref: explicitly test no matches
commit-graph: refactor compute_topological_levels()
commit-graph: simplify compute_generation_numbers()
commit-graph: return generation from memory
commit-reach: implement ahead_behind() logic
for-each-ref: add ahead-behind format atom
commit-reach: add tips_reachable_from_bases()
p2000: remove stray '--sparse' flag from test
fetch: download bundles once, even with --all
ci: update 'static-analysis' to Ubuntu 22.04
fsck: create scaffolding for rev-index checks
fsck: check rev-index checksums
fsck: check rev-index position values
fsck: validate .rev file header
fsck: verify checksums of all .bitmap files
fsck: use local repository
merge-tree: load default git config
Edwin Kofler (1):
completion: suppress unwanted unescaping of `read`
Elijah Newren (94):
treewide: ensure one of the appropriate headers is sourced first
treewide: remove unnecessary git-compat-util.h includes in headers
treewide: remove unnecessary cache.h includes
treewide: remove unnecessary cache.h includes in source files
alloc.h: move ALLOC_GROW() functions from cache.h
hash.h: move some oid-related declarations from cache.h
hex.h: move some hex-related declarations from cache.h
cache.h: remove dependence on hex.h; make other files include it explicitly
pretty.h: move has_non_ascii() declaration from commit.h
ident.h: move ident-related declarations out of cache.h
object.h: stop depending on cache.h; make cache.h depend on object.h
dir.h: refactor to no longer need to include cache.h
object-store.h: move struct object_info from cache.h
replace-object.h: move read_replace_refs declaration from cache.h to here
treewide: replace cache.h with more direct headers, where possible
Remove unnecessary includes of builtin.h
diff.h: remove unnecessary include of object.h
t2021: fix platform-specific leftover cruft
unpack-trees: heed requests to overwrite ignored files
dir: separate public from internal portion of dir_struct
dir: add a usage note to exclude_per_dir
dir: mark output only fields of dir_struct as such
unpack-trees: clean up some flow control
sparse-checkout: avoid using internal API of unpack-trees
sparse-checkout: avoid using internal API of unpack-trees, take 2
unpack_trees: start splitting internal fields from public API
unpack-trees: mark fields only used internally as internal
unpack-trees: rewrap a few overlong lines from previous patch
unpack-trees: special case read-tree debugging as internal usage
unpack-trees: add usage notices around df_conflict_entry
treewide: remove unnecessary cache.h inclusion from a few headers
treewide: be explicit about dependence on gettext.h
treewide: remove unnecessary inclusion of gettext.h
treewide: remove unnecessary cache.h inclusion from several sources
environment: move comment_line_char from cache.h
abspath.h: move absolute path functions from cache.h
cache.h: remove expand_user_path()
path.h: move function declarations for path.c functions from cache.h
wrapper.h: move declarations for wrapper.c functions from cache.h
treewide: remove unnecessary includes of cache.h
environment.h: move declarations for environment.c functions from cache.h
treewide: remove cache.h inclusion due to environment.h changes
setup.h: move declarations for setup.c functions from cache.h
treewide: remove cache.h inclusion due to setup.h changes
write-or-die.h: move declarations for write-or-die.c functions from cache.h
csum-file.h: remove unnecessary inclusion of cache.h
treewide: be explicit about dependence on trace.h & trace2.h
treewide: be explicit about dependence on advice.h
treewide: be explicit about dependence on convert.h
treewide: be explicit about dependence on pack-revindex.h
treewide: be explicit about dependence on oid-array.h
treewide: be explicit about dependence on mem-pool.h
treewide: remove unnecessary cache.h inclusion
object-name.h: move declarations for object-name.c functions from cache.h
treewide: remove cache.h inclusion due to object-name.h changes
git-zlib: move declarations for git-zlib functions from cache.h
treewide: remove cache.h inclusion due to git-zlib changes
object-file.h: move declarations for object-file.c functions from cache.h
treewide: remove cache.h inclusion due to object-file.h changes
object.h: move some inline functions and defines from cache.h
treewide: remove cache.h inclusion due to object.h changes
editor: move editor-related functions and declarations into common file
treewide: remove cache.h inclusion due to editor.h changes
pager.h: move declarations for pager.c functions from cache.h
treewide: remove cache.h inclusion due to pager.h changes
cache.h: remove unnecessary includes
treewide: remove double forward declaration of read_in_full
treewide: reduce includes of cache.h in other headers
mailmap, quote: move declarations of global vars to correct unit
protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
treewide: be explicit about dependence on strbuf.h
symlinks.h: move declarations for symlinks.c functions from cache.h
packfile.h: move pack_window and pack_entry from cache.h
server-info.h: move declarations for server-info.c functions from cache.h
copy.h: move declarations for copy.c functions from cache.h
base85.h: move declarations for base85.c functions from cache.h
pkt-line.h: move declarations for pkt-line.c functions from cache.h
match-trees.h: move declarations for match-trees.c functions from cache.h
ws.h: move declarations for ws.c functions from cache.h
versioncmp.h: move declarations for versioncmp.c functions from cache.h
dir.h: move DTYPE defines from cache.h
tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
hash-ll.h: split out of hash.h to remove dependency on repository.h
cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
cache,tree: move basic name compare functions from read-cache to tree
treewide: remove cache.h inclusion due to previous changes
cache.h: remove unnecessary headers
fsmonitor: reduce includes of cache.h
commit.h: reduce unnecessary includes
object-store.h: reduce unnecessary includes
diff.h: reduce unnecessary includes
reftable: ensure git-compat-util.h is the first (indirect) include
merge-ort: fix calling merge_finalize() with no intermediate merge
t5583: fix shebang line
Emily Shaffer (1):
mailmap: change primary address for Emily Shaffer
Eric Sunshine (1):
tests: diagnose unclosed here-doc in chainlint.pl
Eric Wong (3):
commit-reach: avoid NULL dereference
fetch: support hideRefs to speed up connectivity checks
fetch: pass --no-write-fetch-head to subprocesses
Fangyi Zhou (1):
rebase: fix capitalisation autoSquash in i18n string
Felipe Contreras (16):
advice: add diverging advice for novices
test: simplify counts aggregation
test: don't print aggregate-results command
object-name: fix quiet @{u} parsing
completion: prompt: use generic colors
doc: remove GNU troff workaround
doc: remove manpage-base-url workaround
doc: asciidoc: remove custom header macro
doc: simplify man version
doc: set actual revdate for manpages
doc: git-checkout: trivial callout cleanup
doc: git-checkout: reorganize examples
doc: remove custom callouts format
doc: manpage: remove maximum title length
doc: doc-diff: specify date
test: rev-parse-upstream: add missing cmp
Glen Choo (10):
config.c: plumb config_source through static fns
config.c: don't assign to "cf_global" directly
config.c: create config_reader and the_reader
config.c: plumb the_reader through callbacks
config.c: remove current_config_kvi
config.c: remove current_parsing_scope
config: report cached filenames in die_bad_number()
config.c: rename "struct config_source cf"
clone: error specifically with --local and symlinked objects
setup: trace bare repository setups
Han Xin (2):
negotiator/default: avoid stack overflow
negotiator/skipping: fix some problems in mark_common()
Jacob Keller (2):
blame: allow --contents to work with non-HEAD commit
blame: use different author name for fake commit generated by --contents
Jeff King (90):
ref-filter: drop unused atom parameter from get_worktree_path()
ls-refs: drop config caching
serve: use repository pointer to get config
serve: mark unused parameters in virtual functions
object-name: mark unused parameters in disambiguate callbacks
http-backend: mark argc/argv unused
http-backend: mark unused parameters in virtual functions
ref-filter: mark unused callback parameters
mark "pointless" data pointers in callbacks
run-command: mark error routine parameters as unused
mark unused parameters in signal handlers
list-objects: mark unused callback parameters
for_each_object: mark unused callback parameters
prio-queue: mark unused parameters in comparison functions
notes: mark unused callback parameters
fetch-pack: mark unused parameter in callback function
rewrite_parents(): mark unused callback parameter
for_each_commit_graft(): mark unused callback parameter
userformat_want_item(): mark unused parameter
run_processes_parallel: mark unused callback parameters
help: mark unused parameter in git_unknown_cmd_config()
fsck: factor out index fsck
fsck: check index files in all worktrees
fsck: mention file path for index errors
fsck: check even zero-entry index files
drop pure pass-through config callbacks
bundle: turn on --all-progress-implied by default
bundle: let "-" mean stdin for reading operations
bundle: document handling of "-" as stdin
parse-options: consistently allocate memory in fix_filename()
parse-options: use prefix_filename_except_for_dash() helper
diff: factor out src/dst prefix setup
t4013: add tests for diff prefix options
diff: add --default-prefix option
format-patch: do not respect diff.noprefix
format-patch: add format.noprefix option
add-patch: handle "* Unmerged path" lines
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
range-diff: drop useless "offset" variable from read_patches()
http: support CURLOPT_PROTOCOLS_STR
range-diff: handle unterminated lines in read_patches()
range-diff: use ssize_t for parsed "len" in read_patches()
rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
mailmap: drop debugging code
http: drop unused parameter from start_object_request()
http: mark unused parameter in fill_active_slot() callbacks
transport: mark unused parameters in fetch_refs_from_bundle()
git_connect(): fix corner cases in downgrading v2 to v0
fast-export: drop const when storing anonymized values
fast-export: simplify initialization of anonymized hashmaps
fast-export: factor out anonymized_entry creation
fast-export: de-obfuscate --anonymize-map handling
fast-export: drop data parameter from anonymous generators
fast-export: drop unused parameter from anonymize_commit_message()
Makefile: force -O0 when compiling with SANITIZE=leak
pack-redundant: escalate deprecation warning to an error
docs: document caveats of rev-list's object-name output
fast-import: fix file access when run from subdir
builtins: always pass prefix to parse_options()
builtins: annotate always-empty prefix parameters
builtins: mark unused prefix parameters
mark "argv" as unused when we check argc
t/helper: mark unused argv/argc arguments
parse-options: drop parse_opt_unknown_cb()
pack-redundant: document deprecation
tests: run internal chain-linter under "make test"
tests: replace chainlint subshell with a function
tests: drop here-doc check from internal chain-linter
tests: skip test_eval_ in internal chain-lint
t/lib-httpd: pass PERL_PATH to CGI scripts
v0 protocol: fix infinite loop when parsing multi-valued capabilities
t5512: stop referring to "v1" protocol
v0 protocol: fix sha1/sha256 confusion for capabilities^{}
t5512: add v2 support for "ls-remote --symref" test
t5512: allow any protocol version for filtered symref test
t5512: test "ls-remote --heads --symref" filtering with v0 and v2
v0 protocol: use size_t for capability length/offset
gpg-interface: set trust level of missing key to "undefined"
notes: clean up confusing NULL checks in init_notes()
fetch_bundle_uri(): drop pointless NULL check
t4212: avoid putting git on left-hand side of pipe
parse_commit(): parse timestamp from end of line
parse_commit(): handle broken whitespace-only timestamp
parse_commit(): describe more date-parsing failure modes
doc-diff: drop SOURCE_DATE_EPOCH override
t7001: avoid git on upstream of pipe
t7001: use "ls-files --format" instead of "cut"
t: drop "verbose" helper function
t/lib-httpd: make CGIPassAuth support conditional
Jiang Xin (5):
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
object-info: init request_info before reading arg
Johannes Schindelin (29):
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
t0033: GETTEXT_POISON fix
t0003: GETTEXT_POISON fix, part 1
t0003: GETTEXT_POISON fix, conclusion
t5619: GETTEXT_POISON fix
t5604: GETTEXT_POISON fix, part 1
t5604: GETTEXT_POISON fix, conclusion
clone.c: avoid "exceeds maximum object size" error with GCC v12.x
split-index & fsmonitor: demonstrate a bug
split-index; stop abusing the `base_oid` to strip the "link" extension
fsmonitor: avoid overriding `cache_changed` bits
unpack-trees: take care to propagate the split-index flag
t3701: we don't need no Perl for `add -i` anymore
t5563: prevent "ambiguous redirect"
apply --reject: overwrite existing `.rej` symlink if it exists
gettext: avoid using gettext if the locale dir is not present
tests: avoid using `test_i18ncmp`
Git 2.31.8
Git 2.32.7
Git 2.33.8
Git 2.34.8
Git 2.35.8
Git 2.36.6
Git 2.37.7
Git 2.38.5
Git 2.39.3
Git 2.40.1
gitk: prevent overly long command lines
John Cai (2):
name-rev: make --stdin hidden
attr: teach "--attr-source=<tree>" global option to "git"
John Keeping (1):
format-patch: output header for empty commits
Josh Soref (1):
subtree: support long global flags
Jouke Witteveen (1):
send-email docs: Remove mention of discontinued gmail feature
Junio C Hamano (33):
gpg-interface: lazily initialize and read the configuration
bundle: don't blindly apply prefix_filename() to "-"
Start the 2.41 cycle
The second batch
am: refer to format-patch in the documentation
The third batch
http.c: clear the 'finished' member once we are done with it
The fourth batch
The fifth batch
The sixth batch
e-mail workflow: Message-ID is spelled with ID in both capital letters
The seventh batch
clone: propagate object-format when cloning from void
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
The fourteenth batch
The fifteenth batch
The sixteenth batch
diff: refactor common tail part of dirstat computation
diff: plug leaks in dirstat
t9800: correct misuse of 'show -s --raw' in a test
The seventeenth batch
The eighteenth batch
Git 2.41-rc0
A bit more before -rc1
send-email: clear the $message_id after validation
t9001: mark the script as no longer leak checker clean
Git 2.41-rc1
Kristoffer Haugsbakk (5):
config: tell the user that we expect an ASCII character
doc: interpret-trailers: don’t use heredoc in examples
doc: interpret-trailers: use input redirection
doc: interpret-trailers: don’t use deprecated config
doc: interpret-trailers: fix example
Linus Arver (1):
MyFirstContribution: render literal *
M Hickford (3):
credential/wincred: include wincred.h
credential/wincred: store password_expiry_utc
credential: new attribute oauth_refresh_token
Martin Ågren (2):
gittutorial: drop early mention of origin
gittutorial: wrap literal examples in backticks
Mathias Krause (1):
grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34
Matthew John Cheetham (3):
t5563: add tests for basic and anoymous HTTP access
http: read HTTP WWW-Authenticate response headers
credential: add WWW-Authenticate header to cred requests
Maxim Cournoyer (3):
send-email: extract execute_cmd from recipients_cmd
send-email: add --header-cmd, --no-header-cmd options
send-email: detect empty blank lines in command output
Michael J Gruber (1):
t3070: make chain lint tester happy
Michael Strawbridge (2):
send-email: refactor header generation functions
send-email: expose header information to git-send-email's sendemail-validate hook
Mike Hommey (1):
Handle some compiler versions containing a dash
Nico Rieck (1):
gitk: escape file paths before piping to git log
Oswald Buddenhagen (5):
sequencer: remove pointless rollback_lock_file()
sequencer: rewrite save_head() in terms of write_message()
sequencer: actually translate report in do_exec()
messages: capitalization and punctuation exceptions
t/t3501-revert-cherry-pick.sh: clarify scope of the file
Patrick Steinhardt (27):
receive-pack: fix stale packfile locks when dying
fetch: move reference width calculation into `display_state`
fetch: move output format into `display_state`
fetch: pass the full local reference name to `format_display`
fetch: centralize handling of per-reference format
fetch: centralize logic to print remote URL
fetch: centralize printing of reference updates
commit-graph: fix truncated generation numbers
midx: fix segfault with no packs and invalid preferred pack
repack: fix trying to use preferred pack in alternates
repack: fix generating multi-pack-index with only non-local packs
pack-objects: split out `--stdin-packs` tests into separate file
pack-objects: fix error when packing same pack twice
pack-objects: fix error when same packfile is included and excluded
pack-objects: extend test coverage of `--stdin-packs` with alternates
t/helper: allow chmtime to print verbosely without modifying mtime
repack: honor `-l` when calculating pack geometry
repack: disable writing bitmaps when doing a local repack
fetch: fix `--no-recurse-submodules` with multi-remote fetches
fetch: split out tests for output format
fetch: add a test to exercise invalid output formats
fetch: print left-hand side when fetching HEAD:foo
fetch: refactor calculation of the display table width
fetch: introduce `display_format` enum
fetch: lift up parsing of "fetch.output" config variable
fetch: move option related variables into main function
fetch: introduce machine-parseable "porcelain" output format
Paul Eggert (1):
git-compat-util: use gettimeofday(2) for time(2)
Phillip Wood (8):
wildmatch: fix exponential behavior
wildmatch: avoid undefined behavior
wildmatch: hide internal return values
rebase: stop reading and writing unnecessary strategy state
sequencer: use struct strvec to store merge strategy options
rebase -m: cleanup --strategy-option handling
rebase -m: fix serialization of strategy options
rebase: remove a couple of redundant strategy tests
Raghul Nanth A (1):
describe: enable sparse index for describe
René Scharfe (6):
archive: improve support for running in subdirectory
t5000: use check_mtime()
userdiff: support regexec(3) with multi-byte support
date: remove approxidate_relative()
get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
test-ctype: check EOF
Robin Jarry (1):
send-email: export patch counters in validate environment
Rubén Justo (10):
bisect: fix "reset" when branch is checked out elsewhere
worktree: introduce is_shared_symref()
branch: fix die_if_checked_out() when ignore_current_worktree
rebase: refuse to switch to a branch already checked out elsewhere (test)
switch: reject if the branch is already checked out elsewhere (test)
branch: test for failures while renaming branches
branch: use get_worktrees() in copy_or_rename_branch()
branch: description for orphan branch errors
branch: rename orphan branches in any worktree
branch: avoid unnecessary worktrees traversals
SZEDER Gábor (6):
treewide: include parse-options.h in source files
treewide: remove unnecessary inclusions of parse-options.h from headers
parse-options.h: use consistent name for the callback parameters
parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
parse-options.h: use designated initializers in OPT_* macros
cocci: remove 'unused.cocci'
Shuqi Liang (3):
write-tree: integrate with sparse index
t1092: add tests for `git diff-files`
diff-files: integrate with sparse index
Siddharth Singh (1):
hashmap.h: fix minor typo
Sohom Datta (1):
docs: clarify git rm --cached function in gitignore note
Stanislav Malishevskiy (1):
http: add support for different sslcert and sslkey types.
Tao Klerks (1):
mergetool: new config guiDefault supports auto-toggling gui by DISPLAY
Taylor Blau (37):
commit-graph: introduce `ensure_generations_valid()`
pack-write.c: plug a leak in stage_tmp_packfiles()
t5325: mark as leak-free
pack-revindex: make `load_pack_revindex` take a repository
pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
pack-revindex: introduce `pack.readReverseIndex`
config: enable `pack.writeReverseIndex` by default
t: invert `GIT_TEST_WRITE_REV_INDEX`
t1300: demonstrate failure when renaming sections with long lines
config: avoid fixed-sized buffer when renaming/deleting a section
config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
Git 2.30.9
pack-write.c: plug a leak in stage_tmp_packfiles()
builtin/repack.c: fix incorrect reference to '-C'
builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
t/t5304-prune.sh: prepare for `gc --cruft` by default
t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
t/t6500-gc.sh: refactor cruft pack tests
t/t6500-gc.sh: add additional test cases
t/t9300-fast-import.sh: prepare for `gc --cruft` by default
builtin/gc.c: make `gc.cruftPacks` enabled by default
repository.h: drop unused `gc_cruft_packs`
string-list: multi-delimiter `string_list_split_in_place()`
string-list: introduce `string_list_setlen()`
t/helper/test-hashmap.c: avoid using `strtok()`
t/helper/test-oidmap.c: avoid using `strtok()`
t/helper/test-json-writer.c: avoid using `strtok()`
banned.h: mark `strtok()` and `strtok_r()` as banned
credential.c: store "wwwauth[]" values in `credential_read()`
t/lib-credential.sh: ensure credential helpers handle long headers
contrib/credential: avoid fixed-size buffer in osxkeychain
contrib/credential: remove 'gnome-keyring' credential helper
contrib/credential: .gitignore libsecret build artifacts
contrib/credential: avoid fixed-size buffer in libsecret
contrib/credential: embiggen fixed-size buffer in wincred
run-command.c: fix missing include under `NO_PTHREADS`
Teng Long (1):
push: introduce '--branches' option
William Sprent (2):
builtin/sparse-checkout: remove NEED_WORK_TREE flag
builtin/sparse-checkout: add check-rules command
ZheNing Hu (2):
receive-pack: fix funny ref error messsage
push: allow delete single-level ref
brian m. carlson (1):
upload-pack: advertise capabilities when cloning empty repos
Ævar Arnfjörð Bjarmason (33):
auto-crlf tests: don't lose exit code in loops and outside tests
t/lib-patch-mode.sh: fix ignored exit codes
tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
tests: don't lose "git" exit codes in "! ( git ... | grep )"
tests: don't lose exit status with "test <op> $(git ...)"
tests: don't lose misc "git" exit codes
sequencer.c: fix overflow & segfault in parse_strategy_opts()
cocci: remove dead rule from "the_repository.pending.cocci"
cocci: fix incorrect & verbose "the_repository" rules
cocci: sort "the_repository" rules by header
cocci: add missing "the_repository" macros to "pending"
cocci: apply the "cache.h" part of "the_repository.pending"
cocci: apply the "commit-reach.h" part of "the_repository.pending"
cocci: apply the "commit.h" part of "the_repository.pending"
cocci: apply the "diff.h" part of "the_repository.pending"
cocci: apply the "object-store.h" part of "the_repository.pending"
cocci: apply the "pretty.h" part of "the_repository.pending"
cocci: apply the "packfile.h" part of "the_repository.pending"
cocci: apply the "promisor-remote.h" part of "the_repository.pending"
cocci: apply the "refs.h" part of "the_repository.pending"
cocci: apply the "rerere.h" part of "the_repository.pending"
cocci: apply the "revision.h" part of "the_repository.pending"
post-cocci: adjust comments for recent repo_* migration
libs: use "struct repository *" argument, not "the_repository"
config tests: cover blind spots in git_die_config() tests
config tests: add "NULL" tests for *_get_value_multi()
config API: add and use a "git_config_get()" family of functions
versioncmp.c: refactor config reading next commit
config API: have *_multi() return an "int" and take a "dest"
for-each-repo: error on bad --config
config API users: test for *_get_value_multi() segfaults
config API: add "string" version of *_value_multi(), fix segfaults
for-each-repo: with bad config, don't conflate <path> and <cmd>
Øystein Walle (2):
ref-filter: remove unused ref_format member
branch, for-each-ref, tag: add option to omit empty lines
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.41.0-rc0
@ 2023-05-16 3:42 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-05-16 3:42 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.41.0-rc0 is now available for
testing at the usual places. It is comprised of 507 non-merge
commits since v2.40.0, contributed by 74 people, 23 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.41.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.40.0 are as follows.
Welcome to the Git development community!
Adam Johnson, André Baptista, Andy Koppe, Clement Mabileau,
Cristian Le, Daniel Watson, D. Ben Knoble, Edwin Kofler, Jonas
Haag, Jouke Witteveen, Matthias Görgens, Maxim Cournoyer,
Michael Henry, Michael Strawbridge, Nico Rieck, Raghul Nanth
A, Rolf Eike Beer, Shuqi Liang, Siddharth Singh, Stanislav
Malishevskiy, Stephane Odul, Vítor Pinho, and Xin Xing.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Andreas Schwab, Andrei
Rybak, Beat Bolli, Derrick Stolee, Elijah Newren, Emily Shaffer,
Eric Sunshine, Eric Wong, Fangyi Zhou, Felipe Contreras, Glen
Choo, Han Xin, Jacob Keller, Jeff King, Jiang Xin, Joakim
Petersen, Johannes Schindelin, Johannes Sixt, John Cai, John
Keeping, Josh Soref, Junio C Hamano, Kristoffer Haugsbakk, Linus
Arver, Linus Torvalds, Martin Ågren, Mathias Krause, Matthew
John Cheetham, M Hickford, Michael J Gruber, Mike Hommey, Oswald
Buddenhagen, Øystein Walle, Patrick Steinhardt, Paul Eggert,
Philippe Blain, Phillip Wood, René Scharfe, Robin Jarry,
Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor, Tao Klerks,
Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.41 Release Notes (draft)
===============================
UI, Workflows & Features
* Allow information carried on the WWW-AUthenticate header to be
passed to the credential helpers.
* A new "fetch.hideRefs" option can be used to exclude specified refs
from "rev-list --objects --stdin --not --all" traversal for
checking object connectivity, most useful when there are many
unrelated histories in a single repository.
* "git push" has been taught to allow deletion of refs with one-level
names to help repairing a repository who acquired such a ref by
mistake. In general, we don't encourage use of such a ref, and
creation or update to such a ref is rejected as before.
* Allow "git bisect reset" to check out the original branch when the
branch is already checked out in a different worktree linked to the
same repository.
* A few subcommands have been taught to stop users from working on a
branch that is being used in another worktree linked to the same
repository.
* "git format-patch" learned to write a log-message only output file
for empty commits.
* "git format-patch" honors the src/dst prefixes set to nonstandard
values with configuration variables like "diff.noprefix", causing
receiving end of the patch that expects the standard -p1 format to
break. "format-patch" has been taught to ignore end-user configuration
and always use the standard prefixes.
This is a backward compatibility breaking change.
* Lift the limitation that colored prompts can only be used with
PROMPT_COMMAND mode.
* "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
but now it finds the origins of lines starting at <file> contents
through the history that leads to <rev>.
* "git pack-redundant" gave a warning when run, as the command has
outlived its usefulness long ago and is nominated for future
removal. Now we escalate to give an error.
* "git clone" from an empty repository learned to propagate the
choice of the hash algorithm from the source repository to the
newly created repository.
* "git mergetool" and "git difftool" learns a new configuration
guiDefault to optionally favor configured guitool over non-gui-tool
automatically when $DISPLAY is set.
* "git branch -d origin/master" would say "no such branch", but it is
likely a missed "-r" if refs/remotes/origin/master exists. The
command has been taught to give such a hint in its error message.
* Clean-up of the code path that deals with merge strategy option
handling in "git rebase".
* "git clone --local" stops copying from an original repository that
has symbolic links inside its $GIT_DIR; an error message when that
happens has been updated.
* "git branch --format=..." and "git format-patch --format=..."
learns "--omit-empty" to hide refs that whose formatting result
becomes an empty string from the output.
* The sendemail-validate validate hook learned to pass the total
number of input files and where in the sequence each invocation is
via environment variables.
* When "gc" needs to retain unreachable objects, packing them into
cruft packs (instead of exploding them into loose object files) has
been offered as a more efficient option for some time. Now the use
of cruft packs has been made the default and no longer considered
an experimental feature.
* The output given by "git blame" that attributes a line to contents
taken from the file specified by the "--contents" option shows it
differently from a line attributed to the working tree file.
* "git send-email" learned to give the e-mail headers to the validate
hook by passing an extra argument from the command line.
* The credential subsystem learns to help OAuth framework.
* The titles of manual pages used to be chomped at an unreasonably
short limit, which has been removed.
* Error messages given when working on an unborn branch that is
checked out in another worktree have been improved.
* The documentation was misleading about the interaction between
GIT_DEFAULT_HASH and "git clone", which has been clarified to
stress that the variable is to be ignored by the command.
* "git send-email" learned "--header-cmd=<cmd>" that can inject
arbitrary e-mail header lines to the outgoing messages.
* "git fsck" learned to detect bit-flip breakages in the reachability
bitmap files.
* The "--stdin" option of "git name-rev" has been replaced with
the "--annotate-stdin" option more than a year ago. We stop
advertising it in the "git name-rev -h" output.
* "git push --all" gained an alias "git push --branches".
* "git fetch" learned the "--porcelain" option that emits what it did
in a machine-parseable format.
Performance, Internal Implementation, Development Support etc.
* Code clean-up to clarify directory traversal API.
* Code clean-up to clarify the rule that "git-compat-util.h" must be
the first to be included.
* More work towards -Wunused.
* Instead of forcing each command to choose to honor GPG related
configuration variables, make the subsystem lazily initialize
itself.
* Remove workaround for ancient versions of DocBook to make it work
correctly with groff, which has not been necessary since docbook
1.76 from 2010.
* Code clean-up to include and/or uninclude parse-options.h file as
needed.
* The code path that reports what "git fetch" did to each ref has
been cleaned up.
* Assorted config API updates.
* A few configuration variables to tell the cURL library that
different types of ssl-cert and ssl-key are in use have been added.
* Split key function and data structure definitions out of cache.h to
new header files and adjust the users.
* "git fetch --all" does not have to download and handle the same
bundleURI over and over, which has been corrected.
* "git sparse-checkout" command learns a debugging aid for the sparse
rule definitions.
* "git write-tree" learns to work better with sparse-index.
* The on-disk reverse index that allows mapping from the pack offset
to the object name for the object stored at the offset has been
enabled by default.
* "git fsck" learned to validate the on-disk pack reverse index files.
* strtok() and strtok_r() are banned in this codebase.
* The detect-compilers script to help auto-tweaking the build system
had trouble working with compilers whose version number has extra
suffixes. The script has been taught that certain suffixes (like
"-win32" in "gcc 10-win32") can be safely stripped as they share
the same features and bugs with the version without the suffix.
* ctype tests have been taught to test EOF, too.
* The implementation of credential helpers used fgets() over fixed
size buffers to read protocol messages, causing the remainder of
the folded long line to trigger unexpected behaviour, which has
been corrected.
* The implementation of the default "negotiator", used to find common
ancestor over the network for object tranfer, used to be recursive;
it was updated to be iterative to conserve stackspace usage.
* Our custom callout formatter is no longer used in the documentation
formatting toolchain, as the upstream default ones give better
output these days.
* The tracing mechanism learned to notice and report when
auto-discovered bare repositories are being used, as allowing so
without explicitly stating the user intends to do so (with setting
GIT_DIR for example) can be used with social engineering as an
attack vector.
* "git diff-files" learned not to expand sparse-index unless needed.
Fixes since v2.40
-----------------
* "git fsck" learned to check the index files in other worktrees,
just like "git gc" honors them as anchoring points.
(merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).
* Fix a segfaulting loop. The function and its caller may need
further clean-up.
(merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).
* "git restore" supports options like "--ours" that are only
meaningful during a conflicted merge, but these options are only
meaningful when updating the working tree files. These options are
marked to be incompatible when both "--staged" and "--worktree" are
in effect.
(merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).
* Simplify UI to control progress meter given by "git bundle" command.
(merge 8b95521edb jk/bundle-progress later to maint).
* "git bundle" learned that "-" is a common way to say that the input
comes from the standard input and/or the output goes to the
standard output. It used to work only for output and only from the
root level of the working tree.
(merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).
* Once we start running, we assumed that the list of alternate object
databases would never change. Hook into the machinery used to
update the list of packfiles during runtime to update this list as
well.
(merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).
* The code to parse "git rebase -X<opt>" was not prepared to see an
unparsable option string, which has been corrected.
(merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).
* "git add -p" while the index is unmerged sometimes failed to parse
the diff output it internally produces and died, which has been
corrected.
(merge 28d1122f9c jk/add-p-unmerged-fix later to maint).
* Fix for a "ls-files --format="%(path)" that produced nonsense
output, which was a bug in 2.38.
(merge cfb62dd006 aj/ls-files-format-fix later to maint).
* "git receive-pack" that responds to "git push" requests failed to
clean a stale lockfile when killed in the middle, which has been
corrected.
(merge c55c30669c ps/receive-pack-unlock-before-die later to maint).
* "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
parsed with GET_OID_QUIETLY option, did not quietly fail, which has
been corrected.
(merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).
* Transports that do not support protocol v2 did not correctly fall
back to protocol v0 under certain conditions, which has been
corrected.
(merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).
* time(2) on glib 2.31+, especially on Linux, goes out of sync with
higher resolution timers used for gettimeofday(2) and by the
filesystem. Replace all calls to it with a git_time() wrapper and
(merge 370ddcbc89 pe/time-use-gettimeofday later to maint).
* Code clean-up to use designated initializers in parse-options API.
(merge 353e6d4554 sg/parse-options-h-initializers later to maint).
* A recent-ish change to allow unicode character classes to be used
with "grep -P" triggered a JIT bug in older pcre2 libraries.
The problematic change in Git built with these older libraries has
been disabled to work around the bug.
(merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).
* The wildmatch library code unlearns exponential behaviour it
acquired some time ago since it was borrowed from rsync.
(merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).
* The index files can become corrupt under certain conditions when
the split-index feature is in use, especially together with
fsmonitor, which have been corrected.
(merge 061dd722dc js/split-index-fixes later to maint).
* Document what the pathname-looking strings in "rev-list --object"
output are for and what they mean.
(merge 15364d2a3c jk/document-rev-list-object-name later to maint).
* Fix unnecessary truncation of generation numbers used in-core.
(merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).
* Code clean-up around the use of the_repository.
(merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).
* Consistently spell "Message-ID" as such, not "Message-Id".
(merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).
* Correct use of an uninitialized structure member.
(merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).
* Tests had a few places where we ignored PERL_PATH and blindly used
/usr/bin/perl, which have been corrected.
(merge c1917156a0 jk/use-perl-path-consistently later to maint).
* Documentation mark-up fix.
(merge 78b6369e67 la/mfc-markup-fix later to maint).
* Doc toolchain update to remove old workaround for AsciiDoc.
(merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).
* The userdiff regexp patterns for various filetypes that are built
into the system have been updated to avoid triggering regexp errors
from UTF-8 aware regex engines.
(merge be39144954 rs/userdiff-multibyte-regex later to maint).
* The approxidate() API has been simplified by losing an extra
function that did the same thing as another one.
(merge 8a7f0b666f rs/remove-approxidate-relative later to maint).
* Code clean-up to replace a hardcoded constant with a CPP macro.
(merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).
* Doc build simplification.
(merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).
* "git archive" run from a subdirectory mishandled attributes and
paths outside the current directory.
(merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).
* The code to parse capability list for v0 on-wire protocol fell into
an infinite loop when a capability appears multiple times, which
has been corrected.
* Geometric repacking ("git repack --geometric=<n>") in a repository
that borrows from an alternate object database had various corner
case bugs, which have been corrected.
(merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).
* The "%GT" placeholder for the "--format" option of "git log" and
friends caused BUG() to trigger on a commit signed with an unknown
key, which has been corrected.
(merge 7891e46585 jk/gpg-trust-level-fix later to maint).
* The completion script used to use bare "read" without the "-r"
option to read the contents of various state files, which risked
getting confused with backslashes in them. This has been
corrected.
(merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).
* A small API fix to the ort merge strategy backend.
(merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).
* The commit object parser has been taught to be a bit more lenient
to parse timestamps on the author/committer line with a malformed
author/committer ident.
(merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).
* Retitle a test script with an overly narrow name.
(merge 8bb19c14fb ob/t3501-retitle later to maint).
* Doc update to clarify how text and eol attributes interact to
specify the end-of-line conversion.
(merge 6696077ace ah/doc-attributes-text later to maint).
* Gitk updates from GfW project.
(merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).
* "git diff --dirstat" leaked memory, which has been plugged.
(merge 83973981eb jc/dirstat-plug-leaks later to maint).
* "git merge-tree" reads the basic configuration, which can be used
by git forges to disable replace-refs feature.
(merge b6551feadf ds/merge-tree-use-config later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f7111175df as/doc-markup-fix later to maint).
(merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
(merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
(merge b10cbdac4c bb/unicode-width-table-15 later to maint).
(merge 3457b50e8c ab/retire-scripted-add-p later to maint).
(merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
(merge ec063d2591 ss/hashmap-typofix later to maint).
(merge 1aaed69d11 rs/archive-mtime later to maint).
(merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
(merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
(merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
(merge cc48ddd937 jk/chainlint-fixes later to maint).
(merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
(merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
(merge fd72637423 ar/t2024-checkout-output-fix later to maint).
(merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
(merge b734fe49fd ob/messages-capitalize-exception later to maint).
(merge ad353d7e77 ma/gittutorial-fixes later to maint).
(merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
(merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
(merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
(merge 3d77fbb664 ar/config-count-tests-updates later to maint).
(merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).
----------------------------------------------------------------
Changes since v2.40.0 are as follows:
Adam Johnson (1):
ls-files: fix "--format" output of relative paths
Alex Henrie (5):
rebase: add documentation and test for --no-rebase-merges
rebase: deprecate --rebase-merges=""
rebase: add a config option for --rebase-merges
format-patch: correct documentation of --thread without an argument
docs: rewrite the documentation of the text and eol attributes
Andreas Schwab (1):
git-merge-tree.txt: replace spurious HTML entity
Andrei Rybak (19):
t1005: assert output of ls-files
t1006: assert error output of cat-file
t1010: don't create unused files
t1302: don't create unused file
t1400: assert output of update-ref
t1404: don't create unused file
t1507: assert output of rev-parse
t3060: fix mention of function prune_index
t2107: fix mention of the_index.cache_changed
t2024: fix loose/strict local base branch DWIM test
t1300: drop duplicate test
t1300: check stderr for "ignores pairs" tests
t1300: add tests for missing keys
t0300: don't create unused file
t1300: fix config file syntax error descriptions
t1300: don't create unused files
t1450: don't create unused files
t1502: don't create unused files
t2019: don't create unused files
Andy Koppe (1):
restore: fault --staged --worktree with merge opts
Beat Bolli (1):
unicode: update the width tables to Unicode 15
Clement Mabileau (1):
branch: improve error log on branch not found by checking remotes refs
Daniel Watson (1):
SubmittingPatches: clarify MUA discussion with "the"
Derrick Stolee (19):
object-file: reprepare alternates when necessary
for-each-ref: add --stdin option
for-each-ref: explicitly test no matches
commit-graph: refactor compute_topological_levels()
commit-graph: simplify compute_generation_numbers()
commit-graph: return generation from memory
commit-reach: implement ahead_behind() logic
for-each-ref: add ahead-behind format atom
commit-reach: add tips_reachable_from_bases()
p2000: remove stray '--sparse' flag from test
fetch: download bundles once, even with --all
ci: update 'static-analysis' to Ubuntu 22.04
fsck: create scaffolding for rev-index checks
fsck: check rev-index checksums
fsck: check rev-index position values
fsck: validate .rev file header
fsck: verify checksums of all .bitmap files
fsck: use local repository
merge-tree: load default git config
Edwin Kofler (1):
completion: suppress unwanted unescaping of `read`
Elijah Newren (94):
treewide: ensure one of the appropriate headers is sourced first
treewide: remove unnecessary git-compat-util.h includes in headers
treewide: remove unnecessary cache.h includes
treewide: remove unnecessary cache.h includes in source files
alloc.h: move ALLOC_GROW() functions from cache.h
hash.h: move some oid-related declarations from cache.h
hex.h: move some hex-related declarations from cache.h
cache.h: remove dependence on hex.h; make other files include it explicitly
pretty.h: move has_non_ascii() declaration from commit.h
ident.h: move ident-related declarations out of cache.h
object.h: stop depending on cache.h; make cache.h depend on object.h
dir.h: refactor to no longer need to include cache.h
object-store.h: move struct object_info from cache.h
replace-object.h: move read_replace_refs declaration from cache.h to here
treewide: replace cache.h with more direct headers, where possible
Remove unnecessary includes of builtin.h
diff.h: remove unnecessary include of object.h
t2021: fix platform-specific leftover cruft
unpack-trees: heed requests to overwrite ignored files
dir: separate public from internal portion of dir_struct
dir: add a usage note to exclude_per_dir
dir: mark output only fields of dir_struct as such
unpack-trees: clean up some flow control
sparse-checkout: avoid using internal API of unpack-trees
sparse-checkout: avoid using internal API of unpack-trees, take 2
unpack_trees: start splitting internal fields from public API
unpack-trees: mark fields only used internally as internal
unpack-trees: rewrap a few overlong lines from previous patch
unpack-trees: special case read-tree debugging as internal usage
unpack-trees: add usage notices around df_conflict_entry
treewide: remove unnecessary cache.h inclusion from a few headers
treewide: be explicit about dependence on gettext.h
treewide: remove unnecessary inclusion of gettext.h
treewide: remove unnecessary cache.h inclusion from several sources
environment: move comment_line_char from cache.h
abspath.h: move absolute path functions from cache.h
cache.h: remove expand_user_path()
path.h: move function declarations for path.c functions from cache.h
wrapper.h: move declarations for wrapper.c functions from cache.h
treewide: remove unnecessary includes of cache.h
environment.h: move declarations for environment.c functions from cache.h
treewide: remove cache.h inclusion due to environment.h changes
setup.h: move declarations for setup.c functions from cache.h
treewide: remove cache.h inclusion due to setup.h changes
write-or-die.h: move declarations for write-or-die.c functions from cache.h
csum-file.h: remove unnecessary inclusion of cache.h
treewide: be explicit about dependence on trace.h & trace2.h
treewide: be explicit about dependence on advice.h
treewide: be explicit about dependence on convert.h
treewide: be explicit about dependence on pack-revindex.h
treewide: be explicit about dependence on oid-array.h
treewide: be explicit about dependence on mem-pool.h
treewide: remove unnecessary cache.h inclusion
object-name.h: move declarations for object-name.c functions from cache.h
treewide: remove cache.h inclusion due to object-name.h changes
git-zlib: move declarations for git-zlib functions from cache.h
treewide: remove cache.h inclusion due to git-zlib changes
object-file.h: move declarations for object-file.c functions from cache.h
treewide: remove cache.h inclusion due to object-file.h changes
object.h: move some inline functions and defines from cache.h
treewide: remove cache.h inclusion due to object.h changes
editor: move editor-related functions and declarations into common file
treewide: remove cache.h inclusion due to editor.h changes
pager.h: move declarations for pager.c functions from cache.h
treewide: remove cache.h inclusion due to pager.h changes
cache.h: remove unnecessary includes
treewide: remove double forward declaration of read_in_full
treewide: reduce includes of cache.h in other headers
mailmap, quote: move declarations of global vars to correct unit
protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
treewide: be explicit about dependence on strbuf.h
symlinks.h: move declarations for symlinks.c functions from cache.h
packfile.h: move pack_window and pack_entry from cache.h
server-info.h: move declarations for server-info.c functions from cache.h
copy.h: move declarations for copy.c functions from cache.h
base85.h: move declarations for base85.c functions from cache.h
pkt-line.h: move declarations for pkt-line.c functions from cache.h
match-trees.h: move declarations for match-trees.c functions from cache.h
ws.h: move declarations for ws.c functions from cache.h
versioncmp.h: move declarations for versioncmp.c functions from cache.h
dir.h: move DTYPE defines from cache.h
tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
hash-ll.h: split out of hash.h to remove dependency on repository.h
cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
cache,tree: move basic name compare functions from read-cache to tree
treewide: remove cache.h inclusion due to previous changes
cache.h: remove unnecessary headers
fsmonitor: reduce includes of cache.h
commit.h: reduce unnecessary includes
object-store.h: reduce unnecessary includes
diff.h: reduce unnecessary includes
reftable: ensure git-compat-util.h is the first (indirect) include
merge-ort: fix calling merge_finalize() with no intermediate merge
t5583: fix shebang line
Emily Shaffer (1):
mailmap: change primary address for Emily Shaffer
Eric Sunshine (1):
tests: diagnose unclosed here-doc in chainlint.pl
Eric Wong (3):
commit-reach: avoid NULL dereference
fetch: support hideRefs to speed up connectivity checks
fetch: pass --no-write-fetch-head to subprocesses
Fangyi Zhou (1):
rebase: fix capitalisation autoSquash in i18n string
Felipe Contreras (16):
advice: add diverging advice for novices
test: simplify counts aggregation
test: don't print aggregate-results command
object-name: fix quiet @{u} parsing
completion: prompt: use generic colors
doc: remove GNU troff workaround
doc: remove manpage-base-url workaround
doc: asciidoc: remove custom header macro
doc: simplify man version
doc: set actual revdate for manpages
doc: git-checkout: trivial callout cleanup
doc: git-checkout: reorganize examples
doc: remove custom callouts format
doc: manpage: remove maximum title length
doc: doc-diff: specify date
test: rev-parse-upstream: add missing cmp
Glen Choo (10):
config.c: plumb config_source through static fns
config.c: don't assign to "cf_global" directly
config.c: create config_reader and the_reader
config.c: plumb the_reader through callbacks
config.c: remove current_config_kvi
config.c: remove current_parsing_scope
config: report cached filenames in die_bad_number()
config.c: rename "struct config_source cf"
clone: error specifically with --local and symlinked objects
setup: trace bare repository setups
Han Xin (2):
negotiator/default: avoid stack overflow
negotiator/skipping: fix some problems in mark_common()
Jacob Keller (2):
blame: allow --contents to work with non-HEAD commit
blame: use different author name for fake commit generated by --contents
Jeff King (89):
ref-filter: drop unused atom parameter from get_worktree_path()
ls-refs: drop config caching
serve: use repository pointer to get config
serve: mark unused parameters in virtual functions
object-name: mark unused parameters in disambiguate callbacks
http-backend: mark argc/argv unused
http-backend: mark unused parameters in virtual functions
ref-filter: mark unused callback parameters
mark "pointless" data pointers in callbacks
run-command: mark error routine parameters as unused
mark unused parameters in signal handlers
list-objects: mark unused callback parameters
for_each_object: mark unused callback parameters
prio-queue: mark unused parameters in comparison functions
notes: mark unused callback parameters
fetch-pack: mark unused parameter in callback function
rewrite_parents(): mark unused callback parameter
for_each_commit_graft(): mark unused callback parameter
userformat_want_item(): mark unused parameter
run_processes_parallel: mark unused callback parameters
help: mark unused parameter in git_unknown_cmd_config()
fsck: factor out index fsck
fsck: check index files in all worktrees
fsck: mention file path for index errors
fsck: check even zero-entry index files
drop pure pass-through config callbacks
bundle: turn on --all-progress-implied by default
bundle: let "-" mean stdin for reading operations
bundle: document handling of "-" as stdin
parse-options: consistently allocate memory in fix_filename()
parse-options: use prefix_filename_except_for_dash() helper
diff: factor out src/dst prefix setup
t4013: add tests for diff prefix options
diff: add --default-prefix option
format-patch: do not respect diff.noprefix
format-patch: add format.noprefix option
add-patch: handle "* Unmerged path" lines
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
range-diff: drop useless "offset" variable from read_patches()
http: support CURLOPT_PROTOCOLS_STR
range-diff: handle unterminated lines in read_patches()
range-diff: use ssize_t for parsed "len" in read_patches()
rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
mailmap: drop debugging code
http: drop unused parameter from start_object_request()
http: mark unused parameter in fill_active_slot() callbacks
transport: mark unused parameters in fetch_refs_from_bundle()
git_connect(): fix corner cases in downgrading v2 to v0
fast-export: drop const when storing anonymized values
fast-export: simplify initialization of anonymized hashmaps
fast-export: factor out anonymized_entry creation
fast-export: de-obfuscate --anonymize-map handling
fast-export: drop data parameter from anonymous generators
fast-export: drop unused parameter from anonymize_commit_message()
Makefile: force -O0 when compiling with SANITIZE=leak
pack-redundant: escalate deprecation warning to an error
docs: document caveats of rev-list's object-name output
fast-import: fix file access when run from subdir
builtins: always pass prefix to parse_options()
builtins: annotate always-empty prefix parameters
builtins: mark unused prefix parameters
mark "argv" as unused when we check argc
t/helper: mark unused argv/argc arguments
parse-options: drop parse_opt_unknown_cb()
pack-redundant: document deprecation
tests: run internal chain-linter under "make test"
tests: replace chainlint subshell with a function
tests: drop here-doc check from internal chain-linter
tests: skip test_eval_ in internal chain-lint
t/lib-httpd: pass PERL_PATH to CGI scripts
v0 protocol: fix infinite loop when parsing multi-valued capabilities
t5512: stop referring to "v1" protocol
v0 protocol: fix sha1/sha256 confusion for capabilities^{}
t5512: add v2 support for "ls-remote --symref" test
t5512: allow any protocol version for filtered symref test
t5512: test "ls-remote --heads --symref" filtering with v0 and v2
v0 protocol: use size_t for capability length/offset
gpg-interface: set trust level of missing key to "undefined"
notes: clean up confusing NULL checks in init_notes()
fetch_bundle_uri(): drop pointless NULL check
t4212: avoid putting git on left-hand side of pipe
parse_commit(): parse timestamp from end of line
parse_commit(): handle broken whitespace-only timestamp
parse_commit(): describe more date-parsing failure modes
doc-diff: drop SOURCE_DATE_EPOCH override
t7001: avoid git on upstream of pipe
t7001: use "ls-files --format" instead of "cut"
t: drop "verbose" helper function
Jiang Xin (5):
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
object-info: init request_info before reading arg
Johannes Schindelin (29):
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
t0033: GETTEXT_POISON fix
t0003: GETTEXT_POISON fix, part 1
t0003: GETTEXT_POISON fix, conclusion
t5619: GETTEXT_POISON fix
t5604: GETTEXT_POISON fix, part 1
t5604: GETTEXT_POISON fix, conclusion
clone.c: avoid "exceeds maximum object size" error with GCC v12.x
split-index & fsmonitor: demonstrate a bug
split-index; stop abusing the `base_oid` to strip the "link" extension
fsmonitor: avoid overriding `cache_changed` bits
unpack-trees: take care to propagate the split-index flag
t3701: we don't need no Perl for `add -i` anymore
t5563: prevent "ambiguous redirect"
apply --reject: overwrite existing `.rej` symlink if it exists
gettext: avoid using gettext if the locale dir is not present
tests: avoid using `test_i18ncmp`
Git 2.31.8
Git 2.32.7
Git 2.33.8
Git 2.34.8
Git 2.35.8
Git 2.36.6
Git 2.37.7
Git 2.38.5
Git 2.39.3
Git 2.40.1
gitk: prevent overly long command lines
John Cai (1):
name-rev: make --stdin hidden
John Keeping (1):
format-patch: output header for empty commits
Josh Soref (1):
subtree: support long global flags
Jouke Witteveen (1):
send-email docs: Remove mention of discontinued gmail feature
Junio C Hamano (29):
gpg-interface: lazily initialize and read the configuration
bundle: don't blindly apply prefix_filename() to "-"
Start the 2.41 cycle
The second batch
am: refer to format-patch in the documentation
The third batch
http.c: clear the 'finished' member once we are done with it
The fourth batch
The fifth batch
The sixth batch
e-mail workflow: Message-ID is spelled with ID in both capital letters
The seventh batch
clone: propagate object-format when cloning from void
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
The fourteenth batch
The fifteenth batch
The sixteenth batch
diff: refactor common tail part of dirstat computation
diff: plug leaks in dirstat
t9800: correct misuse of 'show -s --raw' in a test
The seventeenth batch
The eighteenth batch
Git 2.41-rc0
Kristoffer Haugsbakk (5):
config: tell the user that we expect an ASCII character
doc: interpret-trailers: don’t use heredoc in examples
doc: interpret-trailers: use input redirection
doc: interpret-trailers: don’t use deprecated config
doc: interpret-trailers: fix example
Linus Arver (1):
MyFirstContribution: render literal *
M Hickford (3):
credential/wincred: include wincred.h
credential/wincred: store password_expiry_utc
credential: new attribute oauth_refresh_token
Martin Ågren (2):
gittutorial: drop early mention of origin
gittutorial: wrap literal examples in backticks
Mathias Krause (1):
grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34
Matthew John Cheetham (3):
t5563: add tests for basic and anoymous HTTP access
http: read HTTP WWW-Authenticate response headers
credential: add WWW-Authenticate header to cred requests
Maxim Cournoyer (3):
send-email: extract execute_cmd from recipients_cmd
send-email: add --header-cmd, --no-header-cmd options
send-email: detect empty blank lines in command output
Michael J Gruber (1):
t3070: make chain lint tester happy
Michael Strawbridge (2):
send-email: refactor header generation functions
send-email: expose header information to git-send-email's sendemail-validate hook
Mike Hommey (1):
Handle some compiler versions containing a dash
Nico Rieck (1):
gitk: escape file paths before piping to git log
Oswald Buddenhagen (5):
sequencer: remove pointless rollback_lock_file()
sequencer: rewrite save_head() in terms of write_message()
sequencer: actually translate report in do_exec()
messages: capitalization and punctuation exceptions
t/t3501-revert-cherry-pick.sh: clarify scope of the file
Patrick Steinhardt (27):
receive-pack: fix stale packfile locks when dying
fetch: move reference width calculation into `display_state`
fetch: move output format into `display_state`
fetch: pass the full local reference name to `format_display`
fetch: centralize handling of per-reference format
fetch: centralize logic to print remote URL
fetch: centralize printing of reference updates
commit-graph: fix truncated generation numbers
midx: fix segfault with no packs and invalid preferred pack
repack: fix trying to use preferred pack in alternates
repack: fix generating multi-pack-index with only non-local packs
pack-objects: split out `--stdin-packs` tests into separate file
pack-objects: fix error when packing same pack twice
pack-objects: fix error when same packfile is included and excluded
pack-objects: extend test coverage of `--stdin-packs` with alternates
t/helper: allow chmtime to print verbosely without modifying mtime
repack: honor `-l` when calculating pack geometry
repack: disable writing bitmaps when doing a local repack
fetch: fix `--no-recurse-submodules` with multi-remote fetches
fetch: split out tests for output format
fetch: add a test to exercise invalid output formats
fetch: print left-hand side when fetching HEAD:foo
fetch: refactor calculation of the display table width
fetch: introduce `display_format` enum
fetch: lift up parsing of "fetch.output" config variable
fetch: move option related variables into main function
fetch: introduce machine-parseable "porcelain" output format
Paul Eggert (1):
git-compat-util: use gettimeofday(2) for time(2)
Phillip Wood (8):
wildmatch: fix exponential behavior
wildmatch: avoid undefined behavior
wildmatch: hide internal return values
rebase: stop reading and writing unnecessary strategy state
sequencer: use struct strvec to store merge strategy options
rebase -m: cleanup --strategy-option handling
rebase -m: fix serialization of strategy options
rebase: remove a couple of redundant strategy tests
Raghul Nanth A (1):
describe: enable sparse index for describe
René Scharfe (6):
archive: improve support for running in subdirectory
t5000: use check_mtime()
userdiff: support regexec(3) with multi-byte support
date: remove approxidate_relative()
get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
test-ctype: check EOF
Robin Jarry (1):
send-email: export patch counters in validate environment
Rubén Justo (10):
bisect: fix "reset" when branch is checked out elsewhere
worktree: introduce is_shared_symref()
branch: fix die_if_checked_out() when ignore_current_worktree
rebase: refuse to switch to a branch already checked out elsewhere (test)
switch: reject if the branch is already checked out elsewhere (test)
branch: test for failures while renaming branches
branch: use get_worktrees() in copy_or_rename_branch()
branch: description for orphan branch errors
branch: rename orphan branches in any worktree
branch: avoid unnecessary worktrees traversals
SZEDER Gábor (6):
treewide: include parse-options.h in source files
treewide: remove unnecessary inclusions of parse-options.h from headers
parse-options.h: use consistent name for the callback parameters
parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
parse-options.h: use designated initializers in OPT_* macros
cocci: remove 'unused.cocci'
Shuqi Liang (3):
write-tree: integrate with sparse index
t1092: add tests for `git diff-files`
diff-files: integrate with sparse index
Siddharth Singh (1):
hashmap.h: fix minor typo
Sohom Datta (1):
docs: clarify git rm --cached function in gitignore note
Stanislav Malishevskiy (1):
http: add support for different sslcert and sslkey types.
Tao Klerks (1):
mergetool: new config guiDefault supports auto-toggling gui by DISPLAY
Taylor Blau (36):
commit-graph: introduce `ensure_generations_valid()`
pack-write.c: plug a leak in stage_tmp_packfiles()
t5325: mark as leak-free
pack-revindex: make `load_pack_revindex` take a repository
pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
pack-revindex: introduce `pack.readReverseIndex`
config: enable `pack.writeReverseIndex` by default
t: invert `GIT_TEST_WRITE_REV_INDEX`
t1300: demonstrate failure when renaming sections with long lines
config: avoid fixed-sized buffer when renaming/deleting a section
config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
Git 2.30.9
pack-write.c: plug a leak in stage_tmp_packfiles()
builtin/repack.c: fix incorrect reference to '-C'
builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
t/t5304-prune.sh: prepare for `gc --cruft` by default
t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
t/t6500-gc.sh: refactor cruft pack tests
t/t6500-gc.sh: add additional test cases
t/t9300-fast-import.sh: prepare for `gc --cruft` by default
builtin/gc.c: make `gc.cruftPacks` enabled by default
repository.h: drop unused `gc_cruft_packs`
string-list: multi-delimiter `string_list_split_in_place()`
string-list: introduce `string_list_setlen()`
t/helper/test-hashmap.c: avoid using `strtok()`
t/helper/test-oidmap.c: avoid using `strtok()`
t/helper/test-json-writer.c: avoid using `strtok()`
banned.h: mark `strtok()` and `strtok_r()` as banned
credential.c: store "wwwauth[]" values in `credential_read()`
t/lib-credential.sh: ensure credential helpers handle long headers
contrib/credential: avoid fixed-size buffer in osxkeychain
contrib/credential: remove 'gnome-keyring' credential helper
contrib/credential: .gitignore libsecret build artifacts
contrib/credential: avoid fixed-size buffer in libsecret
contrib/credential: embiggen fixed-size buffer in wincred
Teng Long (1):
push: introduce '--branches' option
William Sprent (2):
builtin/sparse-checkout: remove NEED_WORK_TREE flag
builtin/sparse-checkout: add check-rules command
ZheNing Hu (2):
receive-pack: fix funny ref error messsage
push: allow delete single-level ref
Ævar Arnfjörð Bjarmason (33):
auto-crlf tests: don't lose exit code in loops and outside tests
t/lib-patch-mode.sh: fix ignored exit codes
tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
tests: don't lose "git" exit codes in "! ( git ... | grep )"
tests: don't lose exit status with "test <op> $(git ...)"
tests: don't lose misc "git" exit codes
sequencer.c: fix overflow & segfault in parse_strategy_opts()
cocci: remove dead rule from "the_repository.pending.cocci"
cocci: fix incorrect & verbose "the_repository" rules
cocci: sort "the_repository" rules by header
cocci: add missing "the_repository" macros to "pending"
cocci: apply the "cache.h" part of "the_repository.pending"
cocci: apply the "commit-reach.h" part of "the_repository.pending"
cocci: apply the "commit.h" part of "the_repository.pending"
cocci: apply the "diff.h" part of "the_repository.pending"
cocci: apply the "object-store.h" part of "the_repository.pending"
cocci: apply the "pretty.h" part of "the_repository.pending"
cocci: apply the "packfile.h" part of "the_repository.pending"
cocci: apply the "promisor-remote.h" part of "the_repository.pending"
cocci: apply the "refs.h" part of "the_repository.pending"
cocci: apply the "rerere.h" part of "the_repository.pending"
cocci: apply the "revision.h" part of "the_repository.pending"
post-cocci: adjust comments for recent repo_* migration
libs: use "struct repository *" argument, not "the_repository"
config tests: cover blind spots in git_die_config() tests
config tests: add "NULL" tests for *_get_value_multi()
config API: add and use a "git_config_get()" family of functions
versioncmp.c: refactor config reading next commit
config API: have *_multi() return an "int" and take a "dest"
for-each-repo: error on bad --config
config API users: test for *_get_value_multi() segfaults
config API: add "string" version of *_value_multi(), fix segfaults
for-each-repo: with bad config, don't conflate <path> and <cmd>
Øystein Walle (2):
ref-filter: remove unused ref_format member
branch, for-each-ref, tag: add option to omit empty lines
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.40.0
@ 2023-03-13 17:48 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-03-13 17:48 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.40.0 is now available at the
usual places. It is comprised of 472 non-merge commits since
v2.39.0, contributed by 88 people, 30 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.40.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.39.0 are as follows.
Welcome to the Git development community!
Adam Szkoda, Alison Winters, Ashutosh Pandey, Carl Baldwin,
Daniël Haazen, Drew Noakes, Eric Sesterhenn, Gwyneth Morgan,
Harshil-Jani, Hubert Jasudowicz, idriss fekir, Kostya Farber,
Marco Nenciarini, Markus Vervier, Matheus Tavares Bernardino,
Mathias Krause, Pat LaVarre, Peter Grayson, Rudy Rigot, Seija,
Seija Kijin, Simon Gerber, Thierry Reding, toon@iotcl.com, Wes
Lord, Yukai Chou, Yutaro Ohno, yvvdwf, Zhang Yi, and 孟子易.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Andrei Rybak, Bagas
Sanjaya, Calvin Wan, Carlo Marcelo Arenas Belón, Christian
Couder, Chris. Webster, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Emir SARI, Eric Sunshine,
Eric Wong, Erik Cervin Edin, Fangyi Zhou, Glen Choo, Jean-Noël
Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
Jordi Mas, Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle
Meyer, Kyle Zhao, Lars Kellogg-Stedman, Martin Ågren, Matthias
Aßhauer, Matthias Rüster, M Hickford, Patrick Steinhardt,
Peter Krefting, Philip Oakley, Philippe Blain, Phillip Wood,
Ralf Thielow, Randall S. Becker, René Scharfe, Rubén Justo,
Sean Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
Yoichi Nakayama, ZheNing Hu, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.40 Release Notes
=======================
UI, Workflows & Features
* "merge-tree" learns a new `--merge-base` option.
* "git jump" (in contrib/) learned to present the "quickfix list" to
its standard output (instead of letting it consumed by the editor
it invokes), and learned to also drive emacs/emacsclient.
* "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
given an empty value used to behave identically. Now the latter
just gives an empty output, while the former still gives an error
message.
* Introduce a case insensitive mode to the Bash completion helpers.
* The advice message given by "git status" when it takes long time to
enumerate untracked paths has been updated.
* Just like "git var GIT_EDITOR" abstracts the complex logic to
choose which editor gets used behind it, "git var" now give support
to GIT_SEQUENCE_EDITOR.
* "git format-patch" learned to honor format.mboxrd even when sending
patches to the standard output stream,
* 'cat-file' gains mailmap support for its '--batch-check' and '-s'
options.
* Conditionally skip the pre-applypatch and applypatch-msg hooks when
applying patches with 'git am'.
* Introduce an optional configuration to allow the trailing hash that
protects the index file from bit flipping.
* "git check-attr" learned to take an optional tree-ish to read the
.gitattributes file from.
* "scalar" learned to give progress bar.
* "grep -P" learned to use Unicode Character Property to grok
character classes when processing \b and \w etc.
* "git rebase" often ignored incompatible options instead of
complaining, which has been corrected.
* "scalar" warns but continues when its periodic maintenance
feature cannot be enabled.
* The bundle-URI subsystem adds support for creation-token heuristics
to help incremental fetches.
* Userdiff regexp update for Java language.
* "git fetch --jobs=0" used to hit a BUG(), which has been corrected
to use the available CPUs.
* An invalid label or ref in the "rebase -i" todo file used to
trigger an runtime error. SUch an error is now diagnosed while the
todo file is parsed.
* The "diff" drivers specified by the "diff" attribute attached to
paths can now specify which algorithm (e.g. histogram) to use.
* "git range-diff" learned --abbrev=<num> option.
* "git archive HEAD^{tree}" records the paths with the current
timestamp in the archive, making it harder to obtain a stable
output. The command learned the --mtime option to specify an
arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).
* The credential subsystem learned that a password may have an
explicit expiration.
* The format.attach configuration variable lacked a way to override a
value defined in a lower-priority configuration file (e.g. the
system one) by redefining it in a higher-priority configuration
file. Now, setting format.attach to an empty string means show the
patch inline in the e-mail message, without using MIME attachment.
This is a backward incompatible change.
Performance, Internal Implementation, Development Support etc.
* `git bisect` becomes a builtin.
* The pack-bitmap machinery is taught to log the paths of redundant
bitmap(s) to trace2 instead of stderr.
* Use the SHA1DC implementation on macOS, just like other platforms,
by default.
* Even in a repository with promisor remote, it is useless to
attempt to lazily attempt fetching an object that is expected to be
commit, because no "filter" mode omits commit objects. Take
advantage of this assumption to fail fast on errors.
* Stop using "git --super-prefix" and narrow the scope of its use to
the submodule--helper.
* Stop running win+VS build by default.
* CI updates. We probably want a clean-up to move the long shell
script embedded in yaml file into a separate file, but that can
come later.
* Use `git diff --no-index` as a test_cmp on Windows.
We'd probably need to revisit "do we really want to, and have to,
lose CRLF vs LF?" later, at which time we may be able to further
clean this up by replacing "git diff --no-index" with "diff -u".
* Avoid unnecessary builds in CI, with settings configured in
ci-config.
* Plug leaks in sequencer subsystem and its users.
* In-tree .gitattributes update to match the way we recommend our
users to mark a file as text.
(merge 1f34e0cd3d po/attributes-text later to maint).
* Finally retire the scripted "git add -p/-i" implementation and have
everybody use the one reimplemented in C.
Fixes since v2.39
-----------------
* Various leak fixes.
* Fix a bug where `pack-objects` would not respect multiple `--filter`
arguments when invoked directly.
(merge d4f7036887 rs/multi-filter-args later to maint).
* Make fsmonitor more robust to avoid the flakiness seen in t7527.
(merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).
* Stop using deprecated macOS API in fsmonitor.
(merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).
* Redefining system functions for a few functions did not follow our
usual "implement git_foo() and #define foo(args) git_foo(args)"
pattern, which has broken build for some folks.
* The way the diff machinery prepares the options array for the
parse_options API has been refactored to avoid resource leaks.
(merge 189e97bc4b rs/diff-parseopts later to maint).
* Correct pthread API usage.
(merge 786e67611d sx/pthread-error-check-fix later to maint).
* The code to auto-correct a misspelt subcommand unnecessarily called
into git_default_config() from the early config codepath, which was
a no-no. This has bee corrected.
(merge 0918d08887 sg/help-autocorrect-config-fix later to maint).
* "git http-fetch" (which is rarely used) forgot to identify itself
in the trace2 output.
(merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).
* The output from "git diff --stat" on an unmerged path lost the
terminating LF in Git 2.39, which has been corrected.
(merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).
* "git pull -v --recurse-submodules" attempted to pass "-v" down to
underlying "git submodule update", which did not understand the
request and barfed, which has been corrected.
(merge 6f65f84766 ss/pull-v-recurse-fix later to maint).
* When given a pattern that matches an empty string at the end of a
line, the code to parse the "git diff" line-ranges fell into an
infinite loop, which has been corrected.
* Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
flush its output to the disk..
* Fix to a small regression in 2.38 days.
* "git diff --relative" did not mix well with "git diff --ext-diff",
which has been corrected.
* The logic to see if we are using the "cone" mode by checking the
sparsity patterns has been tightened to avoid mistaking a pattern
that names a single file as specifying a cone.
* Deal with a few deprecation warning from cURL library.
* Doc update for environment variables set when hooks are invoked.
* Document ORIG_HEAD a bit more.
* "git ls-tree --format='%(path) %(path)' $tree $path" showed the
path three times, which has been corrected.
* Remove "git env--helper" and demote it to a test-tool subcommand.
(merge 4a1baacd46 ab/test-env-helper later to maint).
* Newer regex library macOS stopped enabling GNU-like enhanced BRE,
where '\(A\|B\)' works as alternation, unless explicitly asked with
the REG_ENHANCED flag. "git grep" now can be compiled to do so, to
retain the old behaviour.
* Pthread emulation on Win32 leaked thread handle when a thread is
joined.
(merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).
* "git send-email -v 3" used to be expanded to "git send-email
--validate 3" when the user meant to pass them down to
"format-patch", which has been corrected.
(merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).
* Document that "branch -f <branch>" disables only the safety to
avoid recreating an existing branch.
* "git fetch <group>", when "<group>" of remotes lists the same
remote twice, unnecessarily failed when parallel fetching was
enabled, which has been corrected.
(merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).
* Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
different in the documentation.
* "git hash-object" now checks that the resulting object is well
formed with the same code as "git fsck".
(merge 8e4309038f jk/hash-object-fsck later to maint).
* Improve the error message given when private key is not loaded in
the ssh agent in the codepath to sign with an ssh key.
(merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).
* Adjust "git request-pull" to strip embedded signature from signed
tags to notice non-PGP signatures.
(merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).
* Remove support for MSys, which now lags way behind MSys2.
(merge 2987407f3c hj/remove-msys-support later to maint).
* Fix use of CreateThread() API call made early in the windows
start-up code.
(merge 592bcab61b sk/winansi-createthread-fix later to maint).
* "git pack-objects" learned to release delta-island bitmap data when
it is done using it, saving peak heap memory usage.
(merge 647982bb71 ew/free-island-marks later to maint).
* In an environment where dynamically generated code is prohibited to
run (e.g. SELinux), failure to JIT pcre patterns is expected. Fall
back to interpreted execution in such a case.
(merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).
* "git name-rev" heuristics update.
(merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).
* Remove more remaining uses of macros that relies on the_index
singleton instance without explicitly spelling it out.
* Remove unnecessary explicit sizing of strbuf.
(merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).
* Doc update.
(merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).
* Error messages given upon a signature verification failure used to
discard the errors from underlying gpg program, which has been
corrected.
(merge ad6b320756 js/gpg-errors later to maint).
* Update --date=default documentation.
(merge 9deef088ae rd/doc-default-date-format later to maint).
* A test helper had a single write(2) of 256kB, which was too big for
some platforms (e.g. NonStop), which has been corrected by using
xwrite() wrapper appropriately.
(merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).
* sscanf(3) used in "git symbolic-ref --short" implementation found
to be not working reliably on macOS in UTF-8 locales. Rewrite the
code to avoid sscanf() altogether to work it around.
(merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).
* Various fix-ups on HTTP tests.
(merge 8f2146dbf1 jk/http-test-fixes later to maint).
* Fixes to code that parses the todo file used in "rebase -i".
(merge 666b6e1135 pw/rebase-i-parse-fix later to maint).
* Test library clean-up.
(merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
(merge f95526419b ar/typofix-gitattributes-doc later to maint).
(merge 27875aeec9 km/doc-branch-start-point later to maint).
(merge 35c194dc57 es/t1509-root-fixes later to maint).
(merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
(merge bcb71d45bf jx/t1301-updates later to maint).
(merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
(merge a87a20cbb4 ar/test-cleanup later to maint).
(merge f5156f1885 ar/bisect-doc-update later to maint).
(merge fca2d86c97 jk/interop-error later to maint).
(merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
(merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
(merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
(merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
(merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
(merge 70661d288b ar/markup-em-dash later to maint).
(merge e750951e74 en/ls-files-doc-update later to maint).
(merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
(merge 3a2ebaebc7 gc/index-format-doc later to maint).
(merge b08edf709d jk/httpd-test-updates later to maint).
(merge d85e9448dd wl/new-command-doc later to maint).
(merge d912a603ed kf/t5000-modernise later to maint).
(merge e65b868d07 rs/size-t-fixes later to maint).
(merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
(merge d390e08076 cw/doc-pushurl-vs-url later to maint).
(merge 567342fc77 rs/ctype-test later to maint).
(merge d35d8f2e7a ap/t2015-style-update later to maint).
----------------------------------------------------------------
Changes since v2.39.0 are as follows:
Adam Szkoda (1):
ssh signing: better error message when key not in agent
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5490t)
Alison Winters (2):
completion: add optional ignore-case when matching refs
completion: add case-insensitive match of pseudorefs
Andrei Rybak (12):
gitattributes.txt: fix typo in "comma separated"
*: fix typos which duplicate a word
git-bisect-lk2009: update java code conventions link
git-bisect-lk2009: update nist report link
t6003: uncomment test '--max-age=c3, --topo-order'
t6422: drop commented out code
t7527: use test_when_finished in 'case insensitive+preserving'
Documentation: render dash correctly
userdiff: support Java type parameters
userdiff: support Java record types
userdiff: support Java sealed classes
test-lib: drop comment about test_description
Ashutosh Pandey (1):
t2015-checkout-unborn.sh: changes the style for cd
Bagas Sanjaya (1):
l10n: po-id for 2.40 (round 1)
Calvin Wan (2):
fetch: fix duplicate remote parallel fetch bug
Documentation: clarify multiple pushurls vs urls
Carlo Marcelo Arenas Belón (2):
test-lib: add prerequisite for 64-bit platforms
grep: correctly identify utf-8 characters with \{b,w} in -P
Chris. Webster (3):
ci (check-whitespace): suggest fixes for errors
ci (check-whitespace): add links to job output
ci (check-whitespace): move to actions/checkout@v3
Daniël Haazen (1):
mingw: fix typo in an error message from ownership check
Derrick Stolee (25):
transport: rename got_remote_heads
bundle-uri: serve bundle.* keys from config
strbuf: introduce strbuf_strip_file_from_path()
bundle-uri: allow relative URLs in bundle lists
bundle-uri: download bundles from an advertised list
clone: unbundle the advertised bundles
hashfile: allow skipping the hash function
read-cache: add index.skipHash config option
test-lib-functions: add helper for trailing hash
features: feature.manyFiles implies fast index writes
t1600: fix racy index.skipHash test
t: allow 'scalar' in test_must_fail
t921*: test scalar behavior starting maintenance
scalar: only warn when background maintenance fails
bundle: test unbundling with incomplete history
bundle: verify using check_connected()
t5558: add tests for creationToken heuristic
bundle-uri: parse bundle.heuristic=creationToken
bundle-uri: parse bundle.<id>.creationToken values
bundle-uri: download in creationToken order
clone: set fetch.bundleURI if appropriate
bundle-uri: drop bundle.flag from design doc
fetch: fetch from an external bundle URI
bundle-uri: store fetch.bundleCreationToken
bundle-uri: test missing bundles with heuristic
Elijah Newren (16):
ls-files: add missing documentation for --resolve-undo option
ls-files: clarify descriptions of file selection options
ls-files: clarify descriptions of status tags for -t
ls-files: guide folks to --exclude-standard over other --exclude* options
t6426: fix TODO about making test more comprehensive
rebase: mark --update-refs as requiring the merge backend
rebase: flag --apply and --merge as incompatible
rebase: remove --allow-empty-message from incompatible opts
rebase: fix docs about incompatibilities with --root
rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
rebase: add coverage of other incompatible options
rebase: clarify the OPT_CMDMODE incompatibilities
rebase: fix formatting of rebase --reapply-cherry-picks option in docs
rebase: put rebase_options initialization in single place
rebase: provide better error message for apply options vs. merge config
name-rev: fix names by dropping taggerdate workaround
Emily Shaffer (4):
run-command: allow stdin for run_processes_parallel
hook API: support passing stdin to hooks, convert am's 'post-rewrite'
sequencer: use the new hook API for the simpler "post-rewrite" call
hook: support a --to-stdin=<path> option
Emir SARI (1):
l10n: tr: Update Turkish translations for v.2.40.0
Eric Sunshine (4):
t1509: fix failing "root work tree" test due to owner-check
t1509: make "setup" test more robust
t1509: facilitate repeated script invocations
githooks: discuss Git operations in foreign repositories
Eric Wong (2):
format-patch: support format.mboxrd with --stdout
delta-islands: free island_marks and bitmaps
Fangyi Zhou (1):
l10n: zh_CN v2.40.0 round 1
Glen Choo (2):
read-tree + fetch tests: test failing "--super-prefix" interaction
docs: document zero bits in index "mode"
Gwyneth Morgan (2):
request-pull: filter out SSH/X.509 tag signatures
signature-format.txt: note SSH and X.509 signature delimiters
Harshil-Jani (2):
mingw: remove duplicate `USE_NED_ALLOCATOR` directive
mingw: remove msysGit/MSYS1 support
Jean-Noël Avila (3):
l10n: fr: fix some typos
l10n: fr: v2.40.0 rnd 1
l10n: fr: v2.40.0 rnd 2
Jeff Hostetler (2):
fsmonitor: fix race seen in t7527
fsmonitor: eliminate call to deprecated FSEventStream function
Jeff King (74):
git-jump: move valid-mode check earlier
pack-bitmap.c: break out of the bitmap loop early if not tracing
pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
git-compat-util: avoid redefining system function names
git-compat-util: undefine system names before redeclaring them
server_supports_v2(): use a separate function for die_on_error
ls-refs: use repository parameter to iterate refs
blob: drop unused parts of parse_blob_buffer()
list-objects: drop process_gitlink() function
ws: drop unused parameter from ws_blank_line()
xdiff: drop unused parameter in def_ff()
xdiff: mark unused parameter in xdl_call_hunk_func()
diff: mark unused parameters in callbacks
list-objects-filter: mark unused parameters in virtual functions
userdiff: mark unused parameter in internal callback
ref-filter: reject arguments to %(HEAD)
ref-filter: factor out "%(foo) does not take arguments" errors
ref-filter: factor out "unrecognized %(foo) arg" errors
ref-filter: truncate atom names in error messages
ref-filter: convert email atom parser to use err_bad_arg()
test-bundle-uri: drop unused variables
diff: use filespec path to set up tempfiles for ext-diff
diff: clean up external-diff argv setup
diff: drop "name" parameter from prepare_temp_file()
convert trivial uses of strncmp() to starts_with()
convert trivial uses of strncmp() to skip_prefix()
object-file: inline calls to read_object()
streaming: inline call to read_object_file_extended()
read_object_file_extended(): drop lookup_replace option
repo_read_object_file(): stop wrapping read_object_file_extended()
packfile: inline custom read_object()
object-file: fix indent-with-space
t/interop: report which vanilla git command failed
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
t1007: modernize malformed object tests
t1006: stop using 0-padded timestamps
t7030: stop using invalid tag name
t: use hash-object --literally when created malformed objects
fsck: provide a function to fsck buffer without object struct
hash-object: use fsck for object checks
hash-object: fix descriptor leak with --literally
fsck: do not assume NUL-termination of buffers
t/lib-httpd: bump required apache version to 2.2
t/lib-httpd: bump required apache version to 2.4
t/lib-httpd: drop SSLMutex config
t/lib-httpd: increase ssl key size to 2048 bits
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
doc/ls-remote: cosmetic cleanups for examples
doc/ls-remote: clarify pattern format
shorten_unambiguous_ref(): avoid integer truncation
shorten_unambiguous_ref(): use NUM_REV_PARSE_RULES constant
shorten_unambiguous_ref(): avoid sscanf()
add basic http proxy tests
t0066: drop setup of "dir5"
t5541: run "used receive-pack service" test earlier
t5541: stop marking "used receive-pack service" test as v0 only
t5541: simplify and move "no empty path components" test
t5551: drop redundant grep for Accept-Language
t5551: lower-case headers in expected curl trace
t5551: handle HTTP/2 when checking curl trace
t5551: stop forcing clone to run with v0 protocol
t5551: handle v2 protocol when checking curl trace
t5551: handle v2 protocol in upload-pack service test
t5551: simplify expected cookie file
t5551: handle v2 protocol in cookie test
t5551: drop curl trace lines without headers
t/lib-httpd: respect $HTTPD_PROTO in expect_askpass()
t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c
t5559: fix test failures with LIB_HTTPD_SSL
t5559: make SSL/TLS the default
Jiang Xin (3):
t1301: fix wrong template dir for git-init
t1301: use test_when_finished for cleanup
t1301: do not change $CWD in "shared=all" test case
Johannes Schindelin (24):
bisect--helper: handle states directly
Turn `git bisect` into a full built-in
t0021: use Windows-friendly `pwd`
tests(mingw): avoid very slow `mingw_test_cmp`
ci: only run win+VS build & tests in Git for Windows' fork
bisect--helper: simplify exit code computation
bisect: verify that a bogus option won't try to start a bisection
bisect run: fix the error message
bisect: remove Cogito-related code
bisect: no longer try to clean up left-over `.git/head-name` files
fsck: document the new `gitattributes` message IDs
attr: adjust a mismatched data type
attr: adjust a mismatched data type
Git 2.31.7
Git 2.32.6
Git 2.33.7
Git 2.34.7
Git 2.35.7
Git 2.36.5
Git 2.37.6
Git 2.38.4
Git 2.39.2
t7510: add a test case that does not need gpg
gpg: do show gpg's error message upon failure
Johannes Sixt (1):
t3920: don't ignore errors of more than one command with `|| true`
John Cai (4):
docs: link generating patch sections
attr: fix instructions on how to check attrs
diff: consolidate diff algorithm option parsing
diff: teach diff to read algorithm from diff driver
Jonathan Tan (5):
http-fetch: invoke trace2_cmd_name()
object-file: remove OBJECT_INFO_IGNORE_LOOSE
object-file: refactor map_loose_object_1()
object-file: emit corruption errors when detected
commit: don't lazy-fetch commits
Jordi Mas (1):
l10n: Update Catalan translation
Junio C Hamano (43):
Git 2.30.7
Git 2.31.6
Git 2.32.5
Git 2.33.6
Git 2.34.6
Git 2.35.6
Git 2.36.4
Git 2.37.5
Git 2.38.3
Git 2.39.1
Start the 2.40 cycle
The first batch for 2.40
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
format-patch: unleak "-v <num>"
The seventh batch
branch: document `-f` and linked worktree behaviour
checkout: document -b/-B to highlight the differences from "git branch"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
Git 2.30.8
The fourteenth batch
The fifteenth batch
Prepare for 2.39.3 just in case
The sixteenth batch
rev-list: clarify git-log default date format
test-genzeros: avoid raw write(2)
format.attach: allow empty value to disable multi-part messages
The seventeenth batch
Git 2.40-rc0
A few more topics post 2.40-rc0
A bit more before 2.40-rc1
A bit more before 2.40-rc1
Git 2.40-rc1
Git 2.40-rc2
Git 2.40
Karthik Nayak (2):
t0003: move setup for `--all` into new block
attr: add flag `--source` to work with tree-ish
Kostya Farber (1):
t5000: modernise archive and :(glob) test
Kyle Meyer (2):
send-email: relay '-v N' to format-patch
doc/git-branch: fix --force description typo
Kyle Zhao (3):
merge-tree.c: add --merge-base=<commit> option
merge-tree.c: allow specifying the merge-base when --stdin is passed
docs: fix description of the `--merge-base` option
Lars Kellogg-Stedman (1):
line-range: fix infinite loop bug with '$' regex
M Hickford (2):
Documentation: clarify that cache forgets credentials if the system restarts
credential: new attribute password_expiry_utc
Martin Ågren (1):
git-cat-file.txt: fix list continuations rendering literally
Mathias Krause (1):
grep: fall back to interpreter if JIT memory allocation fails
Matthias Aßhauer (1):
fetch: choose a sensible default with --jobs=0 again
Patrick Steinhardt (28):
attr: fix overflow when upserting attribute with overly long name
attr: fix out-of-bounds read with huge attribute names
attr: fix integer overflow when parsing huge attribute names
attr: fix out-of-bounds write when parsing huge number of attributes
attr: fix out-of-bounds read with unreasonable amount of patterns
attr: fix integer overflow with more than INT_MAX macros
attr: harden allocation against integer overflows
attr: fix silently splitting up lines longer than 2048 bytes
attr: ignore attribute lines exceeding 2048 bytes
attr: ignore overly large gitattributes files
pretty: fix out-of-bounds write caused by integer overflow
pretty: fix out-of-bounds read when left-flushing with stealing
pretty: fix out-of-bounds read when parsing invalid padding format
pretty: fix adding linefeed when placeholder is not expanded
pretty: fix integer overflow in wrapping format
utf8: fix truncated string lengths in `utf8_strnwidth()`
utf8: fix returning negative string width
utf8: fix overflow when returning string width
utf8: fix checking for glyph width in `strbuf_utf8_replace()`
utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
pretty: restrict input lengths for padding and wrapping formats
fsck: refactor `fsck_blob()` to allow for more checks
fsck: pull out function to check a set of blobs
fsck: move checks for gitattributes
fsck: implement checks for gitattributes
refs: fix corruption by not correctly syncing packed-refs to disk
apply: fix writing behind newly created symbolic links
delta-islands: fix segfault when freeing island marks
Peter Grayson (1):
diff: fix regression with --stat and unmerged file
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5490t0f0u)
Philip Oakley (6):
doc: pretty-formats: separate parameters from placeholders
doc: pretty-formats: delineate `%<|(` parameter values
doc: pretty-formats document negative column alignments
doc: pretty-formats describe use of ellipsis in truncation
doc: pretty-formats note wide char limitations, and add tests
.gitattributes: include `text` attribute for eol attributes
Philippe Blain (6):
git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
git-reset.txt: mention 'ORIG_HEAD' in the Description
git-merge.txt: mention 'ORIG_HEAD' in the Description
revisions.txt: be explicit about commands writing 'ORIG_HEAD'
git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
branch: improve advice when --recurse-submodules fails
Phillip Wood (5):
ci(github): restore "print test failures" step name
rebase: cleanup "--exec" option handling
rebase -i: check labels and refs when parsing todo list
rebase -i: match whole word in is_command()
rebase -i: fix parsing of "fixup -C<commit>"
Ralf Thielow (1):
l10n: update German translation
René Scharfe (31):
t5317: stop losing return codes of git ls-files
t5317: demonstrate failure to handle multiple --filter options
pack-objects: fix handling of multiple --filter options
pack-objects: simplify --filter handling
list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
t4205: don't exit test script on failure
diff: factor out add_diff_options()
diff: use add_diff_options() in diff_opt_parse()
diff: remove parseopts member from struct diff_options
list-objects-filter: plug pattern_list leak
t3920: support CR-eating grep
reflog: clear leftovers in reflog_expiry_cleanup()
commit: skip already cleared parents in clear_commit_marks_1()
am: don't pass strvec to apply_parse_options()
object-file: inline write_buffer()
use enhanced basic regular expressions on macOS
mingw: make argv2 in try_shell_exec() non-const
factor out BARF_UNLESS_COPYABLE
do full type check in BARF_UNLESS_COPYABLE
add DUP_ARRAY
use DUP_ARRAY
ls-tree: fix expansion of repeated %(path)
ls-tree: remove dead store and strbuf for quote_c_style()
read-cache: use size_t for {base,df}_name_compare()
pack-objects: use strcspn(3) in name_cmp_len()
cache-tree: fix strbuf growth in prime_cache_tree_rec()
test-ctype: test isascii
test-ctype: test islower and isupper
test-ctype: test iscntrl, ispunct, isxdigit and isprint
archive: add --mtime
range-diff: avoid compiler warning when char is unsigned
Rubén Justo (1):
branch: force-copy a branch to itself via @{-1} is a no-op
Rudy Rigot (1):
status: modernize git-status "slow untracked files" advice
SZEDER Gábor (1):
tests: make 'test_oid' print trailing newline
Sean Allred (3):
var: do not print usage() with a correct invocation
var: allow GIT_EDITOR to return null
var: add GIT_SEQUENCE_EDITOR variable
Seija (1):
maintenance: compare output of pthread functions for inequality with 0
Seija Kijin (6):
git: remove duplicate includes
win32: use _endthreadex to terminate threads, not ExitThread
win32: prepare pthread.c for change by formatting
win32: close handles of threads that have been joined
merge: break out of all_strategy loop when strategy is found
compat/winansi: check for errors of CreateThread() correctly
Siddharth Asthana (2):
cat-file: add mailmap support to -s option
cat-file: add mailmap support to --batch-check option
Simon Gerber (1):
help.c: fix autocorrect in work tree for bare repository
Sven Strickroth (1):
submodule: accept -v for the update command
Taylor Blau (5):
ci: avoid unnecessary builds
t5619: demonstrate clone_local() with ambiguous transport
clone: delay picking a transport until after get_repo_path()
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
dir-iterator: drop unused `DIR_ITERATOR_FOLLOW_SYMLINKS`
Teng Long (5):
pack-bitmap.c: remove unnecessary "open_pack_index()" calls
pack-bitmap.c: avoid exposing absolute paths
ls-tree: cleanup the redundant SPACE
t3104: remove shift code in 'test_ls_tree_format'
range-diff: let '--abbrev' option takes effect
Thierry Reding (1):
am: allow passing --no-verify flag
Torsten Bögershausen (1):
t0003: call dd with portable blocksize
Wes Lord (1):
new-command.txt: update reference to builtin docs
William Sprent (1):
dir: check for single file cone patterns
Yoichi Nakayama (2):
git-jump: add an optional argument '--stdout'
git-jump: invoke emacs/emacsclient
Yukai Chou (1):
doc: fix non-existent config name
Yutaro Ohno (1):
doc: add "git switch -c" as another option on detached HEAD
Zhang Yi (1):
t9700: modernize test scripts
ZheNing Hu (1):
scalar: show progress if stderr refers to a terminal
idriss fekir (1):
trace.c, git.c: remove unnecessary parameter to trace_repo_setup()
Ævar Arnfjörð Bjarmason (90):
bisect tests: test for v2.30.0 "bisect run" regressions
bisect: refactor bisect_run() to match CodingGuidelines
bisect test: test exit codes on bad usage
bisect--helper: emit usage for "git bisect"
bisect; remove unused "git-bisect.sh" and ".gitignore" entry
tests: mark tests as passing with SANITIZE=leak
{reset,merge}: call discard_index() before returning
commit: discard partial cache before (re-)reading it
read-cache.c: clear and free "sparse_checkout_patterns"
dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
built-ins & libs & helpers: add/move destructors, fix leaks
unpack-file: fix ancient leak in create_temp_file()
revision API: call graph_clear() in release_revisions()
ls-files: fix a --with-tree memory leak
sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
connected.c: free the "struct packed_git"
rebase: don't leak on "--abort"
cherry-pick: free "struct replay_opts" members
revert: fix parse_options_concat() leak
built-ins: use free() not UNLEAK() if trivial, rm dead code
t5314: check exit code of "git"
t7600: don't ignore "rev-parse" exit code in helper
t4023: fix ignored exit codes of git
Makefile: use sha1collisiondetection by default on OSX and Darwin
bundle: don't segfault on "git bundle <subcmd>"
protocol v2: add server-side "bundle-uri" skeleton
t: create test harness for 'bundle-uri' command
clone: request the 'bundle-uri' command when available
bundle-uri client: add boolean transfer.bundleURI setting
bundle-uri client: add helper for testing server
submodule absorbgitdirs tests: add missing "Migrating git..." tests
submodule.c & submodule--helper: pass along "super_prefix" param
submodule--helper: don't use global --super-prefix in "absorbgitdirs"
submodule--helper: convert "foreach" to its own "--super-prefix"
submodule--helper: convert "sync" to its own "--super-prefix"
submodule--helper: convert "status" to its own "--super-prefix"
submodule--helper: convert "{update,clone}" to their own "--super-prefix"
read-tree: add "--super-prefix" option, eliminate global
builtin/bundle.c: remove superfluous "newargc" variable
bundle <cmd>: have usage_msg_opt() note the missing "<file>"
builtin/difftool.c: { 0 }-initialize rather than using memset()
sparse-index.c: expand_to_path() can assume non-NULL "istate"
sparse-index API: BUG() out on NULL ensure_full_index()
read-cache.c: refactor set_new_index_sparsity() for subsequent commit
bisect--helper: make the order consistently `argc, argv`
ls-tree: don't use "show_tree_data" for "fast" callbacks
ls-tree: use a "struct options"
ls-tree: fold "show_tree_data" into "cb" struct
ls-tree: make "line_termination" less generic
env-helper: move this built-in to "test-tool env-helper"
cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
treewide: always have a valid "index_state.repo" member
add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
add API: remove run_add_interactive() wrapper function
docs & comments: replace mentions of "git-add--interactive.perl"
tests: mark tests as passing with SANITIZE=leak
bundle.c: don't leak the "args" in the "struct child_process"
commit-graph: use free_commit_graph() instead of UNLEAK()
clone: use free() instead of UNLEAK()
various: add missing clear_pathspec(), fix leaks
name-rev: don't xstrdup() an already dup'd string
repack: fix leaks on error with "goto cleanup"
worktree: fix a trivial leak in prune_worktrees()
http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
commit-graph: fix a parse_options_concat() leak
show-branch: free() allocated "head" before return
builtin/merge.c: use fixed strings, not "strbuf", fix leak
builtin/merge.c: free "&buf" on "Your local changes..." error
grep.c: refactor free_grep_patterns()
grep API: plug memory leaks by freeing "header_list"
receive-pack: release the linked "struct command *" list
push: refactor refspec_append_mapped() for subsequent leak-fix
push: free_refs() the "local_refs" in set_refspecs()
rebase: use "cleanup" pattern in do_interactive_rebase()
sequencer.c: split up sequencer_remove_state()
sequencer API users: fix get_replay_opts() leaks
builtin/revert.c: move free-ing of "revs" to replay_opts_release()
builtin/rebase.c: fix "options.onto_name" leak
sequencer.c: always free() the "msgbuf" in do_pick_commit()
builtin/rebase.c: free() "options.strategy_opts"
commit.c: free() revs.commit in get_fork_point()
config.h: remove unused git_configset_add_parameters()
run-command.c: remove dead assignment in while-loop
builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
cocci & cache.h: fully apply "active_nr" part of index-compatibility
cocci & cache.h: apply pending "index_cache_pos" rule
cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
cache-tree API: remove redundant update_main_cache_tree()
cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"
Đoàn Trần Công Danh (6):
bisect: fix output regressions in v2.30.0
bisect run: keep some of the post-v2.30.0 output
bisect-run: verify_good: account for non-negative exit status
bisect--helper: identify as bisect when report error
bisect--helper: log: allow arbitrary number of arguments
date.c: allow ISO 8601 reduced precision times
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.40.0-rc2
@ 2023-03-07 19:47 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-03-07 19:47 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.40.0-rc2 is now available for testing at
the usual places. It is comprised of 461 non-merge commits since
v2.39.0, contributed by 78 people, 30 of which are new faces [*].
Relative to 2.40-rc1, there is one fix to make "git range-diff
--abbrev=<number>" option work on platforms whose char is unsigned.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.40.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.39.0 are as follows.
Welcome to the Git development community!
Adam Szkoda, Alison Winters, Ashutosh Pandey, Carl Baldwin,
Daniël Haazen, Drew Noakes, Eric Sesterhenn, Gwyneth Morgan,
Harshil-Jani, Hubert Jasudowicz, idriss fekir, Kostya Farber,
Marco Nenciarini, Markus Vervier, Matheus Tavares Bernardino,
Mathias Krause, Pat LaVarre, Peter Grayson, Rudy Rigot, Seija,
Seija Kijin, Simon Gerber, Thierry Reding, toon@iotcl.com, Wes
Lord, Yukai Chou, Yutaro Ohno, yvvdwf, Zhang Yi, and 孟子易.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Andrei Rybak, Calvin Wan, Carlo
Marcelo Arenas Belón, Christian Couder, Chris. Webster,
Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Emily Shaffer, Eric Sunshine, Eric Wong, Erik Cervin Edin, Glen
Choo, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle Meyer, Kyle
Zhao, Lars Kellogg-Stedman, Martin Ågren, Matthias Aßhauer,
M Hickford, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
Sean Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
Yoichi Nakayama, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.40 Release Notes (draft)
===============================
UI, Workflows & Features
* "merge-tree" learns a new `--merge-base` option.
* "git jump" (in contrib/) learned to present the "quickfix list" to
its standard output (instead of letting it consumed by the editor
it invokes), and learned to also drive emacs/emacsclient.
* "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
given an empty value used to behave identically. Now the latter
just gives an empty output, while the former still gives an error
message.
* Introduce a case insensitive mode to the Bash completion helpers.
* The advice message given by "git status" when it takes long time to
enumerate untracked paths has been updated.
* Just like "git var GIT_EDITOR" abstracts the complex logic to
choose which editor gets used behind it, "git var" now give support
to GIT_SEQUENCE_EDITOR.
* "git format-patch" learned to honor format.mboxrd even when sending
patches to the standard output stream,
* 'cat-file' gains mailmap support for its '--batch-check' and '-s'
options.
* Conditionally skip the pre-applypatch and applypatch-msg hooks when
applying patches with 'git am'.
* Introduce an optional configuration to allow the trailing hash that
protects the index file from bit flipping.
* "git check-attr" learned to take an optional tree-ish to read the
.gitattributes file from.
* "scalar" learned to give progress bar.
* "grep -P" learned to use Unicode Character Property to grok
character classes when processing \b and \w etc.
* "git rebase" often ignored incompatible options instead of
complaining, which has been corrected.
* "scalar" warns but continues when its periodic maintenance
feature cannot be enabled.
* The bundle-URI subsystem adds support for creation-token heuristics
to help incremental fetches.
* Userdiff regexp update for Java language.
* "git fetch --jobs=0" used to hit a BUG(), which has been corrected
to use the available CPUs.
* An invalid label or ref in the "rebase -i" todo file used to
trigger an runtime error. SUch an error is now diagnosed while the
todo file is parsed.
* The "diff" drivers specified by the "diff" attribute attached to
paths can now specify which algorithm (e.g. histogram) to use.
* "git range-diff" learned --abbrev=<num> option.
* "git archive HEAD^{tree}" records the paths with the current
timestamp in the archive, making it harder to obtain a stable
output. The command learned the --mtime option to specify an
arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).
* The credential subsystem learned that a password may have an
explicit expiration.
* The format.attach configuration variable lacked a way to override a
value defined in a lower-priority configuration file (e.g. the
system one) by redefining it in a higher-priority configuration
file. Now, setting format.attach to an empty string means show the
patch inline in the e-mail message, without using MIME attachment.
This is a backward incompatible change.
Performance, Internal Implementation, Development Support etc.
* `git bisect` becomes a builtin.
* The pack-bitmap machinery is taught to log the paths of redundant
bitmap(s) to trace2 instead of stderr.
* Use the SHA1DC implementation on macOS, just like other platforms,
by default.
* Even in a repository with promisor remote, it is useless to
attempt to lazily attempt fetching an object that is expected to be
commit, because no "filter" mode omits commit objects. Take
advantage of this assumption to fail fast on errors.
* Stop using "git --super-prefix" and narrow the scope of its use to
the submodule--helper.
* Stop running win+VS build by default.
* CI updates. We probably want a clean-up to move the long shell
script embedded in yaml file into a separate file, but that can
come later.
* Use `git diff --no-index` as a test_cmp on Windows.
We'd probably need to revisit "do we really want to, and have to,
lose CRLF vs LF?" later, at which time we may be able to further
clean this up by replacing "git diff --no-index" with "diff -u".
* Avoid unnecessary builds in CI, with settings configured in
ci-config.
* Plug leaks in sequencer subsystem and its users.
* In-tree .gitattributes update to match the way we recommend our
users to mark a file as text.
(merge 1f34e0cd3d po/attributes-text later to maint).
* Finally retire the scripted "git add -p/-i" implementation and have
everybody use the one reimplemented in C.
Fixes since v2.39
-----------------
* Various leak fixes.
* Fix a bug where `pack-objects` would not respect multiple `--filter`
arguments when invoked directly.
(merge d4f7036887 rs/multi-filter-args later to maint).
* Make fsmonitor more robust to avoid the flakiness seen in t7527.
(merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).
* Stop using deprecated macOS API in fsmonitor.
(merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).
* Redefining system functions for a few functions did not follow our
usual "implement git_foo() and #define foo(args) git_foo(args)"
pattern, which has broken build for some folks.
* The way the diff machinery prepares the options array for the
parse_options API has been refactored to avoid resource leaks.
(merge 189e97bc4b rs/diff-parseopts later to maint).
* Correct pthread API usage.
(merge 786e67611d sx/pthread-error-check-fix later to maint).
* The code to auto-correct a misspelt subcommand unnecessarily called
into git_default_config() from the early config codepath, which was
a no-no. This has bee corrected.
(merge 0918d08887 sg/help-autocorrect-config-fix later to maint).
* "git http-fetch" (which is rarely used) forgot to identify itself
in the trace2 output.
(merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).
* The output from "git diff --stat" on an unmerged path lost the
terminating LF in Git 2.39, which has been corrected.
(merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).
* "git pull -v --recurse-submodules" attempted to pass "-v" down to
underlying "git submodule update", which did not understand the
request and barfed, which has been corrected.
(merge 6f65f84766 ss/pull-v-recurse-fix later to maint).
* When given a pattern that matches an empty string at the end of a
line, the code to parse the "git diff" line-ranges fell into an
infinite loop, which has been corrected.
* Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
flush its output to the disk..
* Fix to a small regression in 2.38 days.
* "git diff --relative" did not mix well with "git diff --ext-diff",
which has been corrected.
* The logic to see if we are using the "cone" mode by checking the
sparsity patterns has been tightened to avoid mistaking a pattern
that names a single file as specifying a cone.
* Deal with a few deprecation warning from cURL library.
* Doc update for environment variables set when hooks are invoked.
* Document ORIG_HEAD a bit more.
* "git ls-tree --format='%(path) %(path)' $tree $path" showed the
path three times, which has been corrected.
* Remove "git env--helper" and demote it to a test-tool subcommand.
(merge 4a1baacd46 ab/test-env-helper later to maint).
* Newer regex library macOS stopped enabling GNU-like enhanced BRE,
where '\(A\|B\)' works as alternation, unless explicitly asked with
the REG_ENHANCED flag. "git grep" now can be compiled to do so, to
retain the old behaviour.
* Pthread emulation on Win32 leaked thread handle when a thread is
joined.
(merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).
* "git send-email -v 3" used to be expanded to "git send-email
--validate 3" when the user meant to pass them down to
"format-patch", which has been corrected.
(merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).
* Document that "branch -f <branch>" disables only the safety to
avoid recreating an existing branch.
* "git fetch <group>", when "<group>" of remotes lists the same
remote twice, unnecessarily failed when parallel fetching was
enabled, which has been corrected.
(merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).
* Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
different in the documentation.
* "git hash-object" now checks that the resulting object is well
formed with the same code as "git fsck".
(merge 8e4309038f jk/hash-object-fsck later to maint).
* Improve the error message given when private key is not loaded in
the ssh agent in the codepath to sign with an ssh key.
(merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).
* Adjust "git request-pull" to strip embedded signature from signed
tags to notice non-PGP signatures.
(merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).
* Remove support for MSys, which now lags way behind MSys2.
(merge 2987407f3c hj/remove-msys-support later to maint).
* Fix use of CreateThread() API call made early in the windows
start-up code.
(merge 592bcab61b sk/winansi-createthread-fix later to maint).
* "git pack-objects" learned to release delta-island bitmap data when
it is done using it, saving peak heap memory usage.
(merge 647982bb71 ew/free-island-marks later to maint).
* In an environment where dynamically generated code is prohibited to
run (e.g. SELinux), failure to JIT pcre patterns is expected. Fall
back to interpreted execution in such a case.
(merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).
* "git name-rev" heuristics update.
(merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).
* Remove more remaining uses of macros that relies on the_index
singleton instance without explicitly spelling it out.
* Remove unnecessary explicit sizing of strbuf.
(merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).
* Doc update.
(merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).
* Error messages given upon a signature verification failure used to
discard the errors from underlying gpg program, which has been
corrected.
(merge ad6b320756 js/gpg-errors later to maint).
* Update --date=default documentation.
(merge 9deef088ae rd/doc-default-date-format later to maint).
* A test helper had a single write(2) of 256kB, which was too big for
some platforms (e.g. NonStop), which has been corrected by using
xwrite() wrapper appropriately.
(merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).
* sscanf(3) used in "git symbolic-ref --short" implementation found
to be not working reliably on macOS in UTF-8 locales. Rewrite the
code to avoid sscanf() altogether to work it around.
(merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).
* Various fix-ups on HTTP tests.
(merge 8f2146dbf1 jk/http-test-fixes later to maint).
* Fixes to code that parses the todo file used in "rebase -i".
(merge 666b6e1135 pw/rebase-i-parse-fix later to maint).
* Test library clean-up.
(merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
(merge f95526419b ar/typofix-gitattributes-doc later to maint).
(merge 27875aeec9 km/doc-branch-start-point later to maint).
(merge 35c194dc57 es/t1509-root-fixes later to maint).
(merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
(merge bcb71d45bf jx/t1301-updates later to maint).
(merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
(merge a87a20cbb4 ar/test-cleanup later to maint).
(merge f5156f1885 ar/bisect-doc-update later to maint).
(merge fca2d86c97 jk/interop-error later to maint).
(merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
(merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
(merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
(merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
(merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
(merge 70661d288b ar/markup-em-dash later to maint).
(merge e750951e74 en/ls-files-doc-update later to maint).
(merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
(merge 3a2ebaebc7 gc/index-format-doc later to maint).
(merge b08edf709d jk/httpd-test-updates later to maint).
(merge d85e9448dd wl/new-command-doc later to maint).
(merge d912a603ed kf/t5000-modernise later to maint).
(merge e65b868d07 rs/size-t-fixes later to maint).
(merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
(merge d390e08076 cw/doc-pushurl-vs-url later to maint).
(merge 567342fc77 rs/ctype-test later to maint).
(merge d35d8f2e7a ap/t2015-style-update later to maint).
----------------------------------------------------------------
Changes since v2.39.0 are as follows:
Adam Szkoda (1):
ssh signing: better error message when key not in agent
Alison Winters (2):
completion: add optional ignore-case when matching refs
completion: add case-insensitive match of pseudorefs
Andrei Rybak (12):
gitattributes.txt: fix typo in "comma separated"
*: fix typos which duplicate a word
git-bisect-lk2009: update java code conventions link
git-bisect-lk2009: update nist report link
t6003: uncomment test '--max-age=c3, --topo-order'
t6422: drop commented out code
t7527: use test_when_finished in 'case insensitive+preserving'
Documentation: render dash correctly
userdiff: support Java type parameters
userdiff: support Java record types
userdiff: support Java sealed classes
test-lib: drop comment about test_description
Ashutosh Pandey (1):
t2015-checkout-unborn.sh: changes the style for cd
Calvin Wan (2):
fetch: fix duplicate remote parallel fetch bug
Documentation: clarify multiple pushurls vs urls
Carlo Marcelo Arenas Belón (2):
test-lib: add prerequisite for 64-bit platforms
grep: correctly identify utf-8 characters with \{b,w} in -P
Chris. Webster (3):
ci (check-whitespace): suggest fixes for errors
ci (check-whitespace): add links to job output
ci (check-whitespace): move to actions/checkout@v3
Daniël Haazen (1):
mingw: fix typo in an error message from ownership check
Derrick Stolee (25):
transport: rename got_remote_heads
bundle-uri: serve bundle.* keys from config
strbuf: introduce strbuf_strip_file_from_path()
bundle-uri: allow relative URLs in bundle lists
bundle-uri: download bundles from an advertised list
clone: unbundle the advertised bundles
hashfile: allow skipping the hash function
read-cache: add index.skipHash config option
test-lib-functions: add helper for trailing hash
features: feature.manyFiles implies fast index writes
t1600: fix racy index.skipHash test
t: allow 'scalar' in test_must_fail
t921*: test scalar behavior starting maintenance
scalar: only warn when background maintenance fails
bundle: test unbundling with incomplete history
bundle: verify using check_connected()
t5558: add tests for creationToken heuristic
bundle-uri: parse bundle.heuristic=creationToken
bundle-uri: parse bundle.<id>.creationToken values
bundle-uri: download in creationToken order
clone: set fetch.bundleURI if appropriate
bundle-uri: drop bundle.flag from design doc
fetch: fetch from an external bundle URI
bundle-uri: store fetch.bundleCreationToken
bundle-uri: test missing bundles with heuristic
Elijah Newren (16):
ls-files: add missing documentation for --resolve-undo option
ls-files: clarify descriptions of file selection options
ls-files: clarify descriptions of status tags for -t
ls-files: guide folks to --exclude-standard over other --exclude* options
t6426: fix TODO about making test more comprehensive
rebase: mark --update-refs as requiring the merge backend
rebase: flag --apply and --merge as incompatible
rebase: remove --allow-empty-message from incompatible opts
rebase: fix docs about incompatibilities with --root
rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
rebase: add coverage of other incompatible options
rebase: clarify the OPT_CMDMODE incompatibilities
rebase: fix formatting of rebase --reapply-cherry-picks option in docs
rebase: put rebase_options initialization in single place
rebase: provide better error message for apply options vs. merge config
name-rev: fix names by dropping taggerdate workaround
Emily Shaffer (4):
run-command: allow stdin for run_processes_parallel
hook API: support passing stdin to hooks, convert am's 'post-rewrite'
sequencer: use the new hook API for the simpler "post-rewrite" call
hook: support a --to-stdin=<path> option
Eric Sunshine (4):
t1509: fix failing "root work tree" test due to owner-check
t1509: make "setup" test more robust
t1509: facilitate repeated script invocations
githooks: discuss Git operations in foreign repositories
Eric Wong (2):
format-patch: support format.mboxrd with --stdout
delta-islands: free island_marks and bitmaps
Glen Choo (2):
read-tree + fetch tests: test failing "--super-prefix" interaction
docs: document zero bits in index "mode"
Gwyneth Morgan (2):
request-pull: filter out SSH/X.509 tag signatures
signature-format.txt: note SSH and X.509 signature delimiters
Harshil-Jani (2):
mingw: remove duplicate `USE_NED_ALLOCATOR` directive
mingw: remove msysGit/MSYS1 support
Jeff Hostetler (2):
fsmonitor: fix race seen in t7527
fsmonitor: eliminate call to deprecated FSEventStream function
Jeff King (74):
git-jump: move valid-mode check earlier
pack-bitmap.c: break out of the bitmap loop early if not tracing
pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
git-compat-util: avoid redefining system function names
git-compat-util: undefine system names before redeclaring them
server_supports_v2(): use a separate function for die_on_error
ls-refs: use repository parameter to iterate refs
blob: drop unused parts of parse_blob_buffer()
list-objects: drop process_gitlink() function
ws: drop unused parameter from ws_blank_line()
xdiff: drop unused parameter in def_ff()
xdiff: mark unused parameter in xdl_call_hunk_func()
diff: mark unused parameters in callbacks
list-objects-filter: mark unused parameters in virtual functions
userdiff: mark unused parameter in internal callback
ref-filter: reject arguments to %(HEAD)
ref-filter: factor out "%(foo) does not take arguments" errors
ref-filter: factor out "unrecognized %(foo) arg" errors
ref-filter: truncate atom names in error messages
ref-filter: convert email atom parser to use err_bad_arg()
test-bundle-uri: drop unused variables
diff: use filespec path to set up tempfiles for ext-diff
diff: clean up external-diff argv setup
diff: drop "name" parameter from prepare_temp_file()
convert trivial uses of strncmp() to starts_with()
convert trivial uses of strncmp() to skip_prefix()
object-file: inline calls to read_object()
streaming: inline call to read_object_file_extended()
read_object_file_extended(): drop lookup_replace option
repo_read_object_file(): stop wrapping read_object_file_extended()
packfile: inline custom read_object()
object-file: fix indent-with-space
t/interop: report which vanilla git command failed
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
t1007: modernize malformed object tests
t1006: stop using 0-padded timestamps
t7030: stop using invalid tag name
t: use hash-object --literally when created malformed objects
fsck: provide a function to fsck buffer without object struct
hash-object: use fsck for object checks
hash-object: fix descriptor leak with --literally
fsck: do not assume NUL-termination of buffers
t/lib-httpd: bump required apache version to 2.2
t/lib-httpd: bump required apache version to 2.4
t/lib-httpd: drop SSLMutex config
t/lib-httpd: increase ssl key size to 2048 bits
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
doc/ls-remote: cosmetic cleanups for examples
doc/ls-remote: clarify pattern format
shorten_unambiguous_ref(): avoid integer truncation
shorten_unambiguous_ref(): use NUM_REV_PARSE_RULES constant
shorten_unambiguous_ref(): avoid sscanf()
add basic http proxy tests
t0066: drop setup of "dir5"
t5541: run "used receive-pack service" test earlier
t5541: stop marking "used receive-pack service" test as v0 only
t5541: simplify and move "no empty path components" test
t5551: drop redundant grep for Accept-Language
t5551: lower-case headers in expected curl trace
t5551: handle HTTP/2 when checking curl trace
t5551: stop forcing clone to run with v0 protocol
t5551: handle v2 protocol when checking curl trace
t5551: handle v2 protocol in upload-pack service test
t5551: simplify expected cookie file
t5551: handle v2 protocol in cookie test
t5551: drop curl trace lines without headers
t/lib-httpd: respect $HTTPD_PROTO in expect_askpass()
t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c
t5559: fix test failures with LIB_HTTPD_SSL
t5559: make SSL/TLS the default
Jiang Xin (3):
t1301: fix wrong template dir for git-init
t1301: use test_when_finished for cleanup
t1301: do not change $CWD in "shared=all" test case
Johannes Schindelin (24):
bisect--helper: handle states directly
Turn `git bisect` into a full built-in
t0021: use Windows-friendly `pwd`
tests(mingw): avoid very slow `mingw_test_cmp`
ci: only run win+VS build & tests in Git for Windows' fork
bisect--helper: simplify exit code computation
bisect: verify that a bogus option won't try to start a bisection
bisect run: fix the error message
bisect: remove Cogito-related code
bisect: no longer try to clean up left-over `.git/head-name` files
fsck: document the new `gitattributes` message IDs
attr: adjust a mismatched data type
attr: adjust a mismatched data type
Git 2.31.7
Git 2.32.6
Git 2.33.7
Git 2.34.7
Git 2.35.7
Git 2.36.5
Git 2.37.6
Git 2.38.4
Git 2.39.2
t7510: add a test case that does not need gpg
gpg: do show gpg's error message upon failure
Johannes Sixt (1):
t3920: don't ignore errors of more than one command with `|| true`
John Cai (4):
docs: link generating patch sections
attr: fix instructions on how to check attrs
diff: consolidate diff algorithm option parsing
diff: teach diff to read algorithm from diff driver
Jonathan Tan (5):
http-fetch: invoke trace2_cmd_name()
object-file: remove OBJECT_INFO_IGNORE_LOOSE
object-file: refactor map_loose_object_1()
object-file: emit corruption errors when detected
commit: don't lazy-fetch commits
Junio C Hamano (42):
Git 2.30.7
Git 2.31.6
Git 2.32.5
Git 2.33.6
Git 2.34.6
Git 2.35.6
Git 2.36.4
Git 2.37.5
Git 2.38.3
Git 2.39.1
Start the 2.40 cycle
The first batch for 2.40
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
format-patch: unleak "-v <num>"
The seventh batch
branch: document `-f` and linked worktree behaviour
checkout: document -b/-B to highlight the differences from "git branch"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
Git 2.30.8
The fourteenth batch
The fifteenth batch
Prepare for 2.39.3 just in case
The sixteenth batch
rev-list: clarify git-log default date format
test-genzeros: avoid raw write(2)
format.attach: allow empty value to disable multi-part messages
The seventeenth batch
Git 2.40-rc0
A few more topics post 2.40-rc0
A bit more before 2.40-rc1
A bit more before 2.40-rc1
Git 2.40-rc1
Git 2.40-rc2
Karthik Nayak (2):
t0003: move setup for `--all` into new block
attr: add flag `--source` to work with tree-ish
Kostya Farber (1):
t5000: modernise archive and :(glob) test
Kyle Meyer (2):
send-email: relay '-v N' to format-patch
doc/git-branch: fix --force description typo
Kyle Zhao (3):
merge-tree.c: add --merge-base=<commit> option
merge-tree.c: allow specifying the merge-base when --stdin is passed
docs: fix description of the `--merge-base` option
Lars Kellogg-Stedman (1):
line-range: fix infinite loop bug with '$' regex
M Hickford (2):
Documentation: clarify that cache forgets credentials if the system restarts
credential: new attribute password_expiry_utc
Martin Ågren (1):
git-cat-file.txt: fix list continuations rendering literally
Mathias Krause (1):
grep: fall back to interpreter if JIT memory allocation fails
Matthias Aßhauer (1):
fetch: choose a sensible default with --jobs=0 again
Patrick Steinhardt (28):
attr: fix overflow when upserting attribute with overly long name
attr: fix out-of-bounds read with huge attribute names
attr: fix integer overflow when parsing huge attribute names
attr: fix out-of-bounds write when parsing huge number of attributes
attr: fix out-of-bounds read with unreasonable amount of patterns
attr: fix integer overflow with more than INT_MAX macros
attr: harden allocation against integer overflows
attr: fix silently splitting up lines longer than 2048 bytes
attr: ignore attribute lines exceeding 2048 bytes
attr: ignore overly large gitattributes files
pretty: fix out-of-bounds write caused by integer overflow
pretty: fix out-of-bounds read when left-flushing with stealing
pretty: fix out-of-bounds read when parsing invalid padding format
pretty: fix adding linefeed when placeholder is not expanded
pretty: fix integer overflow in wrapping format
utf8: fix truncated string lengths in `utf8_strnwidth()`
utf8: fix returning negative string width
utf8: fix overflow when returning string width
utf8: fix checking for glyph width in `strbuf_utf8_replace()`
utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
pretty: restrict input lengths for padding and wrapping formats
fsck: refactor `fsck_blob()` to allow for more checks
fsck: pull out function to check a set of blobs
fsck: move checks for gitattributes
fsck: implement checks for gitattributes
refs: fix corruption by not correctly syncing packed-refs to disk
apply: fix writing behind newly created symbolic links
delta-islands: fix segfault when freeing island marks
Peter Grayson (1):
diff: fix regression with --stat and unmerged file
Philip Oakley (6):
doc: pretty-formats: separate parameters from placeholders
doc: pretty-formats: delineate `%<|(` parameter values
doc: pretty-formats document negative column alignments
doc: pretty-formats describe use of ellipsis in truncation
doc: pretty-formats note wide char limitations, and add tests
.gitattributes: include `text` attribute for eol attributes
Philippe Blain (6):
git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
git-reset.txt: mention 'ORIG_HEAD' in the Description
git-merge.txt: mention 'ORIG_HEAD' in the Description
revisions.txt: be explicit about commands writing 'ORIG_HEAD'
git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
branch: improve advice when --recurse-submodules fails
Phillip Wood (5):
ci(github): restore "print test failures" step name
rebase: cleanup "--exec" option handling
rebase -i: check labels and refs when parsing todo list
rebase -i: match whole word in is_command()
rebase -i: fix parsing of "fixup -C<commit>"
René Scharfe (31):
t5317: stop losing return codes of git ls-files
t5317: demonstrate failure to handle multiple --filter options
pack-objects: fix handling of multiple --filter options
pack-objects: simplify --filter handling
list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
t4205: don't exit test script on failure
diff: factor out add_diff_options()
diff: use add_diff_options() in diff_opt_parse()
diff: remove parseopts member from struct diff_options
list-objects-filter: plug pattern_list leak
t3920: support CR-eating grep
reflog: clear leftovers in reflog_expiry_cleanup()
commit: skip already cleared parents in clear_commit_marks_1()
am: don't pass strvec to apply_parse_options()
object-file: inline write_buffer()
use enhanced basic regular expressions on macOS
mingw: make argv2 in try_shell_exec() non-const
factor out BARF_UNLESS_COPYABLE
do full type check in BARF_UNLESS_COPYABLE
add DUP_ARRAY
use DUP_ARRAY
ls-tree: fix expansion of repeated %(path)
ls-tree: remove dead store and strbuf for quote_c_style()
read-cache: use size_t for {base,df}_name_compare()
pack-objects: use strcspn(3) in name_cmp_len()
cache-tree: fix strbuf growth in prime_cache_tree_rec()
test-ctype: test isascii
test-ctype: test islower and isupper
test-ctype: test iscntrl, ispunct, isxdigit and isprint
archive: add --mtime
range-diff: avoid compiler warning when char is unsigned
Rubén Justo (1):
branch: force-copy a branch to itself via @{-1} is a no-op
Rudy Rigot (1):
status: modernize git-status "slow untracked files" advice
SZEDER Gábor (1):
tests: make 'test_oid' print trailing newline
Sean Allred (3):
var: do not print usage() with a correct invocation
var: allow GIT_EDITOR to return null
var: add GIT_SEQUENCE_EDITOR variable
Seija (1):
maintenance: compare output of pthread functions for inequality with 0
Seija Kijin (6):
git: remove duplicate includes
win32: use _endthreadex to terminate threads, not ExitThread
win32: prepare pthread.c for change by formatting
win32: close handles of threads that have been joined
merge: break out of all_strategy loop when strategy is found
compat/winansi: check for errors of CreateThread() correctly
Siddharth Asthana (2):
cat-file: add mailmap support to -s option
cat-file: add mailmap support to --batch-check option
Simon Gerber (1):
help.c: fix autocorrect in work tree for bare repository
Sven Strickroth (1):
submodule: accept -v for the update command
Taylor Blau (5):
ci: avoid unnecessary builds
t5619: demonstrate clone_local() with ambiguous transport
clone: delay picking a transport until after get_repo_path()
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
dir-iterator: drop unused `DIR_ITERATOR_FOLLOW_SYMLINKS`
Teng Long (5):
pack-bitmap.c: remove unnecessary "open_pack_index()" calls
pack-bitmap.c: avoid exposing absolute paths
ls-tree: cleanup the redundant SPACE
t3104: remove shift code in 'test_ls_tree_format'
range-diff: let '--abbrev' option takes effect
Thierry Reding (1):
am: allow passing --no-verify flag
Torsten Bögershausen (1):
t0003: call dd with portable blocksize
Wes Lord (1):
new-command.txt: update reference to builtin docs
William Sprent (1):
dir: check for single file cone patterns
Yoichi Nakayama (2):
git-jump: add an optional argument '--stdout'
git-jump: invoke emacs/emacsclient
Yukai Chou (1):
doc: fix non-existent config name
Yutaro Ohno (1):
doc: add "git switch -c" as another option on detached HEAD
Zhang Yi (1):
t9700: modernize test scripts
ZheNing Hu (1):
scalar: show progress if stderr refers to a terminal
idriss fekir (1):
trace.c, git.c: remove unnecessary parameter to trace_repo_setup()
Ævar Arnfjörð Bjarmason (90):
bisect tests: test for v2.30.0 "bisect run" regressions
bisect: refactor bisect_run() to match CodingGuidelines
bisect test: test exit codes on bad usage
bisect--helper: emit usage for "git bisect"
bisect; remove unused "git-bisect.sh" and ".gitignore" entry
tests: mark tests as passing with SANITIZE=leak
{reset,merge}: call discard_index() before returning
commit: discard partial cache before (re-)reading it
read-cache.c: clear and free "sparse_checkout_patterns"
dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
built-ins & libs & helpers: add/move destructors, fix leaks
unpack-file: fix ancient leak in create_temp_file()
revision API: call graph_clear() in release_revisions()
ls-files: fix a --with-tree memory leak
sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
connected.c: free the "struct packed_git"
rebase: don't leak on "--abort"
cherry-pick: free "struct replay_opts" members
revert: fix parse_options_concat() leak
built-ins: use free() not UNLEAK() if trivial, rm dead code
t5314: check exit code of "git"
t7600: don't ignore "rev-parse" exit code in helper
t4023: fix ignored exit codes of git
Makefile: use sha1collisiondetection by default on OSX and Darwin
bundle: don't segfault on "git bundle <subcmd>"
protocol v2: add server-side "bundle-uri" skeleton
t: create test harness for 'bundle-uri' command
clone: request the 'bundle-uri' command when available
bundle-uri client: add boolean transfer.bundleURI setting
bundle-uri client: add helper for testing server
submodule absorbgitdirs tests: add missing "Migrating git..." tests
submodule.c & submodule--helper: pass along "super_prefix" param
submodule--helper: don't use global --super-prefix in "absorbgitdirs"
submodule--helper: convert "foreach" to its own "--super-prefix"
submodule--helper: convert "sync" to its own "--super-prefix"
submodule--helper: convert "status" to its own "--super-prefix"
submodule--helper: convert "{update,clone}" to their own "--super-prefix"
read-tree: add "--super-prefix" option, eliminate global
builtin/bundle.c: remove superfluous "newargc" variable
bundle <cmd>: have usage_msg_opt() note the missing "<file>"
builtin/difftool.c: { 0 }-initialize rather than using memset()
sparse-index.c: expand_to_path() can assume non-NULL "istate"
sparse-index API: BUG() out on NULL ensure_full_index()
read-cache.c: refactor set_new_index_sparsity() for subsequent commit
bisect--helper: make the order consistently `argc, argv`
ls-tree: don't use "show_tree_data" for "fast" callbacks
ls-tree: use a "struct options"
ls-tree: fold "show_tree_data" into "cb" struct
ls-tree: make "line_termination" less generic
env-helper: move this built-in to "test-tool env-helper"
cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
treewide: always have a valid "index_state.repo" member
add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
add API: remove run_add_interactive() wrapper function
docs & comments: replace mentions of "git-add--interactive.perl"
tests: mark tests as passing with SANITIZE=leak
bundle.c: don't leak the "args" in the "struct child_process"
commit-graph: use free_commit_graph() instead of UNLEAK()
clone: use free() instead of UNLEAK()
various: add missing clear_pathspec(), fix leaks
name-rev: don't xstrdup() an already dup'd string
repack: fix leaks on error with "goto cleanup"
worktree: fix a trivial leak in prune_worktrees()
http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
commit-graph: fix a parse_options_concat() leak
show-branch: free() allocated "head" before return
builtin/merge.c: use fixed strings, not "strbuf", fix leak
builtin/merge.c: free "&buf" on "Your local changes..." error
grep.c: refactor free_grep_patterns()
grep API: plug memory leaks by freeing "header_list"
receive-pack: release the linked "struct command *" list
push: refactor refspec_append_mapped() for subsequent leak-fix
push: free_refs() the "local_refs" in set_refspecs()
rebase: use "cleanup" pattern in do_interactive_rebase()
sequencer.c: split up sequencer_remove_state()
sequencer API users: fix get_replay_opts() leaks
builtin/revert.c: move free-ing of "revs" to replay_opts_release()
builtin/rebase.c: fix "options.onto_name" leak
sequencer.c: always free() the "msgbuf" in do_pick_commit()
builtin/rebase.c: free() "options.strategy_opts"
commit.c: free() revs.commit in get_fork_point()
config.h: remove unused git_configset_add_parameters()
run-command.c: remove dead assignment in while-loop
builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
cocci & cache.h: fully apply "active_nr" part of index-compatibility
cocci & cache.h: apply pending "index_cache_pos" rule
cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
cache-tree API: remove redundant update_main_cache_tree()
cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"
Đoàn Trần Công Danh (6):
bisect: fix output regressions in v2.30.0
bisect run: keep some of the post-v2.30.0 output
bisect-run: verify_good: account for non-negative exit status
bisect--helper: identify as bisect when report error
bisect--helper: log: allow arbitrary number of arguments
date.c: allow ISO 8601 reduced precision times
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.40.0-rc1
@ 2023-03-01 17:40 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-03-01 17:40 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.40.0-rc1 is now available for testing at
the usual places. It is comprised of 458 non-merge commits since
v2.39.0, contributed by 78 people, 30 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.40.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.39.0 are as follows.
Welcome to the Git development community!
Adam Szkoda, Alison Winters, Ashutosh Pandey, Carl Baldwin,
Daniël Haazen, Drew Noakes, Eric Sesterhenn, Gwyneth Morgan,
Harshil-Jani, Hubert Jasudowicz, idriss fekir, Kostya Farber,
Marco Nenciarini, Markus Vervier, Matheus Tavares Bernardino,
Mathias Krause, Pat LaVarre, Peter Grayson, Rudy Rigot, Seija,
Seija Kijin, Simon Gerber, Thierry Reding, toon@iotcl.com, Wes
Lord, Yukai Chou, Yutaro Ohno, yvvdwf, Zhang Yi, and 孟子易.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Andrei Rybak, Calvin Wan, Carlo
Marcelo Arenas Belón, Christian Couder, Chris. Webster,
Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Emily Shaffer, Eric Sunshine, Eric Wong, Erik Cervin Edin, Glen
Choo, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle Meyer, Kyle
Zhao, Lars Kellogg-Stedman, Martin Ågren, Matthias Aßhauer,
M Hickford, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
Sean Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
Yoichi Nakayama, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.40 Release Notes (draft)
===============================
UI, Workflows & Features
* "merge-tree" learns a new `--merge-base` option.
* "git jump" (in contrib/) learned to present the "quickfix list" to
its standard output (instead of letting it consumed by the editor
it invokes), and learned to also drive emacs/emacsclient.
* "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
given an empty value used to behave identically. Now the latter
just gives an empty output, while the former still gives an error
message.
* Introduce a case insensitive mode to the Bash completion helpers.
* The advice message given by "git status" when it takes long time to
enumerate untracked paths has been updated.
* Just like "git var GIT_EDITOR" abstracts the complex logic to
choose which editor gets used behind it, "git var" now give support
to GIT_SEQUENCE_EDITOR.
* "git format-patch" learned to honor format.mboxrd even when sending
patches to the standard output stream,
* 'cat-file' gains mailmap support for its '--batch-check' and '-s'
options.
* Conditionally skip the pre-applypatch and applypatch-msg hooks when
applying patches with 'git am'.
* Introduce an optional configuration to allow the trailing hash that
protects the index file from bit flipping.
* "git check-attr" learned to take an optional tree-ish to read the
.gitattributes file from.
* "scalar" learned to give progress bar.
* "grep -P" learned to use Unicode Character Property to grok
character classes when processing \b and \w etc.
* "git rebase" often ignored incompatible options instead of
complaining, which has been corrected.
* "scalar" warns but continues when its periodic maintenance
feature cannot be enabled.
* The bundle-URI subsystem adds support for creation-token heuristics
to help incremental fetches.
* Userdiff regexp update for Java language.
* "git fetch --jobs=0" used to hit a BUG(), which has been corrected
to use the available CPUs.
* An invalid label or ref in the "rebase -i" todo file used to
trigger an runtime error. SUch an error is now diagnosed while the
todo file is parsed.
* The "diff" drivers specified by the "diff" attribute attached to
paths can now specify which algorithm (e.g. histogram) to use.
* "git range-diff" learned --abbrev=<num> option.
* "git archive HEAD^{tree}" records the paths with the current
timestamp in the archive, making it harder to obtain a stable
output. The command learned the --mtime option to specify an
arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).
* The credential subsystem learned that a password may have an
explicit expiration.
* The format.attach configuration variable lacked a way to override a
value defined in a lower-priority configuration file (e.g. the
system one) by redefining it in a higher-priority configuration
file. Now, setting format.attach to an empty string means show the
patch inline in the e-mail message, without using MIME attachment.
This is a backward incompatible change.
Performance, Internal Implementation, Development Support etc.
* `git bisect` becomes a builtin.
* The pack-bitmap machinery is taught to log the paths of redundant
bitmap(s) to trace2 instead of stderr.
* Use the SHA1DC implementation on macOS, just like other platforms,
by default.
* Even in a repository with promisor remote, it is useless to
attempt to lazily attempt fetching an object that is expected to be
commit, because no "filter" mode omits commit objects. Take
advantage of this assumption to fail fast on errors.
* Stop using "git --super-prefix" and narrow the scope of its use to
the submodule--helper.
* Stop running win+VS build by default.
* CI updates. We probably want a clean-up to move the long shell
script embedded in yaml file into a separate file, but that can
come later.
* Use `git diff --no-index` as a test_cmp on Windows.
We'd probably need to revisit "do we really want to, and have to,
lose CRLF vs LF?" later, at which time we may be able to further
clean this up by replacing "git diff --no-index" with "diff -u".
* Avoid unnecessary builds in CI, with settings configured in
ci-config.
* Plug leaks in sequencer subsystem and its users.
* In-tree .gitattributes update to match the way we recommend our
users to mark a file as text.
(merge 1f34e0cd3d po/attributes-text later to maint).
* Finally retire the scripted "git add -p/-i" implementation and have
everybody use the one reimplemented in C.
Fixes since v2.39
-----------------
* Various leak fixes.
* Fix a bug where `pack-objects` would not respect multiple `--filter`
arguments when invoked directly.
(merge d4f7036887 rs/multi-filter-args later to maint).
* Make fsmonitor more robust to avoid the flakiness seen in t7527.
(merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).
* Stop using deprecated macOS API in fsmonitor.
(merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).
* Redefining system functions for a few functions did not follow our
usual "implement git_foo() and #define foo(args) git_foo(args)"
pattern, which has broken build for some folks.
* The way the diff machinery prepares the options array for the
parse_options API has been refactored to avoid resource leaks.
(merge 189e97bc4b rs/diff-parseopts later to maint).
* Correct pthread API usage.
(merge 786e67611d sx/pthread-error-check-fix later to maint).
* The code to auto-correct a misspelt subcommand unnecessarily called
into git_default_config() from the early config codepath, which was
a no-no. This has bee corrected.
(merge 0918d08887 sg/help-autocorrect-config-fix later to maint).
* "git http-fetch" (which is rarely used) forgot to identify itself
in the trace2 output.
(merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).
* The output from "git diff --stat" on an unmerged path lost the
terminating LF in Git 2.39, which has been corrected.
(merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).
* "git pull -v --recurse-submodules" attempted to pass "-v" down to
underlying "git submodule update", which did not understand the
request and barfed, which has been corrected.
(merge 6f65f84766 ss/pull-v-recurse-fix later to maint).
* When given a pattern that matches an empty string at the end of a
line, the code to parse the "git diff" line-ranges fell into an
infinite loop, which has been corrected.
* Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
flush its output to the disk..
* Fix to a small regression in 2.38 days.
* "git diff --relative" did not mix well with "git diff --ext-diff",
which has been corrected.
* The logic to see if we are using the "cone" mode by checking the
sparsity patterns has been tightened to avoid mistaking a pattern
that names a single file as specifying a cone.
* Deal with a few deprecation warning from cURL library.
* Doc update for environment variables set when hooks are invoked.
* Document ORIG_HEAD a bit more.
* "git ls-tree --format='%(path) %(path)' $tree $path" showed the
path three times, which has been corrected.
* Remove "git env--helper" and demote it to a test-tool subcommand.
(merge 4a1baacd46 ab/test-env-helper later to maint).
* Newer regex library macOS stopped enabling GNU-like enhanced BRE,
where '\(A\|B\)' works as alternation, unless explicitly asked with
the REG_ENHANCED flag. "git grep" now can be compiled to do so, to
retain the old behaviour.
* Pthread emulation on Win32 leaked thread handle when a thread is
joined.
(merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).
* "git send-email -v 3" used to be expanded to "git send-email
--validate 3" when the user meant to pass them down to
"format-patch", which has been corrected.
(merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).
* Document that "branch -f <branch>" disables only the safety to
avoid recreating an existing branch.
* "git fetch <group>", when "<group>" of remotes lists the same
remote twice, unnecessarily failed when parallel fetching was
enabled, which has been corrected.
(merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).
* Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
different in the documentation.
* "git hash-object" now checks that the resulting object is well
formed with the same code as "git fsck".
(merge 8e4309038f jk/hash-object-fsck later to maint).
* Improve the error message given when private key is not loaded in
the ssh agent in the codepath to sign with an ssh key.
(merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).
* Adjust "git request-pull" to strip embedded signature from signed
tags to notice non-PGP signatures.
(merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).
* Remove support for MSys, which now lags way behind MSys2.
(merge 2987407f3c hj/remove-msys-support later to maint).
* Fix use of CreateThread() API call made early in the windows
start-up code.
(merge 592bcab61b sk/winansi-createthread-fix later to maint).
* "git pack-objects" learned to release delta-island bitmap data when
it is done using it, saving peak heap memory usage.
(merge 647982bb71 ew/free-island-marks later to maint).
* In an environment where dynamically generated code is prohibited to
run (e.g. SELinux), failure to JIT pcre patterns is expected. Fall
back to interpreted execution in such a case.
(merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).
* "git name-rev" heuristics update.
(merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).
* Remove more remaining uses of macros that relies on the_index
singleton instance without explicitly spelling it out.
* Remove unnecessary explicit sizing of strbuf.
(merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).
* Doc update.
(merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).
* Error messages given upon a signature verification failure used to
discard the errors from underlying gpg program, which has been
corrected.
(merge ad6b320756 js/gpg-errors later to maint).
* Update --date=default documentation.
(merge 9deef088ae rd/doc-default-date-format later to maint).
* A test helper had a single write(2) of 256kB, which was too big for
some platforms (e.g. NonStop), which has been corrected by using
xwrite() wrapper appropriately.
(merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).
* sscanf(3) used in "git symbolic-ref --short" implementation found
to be not working reliably on macOS in UTF-8 locales. Rewrite the
code to avoid sscanf() altogether to work it around.
(merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).
* Various fix-ups on HTTP tests.
(merge 8f2146dbf1 jk/http-test-fixes later to maint).
* Fixes to code that parses the todo file used in "rebase -i".
(merge 666b6e1135 pw/rebase-i-parse-fix later to maint).
* Test library clean-up.
(merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
(merge f95526419b ar/typofix-gitattributes-doc later to maint).
(merge 27875aeec9 km/doc-branch-start-point later to maint).
(merge 35c194dc57 es/t1509-root-fixes later to maint).
(merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
(merge bcb71d45bf jx/t1301-updates later to maint).
(merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
(merge a87a20cbb4 ar/test-cleanup later to maint).
(merge f5156f1885 ar/bisect-doc-update later to maint).
(merge fca2d86c97 jk/interop-error later to maint).
(merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
(merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
(merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
(merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
(merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
(merge 70661d288b ar/markup-em-dash later to maint).
(merge e750951e74 en/ls-files-doc-update later to maint).
(merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
(merge 3a2ebaebc7 gc/index-format-doc later to maint).
(merge b08edf709d jk/httpd-test-updates later to maint).
(merge d85e9448dd wl/new-command-doc later to maint).
(merge d912a603ed kf/t5000-modernise later to maint).
(merge e65b868d07 rs/size-t-fixes later to maint).
(merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
(merge d390e08076 cw/doc-pushurl-vs-url later to maint).
(merge 567342fc77 rs/ctype-test later to maint).
(merge d35d8f2e7a ap/t2015-style-update later to maint).
----------------------------------------------------------------
Changes since v2.39.0 are as follows:
Adam Szkoda (1):
ssh signing: better error message when key not in agent
Alison Winters (2):
completion: add optional ignore-case when matching refs
completion: add case-insensitive match of pseudorefs
Andrei Rybak (12):
gitattributes.txt: fix typo in "comma separated"
*: fix typos which duplicate a word
git-bisect-lk2009: update java code conventions link
git-bisect-lk2009: update nist report link
t6003: uncomment test '--max-age=c3, --topo-order'
t6422: drop commented out code
t7527: use test_when_finished in 'case insensitive+preserving'
Documentation: render dash correctly
userdiff: support Java type parameters
userdiff: support Java record types
userdiff: support Java sealed classes
test-lib: drop comment about test_description
Ashutosh Pandey (1):
t2015-checkout-unborn.sh: changes the style for cd
Calvin Wan (2):
fetch: fix duplicate remote parallel fetch bug
Documentation: clarify multiple pushurls vs urls
Carlo Marcelo Arenas Belón (2):
test-lib: add prerequisite for 64-bit platforms
grep: correctly identify utf-8 characters with \{b,w} in -P
Chris. Webster (3):
ci (check-whitespace): suggest fixes for errors
ci (check-whitespace): add links to job output
ci (check-whitespace): move to actions/checkout@v3
Daniël Haazen (1):
mingw: fix typo in an error message from ownership check
Derrick Stolee (25):
transport: rename got_remote_heads
bundle-uri: serve bundle.* keys from config
strbuf: introduce strbuf_strip_file_from_path()
bundle-uri: allow relative URLs in bundle lists
bundle-uri: download bundles from an advertised list
clone: unbundle the advertised bundles
hashfile: allow skipping the hash function
read-cache: add index.skipHash config option
test-lib-functions: add helper for trailing hash
features: feature.manyFiles implies fast index writes
t1600: fix racy index.skipHash test
t: allow 'scalar' in test_must_fail
t921*: test scalar behavior starting maintenance
scalar: only warn when background maintenance fails
bundle: test unbundling with incomplete history
bundle: verify using check_connected()
t5558: add tests for creationToken heuristic
bundle-uri: parse bundle.heuristic=creationToken
bundle-uri: parse bundle.<id>.creationToken values
bundle-uri: download in creationToken order
clone: set fetch.bundleURI if appropriate
bundle-uri: drop bundle.flag from design doc
fetch: fetch from an external bundle URI
bundle-uri: store fetch.bundleCreationToken
bundle-uri: test missing bundles with heuristic
Elijah Newren (16):
ls-files: add missing documentation for --resolve-undo option
ls-files: clarify descriptions of file selection options
ls-files: clarify descriptions of status tags for -t
ls-files: guide folks to --exclude-standard over other --exclude* options
t6426: fix TODO about making test more comprehensive
rebase: mark --update-refs as requiring the merge backend
rebase: flag --apply and --merge as incompatible
rebase: remove --allow-empty-message from incompatible opts
rebase: fix docs about incompatibilities with --root
rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
rebase: add coverage of other incompatible options
rebase: clarify the OPT_CMDMODE incompatibilities
rebase: fix formatting of rebase --reapply-cherry-picks option in docs
rebase: put rebase_options initialization in single place
rebase: provide better error message for apply options vs. merge config
name-rev: fix names by dropping taggerdate workaround
Emily Shaffer (4):
run-command: allow stdin for run_processes_parallel
hook API: support passing stdin to hooks, convert am's 'post-rewrite'
sequencer: use the new hook API for the simpler "post-rewrite" call
hook: support a --to-stdin=<path> option
Eric Sunshine (4):
t1509: fix failing "root work tree" test due to owner-check
t1509: make "setup" test more robust
t1509: facilitate repeated script invocations
githooks: discuss Git operations in foreign repositories
Eric Wong (2):
format-patch: support format.mboxrd with --stdout
delta-islands: free island_marks and bitmaps
Glen Choo (2):
read-tree + fetch tests: test failing "--super-prefix" interaction
docs: document zero bits in index "mode"
Gwyneth Morgan (1):
request-pull: filter out SSH/X.509 tag signatures
Harshil-Jani (2):
mingw: remove duplicate `USE_NED_ALLOCATOR` directive
mingw: remove msysGit/MSYS1 support
Jeff Hostetler (2):
fsmonitor: fix race seen in t7527
fsmonitor: eliminate call to deprecated FSEventStream function
Jeff King (74):
git-jump: move valid-mode check earlier
pack-bitmap.c: break out of the bitmap loop early if not tracing
pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
git-compat-util: avoid redefining system function names
git-compat-util: undefine system names before redeclaring them
server_supports_v2(): use a separate function for die_on_error
ls-refs: use repository parameter to iterate refs
blob: drop unused parts of parse_blob_buffer()
list-objects: drop process_gitlink() function
ws: drop unused parameter from ws_blank_line()
xdiff: drop unused parameter in def_ff()
xdiff: mark unused parameter in xdl_call_hunk_func()
diff: mark unused parameters in callbacks
list-objects-filter: mark unused parameters in virtual functions
userdiff: mark unused parameter in internal callback
ref-filter: reject arguments to %(HEAD)
ref-filter: factor out "%(foo) does not take arguments" errors
ref-filter: factor out "unrecognized %(foo) arg" errors
ref-filter: truncate atom names in error messages
ref-filter: convert email atom parser to use err_bad_arg()
test-bundle-uri: drop unused variables
diff: use filespec path to set up tempfiles for ext-diff
diff: clean up external-diff argv setup
diff: drop "name" parameter from prepare_temp_file()
convert trivial uses of strncmp() to starts_with()
convert trivial uses of strncmp() to skip_prefix()
object-file: inline calls to read_object()
streaming: inline call to read_object_file_extended()
read_object_file_extended(): drop lookup_replace option
repo_read_object_file(): stop wrapping read_object_file_extended()
packfile: inline custom read_object()
object-file: fix indent-with-space
t/interop: report which vanilla git command failed
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
t1007: modernize malformed object tests
t1006: stop using 0-padded timestamps
t7030: stop using invalid tag name
t: use hash-object --literally when created malformed objects
fsck: provide a function to fsck buffer without object struct
hash-object: use fsck for object checks
hash-object: fix descriptor leak with --literally
fsck: do not assume NUL-termination of buffers
t/lib-httpd: bump required apache version to 2.2
t/lib-httpd: bump required apache version to 2.4
t/lib-httpd: drop SSLMutex config
t/lib-httpd: increase ssl key size to 2048 bits
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
doc/ls-remote: cosmetic cleanups for examples
doc/ls-remote: clarify pattern format
shorten_unambiguous_ref(): avoid integer truncation
shorten_unambiguous_ref(): use NUM_REV_PARSE_RULES constant
shorten_unambiguous_ref(): avoid sscanf()
add basic http proxy tests
t0066: drop setup of "dir5"
t5541: run "used receive-pack service" test earlier
t5541: stop marking "used receive-pack service" test as v0 only
t5541: simplify and move "no empty path components" test
t5551: drop redundant grep for Accept-Language
t5551: lower-case headers in expected curl trace
t5551: handle HTTP/2 when checking curl trace
t5551: stop forcing clone to run with v0 protocol
t5551: handle v2 protocol when checking curl trace
t5551: handle v2 protocol in upload-pack service test
t5551: simplify expected cookie file
t5551: handle v2 protocol in cookie test
t5551: drop curl trace lines without headers
t/lib-httpd: respect $HTTPD_PROTO in expect_askpass()
t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c
t5559: fix test failures with LIB_HTTPD_SSL
t5559: make SSL/TLS the default
Jiang Xin (3):
t1301: fix wrong template dir for git-init
t1301: use test_when_finished for cleanup
t1301: do not change $CWD in "shared=all" test case
Johannes Schindelin (24):
bisect--helper: handle states directly
Turn `git bisect` into a full built-in
t0021: use Windows-friendly `pwd`
tests(mingw): avoid very slow `mingw_test_cmp`
ci: only run win+VS build & tests in Git for Windows' fork
bisect--helper: simplify exit code computation
bisect: verify that a bogus option won't try to start a bisection
bisect run: fix the error message
bisect: remove Cogito-related code
bisect: no longer try to clean up left-over `.git/head-name` files
fsck: document the new `gitattributes` message IDs
attr: adjust a mismatched data type
attr: adjust a mismatched data type
Git 2.31.7
Git 2.32.6
Git 2.33.7
Git 2.34.7
Git 2.35.7
Git 2.36.5
Git 2.37.6
Git 2.38.4
Git 2.39.2
t7510: add a test case that does not need gpg
gpg: do show gpg's error message upon failure
Johannes Sixt (1):
t3920: don't ignore errors of more than one command with `|| true`
John Cai (4):
docs: link generating patch sections
attr: fix instructions on how to check attrs
diff: consolidate diff algorithm option parsing
diff: teach diff to read algorithm from diff driver
Jonathan Tan (5):
http-fetch: invoke trace2_cmd_name()
object-file: remove OBJECT_INFO_IGNORE_LOOSE
object-file: refactor map_loose_object_1()
object-file: emit corruption errors when detected
commit: don't lazy-fetch commits
Junio C Hamano (41):
Git 2.30.7
Git 2.31.6
Git 2.32.5
Git 2.33.6
Git 2.34.6
Git 2.35.6
Git 2.36.4
Git 2.37.5
Git 2.38.3
Git 2.39.1
Start the 2.40 cycle
The first batch for 2.40
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
format-patch: unleak "-v <num>"
The seventh batch
branch: document `-f` and linked worktree behaviour
checkout: document -b/-B to highlight the differences from "git branch"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
Git 2.30.8
The fourteenth batch
The fifteenth batch
Prepare for 2.39.3 just in case
The sixteenth batch
rev-list: clarify git-log default date format
test-genzeros: avoid raw write(2)
format.attach: allow empty value to disable multi-part messages
The seventeenth batch
Git 2.40-rc0
A few more topics post 2.40-rc0
A bit more before 2.40-rc1
A bit more before 2.40-rc1
Git 2.40-rc1
Karthik Nayak (2):
t0003: move setup for `--all` into new block
attr: add flag `--source` to work with tree-ish
Kostya Farber (1):
t5000: modernise archive and :(glob) test
Kyle Meyer (2):
send-email: relay '-v N' to format-patch
doc/git-branch: fix --force description typo
Kyle Zhao (3):
merge-tree.c: add --merge-base=<commit> option
merge-tree.c: allow specifying the merge-base when --stdin is passed
docs: fix description of the `--merge-base` option
Lars Kellogg-Stedman (1):
line-range: fix infinite loop bug with '$' regex
M Hickford (2):
Documentation: clarify that cache forgets credentials if the system restarts
credential: new attribute password_expiry_utc
Martin Ågren (1):
git-cat-file.txt: fix list continuations rendering literally
Mathias Krause (1):
grep: fall back to interpreter if JIT memory allocation fails
Matthias Aßhauer (1):
fetch: choose a sensible default with --jobs=0 again
Patrick Steinhardt (28):
attr: fix overflow when upserting attribute with overly long name
attr: fix out-of-bounds read with huge attribute names
attr: fix integer overflow when parsing huge attribute names
attr: fix out-of-bounds write when parsing huge number of attributes
attr: fix out-of-bounds read with unreasonable amount of patterns
attr: fix integer overflow with more than INT_MAX macros
attr: harden allocation against integer overflows
attr: fix silently splitting up lines longer than 2048 bytes
attr: ignore attribute lines exceeding 2048 bytes
attr: ignore overly large gitattributes files
pretty: fix out-of-bounds write caused by integer overflow
pretty: fix out-of-bounds read when left-flushing with stealing
pretty: fix out-of-bounds read when parsing invalid padding format
pretty: fix adding linefeed when placeholder is not expanded
pretty: fix integer overflow in wrapping format
utf8: fix truncated string lengths in `utf8_strnwidth()`
utf8: fix returning negative string width
utf8: fix overflow when returning string width
utf8: fix checking for glyph width in `strbuf_utf8_replace()`
utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
pretty: restrict input lengths for padding and wrapping formats
fsck: refactor `fsck_blob()` to allow for more checks
fsck: pull out function to check a set of blobs
fsck: move checks for gitattributes
fsck: implement checks for gitattributes
refs: fix corruption by not correctly syncing packed-refs to disk
apply: fix writing behind newly created symbolic links
delta-islands: fix segfault when freeing island marks
Peter Grayson (1):
diff: fix regression with --stat and unmerged file
Philip Oakley (6):
doc: pretty-formats: separate parameters from placeholders
doc: pretty-formats: delineate `%<|(` parameter values
doc: pretty-formats document negative column alignments
doc: pretty-formats describe use of ellipsis in truncation
doc: pretty-formats note wide char limitations, and add tests
.gitattributes: include `text` attribute for eol attributes
Philippe Blain (6):
git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
git-reset.txt: mention 'ORIG_HEAD' in the Description
git-merge.txt: mention 'ORIG_HEAD' in the Description
revisions.txt: be explicit about commands writing 'ORIG_HEAD'
git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
branch: improve advice when --recurse-submodules fails
Phillip Wood (5):
ci(github): restore "print test failures" step name
rebase: cleanup "--exec" option handling
rebase -i: check labels and refs when parsing todo list
rebase -i: match whole word in is_command()
rebase -i: fix parsing of "fixup -C<commit>"
René Scharfe (30):
t5317: stop losing return codes of git ls-files
t5317: demonstrate failure to handle multiple --filter options
pack-objects: fix handling of multiple --filter options
pack-objects: simplify --filter handling
list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
t4205: don't exit test script on failure
diff: factor out add_diff_options()
diff: use add_diff_options() in diff_opt_parse()
diff: remove parseopts member from struct diff_options
list-objects-filter: plug pattern_list leak
t3920: support CR-eating grep
reflog: clear leftovers in reflog_expiry_cleanup()
commit: skip already cleared parents in clear_commit_marks_1()
am: don't pass strvec to apply_parse_options()
object-file: inline write_buffer()
use enhanced basic regular expressions on macOS
mingw: make argv2 in try_shell_exec() non-const
factor out BARF_UNLESS_COPYABLE
do full type check in BARF_UNLESS_COPYABLE
add DUP_ARRAY
use DUP_ARRAY
ls-tree: fix expansion of repeated %(path)
ls-tree: remove dead store and strbuf for quote_c_style()
read-cache: use size_t for {base,df}_name_compare()
pack-objects: use strcspn(3) in name_cmp_len()
cache-tree: fix strbuf growth in prime_cache_tree_rec()
test-ctype: test isascii
test-ctype: test islower and isupper
test-ctype: test iscntrl, ispunct, isxdigit and isprint
archive: add --mtime
Rubén Justo (1):
branch: force-copy a branch to itself via @{-1} is a no-op
Rudy Rigot (1):
status: modernize git-status "slow untracked files" advice
SZEDER Gábor (1):
tests: make 'test_oid' print trailing newline
Sean Allred (3):
var: do not print usage() with a correct invocation
var: allow GIT_EDITOR to return null
var: add GIT_SEQUENCE_EDITOR variable
Seija (1):
maintenance: compare output of pthread functions for inequality with 0
Seija Kijin (6):
git: remove duplicate includes
win32: use _endthreadex to terminate threads, not ExitThread
win32: prepare pthread.c for change by formatting
win32: close handles of threads that have been joined
merge: break out of all_strategy loop when strategy is found
compat/winansi: check for errors of CreateThread() correctly
Siddharth Asthana (2):
cat-file: add mailmap support to -s option
cat-file: add mailmap support to --batch-check option
Simon Gerber (1):
help.c: fix autocorrect in work tree for bare repository
Sven Strickroth (1):
submodule: accept -v for the update command
Taylor Blau (5):
ci: avoid unnecessary builds
t5619: demonstrate clone_local() with ambiguous transport
clone: delay picking a transport until after get_repo_path()
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
dir-iterator: drop unused `DIR_ITERATOR_FOLLOW_SYMLINKS`
Teng Long (5):
pack-bitmap.c: remove unnecessary "open_pack_index()" calls
pack-bitmap.c: avoid exposing absolute paths
ls-tree: cleanup the redundant SPACE
t3104: remove shift code in 'test_ls_tree_format'
range-diff: let '--abbrev' option takes effect
Thierry Reding (1):
am: allow passing --no-verify flag
Torsten Bögershausen (1):
t0003: call dd with portable blocksize
Wes Lord (1):
new-command.txt: update reference to builtin docs
William Sprent (1):
dir: check for single file cone patterns
Yoichi Nakayama (2):
git-jump: add an optional argument '--stdout'
git-jump: invoke emacs/emacsclient
Yukai Chou (1):
doc: fix non-existent config name
Yutaro Ohno (1):
doc: add "git switch -c" as another option on detached HEAD
Zhang Yi (1):
t9700: modernize test scripts
ZheNing Hu (1):
scalar: show progress if stderr refers to a terminal
idriss fekir (1):
trace.c, git.c: remove unnecessary parameter to trace_repo_setup()
Ævar Arnfjörð Bjarmason (90):
bisect tests: test for v2.30.0 "bisect run" regressions
bisect: refactor bisect_run() to match CodingGuidelines
bisect test: test exit codes on bad usage
bisect--helper: emit usage for "git bisect"
bisect; remove unused "git-bisect.sh" and ".gitignore" entry
tests: mark tests as passing with SANITIZE=leak
{reset,merge}: call discard_index() before returning
commit: discard partial cache before (re-)reading it
read-cache.c: clear and free "sparse_checkout_patterns"
dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
built-ins & libs & helpers: add/move destructors, fix leaks
unpack-file: fix ancient leak in create_temp_file()
revision API: call graph_clear() in release_revisions()
ls-files: fix a --with-tree memory leak
sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
connected.c: free the "struct packed_git"
rebase: don't leak on "--abort"
cherry-pick: free "struct replay_opts" members
revert: fix parse_options_concat() leak
built-ins: use free() not UNLEAK() if trivial, rm dead code
t5314: check exit code of "git"
t7600: don't ignore "rev-parse" exit code in helper
t4023: fix ignored exit codes of git
Makefile: use sha1collisiondetection by default on OSX and Darwin
bundle: don't segfault on "git bundle <subcmd>"
protocol v2: add server-side "bundle-uri" skeleton
t: create test harness for 'bundle-uri' command
clone: request the 'bundle-uri' command when available
bundle-uri client: add boolean transfer.bundleURI setting
bundle-uri client: add helper for testing server
submodule absorbgitdirs tests: add missing "Migrating git..." tests
submodule.c & submodule--helper: pass along "super_prefix" param
submodule--helper: don't use global --super-prefix in "absorbgitdirs"
submodule--helper: convert "foreach" to its own "--super-prefix"
submodule--helper: convert "sync" to its own "--super-prefix"
submodule--helper: convert "status" to its own "--super-prefix"
submodule--helper: convert "{update,clone}" to their own "--super-prefix"
read-tree: add "--super-prefix" option, eliminate global
builtin/bundle.c: remove superfluous "newargc" variable
bundle <cmd>: have usage_msg_opt() note the missing "<file>"
builtin/difftool.c: { 0 }-initialize rather than using memset()
sparse-index.c: expand_to_path() can assume non-NULL "istate"
sparse-index API: BUG() out on NULL ensure_full_index()
read-cache.c: refactor set_new_index_sparsity() for subsequent commit
bisect--helper: make the order consistently `argc, argv`
ls-tree: don't use "show_tree_data" for "fast" callbacks
ls-tree: use a "struct options"
ls-tree: fold "show_tree_data" into "cb" struct
ls-tree: make "line_termination" less generic
env-helper: move this built-in to "test-tool env-helper"
cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
treewide: always have a valid "index_state.repo" member
add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
add API: remove run_add_interactive() wrapper function
docs & comments: replace mentions of "git-add--interactive.perl"
tests: mark tests as passing with SANITIZE=leak
bundle.c: don't leak the "args" in the "struct child_process"
commit-graph: use free_commit_graph() instead of UNLEAK()
clone: use free() instead of UNLEAK()
various: add missing clear_pathspec(), fix leaks
name-rev: don't xstrdup() an already dup'd string
repack: fix leaks on error with "goto cleanup"
worktree: fix a trivial leak in prune_worktrees()
http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
commit-graph: fix a parse_options_concat() leak
show-branch: free() allocated "head" before return
builtin/merge.c: use fixed strings, not "strbuf", fix leak
builtin/merge.c: free "&buf" on "Your local changes..." error
grep.c: refactor free_grep_patterns()
grep API: plug memory leaks by freeing "header_list"
receive-pack: release the linked "struct command *" list
push: refactor refspec_append_mapped() for subsequent leak-fix
push: free_refs() the "local_refs" in set_refspecs()
rebase: use "cleanup" pattern in do_interactive_rebase()
sequencer.c: split up sequencer_remove_state()
sequencer API users: fix get_replay_opts() leaks
builtin/revert.c: move free-ing of "revs" to replay_opts_release()
builtin/rebase.c: fix "options.onto_name" leak
sequencer.c: always free() the "msgbuf" in do_pick_commit()
builtin/rebase.c: free() "options.strategy_opts"
commit.c: free() revs.commit in get_fork_point()
config.h: remove unused git_configset_add_parameters()
run-command.c: remove dead assignment in while-loop
builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
cocci & cache.h: fully apply "active_nr" part of index-compatibility
cocci & cache.h: apply pending "index_cache_pos" rule
cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
cache-tree API: remove redundant update_main_cache_tree()
cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"
Đoàn Trần Công Danh (6):
bisect: fix output regressions in v2.30.0
bisect run: keep some of the post-v2.30.0 output
bisect-run: verify_good: account for non-negative exit status
bisect--helper: identify as bisect when report error
bisect--helper: log: allow arbitrary number of arguments
date.c: allow ISO 8601 reduced precision times
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.40.0-rc0
@ 2023-02-24 20:24 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-02-24 20:24 UTC (permalink / raw)
To: git; +Cc: git-packagers
An early preview release Git v2.40.0-rc0 is now available for
testing at the usual places. It is comprised of 417 non-merge
commits since v2.39.0, contributed by 71 people, 24 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.40.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.39.0 are as follows.
Welcome to the Git development community!
Adam Szkoda, Alison Winters, Carl Baldwin, Daniël Haazen, Eric
Sesterhenn, Gwyneth Morgan, Harshil-Jani, Hubert Jasudowicz,
Kostya Farber, Marco Nenciarini, Markus Vervier, Mathias Krause,
Pat LaVarre, Peter Grayson, Rudy Rigot, Seija, Seija Kijin,
Simon Gerber, Thierry Reding, toon@iotcl.com, Wes Lord, Yukai
Chou, Yutaro Ohno, and yvvdwf.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Andrei Rybak, Calvin Wan, Carlo
Marcelo Arenas Belón, Christian Couder, Chris. Webster,
Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Emily Shaffer, Eric Sunshine, Eric Wong, Erik Cervin Edin, Glen
Choo, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle Meyer,
Kyle Zhao, Lars Kellogg-Stedman, Martin Ågren, M Hickford,
Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip
Wood, Randall S. Becker, René Scharfe, Rubén Justo, Sean
Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
Yoichi Nakayama, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.40 Release Notes (draft)
===============================
UI, Workflows & Features
* "merge-tree" learns a new `--merge-base` option.
* "git jump" (in contrib/) learned to present the "quickfix list" to
its standard output (instead of letting it consumed by the editor
it invokes), and learned to also drive emacs/emacsclient.
* "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
given an empty value used to behave identically. Now the latter
just gives an empty output, while the former still gives an error
message.
* Introduce a case insensitive mode to the Bash completion helpers.
* The advice message given by "git status" when it takes long time to
enumerate untracked paths has been updated.
* Just like "git var GIT_EDITOR" abstracts the complex logic to
choose which editor gets used behind it, "git var" now give support
to GIT_SEQUENCE_EDITOR.
* "git format-patch" learned to honor format.mboxrd even when sending
patches to the standard output stream,
* 'cat-file' gains mailmap support for its '--batch-check' and '-s'
options.
* Conditionally skip the pre-applypatch and applypatch-msg hooks when
applying patches with 'git am'.
* Introduce an optional configuration to allow the trailing hash that
protects the index file from bit flipping.
* "git check-attr" learned to take an optional tree-ish to read the
.gitattributes file from.
* "scalar" learned to give progress bar.
* "grep -P" learned to use Unicode Character Property to grok
character classes when processing \b and \w etc.
* "git rebase" often ignored incompatible options instead of
complaining, which has been corrected.
* "scalar" warns but continues when its periodic maintenance
feature cannot be enabled.
* The bundle-URI subsystem adds support for creation-token heuristics
to help incremental fetches.
* Userdiff regexp update for Java language.
Performance, Internal Implementation, Development Support etc.
* `git bisect` becomes a builtin.
* The pack-bitmap machinery is taught to log the paths of redundant
bitmap(s) to trace2 instead of stderr.
* Use the SHA1DC implementation on macOS, just like other platforms,
by default.
* Even in a repository with promisor remote, it is useless to
attempt to lazily attempt fetching an object that is expected to be
commit, because no "filter" mode omits commit objects. Take
advantage of this assumption to fail fast on errors.
* Stop using "git --super-prefix" and narrow the scope of its use to
the submodule--helper.
* Stop running win+VS build by default.
* CI updates. We probably want a clean-up to move the long shell
script embedded in yaml file into a separate file, but that can
come later.
* Use `git diff --no-index` as a test_cmp on Windows.
We'd probably need to revisit "do we really want to, and have to,
lose CRLF vs LF?" later, at which time we may be able to further
clean this up by replacing "git diff --no-index" with "diff -u".
* Avoid unnecessary builds in CI, with settings configured in
ci-config.
* Plug leaks in sequencer subsystem and its users.
* In-tree .gitattributes update to match the way we recommend our
users to mark a file as text.
(merge 1f34e0cd3d po/attributes-text later to maint).
* Finally retire the scripted "git add -p/-i" implementation and have
everybody use the one reimplemented in C.
Fixes since v2.39
-----------------
* Various leak fixes.
* Fix a bug where `pack-objects` would not respect multiple `--filter`
arguments when invoked directly.
(merge d4f7036887 rs/multi-filter-args later to maint).
* Make fsmonitor more robust to avoid the flakiness seen in t7527.
(merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).
* Stop using deprecated macOS API in fsmonitor.
(merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).
* Redefining system functions for a few functions did not follow our
usual "implement git_foo() and #define foo(args) git_foo(args)"
pattern, which has broken build for some folks.
* The way the diff machinery prepares the options array for the
parse_options API has been refactored to avoid resource leaks.
(merge 189e97bc4b rs/diff-parseopts later to maint).
* Correct pthread API usage.
(merge 786e67611d sx/pthread-error-check-fix later to maint).
* The code to auto-correct a misspelt subcommand unnecessarily called
into git_default_config() from the early config codepath, which was
a no-no. This has bee corrected.
(merge 0918d08887 sg/help-autocorrect-config-fix later to maint).
* "git http-fetch" (which is rarely used) forgot to identify itself
in the trace2 output.
(merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).
* The output from "git diff --stat" on an unmerged path lost the
terminating LF in Git 2.39, which has been corrected.
(merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).
* "git pull -v --recurse-submodules" attempted to pass "-v" down to
underlying "git submodule update", which did not understand the
request and barfed, which has been corrected.
(merge 6f65f84766 ss/pull-v-recurse-fix later to maint).
* When given a pattern that matches an empty string at the end of a
line, the code to parse the "git diff" line-ranges fell into an
infinite loop, which has been corrected.
* Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
flush its output to the disk..
* Fix to a small regression in 2.38 days.
* "git diff --relative" did not mix well with "git diff --ext-diff",
which has been corrected.
* The logic to see if we are using the "cone" mode by checking the
sparsity patterns has been tightened to avoid mistaking a pattern
that names a single file as specifying a cone.
* Deal with a few deprecation warning from cURL library.
* Doc update for environment variables set when hooks are invoked.
* Document ORIG_HEAD a bit more.
* "git ls-tree --format='%(path) %(path)' $tree $path" showed the
path three times, which has been corrected.
* Remove "git env--helper" and demote it to a test-tool subcommand.
(merge 4a1baacd46 ab/test-env-helper later to maint).
* Newer regex library macOS stopped enabling GNU-like enhanced BRE,
where '\(A\|B\)' works as alternation, unless explicitly asked with
the REG_ENHANCED flag. "git grep" now can be compiled to do so, to
retain the old behaviour.
* Pthread emulation on Win32 leaked thread handle when a thread is
joined.
(merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).
* "git send-email -v 3" used to be expanded to "git send-email
--validate 3" when the user meant to pass them down to
"format-patch", which has been corrected.
(merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).
* Document that "branch -f <branch>" disables only the safety to
avoid recreating an existing branch.
* "git fetch <group>", when "<group>" of remotes lists the same
remote twice, unnecessarily failed when parallel fetching was
enabled, which has been corrected.
(merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).
* Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
different in the documentation.
* "git hash-object" now checks that the resulting object is well
formed with the same code as "git fsck".
(merge 8e4309038f jk/hash-object-fsck later to maint).
* Improve the error message given when private key is not loaded in
the ssh agent in the codepath to sign with an ssh key.
(merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).
* Adjust "git request-pull" to strip embedded signature from signed
tags to notice non-PGP signatures.
(merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).
* Remove support for MSys, which now lags way behind MSys2.
(merge 2987407f3c hj/remove-msys-support later to maint).
* Fix use of CreateThread() API call made early in the windows
start-up code.
(merge 592bcab61b sk/winansi-createthread-fix later to maint).
* "git pack-objects" learned to release delta-island bitmap data when
it is done using it, saving peak heap memory usage.
(merge 647982bb71 ew/free-island-marks later to maint).
* In an environment where dynamically generated code is prohibited to
run (e.g. SELinux), failure to JIT pcre patterns is expected. Fall
back to interpreted execution in such a case.
(merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).
* "git name-rev" heuristics update.
(merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).
* Remove more remaining uses of macros that relies on the_index
singleton instance without explicitly spelling it out.
* Remove unnecessary explicit sizing of strbuf.
(merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).
* Doc update.
(merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).
* Error messages given upon a signature verification failure used to
discard the errors from underlying gpg program, which has been
corrected.
(merge ad6b320756 js/gpg-errors later to maint).
* Update --date=default documentation.
(merge 9deef088ae rd/doc-default-date-format later to maint).
* A test helper had a single write(2) of 256kB, which was too big for
some platforms (e.g. NonStop), which has been corrected by using
xwrite() wrapper appropriately.
(merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
(merge f95526419b ar/typofix-gitattributes-doc later to maint).
(merge 27875aeec9 km/doc-branch-start-point later to maint).
(merge 35c194dc57 es/t1509-root-fixes later to maint).
(merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
(merge bcb71d45bf jx/t1301-updates later to maint).
(merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
(merge a87a20cbb4 ar/test-cleanup later to maint).
(merge f5156f1885 ar/bisect-doc-update later to maint).
(merge fca2d86c97 jk/interop-error later to maint).
(merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
(merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
(merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
(merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
(merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
(merge 70661d288b ar/markup-em-dash later to maint).
(merge e750951e74 en/ls-files-doc-update later to maint).
(merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
(merge 3a2ebaebc7 gc/index-format-doc later to maint).
(merge b08edf709d jk/httpd-test-updates later to maint).
(merge d85e9448dd wl/new-command-doc later to maint).
(merge d912a603ed kf/t5000-modernise later to maint).
(merge e65b868d07 rs/size-t-fixes later to maint).
(merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
(merge d390e08076 cw/doc-pushurl-vs-url later to maint).
(merge 567342fc77 rs/ctype-test later to maint).
----------------------------------------------------------------
Changes since v2.39.0 are as follows:
Adam Szkoda (1):
ssh signing: better error message when key not in agent
Alison Winters (2):
completion: add optional ignore-case when matching refs
completion: add case-insensitive match of pseudorefs
Andrei Rybak (11):
gitattributes.txt: fix typo in "comma separated"
*: fix typos which duplicate a word
git-bisect-lk2009: update java code conventions link
git-bisect-lk2009: update nist report link
t6003: uncomment test '--max-age=c3, --topo-order'
t6422: drop commented out code
t7527: use test_when_finished in 'case insensitive+preserving'
Documentation: render dash correctly
userdiff: support Java type parameters
userdiff: support Java record types
userdiff: support Java sealed classes
Calvin Wan (2):
fetch: fix duplicate remote parallel fetch bug
Documentation: clarify multiple pushurls vs urls
Carlo Marcelo Arenas Belón (2):
test-lib: add prerequisite for 64-bit platforms
grep: correctly identify utf-8 characters with \{b,w} in -P
Chris. Webster (3):
ci (check-whitespace): suggest fixes for errors
ci (check-whitespace): add links to job output
ci (check-whitespace): move to actions/checkout@v3
Daniël Haazen (1):
mingw: fix typo in an error message from ownership check
Derrick Stolee (25):
transport: rename got_remote_heads
bundle-uri: serve bundle.* keys from config
strbuf: introduce strbuf_strip_file_from_path()
bundle-uri: allow relative URLs in bundle lists
bundle-uri: download bundles from an advertised list
clone: unbundle the advertised bundles
hashfile: allow skipping the hash function
read-cache: add index.skipHash config option
test-lib-functions: add helper for trailing hash
features: feature.manyFiles implies fast index writes
t1600: fix racy index.skipHash test
t: allow 'scalar' in test_must_fail
t921*: test scalar behavior starting maintenance
scalar: only warn when background maintenance fails
bundle: test unbundling with incomplete history
bundle: verify using check_connected()
t5558: add tests for creationToken heuristic
bundle-uri: parse bundle.heuristic=creationToken
bundle-uri: parse bundle.<id>.creationToken values
bundle-uri: download in creationToken order
clone: set fetch.bundleURI if appropriate
bundle-uri: drop bundle.flag from design doc
fetch: fetch from an external bundle URI
bundle-uri: store fetch.bundleCreationToken
bundle-uri: test missing bundles with heuristic
Elijah Newren (16):
ls-files: add missing documentation for --resolve-undo option
ls-files: clarify descriptions of file selection options
ls-files: clarify descriptions of status tags for -t
ls-files: guide folks to --exclude-standard over other --exclude* options
t6426: fix TODO about making test more comprehensive
rebase: mark --update-refs as requiring the merge backend
rebase: flag --apply and --merge as incompatible
rebase: remove --allow-empty-message from incompatible opts
rebase: fix docs about incompatibilities with --root
rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
rebase: add coverage of other incompatible options
rebase: clarify the OPT_CMDMODE incompatibilities
rebase: fix formatting of rebase --reapply-cherry-picks option in docs
rebase: put rebase_options initialization in single place
rebase: provide better error message for apply options vs. merge config
name-rev: fix names by dropping taggerdate workaround
Emily Shaffer (4):
run-command: allow stdin for run_processes_parallel
hook API: support passing stdin to hooks, convert am's 'post-rewrite'
sequencer: use the new hook API for the simpler "post-rewrite" call
hook: support a --to-stdin=<path> option
Eric Sunshine (4):
t1509: fix failing "root work tree" test due to owner-check
t1509: make "setup" test more robust
t1509: facilitate repeated script invocations
githooks: discuss Git operations in foreign repositories
Eric Wong (2):
format-patch: support format.mboxrd with --stdout
delta-islands: free island_marks and bitmaps
Glen Choo (2):
read-tree + fetch tests: test failing "--super-prefix" interaction
docs: document zero bits in index "mode"
Gwyneth Morgan (1):
request-pull: filter out SSH/X.509 tag signatures
Harshil-Jani (2):
mingw: remove duplicate `USE_NED_ALLOCATOR` directive
mingw: remove msysGit/MSYS1 support
Jeff Hostetler (2):
fsmonitor: fix race seen in t7527
fsmonitor: eliminate call to deprecated FSEventStream function
Jeff King (53):
git-jump: move valid-mode check earlier
pack-bitmap.c: break out of the bitmap loop early if not tracing
pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
git-compat-util: avoid redefining system function names
git-compat-util: undefine system names before redeclaring them
server_supports_v2(): use a separate function for die_on_error
ls-refs: use repository parameter to iterate refs
blob: drop unused parts of parse_blob_buffer()
list-objects: drop process_gitlink() function
ws: drop unused parameter from ws_blank_line()
xdiff: drop unused parameter in def_ff()
xdiff: mark unused parameter in xdl_call_hunk_func()
diff: mark unused parameters in callbacks
list-objects-filter: mark unused parameters in virtual functions
userdiff: mark unused parameter in internal callback
ref-filter: reject arguments to %(HEAD)
ref-filter: factor out "%(foo) does not take arguments" errors
ref-filter: factor out "unrecognized %(foo) arg" errors
ref-filter: truncate atom names in error messages
ref-filter: convert email atom parser to use err_bad_arg()
test-bundle-uri: drop unused variables
diff: use filespec path to set up tempfiles for ext-diff
diff: clean up external-diff argv setup
diff: drop "name" parameter from prepare_temp_file()
convert trivial uses of strncmp() to starts_with()
convert trivial uses of strncmp() to skip_prefix()
object-file: inline calls to read_object()
streaming: inline call to read_object_file_extended()
read_object_file_extended(): drop lookup_replace option
repo_read_object_file(): stop wrapping read_object_file_extended()
packfile: inline custom read_object()
object-file: fix indent-with-space
t/interop: report which vanilla git command failed
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
t1007: modernize malformed object tests
t1006: stop using 0-padded timestamps
t7030: stop using invalid tag name
t: use hash-object --literally when created malformed objects
fsck: provide a function to fsck buffer without object struct
hash-object: use fsck for object checks
hash-object: fix descriptor leak with --literally
fsck: do not assume NUL-termination of buffers
t/lib-httpd: bump required apache version to 2.2
t/lib-httpd: bump required apache version to 2.4
t/lib-httpd: drop SSLMutex config
t/lib-httpd: increase ssl key size to 2048 bits
http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
http: support CURLOPT_PROTOCOLS_STR
doc/ls-remote: cosmetic cleanups for examples
doc/ls-remote: clarify pattern format
Jiang Xin (3):
t1301: fix wrong template dir for git-init
t1301: use test_when_finished for cleanup
t1301: do not change $CWD in "shared=all" test case
Johannes Schindelin (24):
bisect--helper: handle states directly
Turn `git bisect` into a full built-in
t0021: use Windows-friendly `pwd`
tests(mingw): avoid very slow `mingw_test_cmp`
ci: only run win+VS build & tests in Git for Windows' fork
bisect--helper: simplify exit code computation
bisect: verify that a bogus option won't try to start a bisection
bisect run: fix the error message
bisect: remove Cogito-related code
bisect: no longer try to clean up left-over `.git/head-name` files
fsck: document the new `gitattributes` message IDs
attr: adjust a mismatched data type
attr: adjust a mismatched data type
Git 2.31.7
Git 2.32.6
Git 2.33.7
Git 2.34.7
Git 2.35.7
Git 2.36.5
Git 2.37.6
Git 2.38.4
Git 2.39.2
t7510: add a test case that does not need gpg
gpg: do show gpg's error message upon failure
Johannes Sixt (1):
t3920: don't ignore errors of more than one command with `|| true`
John Cai (2):
docs: link generating patch sections
attr: fix instructions on how to check attrs
Jonathan Tan (5):
http-fetch: invoke trace2_cmd_name()
object-file: remove OBJECT_INFO_IGNORE_LOOSE
object-file: refactor map_loose_object_1()
object-file: emit corruption errors when detected
commit: don't lazy-fetch commits
Junio C Hamano (36):
Git 2.30.7
Git 2.31.6
Git 2.32.5
Git 2.33.6
Git 2.34.6
Git 2.35.6
Git 2.36.4
Git 2.37.5
Git 2.38.3
Git 2.39.1
Start the 2.40 cycle
The first batch for 2.40
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
format-patch: unleak "-v <num>"
The seventh batch
branch: document `-f` and linked worktree behaviour
checkout: document -b/-B to highlight the differences from "git branch"
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
Git 2.30.8
The fourteenth batch
The fifteenth batch
Prepare for 2.39.3 just in case
The sixteenth batch
rev-list: clarify git-log default date format
test-genzeros: avoid raw write(2)
The seventeenth batch
Git 2.40-rc0
Karthik Nayak (2):
t0003: move setup for `--all` into new block
attr: add flag `--source` to work with tree-ish
Kostya Farber (1):
t5000: modernise archive and :(glob) test
Kyle Meyer (2):
send-email: relay '-v N' to format-patch
doc/git-branch: fix --force description typo
Kyle Zhao (3):
merge-tree.c: add --merge-base=<commit> option
merge-tree.c: allow specifying the merge-base when --stdin is passed
docs: fix description of the `--merge-base` option
Lars Kellogg-Stedman (1):
line-range: fix infinite loop bug with '$' regex
M Hickford (1):
Documentation: clarify that cache forgets credentials if the system restarts
Martin Ågren (1):
git-cat-file.txt: fix list continuations rendering literally
Mathias Krause (1):
grep: fall back to interpreter if JIT memory allocation fails
Patrick Steinhardt (27):
attr: fix overflow when upserting attribute with overly long name
attr: fix out-of-bounds read with huge attribute names
attr: fix integer overflow when parsing huge attribute names
attr: fix out-of-bounds write when parsing huge number of attributes
attr: fix out-of-bounds read with unreasonable amount of patterns
attr: fix integer overflow with more than INT_MAX macros
attr: harden allocation against integer overflows
attr: fix silently splitting up lines longer than 2048 bytes
attr: ignore attribute lines exceeding 2048 bytes
attr: ignore overly large gitattributes files
pretty: fix out-of-bounds write caused by integer overflow
pretty: fix out-of-bounds read when left-flushing with stealing
pretty: fix out-of-bounds read when parsing invalid padding format
pretty: fix adding linefeed when placeholder is not expanded
pretty: fix integer overflow in wrapping format
utf8: fix truncated string lengths in `utf8_strnwidth()`
utf8: fix returning negative string width
utf8: fix overflow when returning string width
utf8: fix checking for glyph width in `strbuf_utf8_replace()`
utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
pretty: restrict input lengths for padding and wrapping formats
fsck: refactor `fsck_blob()` to allow for more checks
fsck: pull out function to check a set of blobs
fsck: move checks for gitattributes
fsck: implement checks for gitattributes
refs: fix corruption by not correctly syncing packed-refs to disk
apply: fix writing behind newly created symbolic links
Peter Grayson (1):
diff: fix regression with --stat and unmerged file
Philip Oakley (6):
doc: pretty-formats: separate parameters from placeholders
doc: pretty-formats: delineate `%<|(` parameter values
doc: pretty-formats document negative column alignments
doc: pretty-formats describe use of ellipsis in truncation
doc: pretty-formats note wide char limitations, and add tests
.gitattributes: include `text` attribute for eol attributes
Philippe Blain (6):
git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
git-reset.txt: mention 'ORIG_HEAD' in the Description
git-merge.txt: mention 'ORIG_HEAD' in the Description
revisions.txt: be explicit about commands writing 'ORIG_HEAD'
git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
branch: improve advice when --recurse-submodules fails
Phillip Wood (2):
ci(github): restore "print test failures" step name
rebase: cleanup "--exec" option handling
René Scharfe (29):
t5317: stop losing return codes of git ls-files
t5317: demonstrate failure to handle multiple --filter options
pack-objects: fix handling of multiple --filter options
pack-objects: simplify --filter handling
list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
t4205: don't exit test script on failure
diff: factor out add_diff_options()
diff: use add_diff_options() in diff_opt_parse()
diff: remove parseopts member from struct diff_options
list-objects-filter: plug pattern_list leak
t3920: support CR-eating grep
reflog: clear leftovers in reflog_expiry_cleanup()
commit: skip already cleared parents in clear_commit_marks_1()
am: don't pass strvec to apply_parse_options()
object-file: inline write_buffer()
use enhanced basic regular expressions on macOS
mingw: make argv2 in try_shell_exec() non-const
factor out BARF_UNLESS_COPYABLE
do full type check in BARF_UNLESS_COPYABLE
add DUP_ARRAY
use DUP_ARRAY
ls-tree: fix expansion of repeated %(path)
ls-tree: remove dead store and strbuf for quote_c_style()
read-cache: use size_t for {base,df}_name_compare()
pack-objects: use strcspn(3) in name_cmp_len()
cache-tree: fix strbuf growth in prime_cache_tree_rec()
test-ctype: test isascii
test-ctype: test islower and isupper
test-ctype: test iscntrl, ispunct, isxdigit and isprint
Rubén Justo (1):
branch: force-copy a branch to itself via @{-1} is a no-op
Rudy Rigot (1):
status: modernize git-status "slow untracked files" advice
SZEDER Gábor (1):
tests: make 'test_oid' print trailing newline
Sean Allred (3):
var: do not print usage() with a correct invocation
var: allow GIT_EDITOR to return null
var: add GIT_SEQUENCE_EDITOR variable
Seija (1):
maintenance: compare output of pthread functions for inequality with 0
Seija Kijin (6):
git: remove duplicate includes
win32: use _endthreadex to terminate threads, not ExitThread
win32: prepare pthread.c for change by formatting
win32: close handles of threads that have been joined
merge: break out of all_strategy loop when strategy is found
compat/winansi: check for errors of CreateThread() correctly
Siddharth Asthana (2):
cat-file: add mailmap support to -s option
cat-file: add mailmap support to --batch-check option
Simon Gerber (1):
help.c: fix autocorrect in work tree for bare repository
Sven Strickroth (1):
submodule: accept -v for the update command
Taylor Blau (4):
ci: avoid unnecessary builds
t5619: demonstrate clone_local() with ambiguous transport
clone: delay picking a transport until after get_repo_path()
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
Teng Long (4):
pack-bitmap.c: remove unnecessary "open_pack_index()" calls
pack-bitmap.c: avoid exposing absolute paths
ls-tree: cleanup the redundant SPACE
t3104: remove shift code in 'test_ls_tree_format'
Thierry Reding (1):
am: allow passing --no-verify flag
Torsten Bögershausen (1):
t0003: call dd with portable blocksize
Wes Lord (1):
new-command.txt: update reference to builtin docs
William Sprent (1):
dir: check for single file cone patterns
Yoichi Nakayama (2):
git-jump: add an optional argument '--stdout'
git-jump: invoke emacs/emacsclient
Yukai Chou (1):
doc: fix non-existent config name
Yutaro Ohno (1):
doc: add "git switch -c" as another option on detached HEAD
ZheNing Hu (1):
scalar: show progress if stderr refers to a terminal
Ævar Arnfjörð Bjarmason (90):
bisect tests: test for v2.30.0 "bisect run" regressions
bisect: refactor bisect_run() to match CodingGuidelines
bisect test: test exit codes on bad usage
bisect--helper: emit usage for "git bisect"
bisect; remove unused "git-bisect.sh" and ".gitignore" entry
tests: mark tests as passing with SANITIZE=leak
{reset,merge}: call discard_index() before returning
commit: discard partial cache before (re-)reading it
read-cache.c: clear and free "sparse_checkout_patterns"
dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
built-ins & libs & helpers: add/move destructors, fix leaks
unpack-file: fix ancient leak in create_temp_file()
revision API: call graph_clear() in release_revisions()
ls-files: fix a --with-tree memory leak
sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
connected.c: free the "struct packed_git"
rebase: don't leak on "--abort"
cherry-pick: free "struct replay_opts" members
revert: fix parse_options_concat() leak
built-ins: use free() not UNLEAK() if trivial, rm dead code
t5314: check exit code of "git"
t7600: don't ignore "rev-parse" exit code in helper
t4023: fix ignored exit codes of git
Makefile: use sha1collisiondetection by default on OSX and Darwin
bundle: don't segfault on "git bundle <subcmd>"
protocol v2: add server-side "bundle-uri" skeleton
t: create test harness for 'bundle-uri' command
clone: request the 'bundle-uri' command when available
bundle-uri client: add boolean transfer.bundleURI setting
bundle-uri client: add helper for testing server
submodule absorbgitdirs tests: add missing "Migrating git..." tests
submodule.c & submodule--helper: pass along "super_prefix" param
submodule--helper: don't use global --super-prefix in "absorbgitdirs"
submodule--helper: convert "foreach" to its own "--super-prefix"
submodule--helper: convert "sync" to its own "--super-prefix"
submodule--helper: convert "status" to its own "--super-prefix"
submodule--helper: convert "{update,clone}" to their own "--super-prefix"
read-tree: add "--super-prefix" option, eliminate global
builtin/bundle.c: remove superfluous "newargc" variable
bundle <cmd>: have usage_msg_opt() note the missing "<file>"
builtin/difftool.c: { 0 }-initialize rather than using memset()
sparse-index.c: expand_to_path() can assume non-NULL "istate"
sparse-index API: BUG() out on NULL ensure_full_index()
read-cache.c: refactor set_new_index_sparsity() for subsequent commit
bisect--helper: make the order consistently `argc, argv`
ls-tree: don't use "show_tree_data" for "fast" callbacks
ls-tree: use a "struct options"
ls-tree: fold "show_tree_data" into "cb" struct
ls-tree: make "line_termination" less generic
env-helper: move this built-in to "test-tool env-helper"
cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
treewide: always have a valid "index_state.repo" member
add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
add API: remove run_add_interactive() wrapper function
docs & comments: replace mentions of "git-add--interactive.perl"
tests: mark tests as passing with SANITIZE=leak
bundle.c: don't leak the "args" in the "struct child_process"
commit-graph: use free_commit_graph() instead of UNLEAK()
clone: use free() instead of UNLEAK()
various: add missing clear_pathspec(), fix leaks
name-rev: don't xstrdup() an already dup'd string
repack: fix leaks on error with "goto cleanup"
worktree: fix a trivial leak in prune_worktrees()
http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
commit-graph: fix a parse_options_concat() leak
show-branch: free() allocated "head" before return
builtin/merge.c: use fixed strings, not "strbuf", fix leak
builtin/merge.c: free "&buf" on "Your local changes..." error
grep.c: refactor free_grep_patterns()
grep API: plug memory leaks by freeing "header_list"
receive-pack: release the linked "struct command *" list
push: refactor refspec_append_mapped() for subsequent leak-fix
push: free_refs() the "local_refs" in set_refspecs()
rebase: use "cleanup" pattern in do_interactive_rebase()
sequencer.c: split up sequencer_remove_state()
sequencer API users: fix get_replay_opts() leaks
builtin/revert.c: move free-ing of "revs" to replay_opts_release()
builtin/rebase.c: fix "options.onto_name" leak
sequencer.c: always free() the "msgbuf" in do_pick_commit()
builtin/rebase.c: free() "options.strategy_opts"
commit.c: free() revs.commit in get_fork_point()
config.h: remove unused git_configset_add_parameters()
run-command.c: remove dead assignment in while-loop
builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
cocci & cache.h: fully apply "active_nr" part of index-compatibility
cocci & cache.h: apply pending "index_cache_pos" rule
cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
cache-tree API: remove redundant update_main_cache_tree()
cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"
Đoàn Trần Công Danh (6):
bisect: fix output regressions in v2.30.0
bisect run: keep some of the post-v2.30.0 output
bisect-run: verify_good: account for non-negative exit status
bisect--helper: identify as bisect when report error
bisect--helper: log: allow arbitrary number of arguments
date.c: allow ISO 8601 reduced precision times
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0
@ 2022-12-12 13:43 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-12-12 13:43 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.39.0 is now available at the
usual places. It is comprised of 483 non-merge commits since
v2.38.0, contributed by 86 people, 31 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.39.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!
Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
Noah Betzen, Nsengiyumva Wilberforce, orygaw, Oscar Dominguez,
Ronan Pigott, Rubén Justo, Sotir Danailov, srz_zumix, Stefano
Rivera, Tim Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alexander Shopov, Alex Henrie, Bagas Sanjaya, Derrick Stolee,
Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Emir
SARI, Eric DeCosta, Eric Sunshine, Eric Wong, Fangyi Zhou,
Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
Jordi Mas, Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin
Ågren, Martin von Zweigbergk, Matheus Tavares, Matthew John
Cheetham, Matthias Rüster, Michael J Gruber, Michael McClimon,
Patrick Steinhardt, Paul Smith, Peter Krefting, Philip Oakley,
Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER Gábor,
Taylor Blau, Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan,
and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes
=======================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
* `parse_object()` has been hardened to check for the existence of a
suspected blob object.
* The build procedure has been adjusted to GNUmake version 4.4, which
made some changes to how pattern rule with multiple targets are
handled.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborn branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" created temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Assorted fixes of parsing end-user input as integers.
(merge 14770cf0de pw/config-int-parse-fixes later to maint).
* "git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary. The command has been taught to
ignore such a failure.
(merge 6974765352 ew/prune-with-missing-objects-pack later to maint).
* Add one more candidate directory that may house httpd modules while
running tests.
(merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).
* A handful of leaks in the line-log machinery have been plugged.
* The format of a line in /proc/cpuinfo that describes a CPU on s390x
looked different from everybody else, and the code in chainlint.pl
failed to parse it.
(merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).
* Adjust the GitHub CI to newer ubuntu release.
(merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
(merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
(merge 288fcb1c94 zk/push-use-bitmaps later to maint).
(merge 42db324c0f km/merge-recursive-typofix later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5501t)
Andreas Hasenack (1):
chainlint.pl: fix /proc/cpuinfo regexp
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Bagas Sanjaya (1):
l10n: po-id for 2.39 (round 1)
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Emir SARI (1):
l10n: tr: v2.39.0 updates
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (9):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
lib-httpd: extend module location auto-detection
Eric Wong (2):
delta-islands: free island-related data after use
prune: quiet ENOENT on missing directories
Fangyi Zhou (1):
l10n: zh_CN v2.39.0 round 1
Glen Choo (3):
config: respect includes in protected config
http: redact curl h2h3 headers in info
object-file: use real paths when adding alternates
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jean-Noël Avila (2):
i18n: fix command template placeholder format
l10n: fr: v2.39 rnd 1
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (43):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
parse_object(): drop extra "has" check before checking object type
parse_object(): check on-disk type of suspected blob
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Jiang Xin (5):
t5516: fail to run in verbose mode
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (14):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
ci: avoid using deprecated {up,down}load-artifacts Action
RelNotes: a couple of typofixes
ci: use a newer `github-script` version
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Jordi Mas (1):
l10n: Update Catalan translation
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (32):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Another batch before -rc1
A bit more before -rc1
Git 2.39-rc1
Git 2.39-rc2
Git 2.38.2
Git 2.39
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
Kyle Meyer (1):
merge-recursive: fix variable typo in error message
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matheus Tavares (1):
mailmap: update email address of Matheus Tavares
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Oscar Dominguez (1):
ci(main): upgrade actions/checkout to v3
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Paul Smith (1):
Makefile: avoid multiple patterns when recipes generate one file
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5501t0f0)
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (26):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
git_parse_unsigned: reject negative values
config: require at least one digit when parsing numbers
git_parse_signed(): avoid integer overflow
sequencer: unify label lookup
sequencer: tighten label lookups
Ralf Thielow (1):
l10n: de.po: update German translation
René Scharfe (21):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
list-objects-filter: plug combine_filter_data leak
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (4):
Documentation/build-docdep.perl: generate sorted output
line-log: free diff queue when processing non-merge commits
line-log: free the diff queues' arrays when processing merge commits
diff.c: use diff_free_queue()
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (8):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
rebase --update-refs: avoid unintended ref deletion
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
Yi-Jyun Pan (1):
l10n: zh_TW.po: Git 2.39-rc2
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (118):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
cache.h: remove unused "the_index" compat macros
builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
cocci & cache.h: remove rarely used "the_index" compat macros
read-cache API & users: make discard_index() return void
cocci: add a index-compatibility.pending.cocci
cocci & cache.h: apply a selection of "pending" index-compatibility
cocci & cache.h: apply variable section of "pending" index-compatibility
cocci: apply "pending" index-compatibility to "t/helper/*.c"
{builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
cocci: apply "pending" index-compatibility to some "builtin/*.c"
parse_object(): simplify blob conditional
trace2 tests: guard pthread test with "PTHREAD"
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
cocci: avoid "should ... be a metavariable" warnings
CI: upgrade to macos-12, and pin OSX version
CI: don't explicitly pick "bash" shell outside of Windows, fix regression
CI: migrate away from deprecated "set-output" syntax
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0-rc2
@ 2022-12-06 4:00 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-12-06 4:00 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.39.0-rc2 is now available for testing at
the usual places. It is comprised of 463 non-merge commits since
v2.38.0, contributed by 74 people, 30 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.39.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!
Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño, Alex Henrie, Derrick
Stolee, Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Eric
DeCosta, Eric Sunshine, Eric Wong, Glen Choo, Han-Wen Nienhuys,
Jan Pokorný, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
Zhang, Jiang Xin, Johannes Altmanninger, Johannes Schindelin, John
Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Kyle Meyer,
Martin Ågren, Martin von Zweigbergk, Matthew John Cheetham,
Michael J Gruber, Michael McClimon, Patrick Steinhardt, Paul
Smith, Philip Oakley, Philippe Blain, Phillip Wood, Randall
S. Becker, René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER
Gábor, Taylor Blau, Torsten Bögershausen, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes (draft)
===============================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
* `parse_object()` has been hardened to check for the existence of a
suspected blob object.
* The build procedure has been adjusted to GNUmake version 4.4, which
made some changes to how pattern rule with multiple targets are
handled.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Assorted fixes of parsing end-user input as integers.
(merge 14770cf0de pw/config-int-parse-fixes later to maint).
* "git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary. The command has been taught to
ignore such a failure.
(merge 6974765352 ew/prune-with-missing-objects-pack later to maint).
* Add one more candidate directory that may house httpd modules while
running tests.
(merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).
* A handful of leaks in the line-log machinery have been plugged.
* The format of a line in /proc/cpuinfo that describes a CPU on s390x
looked different from everybody else, and the code in chainlint.pl
failed to parse it.
(merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).
* Adjust the GitHub CI to newer ubuntu release.
(merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
(merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
(merge 288fcb1c94 zk/push-use-bitmaps later to maint).
(merge 42db324c0f km/merge-recursive-typofix later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Andreas Hasenack (1):
chainlint.pl: fix /proc/cpuinfo regexp
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (9):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
lib-httpd: extend module location auto-detection
Eric Wong (2):
delta-islands: free island-related data after use
prune: quiet ENOENT on missing directories
Glen Choo (3):
config: respect includes in protected config
http: redact curl h2h3 headers in info
object-file: use real paths when adding alternates
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jean-Noël Avila (1):
i18n: fix command template placeholder format
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (43):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
parse_object(): drop extra "has" check before checking object type
parse_object(): check on-disk type of suspected blob
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Jiang Xin (5):
t5516: fail to run in verbose mode
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (11):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (30):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Another batch before -rc1
A bit more before -rc1
Git 2.39-rc1
Git 2.39-rc2
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
Kyle Meyer (1):
merge-recursive: fix variable typo in error message
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Paul Smith (1):
Makefile: avoid multiple patterns when recipes generate one file
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (26):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
git_parse_unsigned: reject negative values
config: require at least one digit when parsing numbers
git_parse_signed(): avoid integer overflow
sequencer: unify label lookup
sequencer: tighten label lookups
René Scharfe (21):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
list-objects-filter: plug combine_filter_data leak
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (4):
Documentation/build-docdep.perl: generate sorted output
line-log: free diff queue when processing non-merge commits
line-log: free the diff queues' arrays when processing merge commits
diff.c: use diff_free_queue()
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (7):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (115):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
cache.h: remove unused "the_index" compat macros
builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
cocci & cache.h: remove rarely used "the_index" compat macros
read-cache API & users: make discard_index() return void
cocci: add a index-compatibility.pending.cocci
cocci & cache.h: apply a selection of "pending" index-compatibility
cocci & cache.h: apply variable section of "pending" index-compatibility
cocci: apply "pending" index-compatibility to "t/helper/*.c"
{builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
cocci: apply "pending" index-compatibility to some "builtin/*.c"
parse_object(): simplify blob conditional
trace2 tests: guard pthread test with "PTHREAD"
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
cocci: avoid "should ... be a metavariable" warnings
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0-rc1
@ 2022-11-30 6:12 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-11-30 6:12 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.39.0-rc1 is now available for testing at
the usual places. It is comprised of 460 non-merge commits since
v2.38.0, contributed by 74 people, 30 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.39.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!
Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin Ågren,
Martin von Zweigbergk, Matthew John Cheetham, Michael J Gruber,
Michael McClimon, Patrick Steinhardt, Paul Smith, Philip Oakley,
Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe,
Sergey Organov, Shaoxuan Yuan, SZEDER Gábor, Taylor Blau,
Torsten Bögershausen, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes (draft)
===============================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
* `parse_object()` has been hardened to check for the existence of a
suspected blob object.
* Adjust the documentation build procedure to GNUmake version 4.4,
which made some changes to how pattern rule with multiple targets
are handled.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Assorted fixes of parsing end-user input as integers.
(merge 14770cf0de pw/config-int-parse-fixes later to maint).
* "git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary. The command has been taught to
ignore such a failure.
(merge 6974765352 ew/prune-with-missing-objects-pack later to maint).
* Add one more candidate directory that may house httpd modules while
running tests.
(merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).
* A handful of leaks in the line-log machinery have been plugged.
* The format of a line in /proc/cpuinfo that describes a CPU on s390x
looked different from everybody else, and the code in chainlint.pl
failed to parse it.
(merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).
* Adjust the GitHub CI to newer ubuntu release.
(merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
(merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
(merge 288fcb1c94 zk/push-use-bitmaps later to maint).
(merge 42db324c0f km/merge-recursive-typofix later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Andreas Hasenack (1):
chainlint.pl: fix /proc/cpuinfo regexp
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (9):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
lib-httpd: extend module location auto-detection
Eric Wong (2):
delta-islands: free island-related data after use
prune: quiet ENOENT on missing directories
Glen Choo (3):
config: respect includes in protected config
http: redact curl h2h3 headers in info
object-file: use real paths when adding alternates
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jean-Noël Avila (1):
i18n: fix command template placeholder format
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (43):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
parse_object(): drop extra "has" check before checking object type
parse_object(): check on-disk type of suspected blob
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Jiang Xin (5):
t5516: fail to run in verbose mode
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (11):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (29):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Another batch before -rc1
A bit more before -rc1
Git 2.39-rc1
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
Kyle Meyer (1):
merge-recursive: fix variable typo in error message
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Paul Smith (1):
Makefile: avoid multiple patterns when recipes generate one file
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (26):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
git_parse_unsigned: reject negative values
config: require at least one digit when parsing numbers
git_parse_signed(): avoid integer overflow
sequencer: unify label lookup
sequencer: tighten label lookups
René Scharfe (21):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
list-objects-filter: plug combine_filter_data leak
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (4):
Documentation/build-docdep.perl: generate sorted output
line-log: free diff queue when processing non-merge commits
line-log: free the diff queues' arrays when processing merge commits
diff.c: use diff_free_queue()
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (7):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (113):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
cache.h: remove unused "the_index" compat macros
builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
cocci & cache.h: remove rarely used "the_index" compat macros
read-cache API & users: make discard_index() return void
cocci: add a index-compatibility.pending.cocci
cocci & cache.h: apply a selection of "pending" index-compatibility
cocci & cache.h: apply variable section of "pending" index-compatibility
cocci: apply "pending" index-compatibility to "t/helper/*.c"
{builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
cocci: apply "pending" index-compatibility to some "builtin/*.c"
parse_object(): simplify blob conditional
trace2 tests: guard pthread test with "PTHREAD"
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0-rc0
@ 2022-11-23 7:25 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-11-23 7:25 UTC (permalink / raw)
To: git; +Cc: git-packagers, lwn
An early preview release Git v2.39.0-rc0 is now available for
testing at the usual places. It is comprised of 423 non-merge
commits since v2.38.0, contributed by 67 people, 28 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.39.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!
Alexander Meshcheryakov, Anh Le, Arthur Chan, Daniel
Sonbolian, Debra Obondo, Diomidis Spinellis, Erik Cervin
Edin, Hank Leininger, herr.kaste, John A. Leuenhagen, Julia
Ramer, Kevin Backhouse, Kousik Sanagavarapu, Lukáš Doktor,
Martin Englund, M Hickford, Michael V. Scovetta, Noah Betzen,
Nsengiyumva Wilberforce, orygaw, Ronan Pigott, Rubén Justo,
Sotir Danailov, srz_zumix, Stefano Rivera, Tim Jaacks, Vincent
Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jeff Hostetler, Jeff
King, Jerry Zhang, Johannes Altmanninger, Johannes Schindelin,
John Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Martin
Ågren, Martin von Zweigbergk, Matthew John Cheetham, Michael
J Gruber, Michael McClimon, Patrick Steinhardt, Philip Oakley,
Philippe Blain, Phillip Wood, René Scharfe, Sergey Organov,
Shaoxuan Yuan, SZEDER Gábor, Taylor Blau, Torsten Bögershausen,
and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes (draft)
===============================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (8):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
Eric Wong (1):
delta-islands: free island-related data after use
Glen Choo (2):
config: respect includes in protected config
http: redact curl h2h3 headers in info
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (41):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (11):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (26):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (23):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
sequencer: unify label lookup
sequencer: tighten label lookups
René Scharfe (20):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (1):
Documentation/build-docdep.perl: generate sorted output
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (7):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (100):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0
@ 2022-10-03 17:26 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-10-03 17:26 UTC (permalink / raw)
To: git; +Cc: git-packagers
The latest feature release Git v2.38.0 is now available at the
usual places. It is comprised of 699 non-merge commits since
v2.37.0, contributed by 92 people, 24 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.38.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta,
Goss Geppert, Hubert Bossot, Ilya K, Ingy dot Net, Jacob Stopak,
Julien Rouhaud, Kilian Kilger, Lana Deere, Manuel Boni, Matthew
Klein, Miaoqian Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier,
Richard Oliver, and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
Bjarmason, Alexander Shopov, Alex Henrie, Arthur Milchior,
Bagas Sanjaya, brian m. carlson, Calvin Wan, Carlo Marcelo
Arenas Belón, Christian Couder, Christoph Reiter, Derrick
Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Fangyi
Zhou, Felipe Contreras, Fernando Ramos, Glen Choo, Han Xin,
Hariom Verma, Jacob Keller, Jaydeep Das, Jean-Noël Avila,
Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John
Cai, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano,
Justin Donnelly, Kyle Zhao, Lessley Dennington, Li Linchao,
Linus Torvalds, Martin Ågren, Matheus Tavares, Matthew John
Cheetham, Michael J Gruber, Øystein Walle, Peter Krefting,
Philip Oakley, Philippe Blain, Phillip Szelat, Phillip Wood,
Ralf Thielow, Randall S. Becker, Renato Botelho, René Scharfe,
Shaoxuan Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks,
Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
Victoria Dye, Yi-Jyun Pan, ZheNing Hu, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes
=======================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes performs poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a safe.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from" option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
* The "scalar" addition from Microsoft is now part of the core Git
installation.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
* "git mv A B" in a sparsely populated working tree can be asked to
move a path from a directory that is "in cone" to another directory
that is "out of cone". Handling of such a case has been improved.
* The chainlint script for our tests has been revamped.
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help existing projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* A result from opendir() was leaking in the commit-graph expiration
codepath, which has been plugged.
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
* Just like we have coding guidelines, we now have guidelines for
reviewers.
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Adam Dinwoodie (1):
t1800: correct test to handle Cygwin
Alex Henrie (5):
gc: don't translate literal commands
builtin/diagnose.c: don't translate the two mode values
pack-bitmap: improve grammar of "xor chain" error message
l10n: fr: don't say that merge is "the default strategy"
l10n: es: update translation
Alexander Shopov (3):
l10n: bg.po: Updated Bulgarian translation (5482t)
l10n: bg.po: Updated Bulgarian translation (5484t)
l10n: bg.po: Updated Bulgarian translation (5484t)
Anthony Delannoy (1):
preload-index: fix memleak
Bagas Sanjaya (3):
l10n: po-id for 2.38 (round 1)
l10n: po-id for 2.38 (round 2)
l10n: po-id for 2.38 (round 3)
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (51):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
pack-bitmap: remove trace2 region from hot path
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Conners (1):
reftable: use a pointer for pq_entry param
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Emir SARI (3):
l10n: tr: Update translations for v2.38.0 round #1
l10n: tr: v2.38.0 round 2
l10n: tr: v2.38.0 3rd round
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (25):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
t: add skeleton chainlint.pl
chainlint.pl: add POSIX shell lexical analyzer
chainlint.pl: add POSIX shell parser
chainlint.pl: add parser to validate tests
chainlint.pl: add parser to identify test definitions
chainlint.pl: validate test scripts in parallel
chainlint.pl: don't require `return|exit|continue` to end with `&&`
t/Makefile: apply chainlint.pl to existing self-tests
chainlint.pl: don't require `&` background command to end with `&&`
chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
chainlint.pl: complain about loops lacking explicit failure handling
chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
t/chainlint: add more chainlint.pl self-tests
test-lib: retire "lint harder" optimization hack
test-lib: replace chainlint.sed with chainlint.pl
t/Makefile: teach `make test` and `make prove` to run chainlint.pl
t: retire unused chainlint.sed
chainlint: colorize problem annotations and test delimiters
Fangyi Zhou (3):
help: fix doubled words in explanation for developer interfaces
l10n: zh_CN v2.38.0 rounds 1 & 2
l10n: zh_CN: 2.38.0 round 3
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Hubert Bossot (1):
l10n: fr: The word 'branche' is only feminine
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (3):
Documentation: fix various repeat word typos
Documentation: clean up a few misspelled word typos
Documentation: clean up various typos in technical docs
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jean-Noël Avila (3):
l10n: fr: v2.38 round 1
l10n: fr: v2.38.0 round 2
l10n: fr: v2.38.0 round 3
Jeff King (64):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
list-objects-filter: don't memset after releasing filter struct
list-objects-filter: handle null default filter spec
list-objects-filter: add and use initializers
list-objects-filter: convert filter_spec to a strbuf
list-objects-filter: initialize sub-filter structs
Johannes Schindelin (38):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
git help: special-case `scalar`
scalar: implement the `help` subcommand
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Jordi Mas (3):
l10n: Update Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (45):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
A bit more of remaining topics before -rc1
Final batch before -rc1
Git 2.38-rc1
Git 2.38-rc2
Git 2.38
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (4):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
cmd-list.perl: fix identifying man sections
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Miaoqian Lin (1):
commit-graph: Fix missing closedir in expire_commit_graphs
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (5482t0f0u)
l10n: sv.po: Update Swedish translation (5484t0f0u)
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
Ralf Thielow (2):
l10n: de.po: update German translation
l10n: de.po: update German translation
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (30):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
t/Makefile: remove 'test-results' on 'make clean'
Shaoxuan Yuan (22):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
t7002: add tests for moving from in-cone to out-of-cone
mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
mv: free the with_slash in check_dir_in_index()
mv: check if <destination> is a SKIP_WORKTREE_DIR
mv: remove BOTH from enum update_mode
mv: from in-cone to out-of-cone
mv: cleanup empty WORKING_DIRECTORY
advice.h: add advise_on_moving_dirty_path()
mv: check overwrite for in-to-out move
builtin/mv.c: fix possible segfault in add_slash()
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Todd Zullinger (2):
docs: fix a few recently broken links
api docs: link to html version of api-trace2
Victoria Dye (37):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
scalar: fix command documentation section header
scalar: include in standard Git build & installation
scalar: add to 'git help -a' command list
scalar-clone: add test coverage
t/perf: add Scalar performance tests
t/perf: add 'GIT_PERF_USE_SCALAR' run option
Documentation/technical: include Scalar technical doc
diagnose.c: refactor to safely use 'd_type'
Documentation: add ReviewingGuidelines
diagnose: add to command-list.txt
version: fix builtin linking & documentation
Yi-Jyun Pan (1):
l10n: zh_TW.po: Git 2.38.0, round 3
ZheNing Hu (2):
ls-files: introduce "--format" option
ls-files: fix black space in error message
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0-rc2
@ 2022-09-27 21:10 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-09-27 21:10 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.38.0-rc2 is now available for testing at
the usual places. It is comprised of 673 non-merge commits since
v2.37.0, contributed by 81 people, 23 of which are new faces [*].
The manpage generation problem in -rc1 has been corrected. Other
than that, there aren't that many changes since -rc1.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.38.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes (draft)
===============================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes performs poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a safe.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from" option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
* The "scalar" addition from Microsoft is now part of the core Git
installation.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
* "git mv A B" in a sparsely populated working tree can be asked to
move a path from a directory that is "in cone" to another directory
that is "out of cone". Handling of such a case has been improved.
* The chainlint script for our tests has been revamped.
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help existing projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* A result from opendir() was leaking in the commit-graph expiration
codepath, which has been plugged.
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
* Just like we have coding guidelines, we now have guidelines for
reviewers.
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Adam Dinwoodie (1):
t1800: correct test to handle Cygwin
Alex Henrie (3):
gc: don't translate literal commands
builtin/diagnose.c: don't translate the two mode values
pack-bitmap: improve grammar of "xor chain" error message
Anthony Delannoy (1):
preload-index: fix memleak
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (51):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
pack-bitmap: remove trace2 region from hot path
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Conners (1):
reftable: use a pointer for pq_entry param
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (25):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
t: add skeleton chainlint.pl
chainlint.pl: add POSIX shell lexical analyzer
chainlint.pl: add POSIX shell parser
chainlint.pl: add parser to validate tests
chainlint.pl: add parser to identify test definitions
chainlint.pl: validate test scripts in parallel
chainlint.pl: don't require `return|exit|continue` to end with `&&`
t/Makefile: apply chainlint.pl to existing self-tests
chainlint.pl: don't require `&` background command to end with `&&`
chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
chainlint.pl: complain about loops lacking explicit failure handling
chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
t/chainlint: add more chainlint.pl self-tests
test-lib: retire "lint harder" optimization hack
test-lib: replace chainlint.sed with chainlint.pl
t/Makefile: teach `make test` and `make prove` to run chainlint.pl
t: retire unused chainlint.sed
chainlint: colorize problem annotations and test delimiters
Fangyi Zhou (1):
help: fix doubled words in explanation for developer interfaces
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (3):
Documentation: fix various repeat word typos
Documentation: clean up a few misspelled word typos
Documentation: clean up various typos in technical docs
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jeff King (64):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
list-objects-filter: don't memset after releasing filter struct
list-objects-filter: handle null default filter spec
list-objects-filter: add and use initializers
list-objects-filter: convert filter_spec to a strbuf
list-objects-filter: initialize sub-filter structs
Johannes Schindelin (38):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
git help: special-case `scalar`
scalar: implement the `help` subcommand
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (44):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
A bit more of remaining topics before -rc1
Final batch before -rc1
Git 2.38-rc1
Git 2.38-rc2
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (4):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
cmd-list.perl: fix identifying man sections
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Miaoqian Lin (1):
commit-graph: Fix missing closedir in expire_commit_graphs
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (30):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
t/Makefile: remove 'test-results' on 'make clean'
Shaoxuan Yuan (22):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
t7002: add tests for moving from in-cone to out-of-cone
mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
mv: free the with_slash in check_dir_in_index()
mv: check if <destination> is a SKIP_WORKTREE_DIR
mv: remove BOTH from enum update_mode
mv: from in-cone to out-of-cone
mv: cleanup empty WORKING_DIRECTORY
advice.h: add advise_on_moving_dirty_path()
mv: check overwrite for in-to-out move
builtin/mv.c: fix possible segfault in add_slash()
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Todd Zullinger (2):
docs: fix a few recently broken links
api docs: link to html version of api-trace2
Victoria Dye (37):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
scalar: fix command documentation section header
scalar: include in standard Git build & installation
scalar: add to 'git help -a' command list
scalar-clone: add test coverage
t/perf: add Scalar performance tests
t/perf: add 'GIT_PERF_USE_SCALAR' run option
Documentation/technical: include Scalar technical doc
diagnose.c: refactor to safely use 'd_type'
Documentation: add ReviewingGuidelines
diagnose: add to command-list.txt
version: fix builtin linking & documentation
ZheNing Hu (2):
ls-files: introduce "--format" option
ls-files: fix black space in error message
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0-rc1
@ 2022-09-22 0:11 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-09-22 0:11 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.38.0-rc1 is now available for testing at
the usual places. It is comprised of 668 non-merge commits since
v2.37.0, contributed by 81 people, 23 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.38.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes (draft)
===============================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes performs poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a safe.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from" option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
* The "scalar" addition from Microsoft is now part of the core Git
installation.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
* "git mv A B" in a sparsely populated working tree can be asked to
move a path from a directory that is "in cone" to another directory
that is "out of cone". Handling of such a case has been improved.
* The chainlint script for our tests has been revamped.
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help existing projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* A result from opendir() was leaking in the commit-graph expiration
codepath, which has been plugged.
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
* Just like we have coding guidelines, we now have guidelines for
reviewers.
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Adam Dinwoodie (1):
t1800: correct test to handle Cygwin
Alex Henrie (2):
gc: don't translate literal commands
builtin/diagnose.c: don't translate the two mode values
Anthony Delannoy (1):
preload-index: fix memleak
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (50):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Conners (1):
reftable: use a pointer for pq_entry param
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (25):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
t: add skeleton chainlint.pl
chainlint.pl: add POSIX shell lexical analyzer
chainlint.pl: add POSIX shell parser
chainlint.pl: add parser to validate tests
chainlint.pl: add parser to identify test definitions
chainlint.pl: validate test scripts in parallel
chainlint.pl: don't require `return|exit|continue` to end with `&&`
t/Makefile: apply chainlint.pl to existing self-tests
chainlint.pl: don't require `&` background command to end with `&&`
chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
chainlint.pl: complain about loops lacking explicit failure handling
chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
t/chainlint: add more chainlint.pl self-tests
test-lib: retire "lint harder" optimization hack
test-lib: replace chainlint.sed with chainlint.pl
t/Makefile: teach `make test` and `make prove` to run chainlint.pl
t: retire unused chainlint.sed
chainlint: colorize problem annotations and test delimiters
Fangyi Zhou (1):
help: fix doubled words in explanation for developer interfaces
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (3):
Documentation: fix various repeat word typos
Documentation: clean up a few misspelled word typos
Documentation: clean up various typos in technical docs
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jeff King (63):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
list-objects-filter: don't memset after releasing filter struct
list-objects-filter: handle null default filter spec
list-objects-filter: add and use initializers
list-objects-filter: convert filter_spec to a strbuf
Johannes Schindelin (38):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
git help: special-case `scalar`
scalar: implement the `help` subcommand
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (43):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
A bit more of remaining topics before -rc1
Final batch before -rc1
Git 2.38-rc1
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (3):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Miaoqian Lin (1):
commit-graph: Fix missing closedir in expire_commit_graphs
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (30):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
t/Makefile: remove 'test-results' on 'make clean'
Shaoxuan Yuan (22):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
t7002: add tests for moving from in-cone to out-of-cone
mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
mv: free the with_slash in check_dir_in_index()
mv: check if <destination> is a SKIP_WORKTREE_DIR
mv: remove BOTH from enum update_mode
mv: from in-cone to out-of-cone
mv: cleanup empty WORKING_DIRECTORY
advice.h: add advise_on_moving_dirty_path()
mv: check overwrite for in-to-out move
builtin/mv.c: fix possible segfault in add_slash()
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Todd Zullinger (2):
docs: fix a few recently broken links
api docs: link to html version of api-trace2
Victoria Dye (37):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
scalar: fix command documentation section header
scalar: include in standard Git build & installation
scalar: add to 'git help -a' command list
scalar-clone: add test coverage
t/perf: add Scalar performance tests
t/perf: add 'GIT_PERF_USE_SCALAR' run option
Documentation/technical: include Scalar technical doc
diagnose.c: refactor to safely use 'd_type'
Documentation: add ReviewingGuidelines
diagnose: add to command-list.txt
version: fix builtin linking & documentation
ZheNing Hu (2):
ls-files: introduce "--format" option
ls-files: fix black space in error message
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0-rc0
@ 2022-09-16 2:37 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-09-16 2:37 UTC (permalink / raw)
To: git
An early preview release Git v2.38.0-rc0 is now available for
testing at the usual places. It is comprised of 607 non-merge
commits since v2.37.0, contributed by 75 people, 21 of which are
new faces [*].
Since many contributors are travelling for Git Merge conference this
week, I do not expect a lot of activities around this one. Just
treat it as one of the normal updates to the tip of the 'master'
branch. The real fun will begin with -rc1, where we enter feature
freeze for the upcoming release, which is expected to happen mid
next week.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.38.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Eric DeCosta, Goss Geppert, Ilya
K, Ingy dot Net, Jacob Stopak, Julien Rouhaud, Kilian Kilger,
Lana Deere, Manuel Boni, Matthew Klein, Moritz Baumann, Pavel
Rappo, Pierre Garnier, Richard Oliver, and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Arthur
Milchior, brian m. carlson, Calvin Wan, Carlo Marcelo Arenas
Belón, Christian Couder, Christoph Reiter, Derrick Stolee,
Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah Newren,
Emily Shaffer, Eric Sunshine, Felipe Contreras, Fernando Ramos,
Glen Choo, Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das,
Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John Cai,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly,
Kyle Zhao, Lessley Dennington, Li Linchao, Linus Torvalds,
Martin Ågren, Matheus Tavares, Matthew John Cheetham, Michael
J Gruber, Øystein Walle, Philip Oakley, Philippe Blain, Phillip
Wood, Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan
Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Torsten Bögershausen, Victoria Dye, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes (draft)
===============================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from"option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help exiting projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
(merge 1490d7d82d jk/is-promisor-object-keep-tree-in-use later to maint).
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
(merge 716c1f649e jk/pipe-command-nonblock later to maint).
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
(merge c4bbd9bb8f sg/xcalloc-cocci-fix later to maint).
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
(merge 23578904da ad/preload-plug-memleak later to maint).
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
(merge ef46584831 ds/github-actions-use-newer-ubuntu later to maint).
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
(merge d3a9295ada en/merge-unstash-only-on-clean-merge later to maint).
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Anthony Delannoy (1):
preload-index: fix memleak
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (50):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (6):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (1):
Documentation: fix various repeat word typos
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jeff King (59):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
Johannes Schindelin (36):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (40):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (3):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (29):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
Shaoxuan Yuan (12):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Victoria Dye (26):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
ZheNing Hu (1):
ls-files: introduce "--format" option
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.36.0
@ 2022-04-18 16:27 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-18 16:27 UTC (permalink / raw)
To: git; +Cc: git-packagers
The latest feature release Git v2.36.0 is now available at the
usual places. It is comprised of 717 non-merge commits since
v2.35.0, contributed by 96 people, 26 of which are new faces [*].
This release contains the same fixes as the recent maintenance
releases to address CVE-2022-24765 as well.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.36.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.35.0 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun, COGONI
Guillaume, David Cantrell, Des Preston, Hongyi Zhao, Jason Yundt,
Jayati Shrivastava, Jaydeep Das, Jaydeep P Das, Jose Lopes,
Justin Donnelly, Kraymer, Liginity Lee, Matheus Felipe, Matheus
Valadares, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
Daniel Santos, Derrick Stolee, Elia Pinto, Elijah Newren,
Emily Shaffer, Emir SARI, Eric Sunshine, Fabian Stelzer,
Fangyi Zhou, Glen Choo, Greg Hurrell, Han-Wen Nienhuys, Jacob
Keller, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
Zhang, Jessica Clarke, Jiang Xin, Joel Holdsworth, Johannes
Altmanninger, Johannes Schindelin, Johannes Sixt, John Cai,
Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio
C Hamano, Kevin Willford, Lessley Dennington, Marc Strapetz,
Martin Ågren, Matt Cooper, Matthias Rüster, Michael J Gruber,
Neeraj Singh, Patrick Steinhardt, Peter Krefting, Philip Oakley,
Philippe Blain, Phillip Szelat, Phillip Wood, Ralf Thielow,
Ramkumar Ramachandra, Randall S. Becker, René Scharfe, Shourya
Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau, Teng Long,
Thomas Gummerer, Thomas Koutcher, Tilman Vogel, Todd Zullinger,
Trần Ngọc Quân, Victoria Dye, Yi-Jyun Pan, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes
======================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
* With the fixes for CVE-2022-24765 that are common with versions of
Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
been taught not to recognise repositories owned by other users, in
order to avoid getting affected by their config files and hooks.
You can list the path to the safe/trusted repositories that may be
owned by others on a multi-valued configuration variable
`safe.directory` to override this behaviour, or use '*' to declare
that you trust anything.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A user can forget to make a script file executable before giving
it to "git bisect run". In such a case, all tests will exit with
126 or 127 error codes, even on revisions that are marked as good.
Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.0 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Adam Dinwoodie (2):
configure.ac: fix HAVE_SYNC_FILE_RANGE definition
t9902: split test to run on appropriate systems
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (3):
fetch-pack: parameterize message containing 'ready' keyword
l10n: po-id for 2.36 (round 1)
l10n: po-id for 2.36 (round 2)
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Carlo Marcelo Arenas Belón (4):
mingw: avoid fallback for {local,gm}time_r()
git-compat-util: really support openssl as a source of entropy
config.mak.dev: workaround gcc 12 bug affecting "pedantic" CI job
config.mak.dev: alternative workaround to gcc 12 warning in http.c
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
Daniel Santos (3):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update TEAMS file
l10n: pt_PT: update Portuguese translation
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (47):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
t0033: add tests for safe.directory
setup: opt-out of check with safe.directory=*
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (33):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sequencer, stash: fix running from worktree subdir
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Emir SARI (2):
l10n: tr: v2.36.0 round 1
l10n: tr: v2.36.0 round 2
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Fangyi Zhou (4):
submodule-helper: fix usage string
l10n: Update zh_CN repo link
l10n: zh_CN v2.36.0 round 1
l10n: zh_CN v2.36.0 round 2
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (7):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
l10n: fr: v2.36 round 1
i18n: fix some badly formatted i18n strings
l10n: fr: v2.36 round 2
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Jiang Xin (2):
l10n: git.pot: v2.36.0 round 1 (192 new, 106 removed)
l10n: git.pot: v2.36.0 round 2 (4 new, 3 removed)
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (24):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
GIT-VERSION-GEN: bump to v2.33.1
Add a function to determine whether a path is owned by the current user
setup_git_directory(): add an owner check for the top-level directory
cocci: allow padding with `strbuf_addf()`
Fix `GIT_CEILING_DIRECTORIES` with `C:\` and the likes
Git 2.30.3
Git 2.31.2
Git 2.32.1
Git 2.33.2
Git 2.34.2
Git 2.35.2
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Jordi Mas (1):
l10n: Update Catalan translation
Josh Steadmon (3):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
ls-tree: `-l` should not imply recursive listing
Junio C Hamano (40):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Git 2.35.1
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Git 2.36-rc1
Git 2.36-rc2
Git 2.30.4
Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'"
Revert "fetch: increase test coverage of fetches"
RelNotes: clarify "bisect run unexecutable" tweak
RelNotes: mention safe.directory
RelNotes: revert the description on the reverted topics
Git 2.36
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Martin Ågren (1):
git-ls-tree.txt: fix the name of "%(objectsize:padded)"
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matheus Valadares (1):
setup: fix safe.directory key not being checked
Matt Cooper (1):
index-pack: clarify the breached limit
Matthias Rüster (1):
l10n: de.po: Update German translation
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5282t0f0u)
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (3):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
doc: replace "--" with {litdd} in credential-cache/fsmonitor
Trần Ngọc Quân (1):
l10n: vi(5285t): v2.36.0 round 2
Victoria Dye (30):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
contrib/scalar: fix 'all' target in Makefile
Yi-Jyun Pan (1):
l10n: zh_TW: v2.36.0 round 2
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (186):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
Documentation/Makefile: fix "make info" regression in dad9cd7d518
Documentation: add --batch-command to cat-file synopsis
ls-tree doc: document interaction with submodules
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.36.0-rc2
@ 2022-04-12 17:03 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-12 17:03 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.36.0-rc2 is now available for testing at
the usual places. It is comprised of 673 non-merge commits since
v2.35.2, contributed by 85 people, 25 of which are new faces [*].
It is a day earlier than scheduled; it contains the same fix for
CVE-2022-24765 in the maintenance releases released today.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.36.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.35.2 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
Todd Zullinger, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes (draft)
==============================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
(merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* "git fetch" can make two separate fetches, but ref updates coming
from them were in two separate ref transactions under "--atomic",
which has been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Fix for CVE-2022-24765 has been merged up from 2.35.2 and others.
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.2 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Adam Dinwoodie (2):
configure.ac: fix HAVE_SYNC_FILE_RANGE definition
t9902: split test to run on appropriate systems
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (1):
fetch-pack: parameterize message containing 'ready' keyword
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Carlo Marcelo Arenas Belón (1):
git-compat-util: really support openssl as a source of entropy
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (45):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (32):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Fangyi Zhou (1):
submodule-helper: fix usage string
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (5):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
i18n: fix some badly formatted i18n strings
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (14):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
cocci: allow padding with `strbuf_addf()`
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Josh Steadmon (3):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
ls-tree: `-l` should not imply recursive listing
Junio C Hamano (32):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Git 2.36-rc1
Git 2.36-rc2
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Martin Ågren (1):
git-ls-tree.txt: fix the name of "%(objectsize:padded)"
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matt Cooper (1):
index-pack: clarify the breached limit
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (3):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
doc: replace "--" with {litdd} in credential-cache/fsmonitor
Victoria Dye (30):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
contrib/scalar: fix 'all' target in Makefile
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (186):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
Documentation/Makefile: fix "make info" regression in dad9cd7d518
Documentation: add --batch-command to cat-file synopsis
ls-tree doc: document interaction with submodules
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.36.0-rc1
@ 2022-04-08 23:30 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-08 23:30 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.36.0-rc1 is now available for testing at
the usual places. It is comprised of 673 non-merge commits since
v2.35.0, contributed by 85 people, 25 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.36.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.35.0 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
Todd Zullinger, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes (draft)
==============================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
(merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* "git fetch" can make two separate fetches, but ref updates coming
from them were in two separate ref transactions under "--atomic",
which has been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.0 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Adam Dinwoodie (2):
configure.ac: fix HAVE_SYNC_FILE_RANGE definition
t9902: split test to run on appropriate systems
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (1):
fetch-pack: parameterize message containing 'ready' keyword
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Carlo Marcelo Arenas Belón (1):
git-compat-util: really support openssl as a source of entropy
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (45):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (33):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sequencer, stash: fix running from worktree subdir
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Fangyi Zhou (1):
submodule-helper: fix usage string
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (4):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (14):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
cocci: allow padding with `strbuf_addf()`
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Josh Steadmon (3):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
ls-tree: `-l` should not imply recursive listing
Junio C Hamano (32):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Git 2.35.1
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Git 2.36-rc1
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Martin Ågren (1):
git-ls-tree.txt: fix the name of "%(objectsize:padded)"
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matt Cooper (1):
index-pack: clarify the breached limit
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (3):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
doc: replace "--" with {litdd} in credential-cache/fsmonitor
Victoria Dye (30):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
contrib/scalar: fix 'all' target in Makefile
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (186):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
Documentation/Makefile: fix "make info" regression in dad9cd7d518
Documentation: add --batch-command to cat-file synopsis
ls-tree doc: document interaction with submodules
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.36.0-rc0
@ 2022-04-04 20:43 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-04 20:43 UTC (permalink / raw)
To: git; +Cc: git-packagers
An early preview release Git v2.36.0-rc0 is now available for
testing at the usual places. It is comprised of 661 non-merge
commits since v2.35.0, contributed by 80 people, 25 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.36.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.35.0 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Atharva Raykar,
Bagas Sanjaya, Beat Bolli, brian m. carlson, Christian Couder,
Daniel Hahler, Derrick Stolee, Elia Pinto, Elijah Newren,
Emily Shaffer, Eric Sunshine, Fabian Stelzer, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
Marc Strapetz, Matt Cooper, Michael J Gruber, Neeraj Singh,
Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip Wood,
Ramkumar Ramachandra, René Scharfe, Shourya Shukla, SZEDER
Gábor, Tao Klerks, Taylor Blau, Teng Long, Thomas Gummerer,
Thomas Koutcher, Tilman Vogel, Todd Zullinger, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes (draft)
==============================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
(merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* "git fetch" can make two separate fetches, but ref updates coming
from them were in two separate ref transactions under "--atomic",
which has been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.0 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (1):
fetch-pack: parameterize message containing 'ready' keyword
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (45):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (33):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sequencer, stash: fix running from worktree subdir
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (4):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (14):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
cocci: allow padding with `strbuf_addf()`
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Josh Steadmon (2):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
Junio C Hamano (31):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Git 2.35.1
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matt Cooper (1):
index-pack: clarify the breached limit
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (2):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
Victoria Dye (29):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (183):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Feb 2022, #03; Sat, 12)
@ 2022-02-13 9:24 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-02-13 9:24 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful"). Do not read too much into a topic being in (or not in)
'seen'. The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.
The third batch of topics have been merged.
Many new topics have sketchy or even empty topic description in the
list below; help to fill them in is very much appreciated ;-)
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/no-errno-from-resolve-ref-unsafe (2022-01-26) 2 commits
(merged to 'next' on 2022-02-04 at d98254efe0)
+ refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
+ sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
Remaining code-clean-up.
source: <cover-v4-0.2-00000000000-20220126T143427Z-avarab@gmail.com>
* bc/clarify-eol-attr (2022-01-12) 2 commits
(merged to 'next' on 2022-02-04 at dc1db4bd21)
+ docs: correct documentation about eol attribute
+ t0027: add tests for eol without text in .gitattributes
Doc and test update around the eol attribute.
source: <20220111021507.531736-1-sandals@crustytoothpaste.net>
* bc/csprng-mktemps (2022-01-17) 2 commits
(merged to 'next' on 2022-02-04 at 2e32375c73)
+ wrapper: use a CSPRNG to generate random file names
+ wrapper: add a helper to generate numbers from a CSPRNG
Pick a better random number generator and use it when we prepare
temporary filenames.
source: <20220117215617.843190-1-sandals@crustytoothpaste.net>
* en/sparse-checkout-leakfix (2022-01-28) 1 commit
(merged to 'next' on 2022-02-04 at 10ca176008)
+ sparse-checkout: fix a couple minor memory leaks
Leakfix.
source: <pull.1189.git.git.1643335098710.gitgitgadget@gmail.com>
* gh/doc-typos (2022-01-26) 2 commits
(merged to 'next' on 2022-02-04 at b71e1bc746)
+ Documentation/config/pgp.txt: add missing apostrophe
+ Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Typofix.
source: <20220126121426.53799-1-greg@hurrell.net>
* jc/doc-log-messages (2022-01-27) 3 commits
(merged to 'next' on 2022-02-04 at cf136572ce)
+ SubmittingPatches: explain why we care about log messages
+ CodingGuidelines: hint why we value clearly written log messages
+ SubmittingPatches: write problem statement in the log in the present tense
Update the contributor-facing documents on proposed log messages.
source: <20220126234205.2923388-1-gitster@pobox.com>
* rc/negotiate-only-typofix (2022-01-28) 1 commit
(merged to 'next' on 2022-02-04 at 62b947ddbf)
+ fetch: fix negotiate-only error message
Typofix.
source: <20220128143602.31842-1-robert@coup.net.nz>
* rs/parse-options-lithelp-help (2022-01-20) 1 commit
(merged to 'next' on 2022-02-04 at 74bc57e8fa)
+ parse-options: document bracketing of argh
Comment update.
source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>
* sy/diff-usage-typofix (2022-02-02) 1 commit
(merged to 'next' on 2022-02-04 at 28a4186a44)
+ builtin/diff.c: fix "git-diff" usage string typo
Typofix.
source: <20220202072844.35545-1-shaoxuan.yuan02@gmail.com>
* tg/fetch-prune-exit-code-fix (2022-01-31) 1 commit
(merged to 'next' on 2022-02-04 at 8af6ab286d)
+ fetch --prune: exit with error if pruning fails
When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
source: <20220131133047.1885074-1-t.gummerer@gmail.com>
--------------------------------------------------
[New Topics]
* jc/glossary-worktree (2022-02-09) 1 commit
(merged to 'next' on 2022-02-10 at d05e2b6ea3)
+ glossary: describe "worktree"
"working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
Will merge to 'master'.
source: <xmqqczjvxy3o.fsf@gitster.g>
* jd/t0015-modernize (2022-02-09) 1 commit
(merged to 'next' on 2022-02-10 at a3733234c0)
+ t/t0015-hash.sh: remove unnecessary '\' at line end
Test modernization.
Will merge to 'master'.
source: <20220208092339.651761-2-jaydeepjd.8914@gmail.com>
* hw/t1410-adjust-test-for-reftable (2022-02-09) 2 commits
- t1410: mark bufsize boundary test as REFFILES
- t1410: use test-tool ref-store to inspect reflogs
Fix tests that are unnecessarily specific to ref-files backend.
Will merge to 'next'.
source: <pull.1213.git.git.1644406180.gitgitgadget@gmail.com>
* ps/fetch-optim-with-commit-graph (2022-02-10) 2 commits
- fetch: skip computing output width when not printing anything
- fetch-pack: use commit-graph when computing cutoff
A couple of optimization to "git fetch".
Will merge to 'next'.
source: <cover.1644495978.git.ps@pks.im>
* pw/xdiff-alloc-fail (2022-02-09) 3 commits
- xdiff: handle allocation failure when merging
- xdiff: refactor a function
- xdiff: handle allocation failure in patience diff
Expecting a reroll.
cf. <9c5b3acb-aabc-3a0d-f4e7-e10cec410dbe@gmail.com>
source: <pull.1140.git.1644404356.gitgitgadget@gmail.com>
* sy/t0001-use-path-is-helper (2022-02-11) 1 commit
- t0001: replace "test [-d|-f]" with test_path_is_* functions
Test modernization.
Will merge to 'next'.
source: <20220121102109.433457-2-shaoxuan.yuan02@gmail.com>
* gc/recursive-fetch-with-unused-submodules (2022-02-10) 8 commits
- submodule: fix bug and remove add_submodule_odb()
- fetch: fetch unpopulated, changed submodules
- submodule: extract get_fetch_task()
- t5526: use grep to assert on fetches
- t5526: introduce test helper to assert on fetches
- submodule: make static functions read submodules from commits
- submodule: store new submodule commits oid_array in a struct
- submodule: inline submodule_commits() into caller
When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
Will merge to 'next'?
source: <20220210044152.78352-1-chooglen@google.com>
* ah/log-no-graph (2022-02-11) 2 commits
- log: add a --no-graph option
- log: fix memory leak if --graph is passed multiple times
"git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage lhas been plugged.
Will merge to 'next'.
source: <20220211163627.598166-2-alexhenrie24@gmail.com>
* cg/t3903-modernize (2022-02-11) 1 commit
- t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
Test modernization.
Will merge to 'next'?
source: <20220211134655.1149320-1-cogoni.guillaume@gmail.com>
--------------------------------------------------
[Stalled]
* je/http-better-error-output (2021-12-03) 1 commit
. http-backend: give a hint that web browser access is not supported
When the http-backend program, which is the server-side component
for the smart HTTP transport, sends a "404 Not found" error, we
deliberately did not say anything to the requesting client. We now
send a message back to the browser to tell the user that they do
not want to visit the URL via their browser, instead of a totally
blank page.
Expecting a reroll.
Breaks its self tests.
cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
source: <20211202102855.23907-1-jengelh@inai.de>
* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
- fixup! editor: allow for saving/restoring terminal state
- editor: allow for saving/restoring terminal state
- terminal: teach save_term to fail when not foreground
Some editors are reported to leave the terminal in funny state
after they exit on Windows. Work it around by saving and restoring
the terminal state when needed.
Expecting a reroll.
cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
source: <20211202035446.1154-1-carenas@gmail.com>
--------------------------------------------------
[Cooking]
* ab/t0051-skip-on-non-windows (2022-02-04) 1 commit
(merged to 'next' on 2022-02-10 at 3e587df1d6)
+ t0051: use "skip_all" under !MINGW in single-test file
Conditional test update.
Will merge to 'master'.
source: <patch-v2-1.1-1bc93bcba4b-20220204T134208Z-avarab@gmail.com>
* ab/hash-object-leakfix (2022-02-06) 1 commit
(merged to 'next' on 2022-02-10 at 14956d3087)
+ hash-object: fix a trivial leak in --path
Trivial leakfix.
Will merge to 'master'.
source: <patch-1.1-53863df1455-20220205T000422Z-avarab@gmail.com>
* ab/release-transport-ls-refs-options (2022-02-06) 1 commit
(merged to 'next' on 2022-02-10 at c4e57c2b29)
+ ls-remote & transport API: release "struct transport_ls_refs_options"
Will merge to 'master'.
source: <patch-1.1-e80e8f64eae-20220205T000809Z-avarab@gmail.com>
* js/bisect-in-c (2022-02-09) 11 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in.
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect: move even the option parsing to `bisect--helper`
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect run: fix the error message
Final bits of "git bisect.sh" have been rewritten in C.
source: <pull.1132.git.1643328752.gitgitgadget@gmail.com>
* js/scalar-diagnose (2022-02-06) 6 commits
- scalar: teach `diagnose` to gather loose objects information
- scalar: teach `diagnose` to gather packfile info
- scalar diagnose: include disk space information
- scalar: add `diagnose`
- scalar: validate the optional enlistment argument
- archive: optionally add "virtual" files
source: <pull.1128.v2.git.1644187146.gitgitgadget@gmail.com>
* js/short-help-outside-repo-fix (2022-02-08) 2 commits
(merged to 'next' on 2022-02-10 at a86376de89)
+ t0012: verify that built-ins handle `-h` even without gitdir
+ checkout/fetch/pull/pack-objects: allow `-h` outside a repository
"git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
Will merge to 'master'.
source: <pull.1139.v2.git.1644319314.gitgitgadget@gmail.com>
* tb/midx-no-bitmap-for-no-objects (2022-02-09) 1 commit
(merged to 'next' on 2022-02-10 at 5c501a3f80)
+ midx: prevent writing a .bitmap without any objects
When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
Will merge to 'master'.
source: <abc67d757cb6b244cf54b7b030985180ce134724.1644434802.git.me@ttaylorr.com>
* jc/cat-file-batch-commands (2022-02-11) 3 commits
- cat-file: add --batch-command mode
- cat-file: introduce batch_mode enum to replace print_contents
- cat-file: rename cmdmode to transform_mode
"git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
source: <pull.1212.v5.git.git.1644609683.gitgitgadget@gmail.com>
* ar/submodule-update (2022-02-10) 20 commits
. fixup! submodule: move core cmd_update() logic to C
. fixup! submodule--helper run-update-procedure: learn --remote
. fixup! submodule--helper run-update-procedure: remove --suboid
. submodule: move core cmd_update() logic to C
. submodule--helper: reduce logic in run_update_procedure()
. submodule--helper: move functions around
. submodule--helper update-clone: learn --init
. submodule--helper: remove ensure-core-worktree
. submodule--helper run-update-procedure: learn --remote
. submodule--helper run-update-procedure: remove --suboid
. submodule--helper: reorganize code for sh to C conversion
. submodule--helper: remove update-module-mode
. submodule tests: test for init and update failure output
. submodule--helper: don't use bitfield indirection for parse_options()
. builtin/submodule--helper.c: rename option variables to "opt"
. builtin/submodule--helper.c: reformat designated initializers
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: get remote names from any repository
Rewrite of "git submodule update" in C.
Does not seem to play well with other topics in flight, with heavy conflicts.
cf. <xmqqv8xj71mt.fsf@gitster.g>
source: <20220210092833.55360-1-chooglen@google.com>
* pw/use-in-process-checkout-in-rebase (2022-01-26) 14 commits
(merged to 'next' on 2022-02-10 at bd7c3615fe)
+ rebase -m: don't fork git checkout
+ rebase --apply: set ORIG_HEAD correctly
+ rebase --apply: fix reflog
+ reset_head(): take struct rebase_head_opts
+ rebase: cleanup reset_head() calls
+ create_autostash(): remove unneeded parameter
+ reset_head(): make default_reflog_action optional
+ reset_head(): factor out ref updates
+ reset_head(): remove action parameter
+ rebase --apply: don't run post-checkout hook if there is an error
+ rebase: do not remove untracked files on checkout
+ rebase: pass correct arguments to post-checkout hook
+ t5403: refactor rebase post-checkout hook tests
+ rebase: factor out checkout for up to date branch
Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
Will merge to 'master'.
source: <pull.1049.v3.git.1643202349.gitgitgadget@gmail.com>
* en/fetch-negotiation-default-fix (2022-02-02) 3 commits
(merged to 'next' on 2022-02-08 at 95a8a91e97)
+ repo-settings: rename the traditional default fetch.negotiationAlgorithm
+ repo-settings: fix error handling for unknown values
+ repo-settings: fix checking for fetch.negotiationAlgorithm=default
Fix interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables.
Will merge to 'master'.
source: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com>
* js/diff-filter-negation-fix (2022-01-28) 3 commits
(merged to 'next' on 2022-02-08 at fe004a4c2c)
+ diff-filter: be more careful when looking for negative bits
+ diff.c: move the diff filter bits definitions up a bit
+ docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
"git diff --diff-filter=aR" is now parsed correctly.
Will merge to 'master'.
source: <f1f027ad61beb1bd0dee73acbffdee5c0f967e9a.1643371370.git.gitgitgadget@gmail.com>
* js/no-more-legacy-stash (2022-01-27) 4 commits
(merged to 'next' on 2022-02-08 at 5cecfdbd58)
+ stash: stop warning about the obsolete `stash.useBuiltin` config setting
+ stash: remove documentation for `stash.useBuiltin`
+ add: remove support for `git-legacy-stash`
+ git-sh-setup: remove remnant bits referring to `git-legacy-stash`
Removal of unused code and doc.
Will merge to 'master'.
source: <pull.1133.git.1643321031.gitgitgadget@gmail.com>
* js/scalar-global-options (2022-01-28) 1 commit
(merged to 'next' on 2022-02-09 at 8af744524c)
+ scalar: accept -C and -c options before the subcommand
Scalar update.
Will merge to 'master'.
source: <pull.1130.v2.git.1643380317358.gitgitgadget@gmail.com>
* rj/receive-pack-abort-upon-disconnect (2022-01-28) 1 commit
- receive-pack: check if client is alive before completing the push
"git push" may be killed by the user when the server side has
finished receiving all data and is about to commit the result.
Give the latter a better chance to notice such situation and abort
processing the ref updates.
Needs more work?
cf. <220204.864k5e4yvf.gmgdl@evledraar.gmail.com>
source: <20220128194811.3396281-1-robin.jarry@6wind.com>
* jz/patch-id-hunk-header-parsing-fix (2022-02-02) 2 commits
(merged to 'next' on 2022-02-09 at 8665cb204a)
+ patch-id: fix scan_hunk_header on diffs with 1 line of before/after
+ patch-id: fix antipatterns in tests
Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
Will merge to 'master'.
source: <20220202041945.10077-1-jerry@skydio.com>
source: <20220202042015.10115-1-jerry@skydio.com>
* ab/do-not-hide-failures-in-git-dot-pm (2022-02-01) 1 commit
(merged to 'next' on 2022-02-08 at 1a8001f83e)
+ perl Git.pm: don't ignore signalled failure in _cmd_close()
Git.pm update.
Will merge to 'master'.
source: <patch-1.1-86353c3b366-20220201T205218Z-avarab@gmail.com>
* ab/object-file-api-updates (2022-02-04) 11 commits
- object-file API: pass an enum to read_object_with_reference()
- object-file.c: add a literal version of write_object_file_prepare()
- object-file API: have hash_object_file() take "enum object_type"
- object API: rename hash_object_file_literally() to write_*()
- object-file API: split up and simplify check_object_signature()
- object API: make check_object_signature() oideq()-like, move docs
- object API: correct "buf" v.s. "map" mismatch in *.c and *.h
- object-file API: have write_object_file() take "enum object_type"
- object-file API: add a format_object_header() function
- object-file API: return "void", not "int" from hash_object_file()
- object-file.c: split up declaration of unrelated variables
Object-file API shuffling.
source: <cover-v2-00.11-00000000000-20220204T135005Z-avarab@gmail.com>
* cb/clear-quarantine-early-on-all-ref-update-errors (2022-02-01) 1 commit
(merged to 'next' on 2022-02-10 at 213f44aec8)
+ receive-pack: purge temporary data if no command is ready to run
Check if "receive-pack" will do any ref updates (various conditions
could reject a push) before received objects are taken out of the
temporary directory used for quarantine purposes, so that a push
that is known-to-fail will not leave crufts that a future "gc"
needs to clean up.
Will merge to 'master'.
source: <20220129063538.24038-1-bojun.cbj@gmail.com>
* hn/reftable-tests (2022-01-31) 3 commits
(merged to 'next' on 2022-02-09 at 5e22946a1f)
+ t5312: prepare for reftable
+ t1405: mark test that checks existence as REFFILES
+ t1405: explictly delete reflogs for reftable
Prepare more test scripts for the introduction of reftable.
Will merge to 'master'.
source: <pull.1209.git.git.1643651420.gitgitgadget@gmail.com>
* ja/i18n-common-messages (2022-02-04) 4 commits
- i18n: fix some misformated placeholders in command synopsis
- i18n: remove from i18n strings that do not hold translatable parts
- i18n: factorize "invalid value" messages
- i18n: factorize more 'incompatible options' messages
Unify more messages to help l10n.
Will merge to 'next'?
source: <pull.1123.v4.git.1643666870.gitgitgadget@gmail.com>
* tk/subtree-merge-not-ff-only (2022-02-01) 1 commit
(merged to 'next' on 2022-02-09 at 849450010e)
+ subtree: force merge commit
When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
Will merge to 'master'.
source: <20220201172601.262718-1-aclopte@gmail.com>
* ab/complete-show-all-commands (2022-02-02) 2 commits
(merged to 'next' on 2022-02-09 at be3b7cf4e4)
+ completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
+ completion tests: re-source git-completion.bash in a subshell
The command line completion script (in contrib/) learns an option
to complete all Git subcommands, including the ones that are
normally hidden.
Will merge to 'master'.
source: <cover-v2-0.2-00000000000-20220202T111228Z-avarab@gmail.com>
* en/merge-tree (2022-02-02) 16 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow `ls-files -u` style info to be NUL terminated
- merge-tree: provide easy access to `ls-files -u` style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: allow update messages to be written to different file stream
- merge-ort: split out a separate display_update_messages() function
- diff: allow diff_warn_rename_limit to write somewhere besides stderr
- Introduce a variant of the `warning()` function that takes a `FILE *`
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
- Merge branch 'en/remerge-diff' into en/merge-trees
(this branch uses en/remerge-diff.)
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
source: <pull.1122.v3.git.1643787281.gitgitgadget@gmail.com>
* ll/doc-mktree-typofix (2022-02-02) 1 commit
(merged to 'next' on 2022-02-08 at fe98063f1a)
+ fix typo in git-mktree.txt
Typofix.
Will merge to 'master'.
source: <pull.1207.git.git.1643792450866.gitgitgadget@gmail.com>
* po/doc-check-ignore-markup-fix (2022-02-03) 1 commit
(merged to 'next' on 2022-02-09 at 47631df376)
+ doc: check-ignore: code-quote an exclamation mark
Typofix.
Will merge to 'master'.
source: <20220203101643.1987-1-philipoakley@iee.email>
* sy/modernize-t-lib-read-tree-m-3way (2022-02-02) 2 commits
(merged to 'next' on 2022-02-09 at 8b7ecb4e99)
+ t/lib-read-tree-m-3way: indent with tabs
+ t/lib-read-tree-m-3way: modernize style
Style updates on a test script helper.
Will merge to 'master'.
source: <20220123060318.471414-1-shaoxuan.yuan02@gmail.com>
* ab/auto-detect-zlib-compress2 (2022-01-26) 1 commit
(merged to 'next' on 2022-02-08 at 9922938a6a)
+ compat: auto-detect if zlib has uncompress2()
Notice older zlib to enable our replacement uncompress2()
automatically.
Will merge to 'master'.
source: <xmqqr18x3s5s.fsf@gitster.g>
* js/apply-partial-clone-filters-recursively (2022-02-09) 1 commit
- clone, submodule: pass partial clone filters to submodules
"git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Will merge to 'next'?
source: <690d2316ad518ea4551821b2b3aa652996858475.1644034886.git.steadmon@google.com>
* jh/p4-various-fixups (2022-02-10) 22 commits
- git-p4: sort imports
- git-p4: seperate multiple statements onto seperate lines
- git-p4: move inline comments to line above
- git-p4: only seperate code blocks by a single empty line
- git-p4: compare to singletons with "is" and "is not"
- git-p4: normalize indentation of lines in conditionals
- git-p4: ensure there is a single space around all operators
- git-p4: ensure every comment has a single #
- git-p4: remove spaces between dictionary keys and colons
- git-p4: remove redundant backslash-continuations inside brackets
- git-p4: remove extraneous spaces before function arguments
- git-p4: place a single space after every comma
- git-p4: removed brackets when assigning multiple return values
- git-p4: remove spaces around default arguments
- git-p4: remove padding from lists, tuples and function arguments
- git-p4: sort and de-duplcate pylint disable list
- git-p4: remove commented code
- git-p4: convert descriptive class and function comments into docstrings
- git-p4: improve consistency of docstring formatting
- git-p4: indent with 4-spaces
- git-p4: remove unneeded semicolons from statements
- git-p4: add blank lines between functions and class definitions
Various cleanups to "git p4".
source: <20220210164627.279520-1-jholdsworth@nvidia.com>
* rs/bisect-executable-not-found (2022-01-19) 4 commits
- bisect--helper: double-check run command on exit code 126 and 127
- bisect: document run behavior with exit codes 126 and 127
- bisect--helper: release strbuf and strvec on run error
- bisect--helper: report actual bisect_state() argument on error
A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recoginse this situation and stop iteration early.
Will merge to 'next'?
source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>
* ds/sparse-checkout-requires-per-worktree-config (2022-02-08) 6 commits
- config: make git_configset_get_string_tmp() private
- worktree: copy sparse-checkout patterns and config on add
- sparse-checkout: set worktree-config correctly
- config: add repo_config_set_worktree_gently()
- worktree: create init_worktree_config()
- Documentation: add extensions.worktreeConfig details
"git sparse-checkout" wants to work with per-worktree configration,
but did not work well in a worktree attached to a bare repository.
Will merge to 'next'?
cf. <20220204081336.3194538-1-newren@gmail.com>
cf. <CAPig+cRrRxuTeByhKkLs_KDaWY8-r4+jrwT83A-r+sBQsmebMw@mail.gmail.com>
source: <pull.1101.v6.git.1644269583.gitgitgadget@gmail.com>
* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
(merged to 'next' on 2022-02-10 at 4866a64508)
+ refs: skip hooks when deleting uncovered packed refs
+ refs: do not execute reference-transaction hook on packing refs
+ refs: demonstrate excessive execution of the reference-transaction hook
+ refs: allow skipping the reference-transaction hook
+ refs: allow passing flags when beginning transactions
+ refs: extract packed_refs_delete_refs() to allow control of transaction
Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
Will merge to 'master'.
source: <cover.1642406989.git.ps@pks.im>
* ld/sparse-index-bash-completion (2022-02-08) 3 commits
(merged to 'next' on 2022-02-08 at ac1e968ab8)
+ completion: handle unusual characters for sparse-checkout
+ completion: improve sparse-checkout cone mode directory completion
+ completion: address sparse-checkout issues
The command line completion (in contrib/) learns to complete
arguments give to "git sparse-checkout" command.
Will merge to 'master'.
source: <pull.1108.v7.git.1644255105.gitgitgadget@gmail.com>
* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
(merged to 'next' on 2022-02-09 at f26a82c66a)
+ git-rev-list: add --exclude-first-parent-only flag
"git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
Will merge to 'master'.
source: <20220111213941.30129-1-jerry@skydio.com>
* en/present-despite-skipped (2022-01-14) 6 commits
- Accelerate clear_skip_worktree_from_present_files() by caching
- Update documentation related to sparsity and the skip-worktree bit
- repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
- unpack-trees: fix accidental loss of user changes
- t1011: add testcase demonstrating accidental loss of user modifications
- Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
(this branch uses vd/sparse-clean-etc.)
In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
Will merge to 'next'?
cf. <20220204081336.3194538-1-newren@gmail.com>
source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>
* vd/sparse-clean-etc (2022-01-13) 9 commits
(merged to 'next' on 2022-02-09 at 5928dbd25e)
+ update-index: reduce scope of index expansion in do_reupdate
+ update-index: integrate with sparse index
+ update-index: add tests for sparse-checkout compatibility
+ checkout-index: integrate with sparse index
+ checkout-index: add --ignore-skip-worktree-bits option
+ checkout-index: expand sparse checkout compatibility tests
+ clean: integrate with sparse index
+ reset: reorder wildcard pathspec conditions
+ reset: fix validation in sparse index test
(this branch is used by en/present-despite-skipped.)
"git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
Will merge to 'master'.
source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>
* en/remerge-diff (2022-02-02) 11 commits
(merged to 'next' on 2022-02-08 at 68b9a8a38b)
+ diff-merges: avoid history simplifications when diffing merges
+ merge-ort: mark conflict/warning messages from inner merges as omittable
+ show, log: include conflict/warning messages in --remerge-diff headers
+ diff: add ability to insert additional headers for paths
+ merge-ort: format messages slightly different for use in headers
+ merge-ort: mark a few more conflict messages as omittable
+ merge-ort: capture and print ll-merge warnings in our preferred fashion
+ ll-merge: make callers responsible for showing warnings
+ log: clean unneeded objects during `log --remerge-diff`
+ show, log: provide a --remerge-diff capability
+ Merge branch 'ns/tmp-objdir' into en/remerge-diff
(this branch is used by en/merge-tree.)
"git log --remerge-diff" shows the difference from mechanical merge
result and the merge result that is actually recorded.
Will merge to 'master'.
source: <pull.1103.v5.git.1643769457.gitgitgadget@gmail.com>
* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2022-02-11) 1 commit
- fetch-pack: parameterize message containing 'ready' keyword
L10n support for a few error messages.
Will merge to 'next'.
source: <20211222075805.19027-1-bagasdotme@gmail.com>
* gc/branch-recurse-submodules (2022-02-04) 7 commits
(merged to 'next' on 2022-02-10 at b54367ff92)
+ branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
+ branch: add --recurse-submodules option for branch creation
+ builtin/branch: consolidate action-picking logic in cmd_branch()
+ branch: add a dry_run parameter to create_branch()
+ branch: make create_branch() always create a branch
+ branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
+ Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules
"git branch" learned the "--recurse-submodules" option.
Will merge to 'master'.
source: <20220129000446.99261-1-chooglen@google.com>
* hn/reftable-coverity-fixes (2022-01-20) 17 commits
(merged to 'next' on 2022-02-08 at 1baf327a66)
+ reftable: add print functions to the record types
+ reftable: make reftable_record a tagged union
+ reftable: remove outdated file reftable.c
+ reftable: implement record equality generically
+ reftable: make reftable-record.h function signatures const correct
+ reftable: handle null refnames in reftable_ref_record_equal
+ reftable: drop stray printf in readwrite_test
+ reftable: order unittests by complexity
+ reftable: all xxx_free() functions accept NULL arguments
+ reftable: fix resource warning
+ reftable: ignore remove() return value in stack_test.c
+ reftable: check reftable_stack_auto_compact() return value
+ reftable: fix resource leak blocksource.c
+ reftable: fix resource leak in block.c error path
+ reftable: fix OOB stack write in print functions
+ Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
+ Merge branch 'hn/reftable' into hn/reftable-coverity-fixes
Problems identified by Coverity in the reftable code have been
corrected.
Will merge to 'master'.
source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>
* tb/midx-bitmap-corruption-fix (2022-01-27) 9 commits
(merged to 'next' on 2022-02-08 at a8cc333d78)
+ pack-bitmap.c: gracefully fallback after opening pack/MIDX
+ midx: read `RIDX` chunk when present
+ t/lib-bitmap.sh: parameterize tests over reverse index source
+ t5326: move tests to t/lib-bitmap.sh
+ t5326: extract `test_rev_exists`
+ t5326: drop unnecessary setup
+ pack-revindex.c: instrument loading on-disk reverse index
+ midx.c: make changing the preferred pack safe
+ t5326: demonstrate bitmap corruption after permutation
A bug that made multi-pack bitmap and the object order out-of-sync
(hence the .midx data gets corrupted) has been fixed.
Will merge to 'master'.
source: <cover.1643150456.git.me@ttaylorr.com>
* ab/grep-patterntype (2022-02-04) 9 commits
- grep: simplify config parsing and option parsing
- grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
- grep.h: make "grep_opt.pattern_type_option" use its enum
- grep API: call grep_config() after grep_init()
- grep.c: don't pass along NULL callback value
- built-ins: trust the "prefix" from run_builtin()
- grep tests: add missing "grep.patternType" config tests
- log tests: check if grep_config() is called by "log"-like cmds
- grep.h: remove unused "regex_t regexp" from grep_opt
Some code clean-up in the "git grep" machinery.
Looking good, except for the last step.
Code-wise, it is tempted to call it a victory after squashing the
fix-up in, but that does not fix the proposed log message, so...
Expecting a reroll to update its tests, but otherwise looks ready.
cf. <xmqqv8xui5ah.fsf@gitster.g>
cf. <xmqqmtj6jkuk.fsf@gitster.g>
source: <cover-v10-0.9-00000000000-20220204T211534Z-avarab@gmail.com>
* js/use-builtin-add-i (2021-12-01) 2 commits
- add -i: default to the built-in implementation
- t2016: require the PERL prereq only when necessary
"git add -i" was rewritten in C some time ago and has been in
testing; the reimplementation is now exposed to general public by
default.
On hold.
What's the status of the "known breakage"?
Are we ready to switch if we wanted to?
There are known breakages on macOS.
cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>
* ab/ambiguous-object-name (2022-01-27) 7 commits
- object-name: re-use "struct strbuf" in show_ambiguous_object()
- object-name: iterate ambiguous objects before showing header
- object-name: show date for ambiguous tag objects
- object-name: make ambiguous object output translatable
- object-name: explicitly handle bad tags in show_ambiguous_object()
- object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
- object-name tests: add tests for ambiguous object blind spots
Error output given in response to an ambiguous object name has been
improved.
Will merge to 'next'?
source: <cover-v8-0.7-00000000000-20220127T052116Z-avarab@gmail.com>
* tl/ls-tree-oid-only (2022-02-08) 13 commits
- ls-tree.c: support --object-only option for "git-ls-tree"
- ls-tree: introduce function "fast_path()"
- ls-tree.c: introduce "--format" option
- cocci: allow padding with `strbuf_addf()`
- ls-tree: introduce struct "show_tree_data"
- ls-tree: slightly refactor `show_tree()`
- ls-tree: fix "--name-only" and "--long" combined use bug
- ls-tree: simplify nesting if/else logic in "show_tree()"
- ls-tree: rename "retval" to "recurse" in "show_tree()"
- ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
- ls-tree: use "enum object_type", not {blob,tree,commit}_type
- ls-tree: add missing braces to "else" arms
- ls-tree: remove commented-out code
"git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
source: <cover.1644319434.git.dyroneteng@gmail.com>
* jh/builtin-fsmonitor-part2 (2022-02-11) 30 commits
- update-index: convert fsmonitor warnings to advise
- t7527: test status with untracked-cache and fsmonitor--daemon
- fsmonitor: force update index after large responses
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon: periodically truncate list of modified files
- t/perf/p7519: add fsmonitor--daemon test cases
- t/perf/p7519: speed up test on Windows
- t/helper/test-chmtime: skip directories on Windows
- t/perf: avoid copying builtin fsmonitor files into test repo
- t7527: create test for fsmonitor--daemon
- t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
- help: include fsmonitor--daemon feature flag in version info
- fsmonitor--daemon: implement handle_client callback
- compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
- compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
- compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement 'start' command
- fsmonitor--daemon: implement 'run' command
- compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
- compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement 'stop' and 'status' commands
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: document builtin fsmonitor
- fsmonitor: use IPC to query the builtin FSMonitor daemon
- fsmonitor: config settings are repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- fsmonitor: enhance existing comments, clarify trivial response handling
Built-in fsmonitor (part 2).
source: <pull.1041.v5.git.1644612979.gitgitgadget@gmail.com>
* es/superproject-aware-submodules (2022-02-03) 4 commits
- submodule: record superproject gitdir during 'update'
- submodule: record superproject gitdir during absorbgitdirs
- introduce submodule.superprojectGitDir record
- t7400-submodule-basic: modernize inspect() helper
A configuration variable in a submodule points at the location of
the superproject it is bound to (RFC).
source: <20220203215914.683922-1-emilyshaffer@google.com>
* ab/only-single-progress-at-once (2022-02-03) 9 commits
- pack-bitmap-write.c: don't return without stop_progress()
- progress API: unify stop_progress{,_msg}(), fix trace2 bug
- progress.c: refactor stop_progress{,_msg}() to use helpers
- progress.c: use dereferenced "progress" variable, not "(*p_progress)"
- progress.h: format and be consistent with progress.c naming
- progress.c tests: test some invalid usage
- progress.c tests: make start/stop commands on stdin
- progress.c test helper: add missing braces
- leak tests: fix a memory leak in "test-progress" helper
Further tweaks on progress API.
Will merge to 'next'?
source: <cover-v9-0.9-00000000000-20220203T213350Z-avarab@gmail.com>
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.35.0
@ 2022-01-24 19:25 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-24 19:25 UTC (permalink / raw)
To: git; +Cc: git-packagers
The latest feature release Git v2.35.0 is now available at the
usual places. It is comprised of 494 non-merge commits since
v2.34.0, contributed by 93 people, 35 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.35.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.34.0 are as follows.
Welcome to the Git development community!
AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
Wan, Christoph Reiter, Clemens Fruhwirth, Danial Alihosseini,
Dotan Cohen, Emir SARI, Enzo Matsumiya, Erwin Villejo, Gustave
Granroth, Hans Krentel (hakre), Ivan Frade, James Limbouris,
Jan Pokorný, Joel Holdsworth, John Burnett, John Cai, Josh
Rampersad, Jürgen Krämer, Kashav Madan, Lessley Dennington,
Matt Cooper, Matthew John Cheetham, Mike Marcelais, Mugdha
Pattnaik, Nikita Bobko, Petr Šplíchal, Robin Jarry, Thiago
Perrotta, Thomas Weißschuh, William Sprent, and 徐沛文
(Aleen).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Anders Kaseorg, Bagas Sanjaya, brian m. carlson, Carlo Marcelo
Arenas Belón, David Aguilar, Derrick Stolee, Elijah Newren,
Eli Schwartz, Eric Sunshine, Eric Wong, Fabian Stelzer, Fangyi
Zhou, Glen Choo, Greg Hurrell, Han-Wen Nienhuys, Jacob Vosmaer,
Jean-Noël Avila, Jeff King, Jerry Zhang, Jiang Xin, Johannes
Altmanninger, Johannes Schindelin, Johannes Sixt, Jonathan Tan,
Jordi Mas, Josh Steadmon, Junio C Hamano, Lénaïc Huard, Linus
Torvalds, Marc Strapetz, Martin Ågren, Matthias Aßhauer,
Matthias Rüster, Mike Hommey, Neeraj Singh, Øystein Walle,
Patrick Steinhardt, Peter Krefting, Philip Oakley, Philippe
Blain, Phillip Wood, Ralf Thielow, Randall S. Becker, René
Scharfe, Robert Estelle, Sergey Organov, SZEDER Gábor, Taylor
Blau, Teng Long, Todd Zullinger, Trần Ngọc Quân, Victoria
Dye, Yi-Jyun Pan, Yoichi Nakayama, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.35 Release Notes
======================
Updates since Git 2.34
----------------------
Backward compatibility warts
* "_" is now treated as any other URL-valid characters in an URL when
matching the per-URL configuration variable names.
* The color palette used by "git grep" has been updated to match that
of GNU grep.
Note to those who build from the source
* You may need to define NO_UNCOMPRESS2 Makefile macro if you build
with zlib older than 1.2.9.
* If your compiler cannot grok C99, the build will fail. See the
instruction at the beginning of git-compat-util.h if this happens
to you.
UI, Workflows & Features
* "git status --porcelain=v2" now show the number of stash entries
with --show-stash like the normal output does.
* "git stash" learned the "--staged" option to stash away what has
been added to the index (and nothing else).
* "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
the newly created branch if "git init" is run.
* Various operating modes of "git reset" have been made to work
better with the sparse index.
* "git submodule deinit" for a submodule whose .git metadata
directory is embedded in its working tree refused to work, until
the submodule gets converted to use the "absorbed" form where the
metadata directory is stored in superproject, and a gitfile at the
top-level of the working tree of the submodule points at it. The
command is taught to convert such submodules to the absorbed form
as needed.
* The completion script (in contrib/) learns that the "--date"
option of commands from the "git log" family takes "human" and
"auto" as valid values.
* "Zealous diff3" style of merge conflict presentation has been added.
* The "git log --format=%(describe)" placeholder has been extended to
allow passing selected command-line options to the underlying "git
describe" command.
* "default" and "reset" have been added to our color palette.
* The cryptographic signing using ssh keys can specify literal keys
for keytypes whose name do not begin with the "ssh-" prefix by
using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
* "git fetch" without the "--update-head-ok" option ought to protect
a checked out branch from getting updated, to prevent the working
tree that checks it out to go out of sync. The code was written
before the use of "git worktree" got widespread, and only checked
the branch that was checked out in the current worktree, which has
been updated.
* "git name-rev" has been tweaked to give output that is shorter and
easier to understand.
* "git apply" has been taught to ignore a message without a patch
with the "--allow-empty" option. It also learned to honor the
"--quiet" option given from the command line.
* The "init" and "set" subcommands in "git sparse-checkout" have been
unified for a better user experience and performance.
* Many git commands that deal with working tree files try to remove a
directory that becomes empty (i.e. "git switch" from a branch that
has the directory to another branch that does not would attempt
remove all files in the directory and the directory itself). This
drops users into an unfamiliar situation if the command was run in
a subdirectory that becomes subject to removal due to the command.
The commands have been taught to keep an empty directory if it is
the directory they were started in to avoid surprising users.
* "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
done to a piece of e-mail without a patch in it.
* The default merge message prepared by "git merge" records the name
of the current branch; the name can be overridden with a new option
to allow users to pretend a merge is made on a different branch.
* The way "git p4" shows file sizes in its output has been updated to
use human-readable units.
* "git -c branch.autosetupmerge=inherit branch new old" makes "new"
to have the same upstream as the "old" branch, instead of marking
"old" itself as its upstream.
Performance, Internal Implementation, Development Support etc.
* The use of errno as a means to carry the nature of error in the ref
API implementation has been reworked and reduced.
* Teach and encourage first-time contributors to this project to
state the base commit when they submit their topic.
* The command line completion for "git send-email" options have been
tweaked to make it easier to keep it in sync with the command itself.
* Ensure that the sparseness of the in-core index matches the
index.sparse configuration specified by the repository immediately
after the on-disk index file is read.
* Code clean-up to eventually allow information on remotes defined
for an arbitrary repository to be read.
* Build optimization.
* Tighten code for testing pack-bitmap.
* Weather balloon to break people with compilers that do not support
C99.
* The "reftable" backend for the refs API, without integrating into
the refs subsystem, has been added.
* More tests are marked as leak-free.
* The test framework learns to list unsatisfied test prerequisites,
and optionally error out when prerequisites that are expected to be
satisfied are not.
* The default setting for trace2 event nesting was too low to cause
test failures, which is worked around by bumping it up in the test
framework.
* Drop support for TravisCI and update test workflows at GitHub.
* Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
mechanism to force "git" to use 'master' as the default name for
the initial branch no longer need it; the use of the mechanism from
them have been removed.
* Allow running our tests while disabling fsync.
* Document the parameters given to the reflog entry iterator callback
functions.
(merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
* The test helper for refs subsystem learned to write bogus and/or
nonexistent object name to refs to simulate error situations we
want to test Git in.
* "diff --histogram" optimization.
* Weather balloon to find compilers that do not grok variable
declaration in the for() loop.
* diff and blame commands have been taught to work better with sparse
index.
* The chainlint test script linter in the test suite has been updated.
* The DEVELOPER=yes build uses -std=gnu99 now.
* "git format-patch" uses a single rev_info instance and then exits.
Mark the structure with UNLEAK() macro to squelch leak sanitizer.
* New interface into the tmp-objdir API to help in-core use of the
quarantine feature.
* Broken &&-chains in the test scripts have been corrected.
* The RCS keyword substitution in "git p4" used to be done assuming
that the contents are UTF-8 text, which can trigger decoding
errors. We now treat the contents as a bytestring for robustness
and correctness.
* The conditions to choose different definitions of the FLEX_ARRAY
macro for vendor compilers has been simplified to make it easier to
maintain.
* Correctness and performance update to "diff --color-moved" feature.
* "git upload-pack" (the other side of "git fetch") used a 8kB buffer
but most of its payload came on 64kB "packets". The buffer size
has been enlarged so that such a packet fits.
* "git fetch" and "git pull" are now declared sparse-index clean.
Also "git ls-files" learns the "--sparse" option to help debugging.
* Similar message templates have been consolidated so that
translators need to work on fewer number of messages.
Fixes since v2.34
-----------------
* "git grep" looking in a blob that has non-UTF8 payload was
completely broken when linked with certain versions of PCREv2
library in the latest release.
* Other code cleanup, docfix, build fix, etc.
* "git pull" with any strategy when the other side is behind us
should succeed as it is a no-op, but doesn't.
* An earlier change in 2.34.0 caused JGit application (that abused
GIT_EDITOR mechanism when invoking "git config") to get stuck with
a SIGTTOU signal; it has been reverted.
* An earlier change that broke .gitignore matching has been reverted.
* Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
operation modes of the "git branch" command that do not need the
sort key information, no longer errors out by seeing a bogus sort
key.
(merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
* The compatibility implementation for unsetenv(3) were written to
mimic ancient, non-POSIX, variant seen in an old glibc; it has been
changed to return an integer to match the more modern era.
(merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
* The clean/smudge conversion code path has been prepared to better
work on platforms where ulong is narrower than size_t.
(merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
* Redact the path part of packfile URI that appears in the trace output.
(merge 0ba558ffb1 if/redact-packfile-uri later to maint).
* CI has been taught to catch some Unicode directional formatting
sequence that can be used in certain mischief.
(merge 0e7696c64d js/ci-no-directional-formatting later to maint).
* The "--date=format:<strftime>" gained a workaround for the lack of
system support for a non-local timezone to handle "%s" placeholder.
(merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
* The "merge" subcommand of "git jump" (in contrib/) silently ignored
pathspec and other parameters.
(merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
* The code to decode the length of packed object size has been
corrected.
(merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
* The advice message given by "git pull" when the user hasn't made a
choice between merge and rebase still said that the merge is the
default, which no longer is the case. This has been corrected.
(merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
* "git fetch", when received a bad packfile, can fail with SIGPIPE.
This wasn't wrong per-se, but we now detect the situation and fail
in a more predictable way.
(merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
* The function to cull a child process and determine the exit status
had two separate code paths for normal callers and callers in a
signal handler, and the latter did not yield correct value when the
child has caught a signal. The handling of the exit status has
been unified for these two code paths. An existing test with
flakiness has also been corrected.
(merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
* When a non-existent program is given as the pager, we tried to
reuse an uninitialized child_process structure and crashed, which
has been fixed.
(merge f917f57f40 em/missing-pager later to maint).
* The single-key-input mode in "git add -p" had some code to handle
keys that generate a sequence of input via ReadKey(), which did not
handle end-of-file correctly, which has been fixed.
(merge fc8a8126df cb/add-p-single-key-fix later to maint).
* "git rebase -x" added an unnecessary 'exec' instructions before
'noop', which has been corrected.
(merge cc9dcdee61 en/rebase-x-fix later to maint).
* When the "git push" command is killed while the receiving end is
trying to report what happened to the ref update proposals, the
latter used to die, due to SIGPIPE. The code now ignores SIGPIPE
to increase our chances to run the post-receive hook after it
happens.
(merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
* "git worktree add" showed "Preparing worktree" message to the
standard output stream, but when it failed, the message from die()
went to the standard error stream. Depending on the order the
stdio streams are flushed at the program end, this resulted in
confusing output. It has been corrected by sending all the chatty
messages to the standard error stream.
(merge b50252484f es/worktree-chatty-to-stderr later to maint).
* Coding guideline document has been updated to clarify what goes to
standard error in our system.
(merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
* The sparse-index/sparse-checkout feature had a bug in its use of
the matching code to determine which path is in or outside the
sparse checkout patterns.
(merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
* "git rebase -x" by mistake started exporting the GIT_DIR and
GIT_WORK_TREE environment variables when the command was rewritten
in C, which has been corrected.
(merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
* When "git log" implicitly enabled the "decoration" processing
without being explicitly asked with "--decorate" option, it failed
to read and honor the settings given by the "--decorate-refs"
option.
* "git fetch --set-upstream" did not check if there is a current
branch, leading to a segfault when it is run on a detached HEAD,
which has been corrected.
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
* Among some code paths that ask an yes/no question, only one place
gave a prompt that looked different from the others, which has been
updated to match what the others create.
(merge 0fc8ed154c km/help-prompt-fix later to maint).
* "git log --invert-grep --author=<name>" used to exclude commits
written by the given author, but now "--invert-grep" only affects
the matches made by the "--grep=<pattern>" option.
(merge 794c000267 rs/log-invert-grep-with-headers later to maint).
* "git grep --perl-regexp" failed to match UTF-8 characters with
wildcard when the pattern consists only of ASCII letters, which has
been corrected.
(merge 32e3e8bc55 rs/pcre2-utf later to maint).
* Certain sparse-checkout patterns that are valid in non-cone mode
led to segfault in cone mode, which has been corrected.
* Use of certain "git rev-list" options with "git fast-export"
created nonsense results (the worst two of which being "--reverse"
and "--invert-grep --grep=<foo>"). The use of "--first-parent" is
made to behave a bit more sensible than before.
(merge 726a228dfb ws/fast-export-with-revision-options later to maint).
* Perf tests were run with end-user's shell, but it has been
corrected to use the shell specified by $TEST_SHELL_PATH.
(merge 9ccab75608 ja/perf-use-specified-shell later to maint).
* Fix dependency rules to generate hook-list.h header file.
(merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).
* "git stash" by default triggers its "push" action, but its
implementation also made "git stash -h" to show short help only for
"git stash push", which has been corrected.
(merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).
* "git apply --3way" bypasses the attempt to do a three-way
application in more cases to address the regression caused by the
recent change to use direct application as a fallback.
(merge 34d607032c jz/apply-3-corner-cases later to maint).
* Fix performance-releated bug in "git subtree" (in contrib/).
(merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).
* Extend the guidance to choose the base commit to build your work
on, and hint/nudge contributors to read others' changes.
(merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).
* A corner case bug in the ort merge strategy has been corrected.
(merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).
* "git stash apply" forgot to attempt restoring untracked files when
it failed to restore changes to tracked ones.
(merge 71cade5a0b en/stash-df-fix later to maint).
* Calling dynamically loaded functions on Windows has been corrected.
(merge 4a9b204920 ma/windows-dynload-fix later to maint).
* Some lockfile code called free() in signal-death code path, which
has been corrected.
(merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
(merge f9b2b6684d ja/doc-cleanup later to maint).
(merge 7d1b866778 jc/fix-first-object-walk later to maint).
(merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
(merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
(merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
(merge 42c456ff81 rs/mergesort later to maint).
(merge ad506e6780 tl/midx-docfix later to maint).
(merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
(merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
(merge 7d3fc7df70 jt/midx-doc-fix later to maint).
(merge 7b089120d9 hn/create-reflog-simplify later to maint).
(merge 9e12400da8 cb/mingw-gmtime-r later to maint).
(merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
(merge eafd6e7e55 ab/die-with-bug later to maint).
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
(merge 47ca93d071 ds/repack-fixlets later to maint).
(merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
(merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
(merge 999bba3e0b rs/daemon-plug-leak later to maint).
(merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
(merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
(merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
(merge 97d6fb5a1f ma/header-dup-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.34.0 are as follows:
Alex Henrie (1):
pull: don't say that merge is "the default strategy"
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5195t)
Anders Kaseorg (8):
fetch: lowercase error messages
receive-pack: lowercase error messages
branch: lowercase error messages
worktree: simplify find_shared_symref() memory ownership model
fetch: protect branches checked out in all worktrees
receive-pack: clean dead code from update_worktree()
receive-pack: protect current branch for bare repository worktree
branch: protect branches checked out in all worktrees
Bagas Sanjaya (3):
l10n: po-id for 2.35 (round 1)
branch: missing space fix at line 313
l10n: po-id for 2.35 (round 2)
Calvin Wan (1):
protocol-v2.txt: align delim-pkt spec with usage
Carlo Marcelo Arenas Belón (4):
test-genzeros: allow more than 2G zeros in Windows
test-lib: add prerequisite for 64-bit platforms
mingw: avoid fallback for {local,gm}time_r()
add -p: avoid use of undefined $key when ReadKey -> EOF
David Aguilar (1):
build: centos/RHEL 7 ships with an older gcc and zlib
Derrick Stolee (19):
dir: revert "dir: select directories correctly"
test-lib.sh: set GIT_TRACE2_EVENT_NESTING
t/t*: remove custom GIT_TRACE2_EVENT_NESTING
scalar: 'register' sets recommended config and starts maintenance
scalar: 'unregister' stops background maintenance
scalar: implement 'scalar list'
scalar: implement the `run` command
t1092: add deeper changes during a checkout
unpack-trees: use traverse_path instead of name
repack: respect kept objects with '--write-midx -b'
repack: make '--quiet' disable progress
fetch/pull: use the sparse index
ls-files: add --sparse option
t1092: replace 'read-cache --table' with 'ls-files --sparse'
t1091/t3705: remove 'test-tool read-cache --table'
test-read-cache: remove --table, --expand options
sparse-checkout: fix segfault on malformed patterns
sparse-checkout: fix OOM error with mixed patterns
sparse-checkout: refuse to add to bad patterns
Eli Schwartz (3):
pretty.c: rework describe options parsing for better extensibility
pretty: add tag option to %(describe)
pretty: add abbrev option to %(describe)
Elijah Newren (28):
sequencer: avoid adding exec commands for non-commit creating commands
update documentation for new zdiff3 conflictStyle
name-rev: prefer shorter names over following merges
sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
t2501: add various tests for removing the current working directory
setup: introduce startup_info->original_cwd
unpack-trees: refuse to remove startup_info->original_cwd
unpack-trees: add special cwd handling
symlinks: do not include startup_info->original_cwd in dir removal
clean: do not attempt to remove startup_info->original_cwd
rebase: do not attempt to remove startup_info->original_cwd
stash: do not attempt to remove startup_info->original_cwd
dir: avoid incidentally removing the original_cwd in remove_path()
dir: new flag to remove_dir_recurse() to spare the original_cwd
t2501: simplify the tests since we can now assume desired behavior
sparse-checkout: pass use_stdin as a parameter instead of as a global
sparse-checkout: break apart functions for sparse_checkout_(set|add)
sparse-checkout: add sanity-checks on initial sparsity state
sparse-checkout: disallow --no-stdin as an argument to set
sparse-checkout: split out code for tweaking settings config
sparse-checkout: enable `set` to initialize sparse-checkout mode
sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
git-sparse-checkout.txt: update to document init/set/reapply changes
Documentation: clarify/correct a few sparsity related statements
clone: avoid using deprecated `sparse-checkout init`
sparse-checkout: remove stray trailing space
merge-ort: fix bug with renormalization and rename/delete conflicts
stash: do not return before restoring untracked files
Emir SARI (1):
l10n: tr: v2.35.0 round 1
Enzo Matsumiya (1):
pager: fix crash when pager program doesn't exist
Eric Sunshine (38):
worktree: stop being overly intimate with run_command() internals
CodingGuidelines: document which output goes to stdout vs. stderr
worktree: send "chatty" messages to stderr
git-worktree.txt: add missing `-v` to synopsis for `worktree list`
t/lib-pager: use sane_unset() to avoid breaking &&-chain
t1010: fix unnoticed failure on Windows
t1020: avoid aborting entire test script when one test fails
t4202: clarify intent by creating expected content less cleverly
t5516: drop unnecessary subshell and command invocation
t6300: make `%(raw:size) --shell` test more robust
t9107: use shell parameter expansion to avoid breaking &&-chain
tests: simplify construction of large blocks of text
tests: use test_write_lines() to generate line-oriented output
tests: fix broken &&-chains in compound statements
tests: fix broken &&-chains in `$(...)` command substitutions
tests: fix broken &&-chains in `{...}` groups
tests: apply modern idiom for signaling test failure
tests: apply modern idiom for exiting loop upon failure
tests: simplify by dropping unnecessary `for` loops
t0000-t3999: detect and signal failure within loop
t4000-t4999: detect and signal failure within loop
t5000-t5999: detect and signal failure within loop
t6000-t9999: detect and signal failure within loop
t/chainlint/*.test: don't use invalid shell syntax
t/chainlint/*.test: fix invalid test cases due to mixing quote types
t/chainlint/*.test: generalize self-test commentary
t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
t/Makefile: optimize chainlint self-test
chainlint.sed: improve ?!AMP?! placement accuracy
chainlint.sed: improve ?!SEMI?! placement accuracy
chainlint.sed: tolerate harmless ";" at end of last line in block
chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
chainlint.sed: drop subshell-closing ">" annotation
chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
chainlint.sed: don't mistake `<< word` in string as here-doc operator
chainlint.sed: stop throwing away here-doc tags
chainlint.sed: swallow comments consistently
chainlint.sed: stop splitting "(..." into separate lines "(" and "..."
Eric Wong (2):
tests: disable fsync everywhere
cbtree: remove broken and unused cb_unlink
Erwin Villejo (1):
pull: should be noop when already-up-to-date
Fabian Stelzer (15):
ssh signing: support non ssh-* keytypes
ssh signing: make sign/amend test more resilient
test-lib: show missing prereq summary
test-lib: introduce required prereq for test runs
test-lib: make BAIL_OUT() work in tests and prereq
t/fmt-merge-msg: do not redirect stderr
t/fmt-merge-msg: make gpgssh tests more specific
ssh signing: use sigc struct to pass payload
ssh signing: add key lifetime test prereqs
ssh signing: make verify-commit consider key lifetime
ssh signing: make git log verify key lifetime
ssh signing: make verify-tag consider key lifetime
ssh signing: make fmt-merge-msg consider key lifetime
ssh signing: verify ssh-keygen in test prereq
t/gpg: simplify test for unknown key
Fangyi Zhou (1):
l10n: zh_CN: v2.35.0 round 1
Glen Choo (5):
t5516: add test case for pushing remote refspecs
remote: move static variables into per-repository struct
remote: use remote_state parameter internally
remote: remove the_repository->remote_state from static methods
remote: die if branch is not found in repository
Greg Hurrell (1):
docs: add missing colon to Documentation/config/gpg.txt
Han-Wen Nienhuys (49):
hash.h: provide constants for the hash IDs
reftable: add LICENSE
reftable: add error related functionality
reftable: utility functions
reftable: add blocksource, an abstraction for random access reads
reftable: (de)serialization for the polymorphic record type.
Provide zlib's uncompress2 from compat/zlib-compat.c
reftable: reading/writing blocks
reftable: a generic binary tree implementation
reftable: write reftable files
reftable: generic interface to tables
reftable: read reftable files
reftable: reftable file level tests
reftable: add a heap-based priority queue for reftable records
reftable: add merged table view
reftable: implement refname validation
reftable: implement stack, a mutable database of reftable files.
reftable: add dump utility
Add "test-tool dump-reftable" command.
branch tests: test for errno propagating on failing read
refs API: make refs_read_raw_ref() not set errno
refs API: make parse_loose_ref_contents() not set errno
refs: drop force_create argument of create_reflog API
t1404: mark directory/file conflict tests with REFFILES
show-branch: show reflog message
test-ref-store: don't add newline to reflog message
t1405: check for_each_reflog_ent_reverse() more thoroughly
test-ref-store: tweaks to for-each-reflog-ent format
refs/debug: trim trailing LF from reflog message
test-ref-store: remove force-create argument for create-reflog
test-ref-store: parse symbolic flag constants
test-ref-store: plug memory leak in cmd_delete_refs
refs: update comment.
refs: introduce REF_SKIP_OID_VERIFICATION flag
refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
t1430: remove refs using test-tool
t1430: create valid symrefs using test-helper
test-ref-store: print hash algorithm
t5540: require REFFILES
t5550: require REFFILES
t7004: create separate tags for different tests
t7004: use "test-tool ref-store" for reflog inspection
refs: pass gitdir to packed_ref_store_create
refs: print error message in debug output
refs: centralize initialization of the base ref_store.
reftable: fix typo in header
reftable: signal overflow
reftable: support preset file mode for writing
reftable: avoid initializing structs from structs
Hans Krentel (hakre) (1):
ci(check-whitespace): update stale file top comments
Ivan Frade (2):
fetch-pack: redact packfile urls in traces
http-fetch: redact url on die() message
Jacob Vosmaer (1):
upload-pack.c: increase output buffer size
James Limbouris (1):
subtree: fix argument handling in check_parents
Jean-Noël Avila (21):
doc: fix git credential synopsis
doc: split placeholders as individual tokens
doc: express grammar placeholders between angle brackets
doc: use only hyphens as word separators in placeholders
doc: git-ls-files: express options as optional alternatives
doc: use three dots for indicating repetition instead of star
doc: uniformize <URL> placeholders' case
doc: git-http-push: describe the refs as pattern pairs
doc: git-init: clarify file modes in octal.
i18n: refactor "foo and bar are mutually exclusive"
i18n: refactor "%s, %s and %s are mutually exclusive"
i18n: turn "options are incompatible" into "cannot be used together"
i18n: standardize "cannot open" and "cannot read"
i18n: tag.c factorize i18n strings
i18n: factorize "--foo requires --bar" and the like
i18n: factorize "no directory given for --foo"
i18n: refactor "unrecognized %(foo) argument" strings
i18n: factorize "--foo outside a repository"
i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
i18n: turn even more messages into "cannot be used together" ones
l10n: fr: v2.35.0 round 1
Jeff King (18):
urlmatch: add underscore to URL_HOST_CHARS
strbuf_addftime(): handle "%s" manually
test_bitmap_hashes(): handle repository without bitmaps
generate-cmdlist.sh: do not shell out to "sed"
git-jump: pass "merge" arguments to ls-files
t5319: corrupt more bytes of the midx checksum
refs: work around gcc-11 warning with REF_HAVE_NEW
fetch-pack: ignore SIGPIPE when writing to index-pack
run-command: unify signal and regular logic for wait_or_whine()
t7006: clean up SIGPIPE handling in trace2 tests
t7006: simplify exit-code checks for sigpipe tests
log: handle --decorate-refs with userformat "%d"
log: load decorations with --simplify-by-decoration
xdiff: drop CMP_ENV macro from xhistogram
xdiff: drop xpparam_t parameter from histogram cmp_recs()
xdiff: drop unused flags parameter from recs_match
config.mak.dev: specify -std=gnu99 for gcc/clang
doc/config: mark ssh allowedSigners example as literal
Jerry Zhang (3):
git-apply: add --quiet flag
git-apply: add --allow-empty flag
git-apply: skip threeway in add / rename cases
Jiang Xin (3):
l10n: git.pot: v2.35.0 round 1 (126 new, 142 removed)
l10n: git.pot: v2.35.0 round 2 (1 new, 1 removed)
l10n: batch update to fix typo in branch.c
Joel Holdsworth (9):
git-p4: use with statements to close files after use in patchRCSKeywords
git-p4: pre-compile RCS keyword regexes
git-p4: add raw option to read_pipelines
git-p4: open temporary patch file for write only
git-p4: resolve RCS keywords in bytes not utf-8
git-p4: print size values in appropriate units
git-p4: show progress as an integer
git-p4: remove "debug" verb
git-p4: remove "rollback" verb
Johannes Altmanninger (1):
t/perf: do not run tests in user's $SHELL
Johannes Schindelin (15):
test-tool genzeros: generate large amounts of data more efficiently
git-compat-util: introduce more size_t helpers
ci: disallow directional formatting
scalar: add a README with a roadmap
scalar: create a rudimentary executable
scalar: start documenting the command
scalar: create test infrastructure
scalar: let 'unregister' handle a deleted enlistment directory gracefully
scalar: implement the `clone` subcommand
scalar: teach 'clone' to support the --single-branch option
scalar: allow reconfiguring an existing enlistment
scalar: teach 'reconfigure' to optionally handle all registered enlistments
scalar: implement the `version` command
tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed
getcwd(mingw): handle the case when there is no cwd
Johannes Sixt (3):
generate-cmdlist.sh: spawn fewer processes
generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
t1450-fsck: exec-bit is not needed to make loose object writable
John Cai (2):
docs: fix places that break compilation in MyFirstObjectWalk
docs: add headers in MyFirstObjectWalk
Jonathan Tan (2):
packfile: avoid overflowing shift during decode
Doc: no midx and partial clone relation
Jordi Mas (3):
l10n: Update Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (6):
trace2: disable tr2_dst before warning on write errors
branch: accept multiple upstream branches for tracking
branch: add flags and config to inherit tracking
config: require lowercase for branch.*.autosetupmerge
l10n: README: call more attention to plural strings
branch,checkout: fix --track usage strings
Junio C Hamano (32):
for-each-ref: delay parsing of --sort=<atom> options
MyFirstContribution: teach to use "format-patch --base=auto"
unsetenv(3) returns int, not void
init doc: --shared=0xxx does not give umask but perm bits
Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
0th batch for early fixes
Revert "editor: save and reset terminal after calling EDITOR"
A bit more regression fixes
Git 2.34.1
refs: document callback for reflog-ent iterators
The first batch to start the current cycle
revision: use C99 declaration of variable in for() loop
grep: clarify what `grep.patternType=default` means
flex-array: simplify compiler-specific workaround
The second batch
The third batch
t4204 is not sanitizer clean at all
format-patch: mark rev_info with UNLEAK
merge: allow to pretend a merge is made into a different branch
The fourth batch
The fifth batch
SubmittingPatchs: clarify choice of base and testing
The sixth batch
The seventh batch
Git 2.35-rc0
packfile: fix off-by-one error in decoding logic
Last minute fixes before -rc1
Git 2.35-rc1
Makefile: FreeBSD cannot do C99-or-below build
Git 2.35-rc2
checkout: avoid BUG() when hitting a broken repository
Git 2.35
Jürgen Krämer (1):
l10n: de.po: Fix translation for "'%s' is aliased to '%s'"
Kashav Madan (1):
help: make auto-correction prompt more consistent
Lessley Dennington (7):
git: ensure correct git directory setup with -h
commit-graph: return if there is no git directory
test-read-cache: set up repo after git directory
repo-settings: prepare_repo_settings only in git repos
diff: replace --staged with --cached in t1092 tests
diff: enable and test the sparse index
blame: enable and test the sparse index
Lénaïc Huard (1):
grep: align default colors with GNU grep ones
Marc Strapetz (1):
t/README: fix typo
Martin Ågren (1):
cache.h: drop duplicate `ensure_full_index()` declaration
Matt Cooper (4):
t1051: introduce a smudge filter test for extremely large files
odb: teach read_blob_entry to use size_t
odb: guard against data loss checking out a huge file
clean/smudge: allow clean filters to process extremely large files
Matthew John Cheetham (1):
scalar: implement the `delete` command
Matthias Aßhauer (1):
lazyload: use correct calling conventions
Matthias Rüster (1):
l10n: de.po: Update German translation
Mugdha Pattnaik (1):
submodule: absorb git dir instead of dying on deinit
Neeraj Singh (2):
tmp-objdir: new API for creating temporary writable databases
tmp-objdir: disable ref updates when replacing the primary odb
Patrick Steinhardt (1):
fetch: fix deadlock when cleaning up lockfiles in async signals
Peter Krefting (2):
l10n: sv.po: Fix typo
l10n: sv.po: Update Swedish translation (5196t0f0u)
Philip Oakley (3):
repack.c: LLP64 compatibility, upcast unity for left shift
diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
object-file.c: LLP64 compatibility, upcast unity for left shift
Philippe Blain (1):
SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section
Phillip Wood (19):
diff histogram: intern strings
xdiff: avoid unnecessary memory allocations
xdiff: simplify comparison
xdiff: implement a zealous diff3, or "zdiff3"
diff --color-moved: add perf tests
diff --color-moved: clear all flags on blocks that are too short
diff --color-moved: factor out function
diff --color-moved: rewind when discarding pmb
diff --color-moved=zebra: fix alternate coloring
diff --color-moved: avoid false short line matches and bad zebra coloring
diff: simplify allow-indentation-change delta calculation
diff --color-moved-ws=allow-indentation-change: simplify and optimize
diff --color-moved: call comparison function directly
diff --color-moved: unify moved block growth functions
diff --color-moved: shrink potential moved blocks as we go
diff --color-moved: stop clearing potential moved blocks
diff --color-moved-ws=allow-indentation-change: improve hash lookups
diff: use designated initializers for emitted_diff_symbol
diff --color-moved: intern strings
Randall S. Becker (1):
build: NonStop ships with an older zlib
René Scharfe (7):
mergesort: avoid left shift overflow
log: let --invert-grep only invert --grep
t4202: fix patternType setting in --invert-grep test
daemon: plug memory leak on overlong path
grep/pcre2: use PCRE2_UTF even with ASCII patterns
grep/pcre2: factor out literal variable
branch,checkout: fix --track documentation
Robert Estelle (3):
color: add missing GIT_COLOR_* white/black constants
color: support "default" to restore fg/bg color
color: allow colors to be prefixed with "reset"
Robin Jarry (1):
receive-pack: ignore SIGPIPE while reporting status to client
Sergey Organov (2):
stash: implement '--staged' option for 'push' and 'save'
stash: get rid of unused argument in stash_staged()
Taylor Blau (11):
midx.c: clean up chunkfile after reading the MIDX
midx.c: don't leak MIDX from verify_midx_file
t/helper/test-read-midx.c: free MIDX within read_midx_file()
builtin/pack-objects.c: don't leak memory via arguments
builtin/repack.c: avoid leaking child arguments
builtin/multi-pack-index.c: don't leak concatenated options
midx.c: write MIDX filenames to strbuf
pack-bitmap.c: don't leak type-level bitmaps
pack-bitmap.c: more aggressively free in free_bitmap_index()
packfile: make `close_pack_revindex()` static
fmt-merge-msg: prevent use-after-free with signed tags
Teng Long (1):
midx: fix a formatting issue in "multi-pack-index.txt"
Thiago Perrotta (2):
send-email: programmatically generate bash completions
send-email docs: add format-patch options
Thomas Weißschuh (1):
var: add GIT_DEFAULT_BRANCH variable
Trần Ngọc Quân (1):
l10n: vi(5195t): Update for v2.35.0 round 2
Victoria Dye (12):
reset: rename is_missing to !is_in_reset_tree
reset: preserve skip-worktree bit in mixed reset
sparse-index: update command for expand/collapse test
test-read-cache.c: prepare_repo_settings after config init
sparse-index: avoid unnecessary cache tree clearing
sparse-index: add ensure_correct_sparsity function
sparse-index: update do_read_index to ensure correct sparsity
reset: expand test coverage for sparse checkouts
reset: integrate with sparse index
reset: make sparse-aware (except --mixed)
reset: make --mixed sparse-aware
unpack-trees: improve performance of next_cache_entry
William Sprent (1):
fast-export: fix surprising behavior with --first-parent
Yi-Jyun Pan (2):
l10n: zh_TW: v2.35.0 round 1 (1 fuzzy)
l10n: zh_TW: v2.35.0 round 2 (0 untranslated)
Yoichi Nakayama (1):
completion: add human and auto: date format
brian m. carlson (1):
git-compat-util: add a test balloon for C99 support
Ævar Arnfjörð Bjarmason (88):
refs API: add a version of refs_resolve_ref_unsafe() with "errno"
refs API: make refs_rename_ref_available() static
reflog tests: add --updateref tests
refs/files: remove "name exist?" check in lock_ref_oid_basic()
refs API: remove refs_read_ref_full() wrapper
refs API: make resolve_gitlink_ref() not set errno
refs API: make loose_fill_ref_dir() not set errno
refs API: make files_copy_or_rename_ref() et al not set errno
refs API: ignore errno in worktree.c's add_head_info()
refs API: ignore errno in worktree.c's find_shared_symref()
refs tests: ignore ignore errno in test-ref-store helper
refs API: make refs_resolve_refdup() not set errno
refs API: make refs_ref_exists() not set errno
refs API: make resolve_ref_unsafe() not set errno
refs API: make expand_ref() & repo_dwim_log() not set errno
refs API: don't expose "errno" in run_transaction_hook()
refs API: post-migration API renaming [1/2]
refs API: post-migration API renaming [2/2]
Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
git-instaweb: unconditionally assume that gitweb is mod_perl capable
git-sh-setup: remove unused sane_egrep() function
git-sh-setup: remove "sane_grep", it's not needed anymore
leak tests: mark a read-tree test as passing SANITIZE=leak
leak tests: mark "sort" test as passing SANITIZE=leak
leak tests: mark most gettext tests as passing with SANITIZE=leak
leak tests: mark some misc tests as passing with SANITIZE=leak
leak tests: mark some rev-list tests as passing with SANITIZE=leak
leak tests: mark some rev-parse tests as passing with SANITIZE=leak
leak tests: mark some update-index tests as passing with SANITIZE=leak
leak tests: mark some notes tests as passing with SANITIZE=leak
leak tests: mark some apply tests as passing with SANITIZE=leak
leak tests: mark some diff tests as passing with SANITIZE=leak
leak tests: mark some add tests as passing with SANITIZE=leak
leak tests: mark some clone tests as passing with SANITIZE=leak
leak tests: mark some status tests as passing with SANITIZE=leak
leak tests: mark some config tests as passing with SANITIZE=leak
leak tests: mark some fast-import tests as passing with SANITIZE=leak
command-list.txt: sort with "LC_ALL=C sort"
generate-cmdlist.sh: trivial whitespace change
generate-cmdlist.sh: don't call get_categories() from category_list()
generate-cmdlist.sh: run "grep | sort", not "sort | grep"
generate-cmdlist.sh: stop sorting category lines
generate-cmdlist.sh: replace "grep' invocation with a shell version
generate-cmdlist.sh: don't parse command-list.txt thrice
parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
checkout: fix "branch info" memory leaks
CI: remove Travis CI support
CI: use shorter names that fit in UX tooltips
CI: rename the "Linux32" job to lower-case "linux32"
CI: use "$runs_on_pool", not "$jobname" to select packages & config
CI: don't run "make test" twice in one job
upload-archive: use regular "struct child_process" pattern
run-command API users: use strvec_pushv(), not argv assignment
run-command tests: use strvec_pushv(), not argv assignment
run-command API users: use strvec_pushl(), not argv construction
run-command API users: use strvec_push(), not argv construction
run-command API: remove "argv" member, always use "args"
difftool: use "env_array" to simplify memory management
run-command API: remove "env" member, always use "env_array"
common-main.c: call exit(), don't return
pack-objects: use BUG(...) not die("BUG: ...")
strbuf.h: use BUG(...) not die("BUG: ...")
pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
usage.c: add a die_message() routine
usage.c API users: use die_message() for "fatal :" + exit 128
usage.c API users: use die_message() for error() + exit 128
gc: return from cmd_gc(), don't call exit()
usage.c + gc: add and use a die_message_errno()
config API: use get_error_routine(), not vreportf()
pull, fetch: fix segfault in --set-upstream option
stash: don't show "git stash push" usage on bad "git stash" usage
reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
reflog expire: narrow scope of "cb" in cmd_reflog_expire()
reflog: change one->many worktree->refnames to use a string_list
reflog expire: use "switch" over enum values
reflog expire: refactor & use "tip_commit" only for UE_NORMAL
reflog expire: don't use lookup_commit_reference_gently()
reflog: reduce scope of "struct rev_info"
refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
reflog + refs-backend: move "verbose" out of the backend
Makefile: correct the dependency graph of hook-list.h
Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
Makefile: don't invoke msgfmt with --statistics
refs API: use "failure_errno", not "errno"
reftable tests: avoid "int" overflow, use "uint64_t"
Øystein Walle (2):
status: count stash entries in separate function
status: print stash info with --porcelain=v2 --show-stash
徐沛文 (Aleen) (3):
doc: git-format-patch: describe the option --always
am: support --empty=<option> to handle empty patches
am: support --allow-empty to record specific empty patches
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.35.0-rc2
@ 2022-01-20 18:44 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-20 18:44 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.35.0-rc2 is now available for testing at
the usual places. It is comprised of 472 non-merge commits since
v2.34.0, contributed by 81 people, 32 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.35.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.34.0 are as follows.
Welcome to the Git development community!
AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
Wan, Christoph Reiter, Clemens Fruhwirth, Danial Alihosseini,
Dotan Cohen, Enzo Matsumiya, Erwin Villejo, Gustave Granroth,
Hans Krentel (hakre), Ivan Frade, James Limbouris, Jan Pokorný,
Joel Holdsworth, John Burnett, John Cai, Josh Rampersad, Kashav
Madan, Lessley Dennington, Matt Cooper, Matthew John Cheetham,
Mike Marcelais, Mugdha Pattnaik, Nikita Bobko, Robin Jarry,
Thiago Perrotta, Thomas Weißschuh, William Sprent, and 徐沛文
(Aleen).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
David Aguilar, Derrick Stolee, Elijah Newren, Eli Schwartz,
Eric Sunshine, Eric Wong, Fabian Stelzer, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Vosmaer, Jean-Noël Avila,
Jeff King, Jerry Zhang, Jiang Xin, Johannes Altmanninger,
Johannes Schindelin, Johannes Sixt, Jonathan Tan, Josh Steadmon,
Junio C Hamano, Lénaïc Huard, Linus Torvalds, Marc Strapetz,
Martin Ågren, Matthias Aßhauer, Mike Hommey, Neeraj Singh,
Øystein Walle, Patrick Steinhardt, Philip Oakley, Philippe
Blain, Phillip Wood, Ralf Thielow, Randall S. Becker, René
Scharfe, Robert Estelle, Sergey Organov, SZEDER Gábor, Taylor
Blau, Teng Long, Victoria Dye, and Yoichi Nakayama.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.35 Release Notes (draft)
==============================
Updates since Git 2.34
----------------------
Backward compatibility warts
* "_" is now treated as any other URL-valid characters in an URL when
matching the per-URL configuration variable names.
* The color palette used by "git grep" has been updated to match that
of GNU grep.
UI, Workflows & Features
* "git status --porcelain=v2" now show the number of stash entries
with --show-stash like the normal output does.
* "git stash" learned the "--staged" option to stash away what has
been added to the index (and nothing else).
* "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
the newly created branch if "git init" is run.
* Various operating modes of "git reset" have been made to work
better with the sparse index.
* "git submodule deinit" for a submodule whose .git metadata
directory is embedded in its working tree refused to work, until
the submodule gets converted to use the "absorbed" form where the
metadata directory is stored in superproject, and a gitfile at the
top-level of the working tree of the submodule points at it. The
command is taught to convert such submodules to the absorbed form
as needed.
* The completion script (in contrib/) learns that the "--date"
option of commands from the "git log" family takes "human" and
"auto" as valid values.
* "Zealous diff3" style of merge conflict presentation has been added.
* The "git log --format=%(describe)" placeholder has been extended to
allow passing selected command-line options to the underlying "git
describe" command.
* "default" and "reset" have been added to our color palette.
* The cryptographic signing using ssh keys can specify literal keys
for keytypes whose name do not begin with the "ssh-" prefix by
using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
* "git fetch" without the "--update-head-ok" option ought to protect
a checked out branch from getting updated, to prevent the working
tree that checks it out to go out of sync. The code was written
before the use of "git worktree" got widespread, and only checked
the branch that was checked out in the current worktree, which has
been updated.
* "git name-rev" has been tweaked to give output that is shorter and
easier to understand.
* "git apply" has been taught to ignore a message without a patch
with the "--allow-empty" option. It also learned to honor the
"--quiet" option given from the command line.
* The "init" and "set" subcommands in "git sparse-checkout" have been
unified for a better user experience and performance.
* Many git commands that deal with working tree files try to remove a
directory that becomes empty (i.e. "git switch" from a branch that
has the directory to another branch that does not would attempt
remove all files in the directory and the directory itself). This
drops users into an unfamiliar situation if the command was run in
a subdirectory that becomes subject to removal due to the command.
The commands have been taught to keep an empty directory if it is
the directory they were started in to avoid surprising users.
* "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
done to a piece of e-mail without a patch in it.
* The default merge message prepared by "git merge" records the name
of the current branch; the name can be overridden with a new option
to allow users to pretend a merge is made on a different branch.
* The way "git p4" shows file sizes in its output has been updated to
use human-readable units.
* "git -c branch.autosetupmerge=inherit branch new old" makes "new"
to have the same upstream as the "old" branch, instead of marking
"old" itself as its upstream.
Performance, Internal Implementation, Development Support etc.
* The use of errno as a means to carry the nature of error in the ref
API implementation has been reworked and reduced.
* Teach and encourage first-time contributors to this project to
state the base commit when they submit their topic.
* The command line completion for "git send-email" options have been
tweaked to make it easier to keep it in sync with the command itself.
* Ensure that the sparseness of the in-core index matches the
index.sparse configuration specified by the repository immediately
after the on-disk index file is read.
* Code clean-up to eventually allow information on remotes defined
for an arbitrary repository to be read.
* Build optimization.
* Tighten code for testing pack-bitmap.
* Weather balloon to break people with compilers that do not support
C99.
* The "reftable" backend for the refs API, without integrating into
the refs subsystem, has been added.
* More tests are marked as leak-free.
* The test framework learns to list unsatisfied test prerequisites,
and optionally error out when prerequisites that are expected to be
satisfied are not.
* The default setting for trace2 event nesting was too low to cause
test failures, which is worked around by bumping it up in the test
framework.
* Drop support for TravisCI and update test workflows at GitHub.
* Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
mechanism to force "git" to use 'master' as the default name for
the initial branch no longer need it; the use of the mechanism from
them have been removed.
* Allow running our tests while disabling fsync.
* Document the parameters given to the reflog entry iterator callback
functions.
(merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
* The test helper for refs subsystem learned to write bogus and/or
nonexistent object name to refs to simulate error situations we
want to test Git in.
* "diff --histogram" optimization.
* Weather balloon to find compilers that do not grok variable
declaration in the for() loop.
* diff and blame commands have been taught to work better with sparse
index.
* The chainlint test script linter in the test suite has been updated.
* The DEVELOPER=yes build uses -std=gnu99 now.
* "git format-patch" uses a single rev_info instance and then exits.
Mark the structure with UNLEAK() macro to squelch leak sanitizer.
* New interface into the tmp-objdir API to help in-core use of the
quarantine feature.
* Broken &&-chains in the test scripts have been corrected.
* The RCS keyword substitution in "git p4" used to be done assuming
that the contents are UTF-8 text, which can trigger decoding
errors. We now treat the contents as a bytestring for robustness
and correctness.
* The conditions to choose different definitions of the FLEX_ARRAY
macro for vendor compilers has been simplified to make it easier to
maintain.
* Correctness and performance update to "diff --color-moved" feature.
* "git upload-pack" (the other side of "git fetch") used a 8kB buffer
but most of its payload came on 64kB "packets". The buffer size
has been enlarged so that such a packet fits.
* "git fetch" and "git pull" are now declared sparse-index clean.
Also "git ls-files" learns the "--sparse" option to help debugging.
* Similar message templates have been consolidated so that
translators need to work on fewer number of messages.
Fixes since v2.34
-----------------
* "git grep" looking in a blob that has non-UTF8 payload was
completely broken when linked with certain versions of PCREv2
library in the latest release.
* Other code cleanup, docfix, build fix, etc.
* "git pull" with any strategy when the other side is behind us
should succeed as it is a no-op, but doesn't.
* An earlier change in 2.34.0 caused JGit application (that abused
GIT_EDITOR mechanism when invoking "git config") to get stuck with
a SIGTTOU signal; it has been reverted.
* An earlier change that broke .gitignore matching has been reverted.
* Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
operation modes of the "git branch" command that do not need the
sort key information, no longer errors out by seeing a bogus sort
key.
(merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
* The compatibility implementation for unsetenv(3) were written to
mimic ancient, non-POSIX, variant seen in an old glibc; it has been
changed to return an integer to match the more modern era.
(merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
* The clean/smudge conversion code path has been prepared to better
work on platforms where ulong is narrower than size_t.
(merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
* Redact the path part of packfile URI that appears in the trace output.
(merge 0ba558ffb1 if/redact-packfile-uri later to maint).
* CI has been taught to catch some Unicode directional formatting
sequence that can be used in certain mischief.
(merge 0e7696c64d js/ci-no-directional-formatting later to maint).
* The "--date=format:<strftime>" gained a workaround for the lack of
system support for a non-local timezone to handle "%s" placeholder.
(merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
* The "merge" subcommand of "git jump" (in contrib/) silently ignored
pathspec and other parameters.
(merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
* The code to decode the length of packed object size has been
corrected.
(merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
* The advice message given by "git pull" when the user hasn't made a
choice between merge and rebase still said that the merge is the
default, which no longer is the case. This has been corrected.
(merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
* "git fetch", when received a bad packfile, can fail with SIGPIPE.
This wasn't wrong per-se, but we now detect the situation and fail
in a more predictable way.
(merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
* The function to cull a child process and determine the exit status
had two separate code paths for normal callers and callers in a
signal handler, and the latter did not yield correct value when the
child has caught a signal. The handling of the exit status has
been unified for these two code paths. An existing test with
flakiness has also been corrected.
(merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
* When a non-existent program is given as the pager, we tried to
reuse an uninitialized child_process structure and crashed, which
has been fixed.
(merge f917f57f40 em/missing-pager later to maint).
* The single-key-input mode in "git add -p" had some code to handle
keys that generate a sequence of input via ReadKey(), which did not
handle end-of-file correctly, which has been fixed.
(merge fc8a8126df cb/add-p-single-key-fix later to maint).
* "git rebase -x" added an unnecessary 'exec' instructions before
'noop', which has been corrected.
(merge cc9dcdee61 en/rebase-x-fix later to maint).
* When the "git push" command is killed while the receiving end is
trying to report what happened to the ref update proposals, the
latter used to die, due to SIGPIPE. The code now ignores SIGPIPE
to increase our chances to run the post-receive hook after it
happens.
(merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
* "git worktree add" showed "Preparing worktree" message to the
standard output stream, but when it failed, the message from die()
went to the standard error stream. Depending on the order the
stdio streams are flushed at the program end, this resulted in
confusing output. It has been corrected by sending all the chatty
messages to the standard error stream.
(merge b50252484f es/worktree-chatty-to-stderr later to maint).
* Coding guideline document has been updated to clarify what goes to
standard error in our system.
(merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
* The sparse-index/sparse-checkout feature had a bug in its use of
the matching code to determine which path is in or outside the
sparse checkout patterns.
(merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
* "git rebase -x" by mistake started exporting the GIT_DIR and
GIT_WORK_TREE environment variables when the command was rewritten
in C, which has been corrected.
(merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
* When "git log" implicitly enabled the "decoration" processing
without being explicitly asked with "--decorate" option, it failed
to read and honor the settings given by the "--decorate-refs"
option.
* "git fetch --set-upstream" did not check if there is a current
branch, leading to a segfault when it is run on a detached HEAD,
which has been corrected.
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
* Among some code paths that ask an yes/no question, only one place
gave a prompt that looked different from the others, which has been
updated to match what the others create.
(merge 0fc8ed154c km/help-prompt-fix later to maint).
* "git log --invert-grep --author=<name>" used to exclude commits
written by the given author, but now "--invert-grep" only affects
the matches made by the "--grep=<pattern>" option.
(merge 794c000267 rs/log-invert-grep-with-headers later to maint).
* "git grep --perl-regexp" failed to match UTF-8 characters with
wildcard when the pattern consists only of ASCII letters, which has
been corrected.
(merge 32e3e8bc55 rs/pcre2-utf later to maint).
* Certain sparse-checkout patterns that are valid in non-cone mode
led to segfault in cone mode, which has been corrected.
* Use of certain "git rev-list" options with "git fast-export"
created nonsense results (the worst two of which being "--reverse"
and "--invert-grep --grep=<foo>"). The use of "--first-parent" is
made to behave a bit more sensible than before.
(merge 726a228dfb ws/fast-export-with-revision-options later to maint).
* Perf tests were run with end-user's shell, but it has been
corrected to use the shell specified by $TEST_SHELL_PATH.
(merge 9ccab75608 ja/perf-use-specified-shell later to maint).
* Fix dependency rules to generate hook-list.h header file.
(merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).
* "git stash" by default triggers its "push" action, but its
implementation also made "git stash -h" to show short help only for
"git stash push", which has been corrected.
(merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).
* "git apply --3way" bypasses the attempt to do a three-way
application in more cases to address the regression caused by the
recent change to use direct application as a fallback.
(merge 34d607032c jz/apply-3-corner-cases later to maint).
* Fix performance-releated bug in "git subtree" (in contrib/).
(merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).
* Extend the guidance to choose the base commit to build your work
on, and hint/nudge contributors to read others' changes.
(merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).
* A corner case bug in the ort merge strategy has been corrected.
(merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).
* "git stash apply" forgot to attempt restoring untracked files when
it failed to restore changes to tracked ones.
(merge 71cade5a0b en/stash-df-fix later to maint).
* Calling dynamically loaded functions on Windows has been corrected.
(merge 4a9b204920 ma/windows-dynload-fix later to maint).
* Some lockfile code called free() in signal-death code path, which
has been corrected.
(merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
(merge f9b2b6684d ja/doc-cleanup later to maint).
(merge 7d1b866778 jc/fix-first-object-walk later to maint).
(merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
(merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
(merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
(merge 42c456ff81 rs/mergesort later to maint).
(merge ad506e6780 tl/midx-docfix later to maint).
(merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
(merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
(merge 7d3fc7df70 jt/midx-doc-fix later to maint).
(merge 7b089120d9 hn/create-reflog-simplify later to maint).
(merge 9e12400da8 cb/mingw-gmtime-r later to maint).
(merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
(merge eafd6e7e55 ab/die-with-bug later to maint).
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
(merge 47ca93d071 ds/repack-fixlets later to maint).
(merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
(merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
(merge 999bba3e0b rs/daemon-plug-leak later to maint).
(merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
(merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
(merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
(merge 97d6fb5a1f ma/header-dup-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.34.0 are as follows:
Alex Henrie (1):
pull: don't say that merge is "the default strategy"
Anders Kaseorg (8):
fetch: lowercase error messages
receive-pack: lowercase error messages
branch: lowercase error messages
worktree: simplify find_shared_symref() memory ownership model
fetch: protect branches checked out in all worktrees
receive-pack: clean dead code from update_worktree()
receive-pack: protect current branch for bare repository worktree
branch: protect branches checked out in all worktrees
Bagas Sanjaya (1):
branch: missing space fix at line 313
Calvin Wan (1):
protocol-v2.txt: align delim-pkt spec with usage
Carlo Marcelo Arenas Belón (4):
test-genzeros: allow more than 2G zeros in Windows
test-lib: add prerequisite for 64-bit platforms
mingw: avoid fallback for {local,gm}time_r()
add -p: avoid use of undefined $key when ReadKey -> EOF
David Aguilar (1):
build: centos/RHEL 7 ships with an older gcc and zlib
Derrick Stolee (19):
dir: revert "dir: select directories correctly"
test-lib.sh: set GIT_TRACE2_EVENT_NESTING
t/t*: remove custom GIT_TRACE2_EVENT_NESTING
scalar: 'register' sets recommended config and starts maintenance
scalar: 'unregister' stops background maintenance
scalar: implement 'scalar list'
scalar: implement the `run` command
t1092: add deeper changes during a checkout
unpack-trees: use traverse_path instead of name
repack: respect kept objects with '--write-midx -b'
repack: make '--quiet' disable progress
fetch/pull: use the sparse index
ls-files: add --sparse option
t1092: replace 'read-cache --table' with 'ls-files --sparse'
t1091/t3705: remove 'test-tool read-cache --table'
test-read-cache: remove --table, --expand options
sparse-checkout: fix segfault on malformed patterns
sparse-checkout: fix OOM error with mixed patterns
sparse-checkout: refuse to add to bad patterns
Eli Schwartz (3):
pretty.c: rework describe options parsing for better extensibility
pretty: add tag option to %(describe)
pretty: add abbrev option to %(describe)
Elijah Newren (28):
sequencer: avoid adding exec commands for non-commit creating commands
update documentation for new zdiff3 conflictStyle
name-rev: prefer shorter names over following merges
sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
t2501: add various tests for removing the current working directory
setup: introduce startup_info->original_cwd
unpack-trees: refuse to remove startup_info->original_cwd
unpack-trees: add special cwd handling
symlinks: do not include startup_info->original_cwd in dir removal
clean: do not attempt to remove startup_info->original_cwd
rebase: do not attempt to remove startup_info->original_cwd
stash: do not attempt to remove startup_info->original_cwd
dir: avoid incidentally removing the original_cwd in remove_path()
dir: new flag to remove_dir_recurse() to spare the original_cwd
t2501: simplify the tests since we can now assume desired behavior
sparse-checkout: pass use_stdin as a parameter instead of as a global
sparse-checkout: break apart functions for sparse_checkout_(set|add)
sparse-checkout: add sanity-checks on initial sparsity state
sparse-checkout: disallow --no-stdin as an argument to set
sparse-checkout: split out code for tweaking settings config
sparse-checkout: enable `set` to initialize sparse-checkout mode
sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
git-sparse-checkout.txt: update to document init/set/reapply changes
Documentation: clarify/correct a few sparsity related statements
clone: avoid using deprecated `sparse-checkout init`
sparse-checkout: remove stray trailing space
merge-ort: fix bug with renormalization and rename/delete conflicts
stash: do not return before restoring untracked files
Enzo Matsumiya (1):
pager: fix crash when pager program doesn't exist
Eric Sunshine (38):
worktree: stop being overly intimate with run_command() internals
CodingGuidelines: document which output goes to stdout vs. stderr
worktree: send "chatty" messages to stderr
git-worktree.txt: add missing `-v` to synopsis for `worktree list`
t/lib-pager: use sane_unset() to avoid breaking &&-chain
t1010: fix unnoticed failure on Windows
t1020: avoid aborting entire test script when one test fails
t4202: clarify intent by creating expected content less cleverly
t5516: drop unnecessary subshell and command invocation
t6300: make `%(raw:size) --shell` test more robust
t9107: use shell parameter expansion to avoid breaking &&-chain
tests: simplify construction of large blocks of text
tests: use test_write_lines() to generate line-oriented output
tests: fix broken &&-chains in compound statements
tests: fix broken &&-chains in `$(...)` command substitutions
tests: fix broken &&-chains in `{...}` groups
tests: apply modern idiom for signaling test failure
tests: apply modern idiom for exiting loop upon failure
tests: simplify by dropping unnecessary `for` loops
t0000-t3999: detect and signal failure within loop
t4000-t4999: detect and signal failure within loop
t5000-t5999: detect and signal failure within loop
t6000-t9999: detect and signal failure within loop
t/chainlint/*.test: don't use invalid shell syntax
t/chainlint/*.test: fix invalid test cases due to mixing quote types
t/chainlint/*.test: generalize self-test commentary
t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
t/Makefile: optimize chainlint self-test
chainlint.sed: improve ?!AMP?! placement accuracy
chainlint.sed: improve ?!SEMI?! placement accuracy
chainlint.sed: tolerate harmless ";" at end of last line in block
chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
chainlint.sed: drop subshell-closing ">" annotation
chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
chainlint.sed: don't mistake `<< word` in string as here-doc operator
chainlint.sed: stop throwing away here-doc tags
chainlint.sed: swallow comments consistently
chainlint.sed: stop splitting "(..." into separate lines "(" and "..."
Eric Wong (2):
tests: disable fsync everywhere
cbtree: remove broken and unused cb_unlink
Erwin Villejo (1):
pull: should be noop when already-up-to-date
Fabian Stelzer (15):
ssh signing: support non ssh-* keytypes
ssh signing: make sign/amend test more resilient
test-lib: show missing prereq summary
test-lib: introduce required prereq for test runs
test-lib: make BAIL_OUT() work in tests and prereq
t/fmt-merge-msg: do not redirect stderr
t/fmt-merge-msg: make gpgssh tests more specific
ssh signing: use sigc struct to pass payload
ssh signing: add key lifetime test prereqs
ssh signing: make verify-commit consider key lifetime
ssh signing: make git log verify key lifetime
ssh signing: make verify-tag consider key lifetime
ssh signing: make fmt-merge-msg consider key lifetime
ssh signing: verify ssh-keygen in test prereq
t/gpg: simplify test for unknown key
Glen Choo (5):
t5516: add test case for pushing remote refspecs
remote: move static variables into per-repository struct
remote: use remote_state parameter internally
remote: remove the_repository->remote_state from static methods
remote: die if branch is not found in repository
Greg Hurrell (1):
docs: add missing colon to Documentation/config/gpg.txt
Han-Wen Nienhuys (49):
hash.h: provide constants for the hash IDs
reftable: add LICENSE
reftable: add error related functionality
reftable: utility functions
reftable: add blocksource, an abstraction for random access reads
reftable: (de)serialization for the polymorphic record type.
Provide zlib's uncompress2 from compat/zlib-compat.c
reftable: reading/writing blocks
reftable: a generic binary tree implementation
reftable: write reftable files
reftable: generic interface to tables
reftable: read reftable files
reftable: reftable file level tests
reftable: add a heap-based priority queue for reftable records
reftable: add merged table view
reftable: implement refname validation
reftable: implement stack, a mutable database of reftable files.
reftable: add dump utility
Add "test-tool dump-reftable" command.
branch tests: test for errno propagating on failing read
refs API: make refs_read_raw_ref() not set errno
refs API: make parse_loose_ref_contents() not set errno
refs: drop force_create argument of create_reflog API
t1404: mark directory/file conflict tests with REFFILES
show-branch: show reflog message
test-ref-store: don't add newline to reflog message
t1405: check for_each_reflog_ent_reverse() more thoroughly
test-ref-store: tweaks to for-each-reflog-ent format
refs/debug: trim trailing LF from reflog message
test-ref-store: remove force-create argument for create-reflog
test-ref-store: parse symbolic flag constants
test-ref-store: plug memory leak in cmd_delete_refs
refs: update comment.
refs: introduce REF_SKIP_OID_VERIFICATION flag
refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
t1430: remove refs using test-tool
t1430: create valid symrefs using test-helper
test-ref-store: print hash algorithm
t5540: require REFFILES
t5550: require REFFILES
t7004: create separate tags for different tests
t7004: use "test-tool ref-store" for reflog inspection
refs: pass gitdir to packed_ref_store_create
refs: print error message in debug output
refs: centralize initialization of the base ref_store.
reftable: fix typo in header
reftable: signal overflow
reftable: support preset file mode for writing
reftable: avoid initializing structs from structs
Hans Krentel (hakre) (1):
ci(check-whitespace): update stale file top comments
Ivan Frade (2):
fetch-pack: redact packfile urls in traces
http-fetch: redact url on die() message
Jacob Vosmaer (1):
upload-pack.c: increase output buffer size
James Limbouris (1):
subtree: fix argument handling in check_parents
Jean-Noël Avila (20):
doc: fix git credential synopsis
doc: split placeholders as individual tokens
doc: express grammar placeholders between angle brackets
doc: use only hyphens as word separators in placeholders
doc: git-ls-files: express options as optional alternatives
doc: use three dots for indicating repetition instead of star
doc: uniformize <URL> placeholders' case
doc: git-http-push: describe the refs as pattern pairs
doc: git-init: clarify file modes in octal.
i18n: refactor "foo and bar are mutually exclusive"
i18n: refactor "%s, %s and %s are mutually exclusive"
i18n: turn "options are incompatible" into "cannot be used together"
i18n: standardize "cannot open" and "cannot read"
i18n: tag.c factorize i18n strings
i18n: factorize "--foo requires --bar" and the like
i18n: factorize "no directory given for --foo"
i18n: refactor "unrecognized %(foo) argument" strings
i18n: factorize "--foo outside a repository"
i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
i18n: turn even more messages into "cannot be used together" ones
Jeff King (18):
urlmatch: add underscore to URL_HOST_CHARS
strbuf_addftime(): handle "%s" manually
test_bitmap_hashes(): handle repository without bitmaps
generate-cmdlist.sh: do not shell out to "sed"
git-jump: pass "merge" arguments to ls-files
t5319: corrupt more bytes of the midx checksum
refs: work around gcc-11 warning with REF_HAVE_NEW
fetch-pack: ignore SIGPIPE when writing to index-pack
run-command: unify signal and regular logic for wait_or_whine()
t7006: clean up SIGPIPE handling in trace2 tests
t7006: simplify exit-code checks for sigpipe tests
log: handle --decorate-refs with userformat "%d"
log: load decorations with --simplify-by-decoration
xdiff: drop CMP_ENV macro from xhistogram
xdiff: drop xpparam_t parameter from histogram cmp_recs()
xdiff: drop unused flags parameter from recs_match
config.mak.dev: specify -std=gnu99 for gcc/clang
doc/config: mark ssh allowedSigners example as literal
Jerry Zhang (3):
git-apply: add --quiet flag
git-apply: add --allow-empty flag
git-apply: skip threeway in add / rename cases
Joel Holdsworth (9):
git-p4: use with statements to close files after use in patchRCSKeywords
git-p4: pre-compile RCS keyword regexes
git-p4: add raw option to read_pipelines
git-p4: open temporary patch file for write only
git-p4: resolve RCS keywords in bytes not utf-8
git-p4: print size values in appropriate units
git-p4: show progress as an integer
git-p4: remove "debug" verb
git-p4: remove "rollback" verb
Johannes Altmanninger (1):
t/perf: do not run tests in user's $SHELL
Johannes Schindelin (15):
test-tool genzeros: generate large amounts of data more efficiently
git-compat-util: introduce more size_t helpers
ci: disallow directional formatting
scalar: add a README with a roadmap
scalar: create a rudimentary executable
scalar: start documenting the command
scalar: create test infrastructure
scalar: let 'unregister' handle a deleted enlistment directory gracefully
scalar: implement the `clone` subcommand
scalar: teach 'clone' to support the --single-branch option
scalar: allow reconfiguring an existing enlistment
scalar: teach 'reconfigure' to optionally handle all registered enlistments
scalar: implement the `version` command
tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed
getcwd(mingw): handle the case when there is no cwd
Johannes Sixt (3):
generate-cmdlist.sh: spawn fewer processes
generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
t1450-fsck: exec-bit is not needed to make loose object writable
John Cai (2):
docs: fix places that break compilation in MyFirstObjectWalk
docs: add headers in MyFirstObjectWalk
Jonathan Tan (2):
packfile: avoid overflowing shift during decode
Doc: no midx and partial clone relation
Josh Steadmon (6):
trace2: disable tr2_dst before warning on write errors
branch: accept multiple upstream branches for tracking
branch: add flags and config to inherit tracking
config: require lowercase for branch.*.autosetupmerge
l10n: README: call more attention to plural strings
branch,checkout: fix --track usage strings
Junio C Hamano (30):
for-each-ref: delay parsing of --sort=<atom> options
MyFirstContribution: teach to use "format-patch --base=auto"
unsetenv(3) returns int, not void
init doc: --shared=0xxx does not give umask but perm bits
Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
0th batch for early fixes
Revert "editor: save and reset terminal after calling EDITOR"
A bit more regression fixes
Git 2.34.1
refs: document callback for reflog-ent iterators
The first batch to start the current cycle
revision: use C99 declaration of variable in for() loop
grep: clarify what `grep.patternType=default` means
flex-array: simplify compiler-specific workaround
The second batch
The third batch
t4204 is not sanitizer clean at all
format-patch: mark rev_info with UNLEAK
merge: allow to pretend a merge is made into a different branch
The fourth batch
The fifth batch
SubmittingPatchs: clarify choice of base and testing
The sixth batch
The seventh batch
Git 2.35-rc0
packfile: fix off-by-one error in decoding logic
Last minute fixes before -rc1
Git 2.35-rc1
Makefile: FreeBSD cannot do C99-or-below build
Git 2.35-rc2
Kashav Madan (1):
help: make auto-correction prompt more consistent
Lessley Dennington (7):
git: ensure correct git directory setup with -h
commit-graph: return if there is no git directory
test-read-cache: set up repo after git directory
repo-settings: prepare_repo_settings only in git repos
diff: replace --staged with --cached in t1092 tests
diff: enable and test the sparse index
blame: enable and test the sparse index
Lénaïc Huard (1):
grep: align default colors with GNU grep ones
Marc Strapetz (1):
t/README: fix typo
Martin Ågren (1):
cache.h: drop duplicate `ensure_full_index()` declaration
Matt Cooper (4):
t1051: introduce a smudge filter test for extremely large files
odb: teach read_blob_entry to use size_t
odb: guard against data loss checking out a huge file
clean/smudge: allow clean filters to process extremely large files
Matthew John Cheetham (1):
scalar: implement the `delete` command
Matthias Aßhauer (1):
lazyload: use correct calling conventions
Mugdha Pattnaik (1):
submodule: absorb git dir instead of dying on deinit
Neeraj Singh (2):
tmp-objdir: new API for creating temporary writable databases
tmp-objdir: disable ref updates when replacing the primary odb
Patrick Steinhardt (1):
fetch: fix deadlock when cleaning up lockfiles in async signals
Philip Oakley (3):
repack.c: LLP64 compatibility, upcast unity for left shift
diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
object-file.c: LLP64 compatibility, upcast unity for left shift
Philippe Blain (1):
SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section
Phillip Wood (19):
diff histogram: intern strings
xdiff: avoid unnecessary memory allocations
xdiff: simplify comparison
xdiff: implement a zealous diff3, or "zdiff3"
diff --color-moved: add perf tests
diff --color-moved: clear all flags on blocks that are too short
diff --color-moved: factor out function
diff --color-moved: rewind when discarding pmb
diff --color-moved=zebra: fix alternate coloring
diff --color-moved: avoid false short line matches and bad zebra coloring
diff: simplify allow-indentation-change delta calculation
diff --color-moved-ws=allow-indentation-change: simplify and optimize
diff --color-moved: call comparison function directly
diff --color-moved: unify moved block growth functions
diff --color-moved: shrink potential moved blocks as we go
diff --color-moved: stop clearing potential moved blocks
diff --color-moved-ws=allow-indentation-change: improve hash lookups
diff: use designated initializers for emitted_diff_symbol
diff --color-moved: intern strings
Randall S. Becker (1):
build: NonStop ships with an older zlib
René Scharfe (6):
mergesort: avoid left shift overflow
log: let --invert-grep only invert --grep
t4202: fix patternType setting in --invert-grep test
daemon: plug memory leak on overlong path
grep/pcre2: use PCRE2_UTF even with ASCII patterns
grep/pcre2: factor out literal variable
Robert Estelle (3):
color: add missing GIT_COLOR_* white/black constants
color: support "default" to restore fg/bg color
color: allow colors to be prefixed with "reset"
Robin Jarry (1):
receive-pack: ignore SIGPIPE while reporting status to client
Sergey Organov (2):
stash: implement '--staged' option for 'push' and 'save'
stash: get rid of unused argument in stash_staged()
Taylor Blau (11):
midx.c: clean up chunkfile after reading the MIDX
midx.c: don't leak MIDX from verify_midx_file
t/helper/test-read-midx.c: free MIDX within read_midx_file()
builtin/pack-objects.c: don't leak memory via arguments
builtin/repack.c: avoid leaking child arguments
builtin/multi-pack-index.c: don't leak concatenated options
midx.c: write MIDX filenames to strbuf
pack-bitmap.c: don't leak type-level bitmaps
pack-bitmap.c: more aggressively free in free_bitmap_index()
packfile: make `close_pack_revindex()` static
fmt-merge-msg: prevent use-after-free with signed tags
Teng Long (1):
midx: fix a formatting issue in "multi-pack-index.txt"
Thiago Perrotta (2):
send-email: programmatically generate bash completions
send-email docs: add format-patch options
Thomas Weißschuh (1):
var: add GIT_DEFAULT_BRANCH variable
Victoria Dye (12):
reset: rename is_missing to !is_in_reset_tree
reset: preserve skip-worktree bit in mixed reset
sparse-index: update command for expand/collapse test
test-read-cache.c: prepare_repo_settings after config init
sparse-index: avoid unnecessary cache tree clearing
sparse-index: add ensure_correct_sparsity function
sparse-index: update do_read_index to ensure correct sparsity
reset: expand test coverage for sparse checkouts
reset: integrate with sparse index
reset: make sparse-aware (except --mixed)
reset: make --mixed sparse-aware
unpack-trees: improve performance of next_cache_entry
William Sprent (1):
fast-export: fix surprising behavior with --first-parent
Yoichi Nakayama (1):
completion: add human and auto: date format
brian m. carlson (1):
git-compat-util: add a test balloon for C99 support
Ævar Arnfjörð Bjarmason (88):
refs API: add a version of refs_resolve_ref_unsafe() with "errno"
refs API: make refs_rename_ref_available() static
reflog tests: add --updateref tests
refs/files: remove "name exist?" check in lock_ref_oid_basic()
refs API: remove refs_read_ref_full() wrapper
refs API: make resolve_gitlink_ref() not set errno
refs API: make loose_fill_ref_dir() not set errno
refs API: make files_copy_or_rename_ref() et al not set errno
refs API: ignore errno in worktree.c's add_head_info()
refs API: ignore errno in worktree.c's find_shared_symref()
refs tests: ignore ignore errno in test-ref-store helper
refs API: make refs_resolve_refdup() not set errno
refs API: make refs_ref_exists() not set errno
refs API: make resolve_ref_unsafe() not set errno
refs API: make expand_ref() & repo_dwim_log() not set errno
refs API: don't expose "errno" in run_transaction_hook()
refs API: post-migration API renaming [1/2]
refs API: post-migration API renaming [2/2]
Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
git-instaweb: unconditionally assume that gitweb is mod_perl capable
git-sh-setup: remove unused sane_egrep() function
git-sh-setup: remove "sane_grep", it's not needed anymore
leak tests: mark a read-tree test as passing SANITIZE=leak
leak tests: mark "sort" test as passing SANITIZE=leak
leak tests: mark most gettext tests as passing with SANITIZE=leak
leak tests: mark some misc tests as passing with SANITIZE=leak
leak tests: mark some rev-list tests as passing with SANITIZE=leak
leak tests: mark some rev-parse tests as passing with SANITIZE=leak
leak tests: mark some update-index tests as passing with SANITIZE=leak
leak tests: mark some notes tests as passing with SANITIZE=leak
leak tests: mark some apply tests as passing with SANITIZE=leak
leak tests: mark some diff tests as passing with SANITIZE=leak
leak tests: mark some add tests as passing with SANITIZE=leak
leak tests: mark some clone tests as passing with SANITIZE=leak
leak tests: mark some status tests as passing with SANITIZE=leak
leak tests: mark some config tests as passing with SANITIZE=leak
leak tests: mark some fast-import tests as passing with SANITIZE=leak
command-list.txt: sort with "LC_ALL=C sort"
generate-cmdlist.sh: trivial whitespace change
generate-cmdlist.sh: don't call get_categories() from category_list()
generate-cmdlist.sh: run "grep | sort", not "sort | grep"
generate-cmdlist.sh: stop sorting category lines
generate-cmdlist.sh: replace "grep' invocation with a shell version
generate-cmdlist.sh: don't parse command-list.txt thrice
parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
checkout: fix "branch info" memory leaks
CI: remove Travis CI support
CI: use shorter names that fit in UX tooltips
CI: rename the "Linux32" job to lower-case "linux32"
CI: use "$runs_on_pool", not "$jobname" to select packages & config
CI: don't run "make test" twice in one job
upload-archive: use regular "struct child_process" pattern
run-command API users: use strvec_pushv(), not argv assignment
run-command tests: use strvec_pushv(), not argv assignment
run-command API users: use strvec_pushl(), not argv construction
run-command API users: use strvec_push(), not argv construction
run-command API: remove "argv" member, always use "args"
difftool: use "env_array" to simplify memory management
run-command API: remove "env" member, always use "env_array"
common-main.c: call exit(), don't return
pack-objects: use BUG(...) not die("BUG: ...")
strbuf.h: use BUG(...) not die("BUG: ...")
pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
usage.c: add a die_message() routine
usage.c API users: use die_message() for "fatal :" + exit 128
usage.c API users: use die_message() for error() + exit 128
gc: return from cmd_gc(), don't call exit()
usage.c + gc: add and use a die_message_errno()
config API: use get_error_routine(), not vreportf()
pull, fetch: fix segfault in --set-upstream option
stash: don't show "git stash push" usage on bad "git stash" usage
reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
reflog expire: narrow scope of "cb" in cmd_reflog_expire()
reflog: change one->many worktree->refnames to use a string_list
reflog expire: use "switch" over enum values
reflog expire: refactor & use "tip_commit" only for UE_NORMAL
reflog expire: don't use lookup_commit_reference_gently()
reflog: reduce scope of "struct rev_info"
refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
reflog + refs-backend: move "verbose" out of the backend
Makefile: correct the dependency graph of hook-list.h
Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
Makefile: don't invoke msgfmt with --statistics
refs API: use "failure_errno", not "errno"
reftable tests: avoid "int" overflow, use "uint64_t"
Øystein Walle (2):
status: count stash entries in separate function
status: print stash info with --porcelain=v2 --show-stash
徐沛文 (Aleen) (3):
doc: git-format-patch: describe the option --always
am: support --empty=<option> to handle empty patches
am: support --allow-empty to record specific empty patches
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.35.0-rc1
@ 2022-01-15 2:18 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-15 2:18 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.35.0-rc1 is now available for testing at
the usual places. It is comprised of 467 non-merge commits since
v2.34.0, contributed by 80 people, 32 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.35.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.34.0 are as follows.
Welcome to the Git development community!
AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
Wan, Christoph Reiter, Clemens Fruhwirth, Danial Alihosseini,
Dotan Cohen, Enzo Matsumiya, Erwin Villejo, Gustave Granroth,
Hans Krentel (hakre), Ivan Frade, James Limbouris, Jan Pokorný,
Joel Holdsworth, John Burnett, John Cai, Josh Rampersad, Kashav
Madan, Lessley Dennington, Matt Cooper, Matthew John Cheetham,
Mike Marcelais, Mugdha Pattnaik, Nikita Bobko, Robin Jarry,
Thiago Perrotta, Thomas Weißschuh, William Sprent, and 徐沛文
(Aleen).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
Derrick Stolee, Elijah Newren, Eli Schwartz, Eric Sunshine,
Eric Wong, Fabian Stelzer, Glen Choo, Greg Hurrell, Han-Wen
Nienhuys, Jacob Vosmaer, Jean-Noël Avila, Jeff King, Jerry
Zhang, Jiang Xin, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Lénaïc Huard, Linus Torvalds, Marc Strapetz, Martin Ågren,
Matthias Aßhauer, Mike Hommey, Neeraj Singh, Øystein Walle,
Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip Wood,
Ralf Thielow, Randall S. Becker, René Scharfe, Robert Estelle,
Sergey Organov, SZEDER Gábor, Taylor Blau, Teng Long, Victoria
Dye, and Yoichi Nakayama.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.35 Release Notes (draft)
==============================
Updates since Git 2.34
----------------------
Backward compatibility warts
* "_" is now treated as any other URL-valid characters in an URL when
matching the per-URL configuration variable names.
* The color palette used by "git grep" has been updated to match that
of GNU grep.
UI, Workflows & Features
* "git status --porcelain=v2" now show the number of stash entries
with --show-stash like the normal output does.
* "git stash" learned the "--staged" option to stash away what has
been added to the index (and nothing else).
* "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
the newly created branch if "git init" is run.
* Various operating modes of "git reset" have been made to work
better with the sparse index.
* "git submodule deinit" for a submodule whose .git metadata
directory is embedded in its working tree refused to work, until
the submodule gets converted to use the "absorbed" form where the
metadata directory is stored in superproject, and a gitfile at the
top-level of the working tree of the submodule points at it. The
command is taught to convert such submodules to the absorbed form
as needed.
* The completion script (in contrib/) learns that the "--date"
option of commands from the "git log" family takes "human" and
"auto" as valid values.
* "Zealous diff3" style of merge conflict presentation has been added.
* The "git log --format=%(describe)" placeholder has been extended to
allow passing selected command-line options to the underlying "git
describe" command.
* "default" and "reset" have been added to our color palette.
* The cryptographic signing using ssh keys can specify literal keys
for keytypes whose name do not begin with the "ssh-" prefix by
using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
* "git fetch" without the "--update-head-ok" option ought to protect
a checked out branch from getting updated, to prevent the working
tree that checks it out to go out of sync. The code was written
before the use of "git worktree" got widespread, and only checked
the branch that was checked out in the current worktree, which has
been updated.
* "git name-rev" has been tweaked to give output that is shorter and
easier to understand.
* "git apply" has been taught to ignore a message without a patch
with the "--allow-empty" option. It also learned to honor the
"--quiet" option given from the command line.
* The "init" and "set" subcommands in "git sparse-checkout" have been
unified for a better user experience and performance.
* Many git commands that deal with working tree files try to remove a
directory that becomes empty (i.e. "git switch" from a branch that
has the directory to another branch that does not would attempt
remove all files in the directory and the directory itself). This
drops users into an unfamiliar situation if the command was run in
a subdirectory that becomes subject to removal due to the command.
The commands have been taught to keep an empty directory if it is
the directory they were started in to avoid surprising users.
* "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
done to a piece of e-mail without a patch in it.
* The default merge message prepared by "git merge" records the name
of the current branch; the name can be overridden with a new option
to allow users to pretend a merge is made on a different branch.
* The way "git p4" shows file sizes in its output has been updated to
use human-readable units.
* "git -c branch.autosetupmerge=inherit branch new old" makes "new"
to have the same upstream as the "old" branch, instead of marking
"old" itself as its upstream.
Performance, Internal Implementation, Development Support etc.
* The use of errno as a means to carry the nature of error in the ref
API implementation has been reworked and reduced.
* Teach and encourage first-time contributors to this project to
state the base commit when they submit their topic.
* The command line completion for "git send-email" options have been
tweaked to make it easier to keep it in sync with the command itself.
* Ensure that the sparseness of the in-core index matches the
index.sparse configuration specified by the repository immediately
after the on-disk index file is read.
* Code clean-up to eventually allow information on remotes defined
for an arbitrary repository to be read.
* Build optimization.
* Tighten code for testing pack-bitmap.
* Weather balloon to break people with compilers that do not support
C99.
* The "reftable" backend for the refs API, without integrating into
the refs subsystem, has been added.
* More tests are marked as leak-free.
* The test framework learns to list unsatisfied test prerequisites,
and optionally error out when prerequisites that are expected to be
satisfied are not.
* The default setting for trace2 event nesting was too low to cause
test failures, which is worked around by bumping it up in the test
framework.
* Drop support for TravisCI and update test workflows at GitHub.
* Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
mechanism to force "git" to use 'master' as the default name for
the initial branch no longer need it; the use of the mechanism from
them have been removed.
* Allow running our tests while disabling fsync.
* Document the parameters given to the reflog entry iterator callback
functions.
(merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
* The test helper for refs subsystem learned to write bogus and/or
nonexistent object name to refs to simulate error situations we
want to test Git in.
* "diff --histogram" optimization.
* Weather balloon to find compilers that do not grok variable
declaration in the for() loop.
* diff and blame commands have been taught to work better with sparse
index.
* The chainlint test script linter in the test suite has been updated.
* The DEVELOPER=yes build uses -std=gnu99 now.
* "git format-patch" uses a single rev_info instance and then exits.
Mark the structure with UNLEAK() macro to squelch leak sanitizer.
* New interface into the tmp-objdir API to help in-core use of the
quarantine feature.
* Broken &&-chains in the test scripts have been corrected.
* The RCS keyword substitution in "git p4" used to be done assuming
that the contents are UTF-8 text, which can trigger decoding
errors. We now treat the contents as a bytestring for robustness
and correctness.
* The conditions to choose different definitions of the FLEX_ARRAY
macro for vendor compilers has been simplified to make it easier to
maintain.
* Correctness and performance update to "diff --color-moved" feature.
* "git upload-pack" (the other side of "git fetch") used a 8kB buffer
but most of its payload came on 64kB "packets". The buffer size
has been enlarged so that such a packet fits.
* "git fetch" and "git pull" are now declared sparse-index clean.
Also "git ls-files" learns the "--sparse" option to help debugging.
* Similar message templates have been consolidated so that
translators need to work on fewer number of messages.
Fixes since v2.34
-----------------
* "git grep" looking in a blob that has non-UTF8 payload was
completely broken when linked with certain versions of PCREv2
library in the latest release.
* Other code cleanup, docfix, build fix, etc.
* "git pull" with any strategy when the other side is behind us
should succeed as it is a no-op, but doesn't.
* An earlier change in 2.34.0 caused JGit application (that abused
GIT_EDITOR mechanism when invoking "git config") to get stuck with
a SIGTTOU signal; it has been reverted.
* An earlier change that broke .gitignore matching has been reverted.
* Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
operation modes of the "git branch" command that do not need the
sort key information, no longer errors out by seeing a bogus sort
key.
(merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
* The compatibility implementation for unsetenv(3) were written to
mimic ancient, non-POSIX, variant seen in an old glibc; it has been
changed to return an integer to match the more modern era.
(merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
* The clean/smudge conversion code path has been prepared to better
work on platforms where ulong is narrower than size_t.
(merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
* Redact the path part of packfile URI that appears in the trace output.
(merge 0ba558ffb1 if/redact-packfile-uri later to maint).
* CI has been taught to catch some Unicode directional formatting
sequence that can be used in certain mischief.
(merge 0e7696c64d js/ci-no-directional-formatting later to maint).
* The "--date=format:<strftime>" gained a workaround for the lack of
system support for a non-local timezone to handle "%s" placeholder.
(merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
* The "merge" subcommand of "git jump" (in contrib/) silently ignored
pathspec and other parameters.
(merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
* The code to decode the length of packed object size has been
corrected.
(merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
* The advice message given by "git pull" when the user hasn't made a
choice between merge and rebase still said that the merge is the
default, which no longer is the case. This has been corrected.
(merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
* "git fetch", when received a bad packfile, can fail with SIGPIPE.
This wasn't wrong per-se, but we now detect the situation and fail
in a more predictable way.
(merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
* The function to cull a child process and determine the exit status
had two separate code paths for normal callers and callers in a
signal handler, and the latter did not yield correct value when the
child has caught a signal. The handling of the exit status has
been unified for these two code paths. An existing test with
flakiness has also been corrected.
(merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
* When a non-existent program is given as the pager, we tried to
reuse an uninitialized child_process structure and crashed, which
has been fixed.
(merge f917f57f40 em/missing-pager later to maint).
* The single-key-input mode in "git add -p" had some code to handle
keys that generate a sequence of input via ReadKey(), which did not
handle end-of-file correctly, which has been fixed.
(merge fc8a8126df cb/add-p-single-key-fix later to maint).
* "git rebase -x" added an unnecessary 'exec' instructions before
'noop', which has been corrected.
(merge cc9dcdee61 en/rebase-x-fix later to maint).
* When the "git push" command is killed while the receiving end is
trying to report what happened to the ref update proposals, the
latter used to die, due to SIGPIPE. The code now ignores SIGPIPE
to increase our chances to run the post-receive hook after it
happens.
(merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
* "git worktree add" showed "Preparing worktree" message to the
standard output stream, but when it failed, the message from die()
went to the standard error stream. Depending on the order the
stdio streams are flushed at the program end, this resulted in
confusing output. It has been corrected by sending all the chatty
messages to the standard error stream.
(merge b50252484f es/worktree-chatty-to-stderr later to maint).
* Coding guideline document has been updated to clarify what goes to
standard error in our system.
(merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
* The sparse-index/sparse-checkout feature had a bug in its use of
the matching code to determine which path is in or outside the
sparse checkout patterns.
(merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
* "git rebase -x" by mistake started exporting the GIT_DIR and
GIT_WORK_TREE environment variables when the command was rewritten
in C, which has been corrected.
(merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
* When "git log" implicitly enabled the "decoration" processing
without being explicitly asked with "--decorate" option, it failed
to read and honor the settings given by the "--decorate-refs"
option.
* "git fetch --set-upstream" did not check if there is a current
branch, leading to a segfault when it is run on a detached HEAD,
which has been corrected.
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
* Among some code paths that ask an yes/no question, only one place
gave a prompt that looked different from the others, which has been
updated to match what the others create.
(merge 0fc8ed154c km/help-prompt-fix later to maint).
* "git log --invert-grep --author=<name>" used to exclude commits
written by the given author, but now "--invert-grep" only affects
the matches made by the "--grep=<pattern>" option.
(merge 794c000267 rs/log-invert-grep-with-headers later to maint).
* "git grep --perl-regexp" failed to match UTF-8 characters with
wildcard when the pattern consists only of ASCII letters, which has
been corrected.
(merge 32e3e8bc55 rs/pcre2-utf later to maint).
* Certain sparse-checkout patterns that are valid in non-cone mode
led to segfault in cone mode, which has been corrected.
* Use of certain "git rev-list" options with "git fast-export"
created nonsense results (the worst two of which being "--reverse"
and "--invert-grep --grep=<foo>"). The use of "--first-parent" is
made to behave a bit more sensible than before.
(merge 726a228dfb ws/fast-export-with-revision-options later to maint).
* Perf tests were run with end-user's shell, but it has been
corrected to use the shell specified by $TEST_SHELL_PATH.
(merge 9ccab75608 ja/perf-use-specified-shell later to maint).
* Fix dependency rules to generate hook-list.h header file.
(merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).
* "git stash" by default triggers its "push" action, but its
implementation also made "git stash -h" to show short help only for
"git stash push", which has been corrected.
(merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).
* "git apply --3way" bypasses the attempt to do a three-way
application in more cases to address the regression caused by the
recent change to use direct application as a fallback.
(merge 34d607032c jz/apply-3-corner-cases later to maint).
* Fix performance-releated bug in "git subtree" (in contrib/).
(merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).
* Extend the guidance to choose the base commit to build your work
on, and hint/nudge contributors to read others' changes.
(merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).
* A corner case bug in the ort merge strategy has been corrected.
(merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).
* "git stash apply" forgot to attempt restoring untracked files when
it failed to restore changes to tracked ones.
(merge 71cade5a0b en/stash-df-fix later to maint).
* Calling dynamically loaded functions on Windows has been corrected.
(merge 4a9b204920 ma/windows-dynload-fix later to maint).
* Some lockfile code called free() in signal-death code path, which
has been corrected.
(merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
(merge f9b2b6684d ja/doc-cleanup later to maint).
(merge 7d1b866778 jc/fix-first-object-walk later to maint).
(merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
(merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
(merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
(merge 42c456ff81 rs/mergesort later to maint).
(merge ad506e6780 tl/midx-docfix later to maint).
(merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
(merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
(merge 7d3fc7df70 jt/midx-doc-fix later to maint).
(merge 7b089120d9 hn/create-reflog-simplify later to maint).
(merge 9e12400da8 cb/mingw-gmtime-r later to maint).
(merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
(merge eafd6e7e55 ab/die-with-bug later to maint).
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
(merge 47ca93d071 ds/repack-fixlets later to maint).
(merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
(merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
(merge 999bba3e0b rs/daemon-plug-leak later to maint).
(merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
(merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
(merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
(merge 97d6fb5a1f ma/header-dup-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.34.0 are as follows:
Alex Henrie (1):
pull: don't say that merge is "the default strategy"
Anders Kaseorg (8):
fetch: lowercase error messages
receive-pack: lowercase error messages
branch: lowercase error messages
worktree: simplify find_shared_symref() memory ownership model
fetch: protect branches checked out in all worktrees
receive-pack: clean dead code from update_worktree()
receive-pack: protect current branch for bare repository worktree
branch: protect branches checked out in all worktrees
Bagas Sanjaya (1):
branch: missing space fix at line 313
Calvin Wan (1):
protocol-v2.txt: align delim-pkt spec with usage
Carlo Marcelo Arenas Belón (4):
test-genzeros: allow more than 2G zeros in Windows
test-lib: add prerequisite for 64-bit platforms
mingw: avoid fallback for {local,gm}time_r()
add -p: avoid use of undefined $key when ReadKey -> EOF
Derrick Stolee (19):
dir: revert "dir: select directories correctly"
test-lib.sh: set GIT_TRACE2_EVENT_NESTING
t/t*: remove custom GIT_TRACE2_EVENT_NESTING
scalar: 'register' sets recommended config and starts maintenance
scalar: 'unregister' stops background maintenance
scalar: implement 'scalar list'
scalar: implement the `run` command
t1092: add deeper changes during a checkout
unpack-trees: use traverse_path instead of name
repack: respect kept objects with '--write-midx -b'
repack: make '--quiet' disable progress
fetch/pull: use the sparse index
ls-files: add --sparse option
t1092: replace 'read-cache --table' with 'ls-files --sparse'
t1091/t3705: remove 'test-tool read-cache --table'
test-read-cache: remove --table, --expand options
sparse-checkout: fix segfault on malformed patterns
sparse-checkout: fix OOM error with mixed patterns
sparse-checkout: refuse to add to bad patterns
Eli Schwartz (3):
pretty.c: rework describe options parsing for better extensibility
pretty: add tag option to %(describe)
pretty: add abbrev option to %(describe)
Elijah Newren (28):
sequencer: avoid adding exec commands for non-commit creating commands
update documentation for new zdiff3 conflictStyle
name-rev: prefer shorter names over following merges
sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
t2501: add various tests for removing the current working directory
setup: introduce startup_info->original_cwd
unpack-trees: refuse to remove startup_info->original_cwd
unpack-trees: add special cwd handling
symlinks: do not include startup_info->original_cwd in dir removal
clean: do not attempt to remove startup_info->original_cwd
rebase: do not attempt to remove startup_info->original_cwd
stash: do not attempt to remove startup_info->original_cwd
dir: avoid incidentally removing the original_cwd in remove_path()
dir: new flag to remove_dir_recurse() to spare the original_cwd
t2501: simplify the tests since we can now assume desired behavior
sparse-checkout: pass use_stdin as a parameter instead of as a global
sparse-checkout: break apart functions for sparse_checkout_(set|add)
sparse-checkout: add sanity-checks on initial sparsity state
sparse-checkout: disallow --no-stdin as an argument to set
sparse-checkout: split out code for tweaking settings config
sparse-checkout: enable `set` to initialize sparse-checkout mode
sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
git-sparse-checkout.txt: update to document init/set/reapply changes
Documentation: clarify/correct a few sparsity related statements
clone: avoid using deprecated `sparse-checkout init`
sparse-checkout: remove stray trailing space
merge-ort: fix bug with renormalization and rename/delete conflicts
stash: do not return before restoring untracked files
Enzo Matsumiya (1):
pager: fix crash when pager program doesn't exist
Eric Sunshine (38):
worktree: stop being overly intimate with run_command() internals
CodingGuidelines: document which output goes to stdout vs. stderr
worktree: send "chatty" messages to stderr
git-worktree.txt: add missing `-v` to synopsis for `worktree list`
t/lib-pager: use sane_unset() to avoid breaking &&-chain
t1010: fix unnoticed failure on Windows
t1020: avoid aborting entire test script when one test fails
t4202: clarify intent by creating expected content less cleverly
t5516: drop unnecessary subshell and command invocation
t6300: make `%(raw:size) --shell` test more robust
t9107: use shell parameter expansion to avoid breaking &&-chain
tests: simplify construction of large blocks of text
tests: use test_write_lines() to generate line-oriented output
tests: fix broken &&-chains in compound statements
tests: fix broken &&-chains in `$(...)` command substitutions
tests: fix broken &&-chains in `{...}` groups
tests: apply modern idiom for signaling test failure
tests: apply modern idiom for exiting loop upon failure
tests: simplify by dropping unnecessary `for` loops
t0000-t3999: detect and signal failure within loop
t4000-t4999: detect and signal failure within loop
t5000-t5999: detect and signal failure within loop
t6000-t9999: detect and signal failure within loop
t/chainlint/*.test: don't use invalid shell syntax
t/chainlint/*.test: fix invalid test cases due to mixing quote types
t/chainlint/*.test: generalize self-test commentary
t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
t/Makefile: optimize chainlint self-test
chainlint.sed: improve ?!AMP?! placement accuracy
chainlint.sed: improve ?!SEMI?! placement accuracy
chainlint.sed: tolerate harmless ";" at end of last line in block
chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
chainlint.sed: drop subshell-closing ">" annotation
chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
chainlint.sed: don't mistake `<< word` in string as here-doc operator
chainlint.sed: stop throwing away here-doc tags
chainlint.sed: swallow comments consistently
chainlint.sed: stop splitting "(..." into separate lines "(" and "..."
Eric Wong (2):
tests: disable fsync everywhere
cbtree: remove broken and unused cb_unlink
Erwin Villejo (1):
pull: should be noop when already-up-to-date
Fabian Stelzer (15):
ssh signing: support non ssh-* keytypes
ssh signing: make sign/amend test more resilient
test-lib: show missing prereq summary
test-lib: introduce required prereq for test runs
test-lib: make BAIL_OUT() work in tests and prereq
t/fmt-merge-msg: do not redirect stderr
t/fmt-merge-msg: make gpgssh tests more specific
ssh signing: use sigc struct to pass payload
ssh signing: add key lifetime test prereqs
ssh signing: make verify-commit consider key lifetime
ssh signing: make git log verify key lifetime
ssh signing: make verify-tag consider key lifetime
ssh signing: make fmt-merge-msg consider key lifetime
ssh signing: verify ssh-keygen in test prereq
t/gpg: simplify test for unknown key
Glen Choo (5):
t5516: add test case for pushing remote refspecs
remote: move static variables into per-repository struct
remote: use remote_state parameter internally
remote: remove the_repository->remote_state from static methods
remote: die if branch is not found in repository
Greg Hurrell (1):
docs: add missing colon to Documentation/config/gpg.txt
Han-Wen Nienhuys (49):
hash.h: provide constants for the hash IDs
reftable: add LICENSE
reftable: add error related functionality
reftable: utility functions
reftable: add blocksource, an abstraction for random access reads
reftable: (de)serialization for the polymorphic record type.
Provide zlib's uncompress2 from compat/zlib-compat.c
reftable: reading/writing blocks
reftable: a generic binary tree implementation
reftable: write reftable files
reftable: generic interface to tables
reftable: read reftable files
reftable: reftable file level tests
reftable: add a heap-based priority queue for reftable records
reftable: add merged table view
reftable: implement refname validation
reftable: implement stack, a mutable database of reftable files.
reftable: add dump utility
Add "test-tool dump-reftable" command.
branch tests: test for errno propagating on failing read
refs API: make refs_read_raw_ref() not set errno
refs API: make parse_loose_ref_contents() not set errno
refs: drop force_create argument of create_reflog API
t1404: mark directory/file conflict tests with REFFILES
show-branch: show reflog message
test-ref-store: don't add newline to reflog message
t1405: check for_each_reflog_ent_reverse() more thoroughly
test-ref-store: tweaks to for-each-reflog-ent format
refs/debug: trim trailing LF from reflog message
test-ref-store: remove force-create argument for create-reflog
test-ref-store: parse symbolic flag constants
test-ref-store: plug memory leak in cmd_delete_refs
refs: update comment.
refs: introduce REF_SKIP_OID_VERIFICATION flag
refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
t1430: remove refs using test-tool
t1430: create valid symrefs using test-helper
test-ref-store: print hash algorithm
t5540: require REFFILES
t5550: require REFFILES
t7004: create separate tags for different tests
t7004: use "test-tool ref-store" for reflog inspection
refs: pass gitdir to packed_ref_store_create
refs: print error message in debug output
refs: centralize initialization of the base ref_store.
reftable: fix typo in header
reftable: signal overflow
reftable: support preset file mode for writing
reftable: avoid initializing structs from structs
Hans Krentel (hakre) (1):
ci(check-whitespace): update stale file top comments
Ivan Frade (2):
fetch-pack: redact packfile urls in traces
http-fetch: redact url on die() message
Jacob Vosmaer (1):
upload-pack.c: increase output buffer size
James Limbouris (1):
subtree: fix argument handling in check_parents
Jean-Noël Avila (20):
doc: fix git credential synopsis
doc: split placeholders as individual tokens
doc: express grammar placeholders between angle brackets
doc: use only hyphens as word separators in placeholders
doc: git-ls-files: express options as optional alternatives
doc: use three dots for indicating repetition instead of star
doc: uniformize <URL> placeholders' case
doc: git-http-push: describe the refs as pattern pairs
doc: git-init: clarify file modes in octal.
i18n: refactor "foo and bar are mutually exclusive"
i18n: refactor "%s, %s and %s are mutually exclusive"
i18n: turn "options are incompatible" into "cannot be used together"
i18n: standardize "cannot open" and "cannot read"
i18n: tag.c factorize i18n strings
i18n: factorize "--foo requires --bar" and the like
i18n: factorize "no directory given for --foo"
i18n: refactor "unrecognized %(foo) argument" strings
i18n: factorize "--foo outside a repository"
i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
i18n: turn even more messages into "cannot be used together" ones
Jeff King (18):
urlmatch: add underscore to URL_HOST_CHARS
strbuf_addftime(): handle "%s" manually
test_bitmap_hashes(): handle repository without bitmaps
generate-cmdlist.sh: do not shell out to "sed"
git-jump: pass "merge" arguments to ls-files
t5319: corrupt more bytes of the midx checksum
refs: work around gcc-11 warning with REF_HAVE_NEW
fetch-pack: ignore SIGPIPE when writing to index-pack
run-command: unify signal and regular logic for wait_or_whine()
t7006: clean up SIGPIPE handling in trace2 tests
t7006: simplify exit-code checks for sigpipe tests
log: handle --decorate-refs with userformat "%d"
log: load decorations with --simplify-by-decoration
xdiff: drop CMP_ENV macro from xhistogram
xdiff: drop xpparam_t parameter from histogram cmp_recs()
xdiff: drop unused flags parameter from recs_match
config.mak.dev: specify -std=gnu99 for gcc/clang
doc/config: mark ssh allowedSigners example as literal
Jerry Zhang (3):
git-apply: add --quiet flag
git-apply: add --allow-empty flag
git-apply: skip threeway in add / rename cases
Joel Holdsworth (9):
git-p4: use with statements to close files after use in patchRCSKeywords
git-p4: pre-compile RCS keyword regexes
git-p4: add raw option to read_pipelines
git-p4: open temporary patch file for write only
git-p4: resolve RCS keywords in bytes not utf-8
git-p4: print size values in appropriate units
git-p4: show progress as an integer
git-p4: remove "debug" verb
git-p4: remove "rollback" verb
Johannes Altmanninger (1):
t/perf: do not run tests in user's $SHELL
Johannes Schindelin (14):
test-tool genzeros: generate large amounts of data more efficiently
git-compat-util: introduce more size_t helpers
ci: disallow directional formatting
scalar: add a README with a roadmap
scalar: create a rudimentary executable
scalar: start documenting the command
scalar: create test infrastructure
scalar: let 'unregister' handle a deleted enlistment directory gracefully
scalar: implement the `clone` subcommand
scalar: teach 'clone' to support the --single-branch option
scalar: allow reconfiguring an existing enlistment
scalar: teach 'reconfigure' to optionally handle all registered enlistments
scalar: implement the `version` command
tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed
Johannes Sixt (3):
generate-cmdlist.sh: spawn fewer processes
generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
t1450-fsck: exec-bit is not needed to make loose object writable
John Cai (2):
docs: fix places that break compilation in MyFirstObjectWalk
docs: add headers in MyFirstObjectWalk
Jonathan Tan (2):
packfile: avoid overflowing shift during decode
Doc: no midx and partial clone relation
Josh Steadmon (5):
trace2: disable tr2_dst before warning on write errors
branch: accept multiple upstream branches for tracking
branch: add flags and config to inherit tracking
config: require lowercase for branch.*.autosetupmerge
l10n: README: call more attention to plural strings
Junio C Hamano (28):
for-each-ref: delay parsing of --sort=<atom> options
MyFirstContribution: teach to use "format-patch --base=auto"
unsetenv(3) returns int, not void
init doc: --shared=0xxx does not give umask but perm bits
Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
0th batch for early fixes
Revert "editor: save and reset terminal after calling EDITOR"
A bit more regression fixes
Git 2.34.1
refs: document callback for reflog-ent iterators
The first batch to start the current cycle
revision: use C99 declaration of variable in for() loop
grep: clarify what `grep.patternType=default` means
flex-array: simplify compiler-specific workaround
The second batch
The third batch
t4204 is not sanitizer clean at all
format-patch: mark rev_info with UNLEAK
merge: allow to pretend a merge is made into a different branch
The fourth batch
The fifth batch
SubmittingPatchs: clarify choice of base and testing
The sixth batch
The seventh batch
Git 2.35-rc0
packfile: fix off-by-one error in decoding logic
Last minute fixes before -rc1
Git 2.35-rc1
Kashav Madan (1):
help: make auto-correction prompt more consistent
Lessley Dennington (7):
git: ensure correct git directory setup with -h
commit-graph: return if there is no git directory
test-read-cache: set up repo after git directory
repo-settings: prepare_repo_settings only in git repos
diff: replace --staged with --cached in t1092 tests
diff: enable and test the sparse index
blame: enable and test the sparse index
Lénaïc Huard (1):
grep: align default colors with GNU grep ones
Marc Strapetz (1):
t/README: fix typo
Martin Ågren (1):
cache.h: drop duplicate `ensure_full_index()` declaration
Matt Cooper (4):
t1051: introduce a smudge filter test for extremely large files
odb: teach read_blob_entry to use size_t
odb: guard against data loss checking out a huge file
clean/smudge: allow clean filters to process extremely large files
Matthew John Cheetham (1):
scalar: implement the `delete` command
Matthias Aßhauer (1):
lazyload: use correct calling conventions
Mugdha Pattnaik (1):
submodule: absorb git dir instead of dying on deinit
Neeraj Singh (2):
tmp-objdir: new API for creating temporary writable databases
tmp-objdir: disable ref updates when replacing the primary odb
Patrick Steinhardt (1):
fetch: fix deadlock when cleaning up lockfiles in async signals
Philip Oakley (3):
repack.c: LLP64 compatibility, upcast unity for left shift
diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
object-file.c: LLP64 compatibility, upcast unity for left shift
Philippe Blain (1):
SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section
Phillip Wood (19):
diff histogram: intern strings
xdiff: avoid unnecessary memory allocations
xdiff: simplify comparison
xdiff: implement a zealous diff3, or "zdiff3"
diff --color-moved: add perf tests
diff --color-moved: clear all flags on blocks that are too short
diff --color-moved: factor out function
diff --color-moved: rewind when discarding pmb
diff --color-moved=zebra: fix alternate coloring
diff --color-moved: avoid false short line matches and bad zebra coloring
diff: simplify allow-indentation-change delta calculation
diff --color-moved-ws=allow-indentation-change: simplify and optimize
diff --color-moved: call comparison function directly
diff --color-moved: unify moved block growth functions
diff --color-moved: shrink potential moved blocks as we go
diff --color-moved: stop clearing potential moved blocks
diff --color-moved-ws=allow-indentation-change: improve hash lookups
diff: use designated initializers for emitted_diff_symbol
diff --color-moved: intern strings
Randall S. Becker (1):
build: NonStop ships with an older zlib
René Scharfe (6):
mergesort: avoid left shift overflow
log: let --invert-grep only invert --grep
t4202: fix patternType setting in --invert-grep test
daemon: plug memory leak on overlong path
grep/pcre2: use PCRE2_UTF even with ASCII patterns
grep/pcre2: factor out literal variable
Robert Estelle (3):
color: add missing GIT_COLOR_* white/black constants
color: support "default" to restore fg/bg color
color: allow colors to be prefixed with "reset"
Robin Jarry (1):
receive-pack: ignore SIGPIPE while reporting status to client
Sergey Organov (2):
stash: implement '--staged' option for 'push' and 'save'
stash: get rid of unused argument in stash_staged()
Taylor Blau (11):
midx.c: clean up chunkfile after reading the MIDX
midx.c: don't leak MIDX from verify_midx_file
t/helper/test-read-midx.c: free MIDX within read_midx_file()
builtin/pack-objects.c: don't leak memory via arguments
builtin/repack.c: avoid leaking child arguments
builtin/multi-pack-index.c: don't leak concatenated options
midx.c: write MIDX filenames to strbuf
pack-bitmap.c: don't leak type-level bitmaps
pack-bitmap.c: more aggressively free in free_bitmap_index()
packfile: make `close_pack_revindex()` static
fmt-merge-msg: prevent use-after-free with signed tags
Teng Long (1):
midx: fix a formatting issue in "multi-pack-index.txt"
Thiago Perrotta (2):
send-email: programmatically generate bash completions
send-email docs: add format-patch options
Thomas Weißschuh (1):
var: add GIT_DEFAULT_BRANCH variable
Victoria Dye (12):
reset: rename is_missing to !is_in_reset_tree
reset: preserve skip-worktree bit in mixed reset
sparse-index: update command for expand/collapse test
test-read-cache.c: prepare_repo_settings after config init
sparse-index: avoid unnecessary cache tree clearing
sparse-index: add ensure_correct_sparsity function
sparse-index: update do_read_index to ensure correct sparsity
reset: expand test coverage for sparse checkouts
reset: integrate with sparse index
reset: make sparse-aware (except --mixed)
reset: make --mixed sparse-aware
unpack-trees: improve performance of next_cache_entry
William Sprent (1):
fast-export: fix surprising behavior with --first-parent
Yoichi Nakayama (1):
completion: add human and auto: date format
brian m. carlson (1):
git-compat-util: add a test balloon for C99 support
Ævar Arnfjörð Bjarmason (88):
refs API: add a version of refs_resolve_ref_unsafe() with "errno"
refs API: make refs_rename_ref_available() static
reflog tests: add --updateref tests
refs/files: remove "name exist?" check in lock_ref_oid_basic()
refs API: remove refs_read_ref_full() wrapper
refs API: make resolve_gitlink_ref() not set errno
refs API: make loose_fill_ref_dir() not set errno
refs API: make files_copy_or_rename_ref() et al not set errno
refs API: ignore errno in worktree.c's add_head_info()
refs API: ignore errno in worktree.c's find_shared_symref()
refs tests: ignore ignore errno in test-ref-store helper
refs API: make refs_resolve_refdup() not set errno
refs API: make refs_ref_exists() not set errno
refs API: make resolve_ref_unsafe() not set errno
refs API: make expand_ref() & repo_dwim_log() not set errno
refs API: don't expose "errno" in run_transaction_hook()
refs API: post-migration API renaming [1/2]
refs API: post-migration API renaming [2/2]
Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
git-instaweb: unconditionally assume that gitweb is mod_perl capable
git-sh-setup: remove unused sane_egrep() function
git-sh-setup: remove "sane_grep", it's not needed anymore
leak tests: mark a read-tree test as passing SANITIZE=leak
leak tests: mark "sort" test as passing SANITIZE=leak
leak tests: mark most gettext tests as passing with SANITIZE=leak
leak tests: mark some misc tests as passing with SANITIZE=leak
leak tests: mark some rev-list tests as passing with SANITIZE=leak
leak tests: mark some rev-parse tests as passing with SANITIZE=leak
leak tests: mark some update-index tests as passing with SANITIZE=leak
leak tests: mark some notes tests as passing with SANITIZE=leak
leak tests: mark some apply tests as passing with SANITIZE=leak
leak tests: mark some diff tests as passing with SANITIZE=leak
leak tests: mark some add tests as passing with SANITIZE=leak
leak tests: mark some clone tests as passing with SANITIZE=leak
leak tests: mark some status tests as passing with SANITIZE=leak
leak tests: mark some config tests as passing with SANITIZE=leak
leak tests: mark some fast-import tests as passing with SANITIZE=leak
command-list.txt: sort with "LC_ALL=C sort"
generate-cmdlist.sh: trivial whitespace change
generate-cmdlist.sh: don't call get_categories() from category_list()
generate-cmdlist.sh: run "grep | sort", not "sort | grep"
generate-cmdlist.sh: stop sorting category lines
generate-cmdlist.sh: replace "grep' invocation with a shell version
generate-cmdlist.sh: don't parse command-list.txt thrice
parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
checkout: fix "branch info" memory leaks
CI: remove Travis CI support
CI: use shorter names that fit in UX tooltips
CI: rename the "Linux32" job to lower-case "linux32"
CI: use "$runs_on_pool", not "$jobname" to select packages & config
CI: don't run "make test" twice in one job
upload-archive: use regular "struct child_process" pattern
run-command API users: use strvec_pushv(), not argv assignment
run-command tests: use strvec_pushv(), not argv assignment
run-command API users: use strvec_pushl(), not argv construction
run-command API users: use strvec_push(), not argv construction
run-command API: remove "argv" member, always use "args"
difftool: use "env_array" to simplify memory management
run-command API: remove "env" member, always use "env_array"
common-main.c: call exit(), don't return
pack-objects: use BUG(...) not die("BUG: ...")
strbuf.h: use BUG(...) not die("BUG: ...")
pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
usage.c: add a die_message() routine
usage.c API users: use die_message() for "fatal :" + exit 128
usage.c API users: use die_message() for error() + exit 128
gc: return from cmd_gc(), don't call exit()
usage.c + gc: add and use a die_message_errno()
config API: use get_error_routine(), not vreportf()
pull, fetch: fix segfault in --set-upstream option
stash: don't show "git stash push" usage on bad "git stash" usage
reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
reflog expire: narrow scope of "cb" in cmd_reflog_expire()
reflog: change one->many worktree->refnames to use a string_list
reflog expire: use "switch" over enum values
reflog expire: refactor & use "tip_commit" only for UE_NORMAL
reflog expire: don't use lookup_commit_reference_gently()
reflog: reduce scope of "struct rev_info"
refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
reflog + refs-backend: move "verbose" out of the backend
Makefile: correct the dependency graph of hook-list.h
Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
Makefile: don't invoke msgfmt with --statistics
refs API: use "failure_errno", not "errno"
reftable tests: avoid "int" overflow, use "uint64_t"
Øystein Walle (2):
status: count stash entries in separate function
status: print stash info with --porcelain=v2 --show-stash
徐沛文 (Aleen) (3):
doc: git-format-patch: describe the option --always
am: support --empty=<option> to handle empty patches
am: support --allow-empty to record specific empty patches
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.35.0-rc0
@ 2022-01-11 0:51 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-11 0:51 UTC (permalink / raw)
To: git; +Cc: git-packagers
An early preview release Git v2.35.0-rc0 is now available for
testing at the usual places. It is comprised of 453 non-merge
commits since v2.34.0, contributed by 75 people, 31 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.35.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.34.0 are as follows.
Welcome to the Git development community!
AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
Wan, Clemens Fruhwirth, Danial Alihosseini, Dotan Cohen, Enzo
Matsumiya, Erwin Villejo, Gustave Granroth, Hans Krentel (hakre),
Ivan Frade, James Limbouris, Jan Pokorný, Joel Holdsworth,
John Burnett, John Cai, Josh Rampersad, Kashav Madan, Lessley
Dennington, Matt Cooper, Matthew John Cheetham, Mike Marcelais,
Mugdha Pattnaik, Nikita Bobko, Robin Jarry, Thiago Perrotta,
Thomas Weißschuh, William Sprent, and 徐沛文 (Aleen).
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg, Bagas
Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón, Derrick
Stolee, Elijah Newren, Eli Schwartz, Eric Sunshine, Eric Wong,
Fabian Stelzer, Glen Choo, Greg Hurrell, Han-Wen Nienhuys,
Jacob Vosmaer, Jean-Noël Avila, Jeff King, Jerry Zhang, Jiang
Xin, Johannes Altmanninger, Johannes Schindelin, Johannes Sixt,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Lénaïc Huard,
Marc Strapetz, Martin Ågren, Mike Hommey, Neeraj Singh, Øystein
Walle, Philip Oakley, Philippe Blain, Phillip Wood, Ralf Thielow,
René Scharfe, Robert Estelle, Sergey Organov, SZEDER Gábor,
Taylor Blau, Teng Long, Victoria Dye, and Yoichi Nakayama.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.35 Release Notes (draft)
==============================
Updates since Git 2.34
----------------------
Backward compatibility warts
* "_" is now treated as any other URL-valid characters in an URL when
matching the per-URL configuration variable names.
* The color palette used by "git grep" has been updated to match that
of GNU grep.
UI, Workflows & Features
* "git status --porcelain=v2" now show the number of stash entries
with --show-stash like the normal output does.
* "git stash" learned the "--staged" option to stash away what has
been added to the index (and nothing else).
* "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
the newly created branch if "git init" is run.
* Various operating modes of "git reset" have been made to work
better with the sparse index.
* "git submodule deinit" for a submodule whose .git metadata
directory is embedded in its working tree refused to work, until
the submodule gets converted to use the "absorbed" form where the
metadata directory is stored in superproject, and a gitfile at the
top-level of the working tree of the submodule points at it. The
command is taught to convert such submodules to the absorbed form
as needed.
* The completion script (in contrib/) learns that the "--date"
option of commands from the "git log" family takes "human" and
"auto" as valid values.
* "Zealous diff3" style of merge conflict presentation has been added.
* The "git log --format=%(describe)" placeholder has been extended to
allow passing selected command-line options to the underlying "git
describe" command.
* "default" and "reset" have been added to our color palette.
* The cryptographic signing using ssh keys can specify literal keys
for keytypes whose name do not begin with the "ssh-" prefix by
using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
* "git fetch" without the "--update-head-ok" option ought to protect
a checked out branch from getting updated, to prevent the working
tree that checks it out to go out of sync. The code was written
before the use of "git worktree" got widespread, and only checked
the branch that was checked out in the current worktree, which has
been updated.
* "git name-rev" has been tweaked to give output that is shorter and
easier to understand.
* "git apply" has been taught to ignore a message without a patch
with the "--allow-empty" option. It also learned to honor the
"--quiet" option given from the command line.
* The "init" and "set" subcommands in "git sparse-checkout" have been
unified for a better user experience and performance.
* Many git commands that deal with working tree files try to remove a
directory that becomes empty (i.e. "git switch" from a branch that
has the directory to another branch that does not would attempt
remove all files in the directory and the directory itself). This
drops users into an unfamiliar situation if the command was run in
a subdirectory that becomes subject to removal due to the command.
The commands have been taught to keep an empty directory if it is
the directory they were started in to avoid surprising users.
* "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
done to a piece of e-mail without a patch in it.
* The default merge message prepared by "git merge" records the name
of the current branch; the name can be overridden with a new option
to allow users to pretend a merge is made on a different branch.
* The way "git p4" shows file sizes in its output has been updated to
use human-readable units.
* "git -c branch.autosetupmerge=inherit branch new old" makes "new"
to have the same upstream as the "old" branch, instead of marking
"old" itself as its upstream.
Performance, Internal Implementation, Development Support etc.
* The use of errno as a means to carry the nature of error in the ref
API implementation has been reworked and reduced.
* Teach and encourage first-time contributors to this project to
state the base commit when they submit their topic.
* The command line complation for "git send-email" options have been
tweaked to make it easier to keep it in sync with the command itself.
* Ensure that the sparseness of the in-core index matches the
index.sparse configuration specified by the repository immediately
after the on-disk index file is read.
* Code clean-up to eventually allow information on remotes defined
for an arbitrary repository to be read.
* Build optimization.
* Tighten code for testing pack-bitmap.
* Weather balloon to break people with compilers that do not support
C99.
* The "reftable" backend for the refs API, without integrating into
the refs subsystem, has been added.
* More tests are marked as leak-free.
* The test framework learns to list unsatisfied test prerequisites,
and optionally error out when prerequisites that are expected to be
satisfied are not.
* The default setting for trace2 event nesting was too low to cause
test failures, which is worked around by bumping it up in the test
framework.
* Drop support for TravisCI and update test workflows at GitHub.
* Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
mechanism to force "git" to use 'master' as the default name for
the initial branch no longer need it; the use of the mechanism from
them have been removed.
* Allow running our tests while disabling fsync.
* Document the parameters given to the reflog entry iterator callback
functions.
(merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
* The test helper for refs subsystem learned to write bogus and/or
nonexistent object name to refs to simulate error situations we
want to test Git in.
* "diff --histogram" optimization.
* Weather balloon to find compilers that do not grok variable
declaration in the for() loop.
* diff and blame commands have been taught to work better with sparse
index.
* The chainlint test script linter in the test suite has been updated.
* The DEVELOPER=yes build uses -std=gnu99 now.
* "git format-patch" uses a single rev_info instance and then exits.
Mark the structure with UNLEAK() macro to squelch leak sanitizer.
* New interface into the tmp-objdir API to help in-core use of the
quarantine feature.
* Broken &&-chains in the test scripts have been corrected.
* The RCS keyword substitution in "git p4" used to be done assuming
that the contents are UTF-8 text, which can trigger decoding
errors. We now treat the contents as a bytestring for robustness
and correctness.
* The conditions to choose different definitions of the FLEX_ARRAY
macro for vendor compilers has been simplified to make it easier to
maintain.
* Correctness and performance update to "diff --color-moved" feature.
* "git upload-pack" (the other side of "git fetch") used a 8kB buffer
but most of its payload came on 64kB "packets". The buffer size
has been enlarged so that such a packet fits.
* "git fetch" and "git pull" are now declared sparse-index clean.
Also "git ls-files" learns the "--sparse" option to help debugging.
* Similar message templates have been consolidated so that
translators need to work on fewer number of messages.
Fixes since v2.34
-----------------
* "git grep" looking in a blob that has non-UTF8 payload was
completely broken when linked with certain versions of PCREv2
library in the latest release.
* Other code cleanup, docfix, build fix, etc.
* "git pull" with any strategy when the other side is behind us
should succeed as it is a no-op, but doesn't.
* An earlier change in 2.34.0 caused JGit application (that abused
GIT_EDITOR mechanism when invoking "git config") to get stuck with
a SIGTTOU signal; it has been reverted.
* An earlier change that broke .gitignore matching has been reverted.
* Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
operation modes of the "git branch" command that do not need the
sort key information, no longer errors out by seeing a bogus sort
key.
(merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
* The compatibility implementation for unsetenv(3) were written to
mimic ancient, non-POSIX, variant seen in an old glibc; it has been
changed to return an integer to match the more modern era.
(merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
* The clean/smudge conversion code path has been prepared to better
work on platforms where ulong is narrower than size_t.
(merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
* Redact the path part of packfile URI that appears in the trace output.
(merge 0ba558ffb1 if/redact-packfile-uri later to maint).
* CI has been taught to catch some Unicode directional formatting
sequence that can be used in certain mischief.
(merge 0e7696c64d js/ci-no-directional-formatting later to maint).
* The "--date=format:<strftime>" gained a workaround for the lack of
system support for a non-local timezone to handle "%s" placeholder.
(merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
* The "merge" subcommand of "git jump" (in contrib/) silently ignored
pathspec and other parameters.
(merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
* The code to decode the length of packed object size has been
corrected.
(merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
* The advice message given by "git pull" when the user hasn't made a
choice between merge and rebase still said that the merge is the
default, which no longer is the case. This has been corrected.
(merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
* "git fetch", when received a bad packfile, can fail with SIGPIPE.
This wasn't wrong per-se, but we now detect the situation and fail
in a more predictable way.
(merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
* The function to cull a child process and determine the exit status
had two separate code paths for normal callers and callers in a
signal handler, and the latter did not yield correct value when the
child has caught a signal. The handling of the exit status has
been unified for these two code paths. An existing test with
flakiness has also been corrected.
(merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
* When a non-existent program is given as the pager, we tried to
reuse an uninitialized child_process structure and crashed, which
has been fixed.
(merge f917f57f40 em/missing-pager later to maint).
* The single-key-input mode in "git add -p" had some code to handle
keys that generate a sequence of input via ReadKey(), which did not
handle end-of-file correctly, which has been fixed.
(merge fc8a8126df cb/add-p-single-key-fix later to maint).
* "git rebase -x" added an unnecessary 'exec' instructions before
'noop', which has been corrected.
(merge cc9dcdee61 en/rebase-x-fix later to maint).
* When the "git push" command is killed while the receiving end is
trying to report what happened to the ref update proposals, the
latter used to die, due to SIGPIPE. The code now ignores SIGPIPE
to increase our chances to run the post-receive hook after it
happens.
(merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
* "git worktree add" showed "Preparing worktree" message to the
standard output stream, but when it failed, the message from die()
went to the standard error stream. Depending on the order the
stdio streams are flushed at the program end, this resulted in
confusing output. It has been corrected by sending all the chatty
messages to the standard error stream.
(merge b50252484f es/worktree-chatty-to-stderr later to maint).
* Coding guideline document has been updated to clarify what goes to
standard error in our system.
(merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
* The sparse-index/sparse-checkout feature had a bug in its use of
the matching code to determine which path is in or outside the
sparse checkout patterns.
(merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
* "git rebase -x" by mistake started exporting the GIT_DIR and
GIT_WORK_TREE environment variables when the command was rewritten
in C, which has been corrected.
(merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
* When "git log" implicitly enabled the "decoration" processing
without being explicitly asked with "--decorate" option, it failed
to read and honor the settings given by the "--decorate-refs"
option.
* "git fetch --set-upstream" did not check if there is a current
branch, leading to a segfault when it is run on a detached HEAD,
which has been corrected.
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
* Among some code paths that ask an yes/no question, only one place
gave a prompt that looked different from the others, which has been
updated to match what the others create.
(merge 0fc8ed154c km/help-prompt-fix later to maint).
* "git log --invert-grep --author=<name>" used to exclude commits
written by the given author, but now "--invert-grep" only affects
the matches made by the "--grep=<pattern>" option.
(merge 794c000267 rs/log-invert-grep-with-headers later to maint).
* "git grep --perl-regexp" failed to match UTF-8 characters with
wildcard when the pattern consists only of ASCII letters, which has
been corrected.
(merge 32e3e8bc55 rs/pcre2-utf later to maint).
* Certain sparse-checkout patterns that are valid in non-cone mode
led to segfault in cone mode, which has been corrected.
* Use of certain "git rev-list" options with "git fast-export"
created nonsense results (the worst two of which being "--reverse"
and "--invert-grep --grep=<foo>"). The use of "--first-parent" is
made to behave a bit more sensible than before.
(merge 726a228dfb ws/fast-export-with-revision-options later to maint).
* Perf tests were run with end-user's shell, but it has been
corrected to use the shell specified by $TEST_SHELL_PATH.
(merge 9ccab75608 ja/perf-use-specified-shell later to maint).
* Fix dependency rules to generate hook-list.h header file.
(merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).
* "git stash" by default triggers its "push" action, but its
implementation also made "git stash -h" to show short help only for
"git stash push", which has been corrected.
(merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).
* "git apply --3way" bypasses the attempt to do a three-way
application in more cases to address the regression caused by the
recent change to use direct application as a fallback.
(merge 34d607032c jz/apply-3-corner-cases later to maint).
* Fix performance-releated bug in "git subtree" (in contrib/).
(merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).
* Extend the guidance to choose the base commit to build your work
on, and hint/nudge contributors to read others' changes.
(merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).
* A corner case bug in the ort merge strategy has been corrected.
(merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).
* "git stash apply" forgot to attempt restoring untracked files when
it failed to restore changes to tracked ones.
(merge 71cade5a0b en/stash-df-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
(merge f9b2b6684d ja/doc-cleanup later to maint).
(merge 7d1b866778 jc/fix-first-object-walk later to maint).
(merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
(merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
(merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
(merge 42c456ff81 rs/mergesort later to maint).
(merge ad506e6780 tl/midx-docfix later to maint).
(merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
(merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
(merge 7d3fc7df70 jt/midx-doc-fix later to maint).
(merge 7b089120d9 hn/create-reflog-simplify later to maint).
(merge 9e12400da8 cb/mingw-gmtime-r later to maint).
(merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
(merge eafd6e7e55 ab/die-with-bug later to maint).
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
(merge 47ca93d071 ds/repack-fixlets later to maint).
(merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
(merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
(merge 999bba3e0b rs/daemon-plug-leak later to maint).
(merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
(merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
----------------------------------------------------------------
Changes since v2.34.0 are as follows:
Alex Henrie (1):
pull: don't say that merge is "the default strategy"
Anders Kaseorg (8):
fetch: lowercase error messages
receive-pack: lowercase error messages
branch: lowercase error messages
worktree: simplify find_shared_symref() memory ownership model
fetch: protect branches checked out in all worktrees
receive-pack: clean dead code from update_worktree()
receive-pack: protect current branch for bare repository worktree
branch: protect branches checked out in all worktrees
Calvin Wan (1):
protocol-v2.txt: align delim-pkt spec with usage
Carlo Marcelo Arenas Belón (4):
test-genzeros: allow more than 2G zeros in Windows
test-lib: add prerequisite for 64-bit platforms
mingw: avoid fallback for {local,gm}time_r()
add -p: avoid use of undefined $key when ReadKey -> EOF
Derrick Stolee (19):
dir: revert "dir: select directories correctly"
test-lib.sh: set GIT_TRACE2_EVENT_NESTING
t/t*: remove custom GIT_TRACE2_EVENT_NESTING
scalar: 'register' sets recommended config and starts maintenance
scalar: 'unregister' stops background maintenance
scalar: implement 'scalar list'
scalar: implement the `run` command
t1092: add deeper changes during a checkout
unpack-trees: use traverse_path instead of name
repack: respect kept objects with '--write-midx -b'
repack: make '--quiet' disable progress
fetch/pull: use the sparse index
ls-files: add --sparse option
t1092: replace 'read-cache --table' with 'ls-files --sparse'
t1091/t3705: remove 'test-tool read-cache --table'
test-read-cache: remove --table, --expand options
sparse-checkout: fix segfault on malformed patterns
sparse-checkout: fix OOM error with mixed patterns
sparse-checkout: refuse to add to bad patterns
Eli Schwartz (3):
pretty.c: rework describe options parsing for better extensibility
pretty: add tag option to %(describe)
pretty: add abbrev option to %(describe)
Elijah Newren (28):
sequencer: avoid adding exec commands for non-commit creating commands
update documentation for new zdiff3 conflictStyle
name-rev: prefer shorter names over following merges
sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
t2501: add various tests for removing the current working directory
setup: introduce startup_info->original_cwd
unpack-trees: refuse to remove startup_info->original_cwd
unpack-trees: add special cwd handling
symlinks: do not include startup_info->original_cwd in dir removal
clean: do not attempt to remove startup_info->original_cwd
rebase: do not attempt to remove startup_info->original_cwd
stash: do not attempt to remove startup_info->original_cwd
dir: avoid incidentally removing the original_cwd in remove_path()
dir: new flag to remove_dir_recurse() to spare the original_cwd
t2501: simplify the tests since we can now assume desired behavior
sparse-checkout: pass use_stdin as a parameter instead of as a global
sparse-checkout: break apart functions for sparse_checkout_(set|add)
sparse-checkout: add sanity-checks on initial sparsity state
sparse-checkout: disallow --no-stdin as an argument to set
sparse-checkout: split out code for tweaking settings config
sparse-checkout: enable `set` to initialize sparse-checkout mode
sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
git-sparse-checkout.txt: update to document init/set/reapply changes
Documentation: clarify/correct a few sparsity related statements
clone: avoid using deprecated `sparse-checkout init`
sparse-checkout: remove stray trailing space
merge-ort: fix bug with renormalization and rename/delete conflicts
stash: do not return before restoring untracked files
Enzo Matsumiya (1):
pager: fix crash when pager program doesn't exist
Eric Sunshine (38):
worktree: stop being overly intimate with run_command() internals
CodingGuidelines: document which output goes to stdout vs. stderr
worktree: send "chatty" messages to stderr
git-worktree.txt: add missing `-v` to synopsis for `worktree list`
t/lib-pager: use sane_unset() to avoid breaking &&-chain
t1010: fix unnoticed failure on Windows
t1020: avoid aborting entire test script when one test fails
t4202: clarify intent by creating expected content less cleverly
t5516: drop unnecessary subshell and command invocation
t6300: make `%(raw:size) --shell` test more robust
t9107: use shell parameter expansion to avoid breaking &&-chain
tests: simplify construction of large blocks of text
tests: use test_write_lines() to generate line-oriented output
tests: fix broken &&-chains in compound statements
tests: fix broken &&-chains in `$(...)` command substitutions
tests: fix broken &&-chains in `{...}` groups
tests: apply modern idiom for signaling test failure
tests: apply modern idiom for exiting loop upon failure
tests: simplify by dropping unnecessary `for` loops
t0000-t3999: detect and signal failure within loop
t4000-t4999: detect and signal failure within loop
t5000-t5999: detect and signal failure within loop
t6000-t9999: detect and signal failure within loop
t/chainlint/*.test: don't use invalid shell syntax
t/chainlint/*.test: fix invalid test cases due to mixing quote types
t/chainlint/*.test: generalize self-test commentary
t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
t/Makefile: optimize chainlint self-test
chainlint.sed: improve ?!AMP?! placement accuracy
chainlint.sed: improve ?!SEMI?! placement accuracy
chainlint.sed: tolerate harmless ";" at end of last line in block
chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
chainlint.sed: drop subshell-closing ">" annotation
chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
chainlint.sed: don't mistake `<< word` in string as here-doc operator
chainlint.sed: stop throwing away here-doc tags
chainlint.sed: swallow comments consistently
chainlint.sed: stop splitting "(..." into separate lines "(" and "..."
Eric Wong (2):
tests: disable fsync everywhere
cbtree: remove broken and unused cb_unlink
Erwin Villejo (1):
pull: should be noop when already-up-to-date
Fabian Stelzer (14):
ssh signing: support non ssh-* keytypes
ssh signing: make sign/amend test more resilient
test-lib: show missing prereq summary
test-lib: introduce required prereq for test runs
test-lib: make BAIL_OUT() work in tests and prereq
t/fmt-merge-msg: do not redirect stderr
t/fmt-merge-msg: make gpgssh tests more specific
ssh signing: use sigc struct to pass payload
ssh signing: add key lifetime test prereqs
ssh signing: make verify-commit consider key lifetime
ssh signing: make git log verify key lifetime
ssh signing: make verify-tag consider key lifetime
ssh signing: make fmt-merge-msg consider key lifetime
ssh signing: verify ssh-keygen in test prereq
Glen Choo (5):
t5516: add test case for pushing remote refspecs
remote: move static variables into per-repository struct
remote: use remote_state parameter internally
remote: remove the_repository->remote_state from static methods
remote: die if branch is not found in repository
Greg Hurrell (1):
docs: add missing colon to Documentation/config/gpg.txt
Han-Wen Nienhuys (48):
hash.h: provide constants for the hash IDs
reftable: add LICENSE
reftable: add error related functionality
reftable: utility functions
reftable: add blocksource, an abstraction for random access reads
reftable: (de)serialization for the polymorphic record type.
Provide zlib's uncompress2 from compat/zlib-compat.c
reftable: reading/writing blocks
reftable: a generic binary tree implementation
reftable: write reftable files
reftable: generic interface to tables
reftable: read reftable files
reftable: reftable file level tests
reftable: add a heap-based priority queue for reftable records
reftable: add merged table view
reftable: implement refname validation
reftable: implement stack, a mutable database of reftable files.
reftable: add dump utility
Add "test-tool dump-reftable" command.
branch tests: test for errno propagating on failing read
refs API: make refs_read_raw_ref() not set errno
refs API: make parse_loose_ref_contents() not set errno
refs: drop force_create argument of create_reflog API
t1404: mark directory/file conflict tests with REFFILES
show-branch: show reflog message
test-ref-store: don't add newline to reflog message
t1405: check for_each_reflog_ent_reverse() more thoroughly
test-ref-store: tweaks to for-each-reflog-ent format
refs/debug: trim trailing LF from reflog message
test-ref-store: remove force-create argument for create-reflog
test-ref-store: parse symbolic flag constants
test-ref-store: plug memory leak in cmd_delete_refs
refs: update comment.
refs: introduce REF_SKIP_OID_VERIFICATION flag
refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
t1430: remove refs using test-tool
t1430: create valid symrefs using test-helper
test-ref-store: print hash algorithm
t5540: require REFFILES
t5550: require REFFILES
t7004: create separate tags for different tests
t7004: use "test-tool ref-store" for reflog inspection
refs: pass gitdir to packed_ref_store_create
refs: print error message in debug output
refs: centralize initialization of the base ref_store.
reftable: fix typo in header
reftable: signal overflow
reftable: support preset file mode for writing
Hans Krentel (hakre) (1):
ci(check-whitespace): update stale file top comments
Ivan Frade (2):
fetch-pack: redact packfile urls in traces
http-fetch: redact url on die() message
Jacob Vosmaer (1):
upload-pack.c: increase output buffer size
James Limbouris (1):
subtree: fix argument handling in check_parents
Jean-Noël Avila (20):
doc: fix git credential synopsis
doc: split placeholders as individual tokens
doc: express grammar placeholders between angle brackets
doc: use only hyphens as word separators in placeholders
doc: git-ls-files: express options as optional alternatives
doc: use three dots for indicating repetition instead of star
doc: uniformize <URL> placeholders' case
doc: git-http-push: describe the refs as pattern pairs
doc: git-init: clarify file modes in octal.
i18n: refactor "foo and bar are mutually exclusive"
i18n: refactor "%s, %s and %s are mutually exclusive"
i18n: turn "options are incompatible" into "cannot be used together"
i18n: standardize "cannot open" and "cannot read"
i18n: tag.c factorize i18n strings
i18n: factorize "--foo requires --bar" and the like
i18n: factorize "no directory given for --foo"
i18n: refactor "unrecognized %(foo) argument" strings
i18n: factorize "--foo outside a repository"
i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
i18n: turn even more messages into "cannot be used together" ones
Jeff King (18):
urlmatch: add underscore to URL_HOST_CHARS
strbuf_addftime(): handle "%s" manually
test_bitmap_hashes(): handle repository without bitmaps
generate-cmdlist.sh: do not shell out to "sed"
git-jump: pass "merge" arguments to ls-files
t5319: corrupt more bytes of the midx checksum
refs: work around gcc-11 warning with REF_HAVE_NEW
fetch-pack: ignore SIGPIPE when writing to index-pack
run-command: unify signal and regular logic for wait_or_whine()
t7006: clean up SIGPIPE handling in trace2 tests
t7006: simplify exit-code checks for sigpipe tests
log: handle --decorate-refs with userformat "%d"
log: load decorations with --simplify-by-decoration
xdiff: drop CMP_ENV macro from xhistogram
xdiff: drop xpparam_t parameter from histogram cmp_recs()
xdiff: drop unused flags parameter from recs_match
config.mak.dev: specify -std=gnu99 for gcc/clang
doc/config: mark ssh allowedSigners example as literal
Jerry Zhang (3):
git-apply: add --quiet flag
git-apply: add --allow-empty flag
git-apply: skip threeway in add / rename cases
Joel Holdsworth (9):
git-p4: use with statements to close files after use in patchRCSKeywords
git-p4: pre-compile RCS keyword regexes
git-p4: add raw option to read_pipelines
git-p4: open temporary patch file for write only
git-p4: resolve RCS keywords in bytes not utf-8
git-p4: print size values in appropriate units
git-p4: show progress as an integer
git-p4: remove "debug" verb
git-p4: remove "rollback" verb
Johannes Altmanninger (1):
t/perf: do not run tests in user's $SHELL
Johannes Schindelin (14):
test-tool genzeros: generate large amounts of data more efficiently
git-compat-util: introduce more size_t helpers
ci: disallow directional formatting
scalar: add a README with a roadmap
scalar: create a rudimentary executable
scalar: start documenting the command
scalar: create test infrastructure
scalar: let 'unregister' handle a deleted enlistment directory gracefully
scalar: implement the `clone` subcommand
scalar: teach 'clone' to support the --single-branch option
scalar: allow reconfiguring an existing enlistment
scalar: teach 'reconfigure' to optionally handle all registered enlistments
scalar: implement the `version` command
tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed
Johannes Sixt (2):
generate-cmdlist.sh: spawn fewer processes
generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
John Cai (2):
docs: fix places that break compilation in MyFirstObjectWalk
docs: add headers in MyFirstObjectWalk
Jonathan Tan (2):
packfile: avoid overflowing shift during decode
Doc: no midx and partial clone relation
Josh Steadmon (5):
trace2: disable tr2_dst before warning on write errors
branch: accept multiple upstream branches for tracking
branch: add flags and config to inherit tracking
config: require lowercase for branch.*.autosetupmerge
l10n: README: call more attention to plural strings
Junio C Hamano (25):
for-each-ref: delay parsing of --sort=<atom> options
MyFirstContribution: teach to use "format-patch --base=auto"
unsetenv(3) returns int, not void
init doc: --shared=0xxx does not give umask but perm bits
Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
0th batch for early fixes
Revert "editor: save and reset terminal after calling EDITOR"
A bit more regression fixes
Git 2.34.1
refs: document callback for reflog-ent iterators
The first batch to start the current cycle
revision: use C99 declaration of variable in for() loop
grep: clarify what `grep.patternType=default` means
flex-array: simplify compiler-specific workaround
The second batch
The third batch
t4204 is not sanitizer clean at all
format-patch: mark rev_info with UNLEAK
merge: allow to pretend a merge is made into a different branch
The fourth batch
The fifth batch
SubmittingPatchs: clarify choice of base and testing
The sixth batch
The seventh batch
Git 2.35-rc0
Kashav Madan (1):
help: make auto-correction prompt more consistent
Lessley Dennington (7):
git: ensure correct git directory setup with -h
commit-graph: return if there is no git directory
test-read-cache: set up repo after git directory
repo-settings: prepare_repo_settings only in git repos
diff: replace --staged with --cached in t1092 tests
diff: enable and test the sparse index
blame: enable and test the sparse index
Lénaïc Huard (1):
grep: align default colors with GNU grep ones
Marc Strapetz (1):
t/README: fix typo
Matt Cooper (4):
t1051: introduce a smudge filter test for extremely large files
odb: teach read_blob_entry to use size_t
odb: guard against data loss checking out a huge file
clean/smudge: allow clean filters to process extremely large files
Matthew John Cheetham (1):
scalar: implement the `delete` command
Mugdha Pattnaik (1):
submodule: absorb git dir instead of dying on deinit
Neeraj Singh (2):
tmp-objdir: new API for creating temporary writable databases
tmp-objdir: disable ref updates when replacing the primary odb
Philip Oakley (3):
repack.c: LLP64 compatibility, upcast unity for left shift
diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
object-file.c: LLP64 compatibility, upcast unity for left shift
Philippe Blain (1):
SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section
Phillip Wood (19):
diff histogram: intern strings
xdiff: avoid unnecessary memory allocations
xdiff: simplify comparison
xdiff: implement a zealous diff3, or "zdiff3"
diff --color-moved: add perf tests
diff --color-moved: clear all flags on blocks that are too short
diff --color-moved: factor out function
diff --color-moved: rewind when discarding pmb
diff --color-moved=zebra: fix alternate coloring
diff --color-moved: avoid false short line matches and bad zebra coloring
diff: simplify allow-indentation-change delta calculation
diff --color-moved-ws=allow-indentation-change: simplify and optimize
diff --color-moved: call comparison function directly
diff --color-moved: unify moved block growth functions
diff --color-moved: shrink potential moved blocks as we go
diff --color-moved: stop clearing potential moved blocks
diff --color-moved-ws=allow-indentation-change: improve hash lookups
diff: use designated initializers for emitted_diff_symbol
diff --color-moved: intern strings
René Scharfe (6):
mergesort: avoid left shift overflow
log: let --invert-grep only invert --grep
t4202: fix patternType setting in --invert-grep test
daemon: plug memory leak on overlong path
grep/pcre2: use PCRE2_UTF even with ASCII patterns
grep/pcre2: factor out literal variable
Robert Estelle (3):
color: add missing GIT_COLOR_* white/black constants
color: support "default" to restore fg/bg color
color: allow colors to be prefixed with "reset"
Robin Jarry (1):
receive-pack: ignore SIGPIPE while reporting status to client
Sergey Organov (2):
stash: implement '--staged' option for 'push' and 'save'
stash: get rid of unused argument in stash_staged()
Taylor Blau (10):
midx.c: clean up chunkfile after reading the MIDX
midx.c: don't leak MIDX from verify_midx_file
t/helper/test-read-midx.c: free MIDX within read_midx_file()
builtin/pack-objects.c: don't leak memory via arguments
builtin/repack.c: avoid leaking child arguments
builtin/multi-pack-index.c: don't leak concatenated options
midx.c: write MIDX filenames to strbuf
pack-bitmap.c: don't leak type-level bitmaps
pack-bitmap.c: more aggressively free in free_bitmap_index()
packfile: make `close_pack_revindex()` static
Teng Long (1):
midx: fix a formatting issue in "multi-pack-index.txt"
Thiago Perrotta (2):
send-email: programmatically generate bash completions
send-email docs: add format-patch options
Thomas Weißschuh (1):
var: add GIT_DEFAULT_BRANCH variable
Victoria Dye (12):
reset: rename is_missing to !is_in_reset_tree
reset: preserve skip-worktree bit in mixed reset
sparse-index: update command for expand/collapse test
test-read-cache.c: prepare_repo_settings after config init
sparse-index: avoid unnecessary cache tree clearing
sparse-index: add ensure_correct_sparsity function
sparse-index: update do_read_index to ensure correct sparsity
reset: expand test coverage for sparse checkouts
reset: integrate with sparse index
reset: make sparse-aware (except --mixed)
reset: make --mixed sparse-aware
unpack-trees: improve performance of next_cache_entry
William Sprent (1):
fast-export: fix surprising behavior with --first-parent
Yoichi Nakayama (1):
completion: add human and auto: date format
brian m. carlson (1):
git-compat-util: add a test balloon for C99 support
Ævar Arnfjörð Bjarmason (86):
refs API: add a version of refs_resolve_ref_unsafe() with "errno"
refs API: make refs_rename_ref_available() static
reflog tests: add --updateref tests
refs/files: remove "name exist?" check in lock_ref_oid_basic()
refs API: remove refs_read_ref_full() wrapper
refs API: make resolve_gitlink_ref() not set errno
refs API: make loose_fill_ref_dir() not set errno
refs API: make files_copy_or_rename_ref() et al not set errno
refs API: ignore errno in worktree.c's add_head_info()
refs API: ignore errno in worktree.c's find_shared_symref()
refs tests: ignore ignore errno in test-ref-store helper
refs API: make refs_resolve_refdup() not set errno
refs API: make refs_ref_exists() not set errno
refs API: make resolve_ref_unsafe() not set errno
refs API: make expand_ref() & repo_dwim_log() not set errno
refs API: don't expose "errno" in run_transaction_hook()
refs API: post-migration API renaming [1/2]
refs API: post-migration API renaming [2/2]
Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
git-instaweb: unconditionally assume that gitweb is mod_perl capable
git-sh-setup: remove unused sane_egrep() function
git-sh-setup: remove "sane_grep", it's not needed anymore
leak tests: mark a read-tree test as passing SANITIZE=leak
leak tests: mark "sort" test as passing SANITIZE=leak
leak tests: mark most gettext tests as passing with SANITIZE=leak
leak tests: mark some misc tests as passing with SANITIZE=leak
leak tests: mark some rev-list tests as passing with SANITIZE=leak
leak tests: mark some rev-parse tests as passing with SANITIZE=leak
leak tests: mark some update-index tests as passing with SANITIZE=leak
leak tests: mark some notes tests as passing with SANITIZE=leak
leak tests: mark some apply tests as passing with SANITIZE=leak
leak tests: mark some diff tests as passing with SANITIZE=leak
leak tests: mark some add tests as passing with SANITIZE=leak
leak tests: mark some clone tests as passing with SANITIZE=leak
leak tests: mark some status tests as passing with SANITIZE=leak
leak tests: mark some config tests as passing with SANITIZE=leak
leak tests: mark some fast-import tests as passing with SANITIZE=leak
command-list.txt: sort with "LC_ALL=C sort"
generate-cmdlist.sh: trivial whitespace change
generate-cmdlist.sh: don't call get_categories() from category_list()
generate-cmdlist.sh: run "grep | sort", not "sort | grep"
generate-cmdlist.sh: stop sorting category lines
generate-cmdlist.sh: replace "grep' invocation with a shell version
generate-cmdlist.sh: don't parse command-list.txt thrice
parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
checkout: fix "branch info" memory leaks
CI: remove Travis CI support
CI: use shorter names that fit in UX tooltips
CI: rename the "Linux32" job to lower-case "linux32"
CI: use "$runs_on_pool", not "$jobname" to select packages & config
CI: don't run "make test" twice in one job
upload-archive: use regular "struct child_process" pattern
run-command API users: use strvec_pushv(), not argv assignment
run-command tests: use strvec_pushv(), not argv assignment
run-command API users: use strvec_pushl(), not argv construction
run-command API users: use strvec_push(), not argv construction
run-command API: remove "argv" member, always use "args"
difftool: use "env_array" to simplify memory management
run-command API: remove "env" member, always use "env_array"
common-main.c: call exit(), don't return
pack-objects: use BUG(...) not die("BUG: ...")
strbuf.h: use BUG(...) not die("BUG: ...")
pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
usage.c: add a die_message() routine
usage.c API users: use die_message() for "fatal :" + exit 128
usage.c API users: use die_message() for error() + exit 128
gc: return from cmd_gc(), don't call exit()
usage.c + gc: add and use a die_message_errno()
config API: use get_error_routine(), not vreportf()
pull, fetch: fix segfault in --set-upstream option
stash: don't show "git stash push" usage on bad "git stash" usage
reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
reflog expire: narrow scope of "cb" in cmd_reflog_expire()
reflog: change one->many worktree->refnames to use a string_list
reflog expire: use "switch" over enum values
reflog expire: refactor & use "tip_commit" only for UE_NORMAL
reflog expire: don't use lookup_commit_reference_gently()
reflog: reduce scope of "struct rev_info"
refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
reflog + refs-backend: move "verbose" out of the backend
Makefile: correct the dependency graph of hook-list.h
Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
Makefile: don't invoke msgfmt with --statistics
Øystein Walle (2):
status: count stash entries in separate function
status: print stash info with --porcelain=v2 --show-stash
徐沛文 (Aleen) (3):
doc: git-format-patch: describe the option --always
am: support --empty=<option> to handle empty patches
am: support --allow-empty to record specific empty patches
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.34.0-rc1
@ 2021-11-03 23:17 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-11-03 23:17 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.34.0-rc1 is now available for testing at
the usual places. It is comprised of 778 non-merge commits since
v2.33.0, contributed by 90 people, 27 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.34.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.33.0 are as follows.
Welcome to the Git development community!
Alan Blotz, Azeem Bande-Ali, Dr. Matthias St. Pierre, Eli
Schwartz, git.mexon@spamgourmet.com, Glen Choo, Hamza Mahfooz,
Joel Klinghed, Johannes Altmanninger, Jonas Kittner, Kim
Altintop, Kyle Zhao, Mahi Kolla, Marvin Häuser, Mickey Endito,
Rob Browning, Robert Estelle, Robert Leftwich, Tal Kelrich,
Tassilo Horn, Thomas De Zeeuw, USAMI Kenta, Victor Gambier,
Victoria Dye, Wesley Schwengle, Xingman Chen, and Zoker.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Andrzej
Hunt, Atharva Raykar, Bagas Sanjaya, Ben Boeckel, brian
m. carlson, Carlo Arenas, Carlo Marcelo Arenas Belón, Christian
Couder, David Aguilar, David Turner, Derrick Stolee, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Emir Sarı,
Eric Sunshine, Eric Wong, Fabian Stelzer, Felipe Contreras,
Greg Hurrell, Han-Wen Nienhuys, Hariom Verma, Jacob Keller,
Jacob Vosmaer, Jean-Noël Avila, Jeff Hostetler, Jeff King,
Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Kaartic Sivaraam,
Lénaïc Huard, Martin Ågren, Matheus Tavares, Matheus Tavares
Bernardino, Matthias Aßhauer, Mike Hommey, Miriam Rubio, Orgad
Shaneh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Pranit Bauva, Randall S. Becker, René Scharfe,
Sergey Organov, Shourya Shukla, SZEDER Gábor, Takashi Iwai,
Tanushree Tumane, Taylor Blau, Teng Long, Todd Zullinger,
Ulrich Windl, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.34 Release Notes (draft)
==============================
Updates since Git 2.33
----------------------
Backward compatibility notes
* The "--preserve-merges" option of "git rebase" has been removed.
UI, Workflows & Features
* Pathname expansion (like "~username/") learned a way to specify a
location relative to Git installation (e.g. its $sharedir which is
$(prefix)/share), with "%(prefix)".
* Use `ort` instead of `recursive` as the default merge strategy.
* The userdiff pattern for "java" language has been updated.
* "git rebase" by default skips changes that are equivalent to
commits that are already in the history the branch is rebased onto;
give messages when this happens to let the users be aware of
skipped commits, and also teach them how to tell "rebase" to keep
duplicated changes.
* The advice message that "git cherry-pick" gives when it asks
conflicted replay of a commit to be resolved by the end user has
been updated.
* After "git clone --recurse-submodules", all submodules are cloned
but they are not by default recursed into by other commands. With
submodule.stickyRecursiveClone configuration set, submodule.recurse
configuration is set to true in a repository created by "clone"
with "--recurse-submodules" option.
* The logic for auto-correction of misspelt subcommands learned to go
interactive when the help.autocorrect configuration variable is set
to 'prompt'.
* "git maintenance" scheduler learned to use systemd timers as a
possible backend.
* "git diff --submodule=diff" showed failure from run_command() when
trying to run diff inside a submodule, when the user manually
removes the submodule directory.
* "git bundle unbundle" learned to show progress display.
* In cone mode, the sparse-index code path learned to remove ignored
files (like build artifacts) outside the sparse cone, allowing the
entire directory outside the sparse cone to be removed, which is
especially useful when the sparse patterns change.
* Taking advantage of the CGI interface, http-backend has been
updated to enable protocol v2 automatically when the other side
asks for it.
* The credential-cache helper has been adjusted to Windows.
* The error in "git help no-such-git-command" is handled better.
* The unicode character width table (used for output alignment) has
been updated.
* The ref iteration code used to optionally allow dangling refs to be
shown, which has been tightened up.
* "git add", "git mv", and "git rm" have been adjusted to avoid
updating paths outside of the sparse-checkout definition unless
the user specifies a "--sparse" option.
* "git repack" has been taught to generate multi-pack reachability
bitmaps.
* "git fsck" has been taught to report mismatch between expected and
actual types of an object better.
* Use ssh public crypto for object and push-cert signing.
* "git log --grep=string --author=name" learns to highlight hits just
like "git grep string" does.
Performance, Internal Implementation, Development Support etc.
* "git bisect" spawned "git show-branch" only to pretty-print the
title of the commit after checking out the next version to be
tested; this has been rewritten in C.
* "git add" can work better with the sparse index.
* Support for ancient versions of cURL library (pre 7.19.4) has been
dropped.
* A handful of tests that assumed implementation details of files
backend for refs have been cleaned up.
* trace2 logs learned to show parent process name to see in what
context Git was invoked.
* Loading of ref tips to prepare for common ancestry negotiation in
"git fetch-pack" has been optimized by taking advantage of the
commit graph when available.
* Remind developers that the userdiff patterns should be kept simple
and permissive, assuming that the contents they apply are always
syntactically correct.
* The current implementation of GIT_TEST_FAIL_PREREQS is broken in
that checking for the lack of a prerequisite would not work. Avoid
the use of "if ! test_have_prereq X" in a test script.
* The revision traversal API has been optimized by taking advantage
of the commit-graph, when available, to determine if a commit is
reachable from any of the existing refs.
* "git fetch --quiet" optimization to avoid useless computation of
info that will never be displayed.
* Callers from older advice_config[] based API has been updated to
use the newer advice_if_enabled() and advice_enabled() API.
* Teach "test_pause" and "debug" helpers to allow using the HOME and
TERM environment variables the user usually uses.
* "make INSTALL_STRIP=-s install" allows the installation step to use
"install -s" to strip the binaries as they get installed.
* Code that handles large number of refs in the "git fetch" code
path has been optimized.
* The reachability bitmap file used to be generated only for a single
pack, but now we've learned to generate bitmaps for history that
span across multiple packfiles.
* The code to make "git grep" recurse into submodules has been
updated to migrate away from the "add submodule's object store as
an alternate object store" mechanism (which is suboptimal).
* The tracing of process ancestry information has been enhanced.
* Reduce number of write(2) system calls while sending the
ref advertisement.
* Update the build procedure to use the "-pedantic" build when
DEVELOPER makefile macro is in effect.
* Large part of "git submodule add" gets rewritten in C.
* The run-command API has been updated so that the callers can easily
ask the file descriptors open for packfiles to be closed immediately
before spawning commands that may trigger auto-gc.
* An oddball OPTION_ARGUMENT feature has been removed from the
parse-options API.
* The mergesort implementation used to sort linked list has been
optimized.
* Remove external declaration of functions that no longer exist.
* "git multi-pack-index write --bitmap" learns to propagate the
hashcache from original bitmap to resulting bitmap.
* CI learns to run the leak sanitizer builds.
* "git grep --recurse-submodules" takes trees and blobs from the
submodule repository, but the textconv settings when processing a
blob from the submodule is not taken from the submodule repository.
A test is added to demonstrate the issue, without fixing it.
* Teach "git help -c" into helping the command line completion of
configuration variables.
* When "git cmd -h" shows more than one line of usage text (e.g.
the cmd subcommand may take sub-sub-command), parse-options API
learned to align these lines, even across i18n/l10n.
* Prevent "make sparse" from running for the source files that
haven't been modified.
* The codepath to write a new version of .midx multi-pack index files
has learned to release the mmaped memory holding the current
version of .midx before removing them from the disk, as some
platforms do not allow removal of a file that still has mapping.
* A new feature has been added to abort early in the test framework.
Fixes since v2.33
-----------------
* Input validation of "git pack-objects --stdin-packs" has been
corrected.
* Bugfix for common ancestor negotiation recently introduced in "git
push" code path.
* "git pull" had various corner cases that were not well thought out
around its --rebase backend, e.g. "git pull --ff-only" did not stop
but went ahead and rebased when the history on other side is not a
descendant of our history. The series tries to fix them up.
* "git apply" miscounted the bytes and failed to read to the end of
binary hunks.
* "git range-diff" code clean-up.
* "git commit --fixup" now works with "--edit" again, after it was
broken in v2.32.
* Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
new version has a blocker bug for that architecture.
* Checking out all the paths from HEAD during the last conflicted
step in "git rebase" and continuing would cause the step to be
skipped (which is expected), but leaves MERGE_MSG file behind in
$GIT_DIR and confuses the next "git commit", which has been
corrected.
* Various bugs in "git rebase -r" have been fixed.
* mmap() imitation used to call xmalloc() that dies upon malloc()
failure, which has been corrected to just return an error to the
caller to be handled.
* "git diff --relative" segfaulted and/or produced incorrect result
when there are unmerged paths.
* The delayed checkout code path in "git checkout" etc. were chatty
even when --quiet and/or --no-progress options were given.
* "git branch -D <branch>" used to refuse to remove a broken branch
ref that points at a missing commit, which has been corrected.
* Build update for Apple clang.
* The parser for the "--nl" option of "git column" has been
corrected.
* "git upload-pack" which runs on the other side of "git fetch"
forgot to take the ref namespaces into account when handling
want-ref requests.
* The sparse-index support can corrupt the index structure by storing
a stale and/or uninitialized data, which has been corrected.
* Buggy tests could damage repositories outside the throw-away test
area we created. We now by default export GIT_CEILING_DIRECTORIES
to limit the damage from such a stray test.
* Even when running "git send-email" without its own threaded
discussion support, a threading related header in one message is
carried over to the subsequent message to result in an unwanted
threading, which has been corrected.
* The output from "git fast-export", when its anonymization feature
is in use, showed an annotated tag incorrectly.
* Doc update plus improved error reporting.
* Recent "diff -m" changes broke "gitk", which has been corrected.
* Regression fix.
* The "git apply -3" code path learned not to bother the lower level
merge machinery when the three-way merge can be trivially resolved
without the content level merge. This fixes a regression caused by
recent "-3way first and fall back to direct application" change.
* The code that optionally creates the *.rev reverse index file has
been optimized to avoid needless computation when it is not writing
the file out.
* "git range-diff -I... <range> <range>" segfaulted, which has been
corrected.
* The order in which various files that make up a single (conceptual)
packfile has been reevaluated and straightened up. This matters in
correctness, as an incomplete set of files must not be shown to a
running Git.
* The "mode" word is useless in a call to open(2) that does not
create a new file. Such a call in the files backend of the ref
subsystem has been cleaned up.
* "git update-ref --stdin" failed to flush its output as needed,
which potentially led the conversation to a deadlock.
* When "git am --abort" fails to abort correctly, it still exited
with exit status of 0, which has been corrected.
* Correct nr and alloc members of strvec struct to be of type size_t.
* "git stash", where the tentative change involves changing a
directory to a file (or vice versa), was confused, which has been
corrected.
* "git clone" from a repository whose HEAD is unborn into a bare
repository didn't follow the branch name the other side used, which
is corrected.
* "git cvsserver" had a long-standing bug in its authentication code,
which has finally been corrected (it is unclear and is a separate
question if anybody is seriously using it, though).
* "git difftool --dir-diff" mishandled symbolic links.
* Sensitive data in the HTTP trace were supposed to be redacted, but
we failed to do so in HTTP/2 requests.
* "make clean" has been updated to remove leftover .depend/
directories, even when it is not told to use them to compute header
dependencies.
* Protocol v0 clients can get stuck parsing a malformed feature line.
* A few kinds of changes "git status" can show were not documented.
(merge d2a534c515 ja/doc-status-types-and-copies later to maint).
* The mergesort implementation used to sort linked list has been
optimized.
(merge c90cfc225b rs/mergesort later to maint).
* An editor session launched during a Git operation (e.g. during 'git
commit') can leave the terminal in a funny state. The code path
has updated to save the terminal state before, and restore it
after, it spawns an editor.
(merge 3d411afabc cm/save-restore-terminal later to maint).
* "git cat-file --batch" with the "--batch-all-objects" option is
supposed to iterate over all the objects found in a repository, but
it used to translate these object names using the replace mechanism,
which defeats the point of enumerating all objects in the repository.
This has been corrected.
(merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).
* Recent sparse-index work broke safety against attempts to add paths
with trailing slashes to the index, which has been corrected.
(merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).
* The "--color-lines" and "--color-by-age" options of "git blame"
have been missing, which are now documented.
(merge 8c32856133 bs/doc-blame-color-lines later to maint).
* The PATH used in CI job may be too wide and let incompatible dlls
to be grabbed, which can cause the build&test to fail. Tighten it.
(merge 7491ef6198 js/windows-ci-path-fix later to maint).
* Avoid performance measurements from getting ruined by gc and other
housekeeping pauses interfering in the middle.
(merge be79131a53 rs/disable-gc-during-perf-tests later to maint).
* Stop "git add --dry-run" from creating new blob and tree objects.
(merge e578d0311d rs/add-dry-run-without-objects later to maint).
* "git commit" gave duplicated error message when the object store
was unwritable, which has been corrected.
(merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).
* Recent sparse-index addition, namely any use of index_name_pos(),
can expand sparse index entries and breaks any code that walks
cache-tree or existing index entries. One such instance of such a
breakage has been corrected.
* The xxdiff difftool backend can exit with status 128, which the
difftool-helper that launches the backend takes as a significant
failure, when it is not significant at all. Work it around.
(merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).
* Improve test framework around unwritable directories.
(merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).
* "git push" client talking to an HTTP server did not diagnose the
lack of the final status report from the other side correctly,
which has been corrected.
(merge c5c3486f38 jk/http-push-status-fix later to maint).
* Update "git archive" documentation and give explicit mention on the
compression level for both zip and tar.gz format.
(merge c4b208c309 bs/archive-doc-compression-level later to maint).
* Drop "git sparse-index" from the list of common commands.
(merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).
* "git branch -c/-m new old" was not described to copy config, which
has been corrected.
(merge 8252ec300e jc/branch-copy-doc later to maint).
* Squelch over-eager warning message added during this cycle.
(merge 9e8fe7b1c7 jk/log-warn-on-bogus-encoding later to maint).
* Fix long-standing shell syntax error in the completion script.
(merge 46b0585286 re/completion-fix-test-equality later to maint).
* Teach "git commit-graph" command not to allow using replace objects
at all, as we do not use the commit-graph at runtime when we see
object replacement.
(merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f188160be9 ab/bundle-remove-verbose-option later to maint).
(merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
(merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
(merge dd20e4a6db ab/make-compdb-fix later to maint).
(merge 6ffb990dc4 os/status-docfix later to maint).
(merge 100c2da2d3 rs/p3400-lose-tac later to maint).
(merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
(merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
(merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
(merge ec9a37d69b ab/pkt-line-cleanup later to maint).
(merge 8650c6298c ab/fix-make-lint-docs later to maint).
(merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
(merge 6b615dbece ks/submodule-add-message-fix later to maint).
(merge 82a57cd13f ma/doc-git-version later to maint).
(merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).
(merge 559664c792 ab/test-lib later to maint).
----------------------------------------------------------------
Changes since v2.33.0 are as follows:
Alex Henrie (1):
pull: abort if --ff-only is given and fast-forwarding is impossible
Andrzej Hunt (1):
connect: also update offset for features without values
Atharva Raykar (11):
submodule--helper: introduce add-config subcommand
submodule--helper: add options for compute_submodule_clone_url()
submodule--helper: refactor resolve_relative_url() helper
submodule--helper: remove repeated code in sync_submodule()
dir: libify and export helper functions from clone.c
submodule--helper: convert the bulk of cmd_add() to C
submodule--helper: remove add-clone subcommand
submodule--helper: remove add-config subcommand
submodule--helper: remove resolve-relative-url subcommand
submodule--helper: rename compute_submodule_clone_url()
submodule--helper: run update procedures from C
Azeem Bande-Ali (1):
help.c: help.autocorrect=prompt waits for user action
Bagas Sanjaya (8):
make: add INSTALL_STRIP option variable
Documentation: fix default directory of git bugreport -o
ls-files: use imperative mood for -X and -z option description
difftool: fix word spacing in the usage strings
blame: describe default output format
bisect--helper: add space between colon and following sentence
blame: document --color-* options
archive: describe compression level option
Ben Boeckel (2):
advice: add enum variants for missing advice variables
advice: remove read uses of most global `advice_` variables
Carlo Marcelo Arenas Belón (23):
build: update detect-compiler for newer Xcode version
builtin/merge: avoid -Wformat-extra-args from ancient Xcode
ci: run a pedantic build as part of the GitHub workflow
ci: update freebsd 12 cirrus job
ci: use upload-artifacts v1 for dockerized jobs
remote: avoid -Wunused-but-set-variable in gcc with -DNDEBUG
win32: allow building with pedantic mode enabled
developer: enable pedantic by default
t0301: fixes for windows compatibility
credential-cache: check for windows specific errors
git-compat-util: include declaration for unix sockets in windows
tree-diff: fix leak when not HAVE_ALLOCA_H
t0000: avoid masking git exit value through pipes
git-cvsserver: use crypt correctly to compare password hashes
git-cvsserver: protect against NULL in crypt(3)
Documentation: cleanup git-cvsserver
unicode: update the width tables to Unicode 14
simple-ipc: move definition of ipc_active_state outside of ifdef
lazyload.h: use an even more generic function pointer than FARPROC
Makefile: restrict -Wpedantic and -Wno-pedantic-ms-format better
terminal: teach git how to save/restore its terminal settings
editor: save and reset terminal after calling EDITOR
wrapper: remove xunsetenv()
David Aguilar (6):
difftool: fix symlink-file writing in dir-diff mode
difftool: create a tmpdir path without repeated slashes
difftool: refactor dir-diff to write files using helper functions
difftool: remove an unnecessary call to strbuf_release()
difftool: add a missing space to the run_dir_diff() comments
mergetools/xxdiff: prevent segfaults from stopping difftool
David Turner (3):
t4060: remove unused variable
diff --submodule=diff: do not fail on ever-initialied deleted submodules
diff --submodule=diff: don't print failure message twice
Derrick Stolee (36):
t1092: test merge conflicts outside cone
add: allow operating on a sparse-only index
pathspec: stop calling ensure_full_index
add: ignore outside the sparse-checkout in refresh()
add: remove ensure_full_index() with --renormalize
maintenance: skip bootout/bootstrap when plist is registered
t7519: rewrite sparse index test
sparse-index: silently return when not using cone-mode patterns
unpack-trees: fix nested sparse-dir search
sparse-index: silently return when cache tree fails
sparse-index: use WRITE_TREE_MISSING_OK
sparse-checkout: create helper methods
attr: be careful about sparse directories
sparse-index: add SPARSE_INDEX_MEMORY_ONLY flag
sparse-checkout: clear tracked sparse dirs
diff: ignore sparse paths in diffstat
merge: make sparse-aware with ORT
merge-ort: expand only for out-of-cone conflicts
t1092: add cherry-pick, rebase tests
sequencer: ensure full index if not ORT strategy
sparse-index: integrate with cherry-pick and rebase
t/perf/run: fix bin-wrappers computation
t3705: test that 'sparse_entry' is unstaged
t1092: behavior for adding sparse files
dir: select directories correctly
dir: fix pattern matching on dirs
add: fail when adding an untracked sparse file
add: skip tracked paths outside sparse-checkout cone
add: implement the --sparse option
add: update --chmod to skip sparse paths
add: update --renormalize to skip sparse paths
rm: add --sparse option
rm: skip sparse paths with missing SKIP_WORKTREE
mv: refuse to move sparse paths
advice: update message to suggest '--sparse'
dir: fix directory-matching bug
Elijah Newren (48):
t7601: test interaction of merge/rebase/fast-forward flags and options
t7601: add tests of interactions with multiple merge heads and config
pull: since --ff-only overrides, handle it first
pull: make --rebase and --no-rebase override pull.ff=only
pull: abort by default when fast-forwarding is not possible
pull: update docs & code for option compatibility with rebasing
pull: fix handling of multiple heads
merge-ort: rename str{map,intmap,set}_func()
diffcore-rename: use a mem_pool for exact rename detection's hashmap
merge-ort: add pool_alloc, pool_calloc, and pool_strndup wrappers
merge-ort: set up a memory pool
merge-ort: switch our strmaps over to using memory pools
diffcore-rename, merge-ort: add wrapper functions for filepair alloc/dealloc
merge-ort: store filepairs and filespecs in our mem_pool
merge-ort: reuse path strings in pool_alloc_filespec
merge-ort: remove compile-time ability to turn off usage of memory pools
git-rebase.txt: correct antiquated claims about --rebase-merges
directory-rename-detection.txt: small updates due to merge-ort optimizations
Documentation: edit awkward references to `git merge-recursive`
merge-strategies.txt: update wording for the resolve strategy
merge-strategies.txt: do not imply using copy detection is desired
merge-strategies.txt: avoid giving special preference to patience algorithm
merge-strategies.txt: fix simple capitalization error
git-rebase.txt: correct out-of-date and misleading text about renames
merge-strategies.txt: add coverage of the `ort` merge strategy
Update error message and code comment
Change default merge backend from recursive to ort
Update docs for change of default merge backend
t3903: document a pair of directory/file bugs
stash: avoid feeding directories to update-index
stash: restore untracked files AFTER restoring tracked files
git-am.txt: clarify --abort behavior
t4151: add a few am --abort tests
am: fix incorrect exit status on am fail to abort
tests: remove leftover untracked files
trace2.h: fix trivial comment typo
merge-ort: fix completely wrong comment
t2500: add various tests for nuking untracked files
checkout, read-tree: fix leak of unpack_trees_options.dir
read-tree, merge-recursive: overwrite ignored files by default
unpack-trees: introduce preserve_ignored to unpack_trees_options
unpack-trees: make dir an internal-only struct
Remove ignored files by default when they are in the way
Change unpack_trees' 'reset' flag into an enum
unpack-trees: avoid nuking untracked dir in way of unmerged file
unpack-trees: avoid nuking untracked dir in way of locally deleted file
Comment important codepaths regarding nuking untracked files/dirs
Documentation: call out commands that nuke untracked files/directories
Emily Shaffer (3):
tr2: make process info collection platform-generic
tr2: log parent process name
hook.c: add a hook_exists() wrapper and use it in bugreport.c
Eric Wong (1):
doc/technical: update note about core.multiPackIndex
Fabian Stelzer (11):
ssh signing: preliminary refactoring and clean-up
ssh signing: add test prereqs
ssh signing: add ssh key format and signing code
ssh signing: retrieve a default key from ssh-agent
ssh signing: provide a textual signing_key_id
ssh signing: verify signatures using ssh-keygen
ssh signing: duplicate t7510 tests for commits
ssh signing: tests for logs, tags & push certs
ssh signing: test that gpg fails for unknown keys
ssh signing: fmt-merge-msg tests & config parse
ssh signing: clarify trustlevel usage in docs
Felipe Contreras (4):
completion: bash: fix prefix detection in branch.*
completion: bash: fix for suboptions with value
completion: bash: fix for multiple dash commands
completion: bash: add correct suffix in variables
Glen Choo (4):
MyFirstContribution: Document --range-diff option when writing v2
fsck: verify commit graph when implicitly enabled
fsck: verify multi-pack-index when implictly enabled
gc: perform incremental repack when implictly enabled
Greg Hurrell (1):
gitweb: use HEAD as secondary sort key in git_get_heads_list()
Hamza Mahfooz (3):
grep: refactor next_match() and match_one_pattern() for external use
pretty: colorize pattern matches in commit messages
grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data
Han-Wen Nienhuys (14):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t1405: use 'git reflog exists' to check reflog existence
t1405: mark test for 'git pack-refs' as REFFILES
t1410: mark test as REFFILES
t7064: use update-ref -d to remove upstream branch
t6500: use "ls -1" to snapshot ref database state
t6001: avoid direct file system access
refs: remove EINVAL errno output from specification of read_raw_ref_fn
refs/files-backend: stop setting errno from lock_ref_oid_basic
refs: make errno output explicit for read_raw_ref_fn
Jacob Vosmaer (2):
pkt-line: add stdio packet write functions
upload-pack: use stdio in send_ref callbacks
Jeff Hostetler (8):
sparse-index: copy dir_hash in ensure_full_index()
trace2: add trace2_child_ready() to report on background children
simple-ipc: preparations for supporting binary messages.
simple-ipc/ipc-win32: add trace2 debugging
simple-ipc/ipc-win32: add Windows ACL to named pipe
run-command: create start_bg_command
t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command
t/perf/perf-lib.sh: remove test_times.* at the end test_perf_()
Jeff King (73):
http: drop support for curl < 7.11.1
http: drop support for curl < 7.16.0
http: drop support for curl < 7.19.4
build: clang version may not be followed by extra words
range-diff: drop useless "offset" variable from read_patches()
range-diff: handle unterminated lines in read_patches()
range-diff: use ssize_t for parsed "len" in read_patches()
apply: keep buffer/size pair in sync when parsing binary hunks
t5323: drop mentions of "master"
refs: drop unused "flags" parameter to lock_ref_oid_basic()
logmsg_reencode(): warn when iconv() fails
docs: use "character encoding" to refer to commit-object encoding
t0410: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
pack-bitmap: drop repository argument from prepare_midx_bitmap_git()
pack-bitmap: drop bitmap_index argument from try_partial_reuse()
t5562: use alarm() to interrupt timed child-wait
t5551: test v2-to-v0 http protocol fallback
http-backend: handle HTTP_GIT_PROTOCOL CGI variable
docs/http-backend: mention v2 protocol
docs/git: discuss server-side config for GIT_PROTOCOL
docs/protocol-v2: point readers transport config discussion
strvec: use size_t to store nr and alloc
difftool: prepare "diff" cmdline in cmd_difftool()
serve: rename is_command() to parse_command()
serve: return capability "value" from get_capability()
serve: add "receive" method for v2 capabilities table
serve: provide "receive" function for object-format capability
serve: provide "receive" function for session-id capability
serve: drop "keys" strvec
ls-refs: ignore very long ref-prefix counts
docs/protocol-v2: clarify some ls-refs ref-prefix details
serve: reject bogus v2 "command=ls-refs=foo"
serve: reject commands used as capabilities
ls-refs: reject unknown arguments
t1400: avoid SIGPIPE race condition on fifo
clone: handle unborn branch in bare repos
grep: stop modifying buffer in strip_timestamp
grep: stop modifying buffer in show_line()
grep: stop modifying buffer in grep_source_1()
grep: mark "haystack" buffers as const
grep: store grep_source buffer as const
http: match headers case-insensitively when redacting
t7900: clean up some more broken refs
t5516: don't use HEAD ref for invalid ref-deletion tests
t5600: provide detached HEAD for corruption failures
t5312: drop "verbose" helper
t5312: create bogus ref as necessary
t5312: test non-destructive repack
t5312: be more assertive about command failure
refs-internal.h: move DO_FOR_EACH_* flags next to each other
refs-internal.h: reorganize DO_FOR_EACH_* flag documentation
refs: add DO_FOR_EACH_OMIT_DANGLING_SYMREFS flag
refs: omit dangling symrefs when using GIT_REF_PARANOIA
refs: turn on GIT_REF_PARANOIA by default
repack, prune: drop GIT_REF_PARANOIA settings
ref-filter: stop setting FILTER_REFS_INCLUDE_BROKEN
ref-filter: drop broken-ref code entirely
refs: drop "broken" flag from for_each_fullref_in()
test-read-midx: fix leak of bitmap_index struct
t1006: clean up broken objects
cat-file: mention --unordered along with --batch-all-objects
cat-file: disable refs/replace with --batch-all-objects
cat-file: split ordered/unordered batch-all-objects callbacks
cat-file: use packed_object_info() for --batch-all-objects
gpg-interface: fix leak of "line" in parse_ssh_output()
gpg-interface: fix leak of strbufs in get_ssh_key_fingerprint()
send-pack: complain about "expecting report" with --helper-status
transport-helper: recognize "expecting report" error from send-pack
submodule: drop unused sm_name parameter from append_fetch_remotes()
Documentation/Makefile: fix lint-docs mkdir dependency
t5310: drop lib-bundle.sh include
log: document --encoding behavior on iconv() failure
Jiang Xin (2):
ci: new github-action for git-l10n code review
i18n: fix typos found during l10n for git 2.34.0
Joel Klinghed (1):
commit: restore --edit when combined with --fixup
Johannes Altmanninger (4):
Documentation/git-status: remove impossible porcelain status DR and DC
Documentation/diff-format: state in which cases porcelain status is T
Documentation/git-status: document porcelain status T (typechange)
Documentation/git-status: mention how to detect copies
Johannes Schindelin (24):
tests: exercise the RUNTIME_PREFIX feature
expand_user_path(): remove stale part of the comment
expand_user_path(): clarify the role of the `real_home` parameter
Use a better name for the function interpolating paths
interpolate_path(): allow specifying paths relative to the runtime prefix
maintenance: create `launchctl` configuration using a lock file
t5520: do not use `pull.rebase=preserve`
remote: warn about unhandled branch.<name>.rebase values
tests: stop testing `git rebase --preserve-merges`
pull: remove support for `--rebase=preserve`
rebase: drop support for `--preserve-merges`
git-svn: drop support for `--preserve-merges`
rebase: drop the internal `rebase--interactive` command
rebase: remove obsolete code comment
rebase: stop mentioning the -p option in comments
rebase: remove a no-longer-used function
sequencer: restrict scope of a formerly public function
commit-graph: when closing the graph, also release the slab
pull: release packs before fetching
run-command: prettify the `RUN_COMMAND_*` flags
run-command: offer to close the object store before running
run_auto_maintenance(): implicitly close the object store
Close object store closer to spawning child processes
ci(windows): ensure that we do not pick up random executables
Johannes Sixt (9):
t9001: PATH must not use Windows-style paths
lazyload.h: fix warnings about mismatching function pointer types
t4034/cpp: actually test that operator tokens are not split
t4034: add tests showing problematic cpp tokenizations
userdiff-cpp: tighten word regex
userdiff-cpp: prepare test cases with yet unsupported features
userdiff-cpp: permit the digit-separating single-quote in numbers
userdiff-cpp: learn the C++ spaceship operator
userdiff-cpp: back out the digit-separators in numbers
Jonathan Tan (22):
send-pack: fix push.negotiate with remote helper
send-pack: fix push nego. when remote has refs
fetch: die on invalid --negotiation-tip hash
submodule: lazily add submodule ODBs as alternates
grep: use submodule-ODB-as-alternate lazy-addition
grep: typesafe versions of grep_source_init
grep: read submodule entry with explicit repo
grep: allocate subrepos on heap
grep: add repository to OID grep sources
submodule-config: pass repo upon blob config read
t7814: show lack of alternate ODB-adding
submodule: remove unnecessary unabsorbed fallback
repository: support unabsorbed in repo_submodule_init
revision: remove "submodule" from opt struct
submodule: extract path to submodule gitdir func
refs: plumb repo into ref stores
refs: teach arbitrary repo support to iterators
refs: peeling non-the_repository iterators is BUG
merge-{ort,recursive}: remove add_submodule_odb()
object-file: only register submodule ODB if needed
submodule: pass repo to check_has_commit()
submodule: trace adding submodule ODB as alternate
Josh Steadmon (2):
connect, protocol: log negotiated protocol version
sequencer: advise if skipping cherry-picked commit
Junio C Hamano (30):
expand_user_path: allow in-flight topics to keep using the old name
bisect: do not run show-branch just to show the current commit
bisect: simplify return code from bisect_checkout()
build: catch clang that identifies itself as "$VENDOR clang"
userdiff: comment on the builtin patterns
The first batch post 2.33
The second batch
The third batch
apply: resolve trivial merge without hitting ll-merge with "--3way"
hash-object: prefix_filename() returns allocated memory these days
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
Twelfth batch
Git 2.33.1
signature-format.txt: explain and illustrate multi-line headers
Thirteenth batch
The fourteenth batch
format-patch (doc): clarify --base=auto
branch (doc): -m/-c copies config and reflog
The fifteenth batch
Revert "logmsg_reencode(): warn when iconv() fails"
Git 2.34-rc0
A few more topics before -rc1
Git 2.34-rc1
Kaartic Sivaraam (1):
submodule--helper: fix incorrect newlines in an error message
Kim Altintop (3):
t5730: introduce fetch command helper
upload-pack.c: treat want-ref relative to namespace
docs: clarify the interaction of transfer.hideRefs and namespaces
Kyle Zhao (1):
pack-revindex.h: correct the time complexity descriptions
Lénaïc Huard (4):
cache.h: Introduce a generic "xdg_config_home_for(…)" function
maintenance: `git maintenance run` learned `--scheduler=<scheduler>`
maintenance: add support for systemd timers on Linux
maintenance: fix test t7900-maintenance.sh
Mahi Kolla (1):
clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled
Martin Ågren (6):
config.txt: fix typo
git.txt: fix typo
git-multi-pack-index.txt: change "folder" to "directory"
gitignore.txt: change "folder" to "directory"
gitweb.txt: change "folder" to "directory"
git-bundle.txt: add missing words and punctuation
Marvin Häuser (1):
send-email: avoid incorrect header propagation
Matheus Tavares (3):
checkout: make delayed checkout respect --quiet and --no-progress
grep: demonstrate bug with textconv attributes and submodules
add, rm, mv: fix bug that prevents the update of non-sparse dirs
Matthias Aßhauer (2):
help: make sure local html page exists before calling external processes
documentation: add documentation for 'git version'
Mickey Endito (1):
t5582: remove spurious 'cd "$D"' line
Mike Hommey (1):
credential: fix leak in credential_apply_config()
Miriam Rubio (3):
t6030-bisect-porcelain: add tests to control bisect run exit cases
t6030-bisect-porcelain: add test for bisect visualize
bisect--helper: retire `--bisect-next-check` subcommand
Orgad Shaneh (1):
doc: fix capitalization in "git status --porcelain=v2" description
Patrick Steinhardt (16):
fetch-pack: speed up loading of refs via commit graph
revision: separate walk and unsorted flags
connected: do not sort input revisions
revision: stop retrieving reference twice
commit-graph: split out function to search commit position
revision: avoid hitting packfiles when commits are in commit-graph
ls-refs: reuse buffer when sending refs
fetch: skip formatting updated refs with `--quiet`
fetch: speed up lookup of want refs via commit-graph
fetch: avoid unpacking headers in object existence check
connected: refactor iterator to return next object ID directly
fetch-pack: optimize loading of refs via commit graph
fetch: refactor fetch refs to be more extendable
fetch: merge fetching and consuming refs
fetch: avoid second connectivity check if we already have all objects
update-ref: fix streaming of status updates
Philip Oakley (1):
doc: config, tell readers of `git help --config`
Philippe Blain (3):
test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'
test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'
test-lib-functions: keep user's debugger config files and TERM in 'debug'
Phillip Wood (22):
t3403: fix commit authorship
rebase --apply: restore some tests
rebase --continue: remove .git/MERGE_MSG
rebase -r: make 'merge -c' behave like reword
rebase -i: add another reword test
rebase -r: don't write .git/MERGE_MSG when fast-forwarding
rebase -r: fix merge -c with a merge strategy
t3407: run tests in $TEST_DIRECTORY
t3407: use test_commit
t3407: use test_cmp_rev
t3407: rename a variable
t3407: use test_path_is_missing
t3407: strengthen rebase --abort tests
t3407: rework rebase --quit tests
rebase: use our standard error return value
rebase: use lookup_commit_reference_by_name()
rebase: dereference tags
sequencer.c: factor out a function
rebase: fix todo-list rereading
sparse index: fix use-after-free bug in cache_tree_verify()
t1092: run "rebase --apply" without "-q" in testing
rebase -i: fix rewording with --committer-date-is-author-date
Pranit Bauva (2):
run-command: make `exists_in_PATH()` non-static
bisect--helper: reimplement `bisect_visualize()` shell function in C
René Scharfe (36):
compat: let git_mmap use malloc(3) directly
xopen: explicitly report creation failures
use xopen() to handle fatal open(2) failures
show-branch: simplify rev_is_head()
archive: convert queue_directory to struct object_id
branch: allow deleting dangling branches with --force
merge-recursive: use fspathcmp() in path_hashmap_cmp()
range-diff: avoid segfault with -I
setup: use xopen and xdup in sanitize_stdfds
refs/files-backend: remove unused open mode parameter
index-pack: use xopen in init_thread
oidset: make oidset_size() an inline function
midx: inline nth_midxed_pack_entry()
packfile: convert mark_bad_packed_object() to object_id
packfile: convert has_packed_and_bad() to object_id
packfile: use oidset for bad objects
compression: drop write-only core_compression_* variables
packfile: release bad_objects in close_pack()
test-mergesort: use strbuf_getline()
test-mergesort: add sort subcommand
test-mergesort: add test subcommand
test-mergesort: add generate subcommand
test-mergesort: add unriffle mode
test-mergesort: add unriffle_skewed mode
p0071: measure sorting of already sorted and reversed files
p0071: test performance of llist_mergesort()
mergesort: use ranks stack
p3400: stop using tac(1)
t3905: show failure to ignore sub-repo
read-cache: add verify_path_internal()
read-cache: let verify_path() reject trailing dir separators again
test-mergesort: use repeatable random numbers
perf: disable automatic housekeeping
add: don't write objects with --dry-run
gpg-interface: handle missing " with " gracefully in parse_ssh_output()
gpg-interface: avoid buffer overrun in parse_ssh_output()
Robert Estelle (1):
completion: fix incorrect bash/zsh string equality check
SZEDER Gábor (12):
Makefile: remove archives before manipulating them with 'ar'
column: fix parsing of the '--nl' option
test-lib: set GIT_CEILING_DIRECTORIES to protect the surrounding repository
t1600-index: remove unnecessary redirection
t1600-index: don't run git commands upstream of a pipe
t1600-index: disable GIT_TEST_SPLIT_INDEX
read-cache: look for shared index files next to the index, too
tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests
read-cache: fix GIT_TEST_SPLIT_INDEX
commit-graph: fix bogus counter in "Scanning merged commits" progress line
entry: show finer-grained counter in "Filtering content" progress line
command-list.txt: remove 'sparse-index' from main help
Sergey Organov (1):
diff-index: restore -c/--cc options handling
Takashi Iwai (1):
completion: tcsh: Fix regression by drop of wrapper functions
Tal Kelrich (1):
fast-export: fix anonymized tag using original length
Tanushree Tumane (1):
bisect--helper: reimplement `bisect_run` shell function in C
Tassilo Horn (1):
userdiff: improve java hunk header regex
Taylor Blau (55):
pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
pack-bitmap-write.c: free existing bitmaps
Documentation: describe MIDX-based bitmaps
object-store.h: teach for_each_packed_object to ignore kept packs
builtin/pack-objects.c: simplify add_objects_in_unpacked_packs()
builtin/pack-objects.c: remove duplicate hash lookup
midx: disallow running outside of a repository
midx: fix `*.rev` cleanups with `--object-dir`
midx: clear auxiliary .rev after replacing the MIDX
midx: reject empty `--preferred-pack`'s
midx: infer preferred pack when not given one
midx: close linked MIDXs, avoid leaking memory
midx: avoid opening multiple MIDXs when writing
pack-bitmap.c: introduce 'bitmap_num_objects()'
pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
pack-bitmap.c: avoid redundant calls to try_partial_reuse
pack-bitmap: read multi-pack bitmaps
pack-bitmap: write multi-pack bitmaps
t5310: move some tests to lib-bitmap.sh
t/helper/test-read-midx.c: add --checksum mode
t5326: test multi-pack bitmap behavior
t5319: don't write MIDX bitmaps in t5319
t7700: update to work with MIDX bitmap test knob
midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
p5310: extract full and partial bitmap tests
p5326: perf tests for MIDX bitmaps
bulk-checkin.c: store checksum directly
pack-write.c: rename `.idx` files after `*.rev`
builtin/repack.c: move `.idx` files into place last
builtin/index-pack.c: move `.idx` files into place last
t/helper/test-bitmap.c: add 'dump-hashes' mode
pack-bitmap.c: propagate namehash values from existing bitmaps
midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps
p5326: create missing 'perf-tag' tag
p5326: don't set core.multiPackIndex unnecessarily
p5326: generate pack bitmaps before writing the MIDX bitmap
t5326: test propagating hashcache values
builtin/commit-graph.c: don't accept common --[no-]progress
builtin/multi-pack-index.c: disable top-level --[no-]progress
midx: expose `write_midx_file_only()` publicly
builtin/multi-pack-index.c: support `--stdin-packs` mode
midx: preliminary support for `--refs-snapshot`
builtin/repack.c: keep track of existing packs unconditionally
builtin/repack.c: rename variables that deal with non-kept packs
builtin/repack.c: extract showing progress to a variable
builtin/repack.c: support writing a MIDX while repacking
builtin/repack.c: make largest pack preferred
builtin/repack.c: pass `--refs-snapshot` when writing bitmaps
t/perf/aggregate.perl: tolerate leading spaces
midx.c: extract MIDX lookup by object_dir
midx.c: lookup MIDX by object directory during expire
midx.c: lookup MIDX by object directory during repack
midx.c: guard against commit_lock_file() failures
Teng Long (1):
list-objects.c: rename "traverse_trees_and_blobs" to "traverse_non_commits"
Todd Zullinger (1):
doc: add bundle-format to TECH_DOCS
USAMI Kenta (1):
userdiff: support enum keyword in PHP hunk header
Wesley Schwengle (1):
Document `rebase.forkpoint` in rebase man page
ZheNing Hu (6):
ref-filter: add obj-type check in grab contents
ref-filter: add %(raw) atom
ref-filter: --format=%(raw) support --perl
ref-filter: use non-const ref_format in *_atom_parser()
ref-filter: add %(rest) atom
cherry-pick: use better advice message
Zoker (1):
doc: fix syntax error and the format of printf
brian m. carlson (1):
t5607: avoid using prerequisites to select algorithm
Ævar Arnfjörð Bjarmason (224):
pack-objects tests: cover blindspots in stdin handling
Makefile: move ".PHONY: cscope" near its target
Makefile: add QUIET_GEN to "cscope" target
pack-objects: fix segfault in --stdin-packs option
test-lib tests: move "run_sub_test" to a new lib-subtest.sh
Makefile: don't use "FORCE" for tags targets
http: drop support for curl < 7.19.3 and < 7.17.0 (again)
http: rename CURLOPT_FILE to CURLOPT_WRITEDATA
bundle doc: elaborate on object prerequisites
bundle doc: elaborate on rev<->ref restriction
bundle doc: rewrite the "DESCRIPTION" section
bundle doc: replace "basis" with "prerequsite(s)"
serve: mark has_capability() as static
transport: rename "fetch" in transport_vtable to "fetch_refs"
transport: use designated initializers
serve: use designated initializers
serve.[ch]: don't pass "struct strvec *keys" to commands
serve: move transfer.advertiseSID check into session_id_advertise()
serve.c: move version line to advertise_capabilities()
{upload,receive}-pack tests: add --advertise-refs tests
serve.[ch]: remove "serve_options", split up --advertise-refs code
upload-pack: document and rename --advertise-refs
Makefile: remove "cscope.out", not "cscope*" in cscope.out target
Makefile: normalize clobbering & xargs for tags targets
refs/packet: add missing BUG() invocations to reflog callbacks
refs/files: remove unused REF_DELETING in lock_ref_oid_basic()
ls-remote: set packet_trace_identity(<name>)
rebase: emit one "fatal" in "fatal: fatal: <error>"
advice: remove use of global advice_add_embedded_repo
advice: move advice.graftFileDeprecated squashing to commit.[ch]
refs/files: remove unused "extras/skip" in lock_ref_oid_basic()
refs/files: remove unused "skip" in lock_raw_ref() too
refs/debug: re-indent argument list for "prepare"
refs: make repo_dwim_log() accept a NULL oid
refs/files: add a comment about refs_reflog_exists() call
reflog expire: don't lock reflogs using previously seen OID
refs API: remove OID argument to reflog_expire()
refs/files: remove unused "oid" in lock_ref_oid_basic()
refs/files: remove unused "errno == EISDIR" code
refs/files: remove unused "errno != ENOTDIR" condition
refs file backend: move raceproof_create_file() here
bundle API: start writing API documentation
commit-graph: define common usage with a macro
commit-graph: remove redundant handling of -h
commit-graph: use parse_options_concat()
multi-pack-index: refactor "goto usage" pattern
commit-graph: early exit to "usage" on !argc
commit-graph: show usage on "commit-graph [write|verify] garbage"
commit-graph: show "unexpected subcommand" error
protocol-caps.c: fix memory leak in send_info()
mailmap.c: fix a memory leak in free_mailap_{info,entry}()
gc: remove trailing dot from "gc.log" line
gettext: remove optional non-standard parens in N_() definition
bundle API: change "flags" to be "extra_index_pack_args"
index-pack: add --progress-title option
bundle: show progress on "unbundle"
tr2: remove NEEDSWORK comment for "non-procfs" implementations
tr2: clarify TRACE2_PROCESS_INFO_EXIT comment under Linux
tr2: stop leaking "thread_name" memory
tr2: leave the parent list empty upon failure & don't leak memory
tr2: do compiler enum check in trace2_collect_process_info()
tr2: log N parent process names on Linux
send-email: fix a "first config key wins" regression in v2.33.0
Makefile: remove the check_bindir script
pack-write: skip *.rev work when not writing *.rev
pack.h: line-wrap the definition of finish_tmp_packfile()
pack-write: refactor renaming in finish_tmp_packfile()
index-pack: refactor renaming in final()
pack-write: split up finish_tmp_packfile() function
pack-objects: rename .idx files into place after .bitmap files
help: correct the usage string in -h and documentation
INSTALL: don't mention the "curl" executable at all
INSTALL: reword and copy-edit the "libcurl" section
git-submodule: remove unused is_zero_oid() function
git-sh-setup: remove unused "pull with rebase" message
git-bisect: remove unused SHA-1 $x40 shell variable
test-lib: remove unused $_x40 and $_z40 variables
test-tool run-command: fix flip-flop init pattern
gc: remove unused launchctl_get_uid() call
parse-options API users: align usage output in C-strings
send-pack: properly use parse_options() API for usage string
git rev-parse --parseopt tests: add more usagestr tests
difftool: prepare "struct child_process" in cmd_difftool()
difftool: use run_command() API in run_file_diff()
parse-options API: remove OPTION_ARGUMENT feature
INSTALL: mention that we need libcurl 7.19.4 or newer to build
Makefile: drop support for curl < 7.9.8 (again)
http: drop support for curl < 7.18.0 (again)
http: correct version check for CURL_HTTP_VERSION_2
http: correct curl version check for CURLOPT_PINNEDPUBLICKEY
http: centralize the accounting of libcurl dependencies
http: don't hardcode the value of CURL_SOCKOPT_OK
wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c
environment.c: remove test-specific "ignore_untracked..." variable
read-cache & fetch-negotiator: check "enum" values in switch()
repo-settings.c: simplify the setup
repository.h: don't use a mix of int and bitfields
Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes
parse-options: properly align continued usage output
test-lib tests: split up "write and run" into two functions
test-lib tests: don't provide a description for the sub-tests
test-lib tests: avoid subshell for "test_cmp" for readability
test-lib tests: refactor common part of check_sub_test_lib_test*()
test-lib tests: assert 1 exit code, not non-zero
test-lib tests: get rid of copy/pasted mock test code
Makefile: make the "sparse" target non-.PHONY
Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic
help: correct usage & behavior of "git help --guides"
help tests: add test for --config output
help: correct logic error in combining --all and --config
help: correct logic error in combining --all and --guides
help: simplify by moving to OPT_CMDMODE()
help tests: test --config-for-completion option & output
help / completion: make "git help" do the hard work
help: move column config discovery to help.c library
Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS
tests: add a test mode for SANITIZE=leak, run it in CI
bundle: remove ignored & undocumented "--verbose" flag
Makefile: mark "check" target as .PHONY
Makefile: stop hardcoding {command,config}-list.h
Makefile: don't perform "mv $@+ $@" dance for $(GENERATED_H)
Makefile: remove an out-of-date comment
hook.[ch]: move find_hook() from run-command.c to hook.c
hook.c users: use "hook_exists()" instead of "find_hook()"
hook-list.h: add a generated list of hooks, like config-list.h
http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors
Makefile: pass -Wno-pendantic under GENERATE_COMPILATION_DATABASE=yes
submodule-config.h: remove unused SUBMODULE_INIT macro
*.[ch] *_INIT macros: use { 0 } for a "zero out" idiom
*.h _INIT macros: don't specify fields equal to 0
*.h: move some *_INIT to designated initializers
cbtree.h: define cb_init() in terms of CBTREE_INIT
daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro
builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro
string-list.[ch]: remove string_list_init() compatibility function
config.c: remove unused git_config_key_is_valid()
refs.[ch]: remove unused ref_storage_backend_exists()
refs/ref-cache.[ch]: remove unused remove_entry_from_dir()
refs/ref-cache.[ch]: remove unused add_ref_entry()
refs/ref-cache.c: remove "mkdir" parameter from find_containing_dir()
refs/ref-cache.[ch]: remove "incomplete" from create_dir_entry()
parse-options.h: move PARSE_OPT_SHELL_EVAL between enums
urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
builtin/remote.c: add and use a REF_STATES_INIT
builtin/remote.c: add and use SHOW_INFO_INIT
builtin.h: remove cmd_tar_tree() declaration
grep.h: remove unused grep_threads_ok() declaration
log-tree.h: remove unused function declarations
config.h: remove unused git_config_get_untracked_cache() declaration
fsck tests: add test for fsck-ing an unknown type
fsck tests: refactor one test to use a sub-repo
fsck tests: test current hash/type mismatch behavior
fsck tests: test for garbage appended to a loose object
cat-file tests: move bogus_* variable declarations earlier
cat-file tests: test for missing/bogus object with -t, -s and -p
cat-file tests: add corrupt loose object test
cat-file tests: test for current --allow-unknown-type behavior
object-file.c: don't set "typep" when returning non-zero
object-file.c: return -1, not "status" from unpack_loose_header()
object-file.c: make parse_loose_header_extended() public
object-file.c: simplify unpack_loose_short_header()
object-file.c: use "enum" return type for unpack_loose_header()
object-file.c: return ULHR_TOO_LONG on "header too long"
object-file.c: stop dying in parse_loose_header()
fsck: don't hard die on invalid object types
fsck: report invalid object type-path combinations
unpack-trees: don't leak memory in verify_clean_subdirectory()
tests: fix a memory leak in test-prio-queue.c
tests: fix a memory leak in test-parse-options.c
tests: fix a memory leak in test-oidtree.c
tests: fix test-oid-array leak, test in SANITIZE=leak
ls-files: fix a trivial dir_clear() leak
ls-files: add missing string_list_clear()
merge: add missing strbuf_release()
parse-options.[ch]: consistently use "enum parse_opt_flags"
parse-options.[ch]: consistently use "enum parse_opt_result"
parse-options.c: use exhaustive "case" arms for "enum parse_opt_result"
parse-options.h: make the "flags" in "struct option" an enum
parse-options.c: move optname() earlier in the file
commit-graph: stop using optname()
parse-options.[ch]: make opt{bug,name}() "static"
parse-options tests: test optname() output
parse-options: change OPT_{SHORT,UNSET} to an enum
unwritable tests: assert exact error output
commit: fix duplication regression in permission error output
leak tests: run various built-in tests in t00*.sh SANITIZE=leak
leak tests: run various "test-tool" tests in t00*.sh SANITIZE=leak
leak tests: mark all ls-tree tests as passing with SANITIZE=leak
leak tests: mark all trace2 tests as passing with SANITIZE=leak
leak tests: mark all checkout-index tests as passing with SANITIZE=leak
leak tests: mark some ls-files tests as passing with SANITIZE=leak
leak tests: mark some read-tree tests as passing with SANITIZE=leak
leak tests: mark various "generic" tests as passing with SANITIZE=leak
leak tests: mark some misc tests as passing with SANITIZE=leak
sequencer: add a "goto cleanup" to do_reset()
sequencer: fix a memory leak in do_reset()
test-lib.sh: de-duplicate error() teardown code
test-lib.sh: use "Bail out!" syntax on bad SANITIZE=leak use
test-lib.sh: try to re-chmod & retry on failed trash removal
commit-graph tests: fix error-hiding graph_git_two_modes() helper
commit-graph tests: fix another graph_git_two_modes() helper
commit-graph: don't consider "replace" objects with "verify"
"lib-diff" tests: make "README" and "COPYING" test data smaller
tests: stop using top-level "README" and "COPYING" files
doc lint: fix error-hiding regression
doc lint: emit errors on STDERR
doc build: speed up "make lint-docs"
doc lint: make "lint-docs" non-.PHONY
pkt-line.[ch]: remove unused packet_buf_write_len()
pkt-line.[ch]: remove unused packet_read_line_buf()
git config doc: fix recent ASCIIDOC formatting regression
tag: use a "goto cleanup" pattern, leak less memory
ref-filter API user: add and use a ref_sorting_release()
branch: use ref_sorting_release()
git-sh-i18n: remove unused eval_ngettext()
git-sh-setup: remove messaging supporting --preserve-merges
Makefile: remove redundant GIT-CFLAGS dependency from "sparse"
config.c: don't leak memory in handle_path_include()
grep: prefer "struct grep_opt" over its "void *" equivalent
grep: use object_array_clear() in cmd_grep()
grep: fix a "path_list" memory leak
clone: fix a memory leak of the "git_dir" variable
submodule--helper: fix small memory leaks
reflog: free() ref given to us by dwim_log()
Đoàn Trần Công Danh (3):
t6300: don't run cat-file on non-existent object
t6300: check for cat-file exit status code
diff-lib: ignore paths that are outside $cwd if --relative asked
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.34.0-rc0
@ 2021-10-30 0:17 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-10-30 0:17 UTC (permalink / raw)
To: git; +Cc: git-packagers
An early preview release Git v2.34.0-rc0 is now available for
testing at the usual places. It is comprised of 760 non-merge
commits since v2.33.0, contributed by 86 people, 25 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.34.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.33.0 are as follows.
Welcome to the Git development community!
Alan Blotz, Azeem Bande-Ali, Dr. Matthias St. Pierre, Eli
Schwartz, git.mexon@spamgourmet.com, Glen Choo, Joel Klinghed,
Johannes Altmanninger, Kim Altintop, Kyle Zhao, Mahi Kolla,
Marvin Häuser, Mickey Endito, Rob Browning, Robert Estelle,
Robert Leftwich, Tal Kelrich, Tassilo Horn, Thomas De Zeeuw,
USAMI Kenta, Victor Gambier, Victoria Dye, Wesley Schwengle,
Xingman Chen, and Zoker.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Andrzej
Hunt, Atharva Raykar, Bagas Sanjaya, Ben Boeckel, brian
m. carlson, Carlo Arenas, Carlo Marcelo Arenas Belón, Christian
Couder, David Aguilar, David Turner, Derrick Stolee, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Eric Wong, Fabian Stelzer, Felipe Contreras, Greg Hurrell,
Han-Wen Nienhuys, Hariom Verma, Jacob Keller, Jacob Vosmaer,
Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, Jonathan Nieder, Jonathan Tan, Josh Steadmon,
Junio C Hamano, Kaartic Sivaraam, Lénaïc Huard, Martin Ågren,
Matheus Tavares, Matheus Tavares Bernardino, Matthias Aßhauer,
Mike Hommey, Miriam Rubio, Orgad Shaneh, Patrick Steinhardt,
Philip Oakley, Philippe Blain, Phillip Wood, Pranit Bauva,
Randall S. Becker, René Scharfe, Sergey Organov, Shourya Shukla,
SZEDER Gábor, Takashi Iwai, Tanushree Tumane, Taylor Blau,
Teng Long, Todd Zullinger, Ulrich Windl, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.34 Release Notes (draft)
==============================
Updates since Git 2.33
----------------------
Backward compatibility notes
* The "--preserve-merges" option of "git rebase" has been removed.
UI, Workflows & Features
* Pathname expansion (like "~username/") learned a way to specify a
location relative to Git installation (e.g. its $sharedir which is
$(prefix)/share), with "%(prefix)".
* Use `ort` instead of `recursive` as the default merge strategy.
* The userdiff pattern for "java" language has been updated.
* "git rebase" by default skips changes that are equivalent to
commits that are already in the history the branch is rebased onto;
give messages when this happens to let the users be aware of
skipped commits, and also teach them how to tell "rebase" to keep
duplicated changes.
* The advice message that "git cherry-pick" gives when it asks
conflicted replay of a commit to be resolved by the end user has
been updated.
* After "git clone --recurse-submodules", all submodules are cloned
but they are not by default recursed into by other commands. With
submodule.stickyRecursiveClone configuration set, submodule.recurse
configuration is set to true in a repository created by "clone"
with "--recurse-submodules" option.
* The logic for auto-correction of misspelt subcommands learned to go
interactive when the help.autocorrect configuration variable is set
to 'prompt'.
* "git maintenance" scheduler learned to use systemd timers as a
possible backend.
* "git diff --submodule=diff" showed failure from run_command() when
trying to run diff inside a submodule, when the user manually
removes the submodule directory.
* "git bundle unbundle" learned to show progress display.
* In cone mode, the sparse-index code path learned to remove ignored
files (like build artifacts) outside the sparse cone, allowing the
entire directory outside the sparse cone to be removed, which is
especially useful when the sparse patterns change.
* Taking advantage of the CGI interface, http-backend has been
updated to enable protocol v2 automatically when the other side
asks for it.
* The credential-cache helper has been adjusted to Windows.
* The error in "git help no-such-git-command" is handled better.
* The unicode character width table (used for output alignment) has
been updated.
* The ref iteration code used to optionally allow dangling refs to be
shown, which has been tightened up.
* "git add", "git mv", and "git rm" have been adjusted to avoid
updating paths outside of the sparse-checkout definition unless
the user specifies a "--sparse" option.
* "git repack" has been taught to generate multi-pack reachability
bitmaps.
* "git fsck" has been taught to report mismatch between expected and
actual types of an object better.
* Use ssh public crypto for object and push-cert signing.
Performance, Internal Implementation, Development Support etc.
* "git bisect" spawned "git show-branch" only to pretty-print the
title of the commit after checking out the next version to be
tested; this has been rewritten in C.
* "git add" can work better with the sparse index.
* Support for ancient versions of cURL library (pre 7.19.4) has been
dropped.
* A handful of tests that assumed implementation details of files
backend for refs have been cleaned up.
* trace2 logs learned to show parent process name to see in what
context Git was invoked.
* Loading of ref tips to prepare for common ancestry negotiation in
"git fetch-pack" has been optimized by taking advantage of the
commit graph when available.
* Remind developers that the userdiff patterns should be kept simple
and permissive, assuming that the contents they apply are always
syntactically correct.
* The current implementation of GIT_TEST_FAIL_PREREQS is broken in
that checking for the lack of a prerequisite would not work. Avoid
the use of "if ! test_have_prereq X" in a test script.
* The revision traversal API has been optimized by taking advantage
of the commit-graph, when available, to determine if a commit is
reachable from any of the existing refs.
* "git fetch --quiet" optimization to avoid useless computation of
info that will never be displayed.
* Callers from older advice_config[] based API has been updated to
use the newer advice_if_enabled() and advice_enabled() API.
* Teach "test_pause" and "debug" helpers to allow using the HOME and
TERM environment variables the user usually uses.
* "make INSTALL_STRIP=-s install" allows the installation step to use
"install -s" to strip the binaries as they get installed.
* Code that handles large number of refs in the "git fetch" code
path has been optimized.
* The reachability bitmap file used to be generated only for a single
pack, but now we've learned to generate bitmaps for history that
span across multiple packfiles.
* The code to make "git grep" recurse into submodules has been
updated to migrate away from the "add submodule's object store as
an alternate object store" mechanism (which is suboptimal).
* The tracing of process ancestry information has been enhanced.
* Reduce number of write(2) system calls while sending the
ref advertisement.
* Update the build procedure to use the "-pedantic" build when
DEVELOPER makefile macro is in effect.
* Large part of "git submodule add" gets rewritten in C.
* The run-command API has been updated so that the callers can easily
ask the file descriptors open for packfiles to be closed immediately
before spawning commands that may trigger auto-gc.
* An oddball OPTION_ARGUMENT feature has been removed from the
parse-options API.
* The mergesort implementation used to sort linked list has been
optimized.
* Remove external declaration of functions that no longer exist.
* "git multi-pack-index write --bitmap" learns to propagate the
hashcache from original bitmap to resulting bitmap.
* CI learns to run the leak sanitizer builds.
* "git grep --recurse-submodules" takes trees and blobs from the
submodule repository, but the textconv settings when processing a
blob from the submodule is not taken from the submodule repository.
A test is added to demonstrate the issue, without fixing it.
* Teach "git help -c" into helping the command line completion of
configuration variables.
* When "git cmd -h" shows more than one line of usage text (e.g.
the cmd subcommand may take sub-sub-command), parse-options API
learned to align these lines, even across i18n/l10n.
* Prevent "make sparse" from running for the source files that
haven't been modified.
* The codepath to write a new version of .midx multi-pack index files
has learned to release the mmaped memory holding the current
version of .midx before removing them from the disk, as some
platforms do not allow removal of a file that still has mapping.
* A new feature has been added to abort early in the test framework.
Fixes since v2.33
-----------------
* Input validation of "git pack-objects --stdin-packs" has been
corrected.
* Bugfix for common ancestor negotiation recently introduced in "git
push" code path.
* "git pull" had various corner cases that were not well thought out
around its --rebase backend, e.g. "git pull --ff-only" did not stop
but went ahead and rebased when the history on other side is not a
descendant of our history. The series tries to fix them up.
* "git apply" miscounted the bytes and failed to read to the end of
binary hunks.
* "git range-diff" code clean-up.
* "git commit --fixup" now works with "--edit" again, after it was
broken in v2.32.
* Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
new version has a blocker bug for that architecture.
* Checking out all the paths from HEAD during the last conflicted
step in "git rebase" and continuing would cause the step to be
skipped (which is expected), but leaves MERGE_MSG file behind in
$GIT_DIR and confuses the next "git commit", which has been
corrected.
* Various bugs in "git rebase -r" have been fixed.
* mmap() imitation used to call xmalloc() that dies upon malloc()
failure, which has been corrected to just return an error to the
caller to be handled.
* "git diff --relative" segfaulted and/or produced incorrect result
when there are unmerged paths.
* The delayed checkout code path in "git checkout" etc. were chatty
even when --quiet and/or --no-progress options were given.
* "git branch -D <branch>" used to refuse to remove a broken branch
ref that points at a missing commit, which has been corrected.
* Build update for Apple clang.
* The parser for the "--nl" option of "git column" has been
corrected.
* "git upload-pack" which runs on the other side of "git fetch"
forgot to take the ref namespaces into account when handling
want-ref requests.
* The sparse-index support can corrupt the index structure by storing
a stale and/or uninitialized data, which has been corrected.
* Buggy tests could damage repositories outside the throw-away test
area we created. We now by default export GIT_CEILING_DIRECTORIES
to limit the damage from such a stray test.
* Even when running "git send-email" without its own threaded
discussion support, a threading related header in one message is
carried over to the subsequent message to result in an unwanted
threading, which has been corrected.
* The output from "git fast-export", when its anonymization feature
is in use, showed an annotated tag incorrectly.
* Doc update plus improved error reporting.
* Recent "diff -m" changes broke "gitk", which has been corrected.
* Regression fix.
* The "git apply -3" code path learned not to bother the lower level
merge machinery when the three-way merge can be trivially resolved
without the content level merge. This fixes a regression caused by
recent "-3way first and fall back to direct application" change.
* The code that optionally creates the *.rev reverse index file has
been optimized to avoid needless computation when it is not writing
the file out.
* "git range-diff -I... <range> <range>" segfaulted, which has been
corrected.
* The order in which various files that make up a single (conceptual)
packfile has been reevaluated and straightened up. This matters in
correctness, as an incomplete set of files must not be shown to a
running Git.
* The "mode" word is useless in a call to open(2) that does not
create a new file. Such a call in the files backend of the ref
subsystem has been cleaned up.
* "git update-ref --stdin" failed to flush its output as needed,
which potentially led the conversation to a deadlock.
* When "git am --abort" fails to abort correctly, it still exited
with exit status of 0, which has been corrected.
* Correct nr and alloc members of strvec struct to be of type size_t.
* "git stash", where the tentative change involves changing a
directory to a file (or vice versa), was confused, which has been
corrected.
* "git clone" from a repository whose HEAD is unborn into a bare
repository didn't follow the branch name the other side used, which
is corrected.
* "git cvsserver" had a long-standing bug in its authentication code,
which has finally been corrected (it is unclear and is a separate
question if anybody is seriously using it, though).
* "git difftool --dir-diff" mishandled symbolic links.
* Sensitive data in the HTTP trace were supposed to be redacted, but
we failed to do so in HTTP/2 requests.
* "make clean" has been updated to remove leftover .depend/
directories, even when it is not told to use them to compute header
dependencies.
* Protocol v0 clients can get stuck parsing a malformed feature line.
* A few kinds of changes "git status" can show were not documented.
(merge d2a534c515 ja/doc-status-types-and-copies later to maint).
* The mergesort implementation used to sort linked list has been
optimized.
(merge c90cfc225b rs/mergesort later to maint).
* An editor session launched during a Git operation (e.g. during 'git
commit') can leave the terminal in a funny state. The code path
has updated to save the terminal state before, and restore it
after, it spawns an editor.
(merge 3d411afabc cm/save-restore-terminal later to maint).
* "git cat-file --batch" with the "--batch-all-objects" option is
supposed to iterate over all the objects found in a repository, but
it used to translate these object names using the replace mechanism,
which defeats the point of enumerating all objects in the repository.
This has been corrected.
(merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).
* Recent sparse-index work broke safety against attempts to add paths
with trailing slashes to the index, which has been corrected.
(merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).
* The "--color-lines" and "--color-by-age" options of "git blame"
have been missing, which are now documented.
(merge 8c32856133 bs/doc-blame-color-lines later to maint).
* The PATH used in CI job may be too wide and let incompatible dlls
to be grabbed, which can cause the build&test to fail. Tighten it.
(merge 7491ef6198 js/windows-ci-path-fix later to maint).
* Avoid performance measurements from getting ruined by gc and other
housekeeping pauses interfering in the middle.
(merge be79131a53 rs/disable-gc-during-perf-tests later to maint).
* Stop "git add --dry-run" from creating new blob and tree objects.
(merge e578d0311d rs/add-dry-run-without-objects later to maint).
* "git commit" gave duplicated error message when the object store
was unwritable, which has been corrected.
(merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).
* Recent sparse-index addition, namely any use of index_name_pos(),
can expand sparse index entries and breaks any code that walks
cache-tree or existing index entries. One such instance of such a
breakage has been corrected.
* The xxdiff difftool backend can exit with status 128, which the
difftool-helper that launches the backend takes as a significant
failure, when it is not significant at all. Work it around.
(merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).
* Improve test framework around unwritable directories.
(merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).
* "git push" client talking to an HTTP server did not diagnose the
lack of the final status report from the other side correctly,
which has been corrected.
(merge c5c3486f38 jk/http-push-status-fix later to maint).
* Update "git archive" documentation and give explicit mention on the
compression level for both zip and tar.gz format.
(merge c4b208c309 bs/archive-doc-compression-level later to maint).
* Drop "git sparse-index" from the list of common commands.
(merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).
* "git branch -c/-m new old" was not described to copy config, which
has been corrected.
(merge 8252ec300e jc/branch-copy-doc later to maint).
* Squelch over-eager warning message added during this cycle.
(merge 9e8fe7b1c7 jk/log-warn-on-bogus-encoding later to maint).
* Fix long-standing shell syntax error in the completion script.
(merge 46b0585286 re/completion-fix-test-equality later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f188160be9 ab/bundle-remove-verbose-option later to maint).
(merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
(merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
(merge dd20e4a6db ab/make-compdb-fix later to maint).
(merge 6ffb990dc4 os/status-docfix later to maint).
(merge 100c2da2d3 rs/p3400-lose-tac later to maint).
(merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
(merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
(merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
(merge ec9a37d69b ab/pkt-line-cleanup later to maint).
(merge 8650c6298c ab/fix-make-lint-docs later to maint).
(merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
(merge 6b615dbece ks/submodule-add-message-fix later to maint).
(merge 82a57cd13f ma/doc-git-version later to maint).
----------------------------------------------------------------
Changes since v2.33.0 are as follows:
Alex Henrie (1):
pull: abort if --ff-only is given and fast-forwarding is impossible
Andrzej Hunt (1):
connect: also update offset for features without values
Atharva Raykar (11):
submodule--helper: introduce add-config subcommand
submodule--helper: add options for compute_submodule_clone_url()
submodule--helper: refactor resolve_relative_url() helper
submodule--helper: remove repeated code in sync_submodule()
dir: libify and export helper functions from clone.c
submodule--helper: convert the bulk of cmd_add() to C
submodule--helper: remove add-clone subcommand
submodule--helper: remove add-config subcommand
submodule--helper: remove resolve-relative-url subcommand
submodule--helper: rename compute_submodule_clone_url()
submodule--helper: run update procedures from C
Azeem Bande-Ali (1):
help.c: help.autocorrect=prompt waits for user action
Bagas Sanjaya (8):
make: add INSTALL_STRIP option variable
Documentation: fix default directory of git bugreport -o
ls-files: use imperative mood for -X and -z option description
difftool: fix word spacing in the usage strings
blame: describe default output format
bisect--helper: add space between colon and following sentence
blame: document --color-* options
archive: describe compression level option
Ben Boeckel (2):
advice: add enum variants for missing advice variables
advice: remove read uses of most global `advice_` variables
Carlo Marcelo Arenas Belón (23):
build: update detect-compiler for newer Xcode version
builtin/merge: avoid -Wformat-extra-args from ancient Xcode
ci: run a pedantic build as part of the GitHub workflow
ci: update freebsd 12 cirrus job
ci: use upload-artifacts v1 for dockerized jobs
remote: avoid -Wunused-but-set-variable in gcc with -DNDEBUG
win32: allow building with pedantic mode enabled
developer: enable pedantic by default
t0301: fixes for windows compatibility
credential-cache: check for windows specific errors
git-compat-util: include declaration for unix sockets in windows
tree-diff: fix leak when not HAVE_ALLOCA_H
t0000: avoid masking git exit value through pipes
git-cvsserver: use crypt correctly to compare password hashes
git-cvsserver: protect against NULL in crypt(3)
Documentation: cleanup git-cvsserver
unicode: update the width tables to Unicode 14
simple-ipc: move definition of ipc_active_state outside of ifdef
lazyload.h: use an even more generic function pointer than FARPROC
Makefile: restrict -Wpedantic and -Wno-pedantic-ms-format better
terminal: teach git how to save/restore its terminal settings
editor: save and reset terminal after calling EDITOR
wrapper: remove xunsetenv()
David Aguilar (6):
difftool: fix symlink-file writing in dir-diff mode
difftool: create a tmpdir path without repeated slashes
difftool: refactor dir-diff to write files using helper functions
difftool: remove an unnecessary call to strbuf_release()
difftool: add a missing space to the run_dir_diff() comments
mergetools/xxdiff: prevent segfaults from stopping difftool
David Turner (3):
t4060: remove unused variable
diff --submodule=diff: do not fail on ever-initialied deleted submodules
diff --submodule=diff: don't print failure message twice
Derrick Stolee (35):
t1092: test merge conflicts outside cone
add: allow operating on a sparse-only index
pathspec: stop calling ensure_full_index
add: ignore outside the sparse-checkout in refresh()
add: remove ensure_full_index() with --renormalize
maintenance: skip bootout/bootstrap when plist is registered
t7519: rewrite sparse index test
sparse-index: silently return when not using cone-mode patterns
unpack-trees: fix nested sparse-dir search
sparse-index: silently return when cache tree fails
sparse-index: use WRITE_TREE_MISSING_OK
sparse-checkout: create helper methods
attr: be careful about sparse directories
sparse-index: add SPARSE_INDEX_MEMORY_ONLY flag
sparse-checkout: clear tracked sparse dirs
diff: ignore sparse paths in diffstat
merge: make sparse-aware with ORT
merge-ort: expand only for out-of-cone conflicts
t1092: add cherry-pick, rebase tests
sequencer: ensure full index if not ORT strategy
sparse-index: integrate with cherry-pick and rebase
t/perf/run: fix bin-wrappers computation
t3705: test that 'sparse_entry' is unstaged
t1092: behavior for adding sparse files
dir: select directories correctly
dir: fix pattern matching on dirs
add: fail when adding an untracked sparse file
add: skip tracked paths outside sparse-checkout cone
add: implement the --sparse option
add: update --chmod to skip sparse paths
add: update --renormalize to skip sparse paths
rm: add --sparse option
rm: skip sparse paths with missing SKIP_WORKTREE
mv: refuse to move sparse paths
advice: update message to suggest '--sparse'
Elijah Newren (48):
t7601: test interaction of merge/rebase/fast-forward flags and options
t7601: add tests of interactions with multiple merge heads and config
pull: since --ff-only overrides, handle it first
pull: make --rebase and --no-rebase override pull.ff=only
pull: abort by default when fast-forwarding is not possible
pull: update docs & code for option compatibility with rebasing
pull: fix handling of multiple heads
merge-ort: rename str{map,intmap,set}_func()
diffcore-rename: use a mem_pool for exact rename detection's hashmap
merge-ort: add pool_alloc, pool_calloc, and pool_strndup wrappers
merge-ort: set up a memory pool
merge-ort: switch our strmaps over to using memory pools
diffcore-rename, merge-ort: add wrapper functions for filepair alloc/dealloc
merge-ort: store filepairs and filespecs in our mem_pool
merge-ort: reuse path strings in pool_alloc_filespec
merge-ort: remove compile-time ability to turn off usage of memory pools
git-rebase.txt: correct antiquated claims about --rebase-merges
directory-rename-detection.txt: small updates due to merge-ort optimizations
Documentation: edit awkward references to `git merge-recursive`
merge-strategies.txt: update wording for the resolve strategy
merge-strategies.txt: do not imply using copy detection is desired
merge-strategies.txt: avoid giving special preference to patience algorithm
merge-strategies.txt: fix simple capitalization error
git-rebase.txt: correct out-of-date and misleading text about renames
merge-strategies.txt: add coverage of the `ort` merge strategy
Update error message and code comment
Change default merge backend from recursive to ort
Update docs for change of default merge backend
t3903: document a pair of directory/file bugs
stash: avoid feeding directories to update-index
stash: restore untracked files AFTER restoring tracked files
git-am.txt: clarify --abort behavior
t4151: add a few am --abort tests
am: fix incorrect exit status on am fail to abort
tests: remove leftover untracked files
trace2.h: fix trivial comment typo
merge-ort: fix completely wrong comment
t2500: add various tests for nuking untracked files
checkout, read-tree: fix leak of unpack_trees_options.dir
read-tree, merge-recursive: overwrite ignored files by default
unpack-trees: introduce preserve_ignored to unpack_trees_options
unpack-trees: make dir an internal-only struct
Remove ignored files by default when they are in the way
Change unpack_trees' 'reset' flag into an enum
unpack-trees: avoid nuking untracked dir in way of unmerged file
unpack-trees: avoid nuking untracked dir in way of locally deleted file
Comment important codepaths regarding nuking untracked files/dirs
Documentation: call out commands that nuke untracked files/directories
Emily Shaffer (3):
tr2: make process info collection platform-generic
tr2: log parent process name
hook.c: add a hook_exists() wrapper and use it in bugreport.c
Eric Wong (1):
doc/technical: update note about core.multiPackIndex
Fabian Stelzer (11):
ssh signing: preliminary refactoring and clean-up
ssh signing: add test prereqs
ssh signing: add ssh key format and signing code
ssh signing: retrieve a default key from ssh-agent
ssh signing: provide a textual signing_key_id
ssh signing: verify signatures using ssh-keygen
ssh signing: duplicate t7510 tests for commits
ssh signing: tests for logs, tags & push certs
ssh signing: test that gpg fails for unknown keys
ssh signing: fmt-merge-msg tests & config parse
ssh signing: clarify trustlevel usage in docs
Felipe Contreras (4):
completion: bash: fix prefix detection in branch.*
completion: bash: fix for suboptions with value
completion: bash: fix for multiple dash commands
completion: bash: add correct suffix in variables
Glen Choo (1):
MyFirstContribution: Document --range-diff option when writing v2
Greg Hurrell (1):
gitweb: use HEAD as secondary sort key in git_get_heads_list()
Han-Wen Nienhuys (14):
t6050: use git-update-ref rather than filesystem access
t1503: mark symlink test as REFFILES
t6120: use git-update-ref rather than filesystem access
t3320: use git-symbolic-ref rather than filesystem access
t2402: use ref-store test helper to create broken symlink
t1405: use 'git reflog exists' to check reflog existence
t1405: mark test for 'git pack-refs' as REFFILES
t1410: mark test as REFFILES
t7064: use update-ref -d to remove upstream branch
t6500: use "ls -1" to snapshot ref database state
t6001: avoid direct file system access
refs: remove EINVAL errno output from specification of read_raw_ref_fn
refs/files-backend: stop setting errno from lock_ref_oid_basic
refs: make errno output explicit for read_raw_ref_fn
Jacob Vosmaer (2):
pkt-line: add stdio packet write functions
upload-pack: use stdio in send_ref callbacks
Jeff Hostetler (8):
sparse-index: copy dir_hash in ensure_full_index()
trace2: add trace2_child_ready() to report on background children
simple-ipc: preparations for supporting binary messages.
simple-ipc/ipc-win32: add trace2 debugging
simple-ipc/ipc-win32: add Windows ACL to named pipe
run-command: create start_bg_command
t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command
t/perf/perf-lib.sh: remove test_times.* at the end test_perf_()
Jeff King (72):
http: drop support for curl < 7.11.1
http: drop support for curl < 7.16.0
http: drop support for curl < 7.19.4
build: clang version may not be followed by extra words
range-diff: drop useless "offset" variable from read_patches()
range-diff: handle unterminated lines in read_patches()
range-diff: use ssize_t for parsed "len" in read_patches()
apply: keep buffer/size pair in sync when parsing binary hunks
t5323: drop mentions of "master"
refs: drop unused "flags" parameter to lock_ref_oid_basic()
logmsg_reencode(): warn when iconv() fails
docs: use "character encoding" to refer to commit-object encoding
t0410: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
pack-bitmap: drop repository argument from prepare_midx_bitmap_git()
pack-bitmap: drop bitmap_index argument from try_partial_reuse()
t5562: use alarm() to interrupt timed child-wait
t5551: test v2-to-v0 http protocol fallback
http-backend: handle HTTP_GIT_PROTOCOL CGI variable
docs/http-backend: mention v2 protocol
docs/git: discuss server-side config for GIT_PROTOCOL
docs/protocol-v2: point readers transport config discussion
strvec: use size_t to store nr and alloc
difftool: prepare "diff" cmdline in cmd_difftool()
serve: rename is_command() to parse_command()
serve: return capability "value" from get_capability()
serve: add "receive" method for v2 capabilities table
serve: provide "receive" function for object-format capability
serve: provide "receive" function for session-id capability
serve: drop "keys" strvec
ls-refs: ignore very long ref-prefix counts
docs/protocol-v2: clarify some ls-refs ref-prefix details
serve: reject bogus v2 "command=ls-refs=foo"
serve: reject commands used as capabilities
ls-refs: reject unknown arguments
t1400: avoid SIGPIPE race condition on fifo
clone: handle unborn branch in bare repos
grep: stop modifying buffer in strip_timestamp
grep: stop modifying buffer in show_line()
grep: stop modifying buffer in grep_source_1()
grep: mark "haystack" buffers as const
grep: store grep_source buffer as const
http: match headers case-insensitively when redacting
t7900: clean up some more broken refs
t5516: don't use HEAD ref for invalid ref-deletion tests
t5600: provide detached HEAD for corruption failures
t5312: drop "verbose" helper
t5312: create bogus ref as necessary
t5312: test non-destructive repack
t5312: be more assertive about command failure
refs-internal.h: move DO_FOR_EACH_* flags next to each other
refs-internal.h: reorganize DO_FOR_EACH_* flag documentation
refs: add DO_FOR_EACH_OMIT_DANGLING_SYMREFS flag
refs: omit dangling symrefs when using GIT_REF_PARANOIA
refs: turn on GIT_REF_PARANOIA by default
repack, prune: drop GIT_REF_PARANOIA settings
ref-filter: stop setting FILTER_REFS_INCLUDE_BROKEN
ref-filter: drop broken-ref code entirely
refs: drop "broken" flag from for_each_fullref_in()
test-read-midx: fix leak of bitmap_index struct
t1006: clean up broken objects
cat-file: mention --unordered along with --batch-all-objects
cat-file: disable refs/replace with --batch-all-objects
cat-file: split ordered/unordered batch-all-objects callbacks
cat-file: use packed_object_info() for --batch-all-objects
gpg-interface: fix leak of "line" in parse_ssh_output()
gpg-interface: fix leak of strbufs in get_ssh_key_fingerprint()
send-pack: complain about "expecting report" with --helper-status
transport-helper: recognize "expecting report" error from send-pack
submodule: drop unused sm_name parameter from append_fetch_remotes()
Documentation/Makefile: fix lint-docs mkdir dependency
log: document --encoding behavior on iconv() failure
Jiang Xin (1):
ci: new github-action for git-l10n code review
Joel Klinghed (1):
commit: restore --edit when combined with --fixup
Johannes Altmanninger (4):
Documentation/git-status: remove impossible porcelain status DR and DC
Documentation/diff-format: state in which cases porcelain status is T
Documentation/git-status: document porcelain status T (typechange)
Documentation/git-status: mention how to detect copies
Johannes Schindelin (24):
tests: exercise the RUNTIME_PREFIX feature
expand_user_path(): remove stale part of the comment
expand_user_path(): clarify the role of the `real_home` parameter
Use a better name for the function interpolating paths
interpolate_path(): allow specifying paths relative to the runtime prefix
maintenance: create `launchctl` configuration using a lock file
t5520: do not use `pull.rebase=preserve`
remote: warn about unhandled branch.<name>.rebase values
tests: stop testing `git rebase --preserve-merges`
pull: remove support for `--rebase=preserve`
rebase: drop support for `--preserve-merges`
git-svn: drop support for `--preserve-merges`
rebase: drop the internal `rebase--interactive` command
rebase: remove obsolete code comment
rebase: stop mentioning the -p option in comments
rebase: remove a no-longer-used function
sequencer: restrict scope of a formerly public function
commit-graph: when closing the graph, also release the slab
pull: release packs before fetching
run-command: prettify the `RUN_COMMAND_*` flags
run-command: offer to close the object store before running
run_auto_maintenance(): implicitly close the object store
Close object store closer to spawning child processes
ci(windows): ensure that we do not pick up random executables
Johannes Sixt (9):
t9001: PATH must not use Windows-style paths
lazyload.h: fix warnings about mismatching function pointer types
t4034/cpp: actually test that operator tokens are not split
t4034: add tests showing problematic cpp tokenizations
userdiff-cpp: tighten word regex
userdiff-cpp: prepare test cases with yet unsupported features
userdiff-cpp: permit the digit-separating single-quote in numbers
userdiff-cpp: learn the C++ spaceship operator
userdiff-cpp: back out the digit-separators in numbers
Jonathan Tan (22):
send-pack: fix push.negotiate with remote helper
send-pack: fix push nego. when remote has refs
fetch: die on invalid --negotiation-tip hash
submodule: lazily add submodule ODBs as alternates
grep: use submodule-ODB-as-alternate lazy-addition
grep: typesafe versions of grep_source_init
grep: read submodule entry with explicit repo
grep: allocate subrepos on heap
grep: add repository to OID grep sources
submodule-config: pass repo upon blob config read
t7814: show lack of alternate ODB-adding
submodule: remove unnecessary unabsorbed fallback
repository: support unabsorbed in repo_submodule_init
revision: remove "submodule" from opt struct
submodule: extract path to submodule gitdir func
refs: plumb repo into ref stores
refs: teach arbitrary repo support to iterators
refs: peeling non-the_repository iterators is BUG
merge-{ort,recursive}: remove add_submodule_odb()
object-file: only register submodule ODB if needed
submodule: pass repo to check_has_commit()
submodule: trace adding submodule ODB as alternate
Josh Steadmon (2):
connect, protocol: log negotiated protocol version
sequencer: advise if skipping cherry-picked commit
Junio C Hamano (27):
expand_user_path: allow in-flight topics to keep using the old name
bisect: do not run show-branch just to show the current commit
bisect: simplify return code from bisect_checkout()
build: catch clang that identifies itself as "$VENDOR clang"
userdiff: comment on the builtin patterns
The first batch post 2.33
The second batch
The third batch
apply: resolve trivial merge without hitting ll-merge with "--3way"
hash-object: prefix_filename() returns allocated memory these days
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
The tenth batch
The eleventh batch
Twelfth batch
Git 2.33.1
signature-format.txt: explain and illustrate multi-line headers
Thirteenth batch
The fourteenth batch
branch (doc): -m/-c copies config and reflog
The fifteenth batch
Revert "logmsg_reencode(): warn when iconv() fails"
Git 2.34-rc0
Kaartic Sivaraam (1):
submodule--helper: fix incorrect newlines in an error message
Kim Altintop (3):
t5730: introduce fetch command helper
upload-pack.c: treat want-ref relative to namespace
docs: clarify the interaction of transfer.hideRefs and namespaces
Kyle Zhao (1):
pack-revindex.h: correct the time complexity descriptions
Lénaïc Huard (4):
cache.h: Introduce a generic "xdg_config_home_for(…)" function
maintenance: `git maintenance run` learned `--scheduler=<scheduler>`
maintenance: add support for systemd timers on Linux
maintenance: fix test t7900-maintenance.sh
Mahi Kolla (1):
clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled
Martin Ågren (6):
config.txt: fix typo
git.txt: fix typo
git-multi-pack-index.txt: change "folder" to "directory"
gitignore.txt: change "folder" to "directory"
gitweb.txt: change "folder" to "directory"
git-bundle.txt: add missing words and punctuation
Marvin Häuser (1):
send-email: avoid incorrect header propagation
Matheus Tavares (3):
checkout: make delayed checkout respect --quiet and --no-progress
grep: demonstrate bug with textconv attributes and submodules
add, rm, mv: fix bug that prevents the update of non-sparse dirs
Matthias Aßhauer (2):
help: make sure local html page exists before calling external processes
documentation: add documentation for 'git version'
Mickey Endito (1):
t5582: remove spurious 'cd "$D"' line
Mike Hommey (1):
credential: fix leak in credential_apply_config()
Miriam Rubio (3):
t6030-bisect-porcelain: add tests to control bisect run exit cases
t6030-bisect-porcelain: add test for bisect visualize
bisect--helper: retire `--bisect-next-check` subcommand
Orgad Shaneh (1):
doc: fix capitalization in "git status --porcelain=v2" description
Patrick Steinhardt (16):
fetch-pack: speed up loading of refs via commit graph
revision: separate walk and unsorted flags
connected: do not sort input revisions
revision: stop retrieving reference twice
commit-graph: split out function to search commit position
revision: avoid hitting packfiles when commits are in commit-graph
ls-refs: reuse buffer when sending refs
fetch: skip formatting updated refs with `--quiet`
fetch: speed up lookup of want refs via commit-graph
fetch: avoid unpacking headers in object existence check
connected: refactor iterator to return next object ID directly
fetch-pack: optimize loading of refs via commit graph
fetch: refactor fetch refs to be more extendable
fetch: merge fetching and consuming refs
fetch: avoid second connectivity check if we already have all objects
update-ref: fix streaming of status updates
Philip Oakley (1):
doc: config, tell readers of `git help --config`
Philippe Blain (3):
test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'
test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'
test-lib-functions: keep user's debugger config files and TERM in 'debug'
Phillip Wood (21):
t3403: fix commit authorship
rebase --apply: restore some tests
rebase --continue: remove .git/MERGE_MSG
rebase -r: make 'merge -c' behave like reword
rebase -i: add another reword test
rebase -r: don't write .git/MERGE_MSG when fast-forwarding
rebase -r: fix merge -c with a merge strategy
t3407: run tests in $TEST_DIRECTORY
t3407: use test_commit
t3407: use test_cmp_rev
t3407: rename a variable
t3407: use test_path_is_missing
t3407: strengthen rebase --abort tests
t3407: rework rebase --quit tests
rebase: use our standard error return value
rebase: use lookup_commit_reference_by_name()
rebase: dereference tags
sequencer.c: factor out a function
rebase: fix todo-list rereading
sparse index: fix use-after-free bug in cache_tree_verify()
t1092: run "rebase --apply" without "-q" in testing
Pranit Bauva (2):
run-command: make `exists_in_PATH()` non-static
bisect--helper: reimplement `bisect_visualize()` shell function in C
René Scharfe (34):
compat: let git_mmap use malloc(3) directly
xopen: explicitly report creation failures
use xopen() to handle fatal open(2) failures
show-branch: simplify rev_is_head()
archive: convert queue_directory to struct object_id
branch: allow deleting dangling branches with --force
merge-recursive: use fspathcmp() in path_hashmap_cmp()
range-diff: avoid segfault with -I
setup: use xopen and xdup in sanitize_stdfds
refs/files-backend: remove unused open mode parameter
index-pack: use xopen in init_thread
oidset: make oidset_size() an inline function
midx: inline nth_midxed_pack_entry()
packfile: convert mark_bad_packed_object() to object_id
packfile: convert has_packed_and_bad() to object_id
packfile: use oidset for bad objects
compression: drop write-only core_compression_* variables
packfile: release bad_objects in close_pack()
test-mergesort: use strbuf_getline()
test-mergesort: add sort subcommand
test-mergesort: add test subcommand
test-mergesort: add generate subcommand
test-mergesort: add unriffle mode
test-mergesort: add unriffle_skewed mode
p0071: measure sorting of already sorted and reversed files
p0071: test performance of llist_mergesort()
mergesort: use ranks stack
p3400: stop using tac(1)
t3905: show failure to ignore sub-repo
read-cache: add verify_path_internal()
read-cache: let verify_path() reject trailing dir separators again
test-mergesort: use repeatable random numbers
perf: disable automatic housekeeping
add: don't write objects with --dry-run
Robert Estelle (1):
completion: fix incorrect bash/zsh string equality check
SZEDER Gábor (12):
Makefile: remove archives before manipulating them with 'ar'
column: fix parsing of the '--nl' option
test-lib: set GIT_CEILING_DIRECTORIES to protect the surrounding repository
t1600-index: remove unnecessary redirection
t1600-index: don't run git commands upstream of a pipe
t1600-index: disable GIT_TEST_SPLIT_INDEX
read-cache: look for shared index files next to the index, too
tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests
read-cache: fix GIT_TEST_SPLIT_INDEX
commit-graph: fix bogus counter in "Scanning merged commits" progress line
entry: show finer-grained counter in "Filtering content" progress line
command-list.txt: remove 'sparse-index' from main help
Sergey Organov (1):
diff-index: restore -c/--cc options handling
Takashi Iwai (1):
completion: tcsh: Fix regression by drop of wrapper functions
Tal Kelrich (1):
fast-export: fix anonymized tag using original length
Tanushree Tumane (1):
bisect--helper: reimplement `bisect_run` shell function in C
Tassilo Horn (1):
userdiff: improve java hunk header regex
Taylor Blau (55):
pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
pack-bitmap-write.c: free existing bitmaps
Documentation: describe MIDX-based bitmaps
object-store.h: teach for_each_packed_object to ignore kept packs
builtin/pack-objects.c: simplify add_objects_in_unpacked_packs()
builtin/pack-objects.c: remove duplicate hash lookup
midx: disallow running outside of a repository
midx: fix `*.rev` cleanups with `--object-dir`
midx: clear auxiliary .rev after replacing the MIDX
midx: reject empty `--preferred-pack`'s
midx: infer preferred pack when not given one
midx: close linked MIDXs, avoid leaking memory
midx: avoid opening multiple MIDXs when writing
pack-bitmap.c: introduce 'bitmap_num_objects()'
pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
pack-bitmap.c: avoid redundant calls to try_partial_reuse
pack-bitmap: read multi-pack bitmaps
pack-bitmap: write multi-pack bitmaps
t5310: move some tests to lib-bitmap.sh
t/helper/test-read-midx.c: add --checksum mode
t5326: test multi-pack bitmap behavior
t5319: don't write MIDX bitmaps in t5319
t7700: update to work with MIDX bitmap test knob
midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
p5310: extract full and partial bitmap tests
p5326: perf tests for MIDX bitmaps
bulk-checkin.c: store checksum directly
pack-write.c: rename `.idx` files after `*.rev`
builtin/repack.c: move `.idx` files into place last
builtin/index-pack.c: move `.idx` files into place last
t/helper/test-bitmap.c: add 'dump-hashes' mode
pack-bitmap.c: propagate namehash values from existing bitmaps
midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps
p5326: create missing 'perf-tag' tag
p5326: don't set core.multiPackIndex unnecessarily
p5326: generate pack bitmaps before writing the MIDX bitmap
t5326: test propagating hashcache values
builtin/commit-graph.c: don't accept common --[no-]progress
builtin/multi-pack-index.c: disable top-level --[no-]progress
midx: expose `write_midx_file_only()` publicly
builtin/multi-pack-index.c: support `--stdin-packs` mode
midx: preliminary support for `--refs-snapshot`
builtin/repack.c: keep track of existing packs unconditionally
builtin/repack.c: rename variables that deal with non-kept packs
builtin/repack.c: extract showing progress to a variable
builtin/repack.c: support writing a MIDX while repacking
builtin/repack.c: make largest pack preferred
builtin/repack.c: pass `--refs-snapshot` when writing bitmaps
t/perf/aggregate.perl: tolerate leading spaces
midx.c: extract MIDX lookup by object_dir
midx.c: lookup MIDX by object directory during expire
midx.c: lookup MIDX by object directory during repack
midx.c: guard against commit_lock_file() failures
Teng Long (1):
list-objects.c: rename "traverse_trees_and_blobs" to "traverse_non_commits"
Todd Zullinger (1):
doc: add bundle-format to TECH_DOCS
USAMI Kenta (1):
userdiff: support enum keyword in PHP hunk header
Wesley Schwengle (1):
Document `rebase.forkpoint` in rebase man page
ZheNing Hu (6):
ref-filter: add obj-type check in grab contents
ref-filter: add %(raw) atom
ref-filter: --format=%(raw) support --perl
ref-filter: use non-const ref_format in *_atom_parser()
ref-filter: add %(rest) atom
cherry-pick: use better advice message
Zoker (1):
doc: fix syntax error and the format of printf
brian m. carlson (1):
t5607: avoid using prerequisites to select algorithm
Ævar Arnfjörð Bjarmason (221):
pack-objects tests: cover blindspots in stdin handling
Makefile: move ".PHONY: cscope" near its target
Makefile: add QUIET_GEN to "cscope" target
pack-objects: fix segfault in --stdin-packs option
test-lib tests: move "run_sub_test" to a new lib-subtest.sh
Makefile: don't use "FORCE" for tags targets
http: drop support for curl < 7.19.3 and < 7.17.0 (again)
http: rename CURLOPT_FILE to CURLOPT_WRITEDATA
bundle doc: elaborate on object prerequisites
bundle doc: elaborate on rev<->ref restriction
bundle doc: rewrite the "DESCRIPTION" section
bundle doc: replace "basis" with "prerequsite(s)"
serve: mark has_capability() as static
transport: rename "fetch" in transport_vtable to "fetch_refs"
transport: use designated initializers
serve: use designated initializers
serve.[ch]: don't pass "struct strvec *keys" to commands
serve: move transfer.advertiseSID check into session_id_advertise()
serve.c: move version line to advertise_capabilities()
{upload,receive}-pack tests: add --advertise-refs tests
serve.[ch]: remove "serve_options", split up --advertise-refs code
upload-pack: document and rename --advertise-refs
Makefile: remove "cscope.out", not "cscope*" in cscope.out target
Makefile: normalize clobbering & xargs for tags targets
refs/packet: add missing BUG() invocations to reflog callbacks
refs/files: remove unused REF_DELETING in lock_ref_oid_basic()
ls-remote: set packet_trace_identity(<name>)
rebase: emit one "fatal" in "fatal: fatal: <error>"
advice: remove use of global advice_add_embedded_repo
advice: move advice.graftFileDeprecated squashing to commit.[ch]
refs/files: remove unused "extras/skip" in lock_ref_oid_basic()
refs/files: remove unused "skip" in lock_raw_ref() too
refs/debug: re-indent argument list for "prepare"
refs: make repo_dwim_log() accept a NULL oid
refs/files: add a comment about refs_reflog_exists() call
reflog expire: don't lock reflogs using previously seen OID
refs API: remove OID argument to reflog_expire()
refs/files: remove unused "oid" in lock_ref_oid_basic()
refs/files: remove unused "errno == EISDIR" code
refs/files: remove unused "errno != ENOTDIR" condition
refs file backend: move raceproof_create_file() here
bundle API: start writing API documentation
commit-graph: define common usage with a macro
commit-graph: remove redundant handling of -h
commit-graph: use parse_options_concat()
multi-pack-index: refactor "goto usage" pattern
commit-graph: early exit to "usage" on !argc
commit-graph: show usage on "commit-graph [write|verify] garbage"
commit-graph: show "unexpected subcommand" error
protocol-caps.c: fix memory leak in send_info()
mailmap.c: fix a memory leak in free_mailap_{info,entry}()
gc: remove trailing dot from "gc.log" line
gettext: remove optional non-standard parens in N_() definition
bundle API: change "flags" to be "extra_index_pack_args"
index-pack: add --progress-title option
bundle: show progress on "unbundle"
tr2: remove NEEDSWORK comment for "non-procfs" implementations
tr2: clarify TRACE2_PROCESS_INFO_EXIT comment under Linux
tr2: stop leaking "thread_name" memory
tr2: leave the parent list empty upon failure & don't leak memory
tr2: do compiler enum check in trace2_collect_process_info()
tr2: log N parent process names on Linux
send-email: fix a "first config key wins" regression in v2.33.0
Makefile: remove the check_bindir script
pack-write: skip *.rev work when not writing *.rev
pack.h: line-wrap the definition of finish_tmp_packfile()
pack-write: refactor renaming in finish_tmp_packfile()
index-pack: refactor renaming in final()
pack-write: split up finish_tmp_packfile() function
pack-objects: rename .idx files into place after .bitmap files
help: correct the usage string in -h and documentation
INSTALL: don't mention the "curl" executable at all
INSTALL: reword and copy-edit the "libcurl" section
git-submodule: remove unused is_zero_oid() function
git-sh-setup: remove unused "pull with rebase" message
git-bisect: remove unused SHA-1 $x40 shell variable
test-lib: remove unused $_x40 and $_z40 variables
test-tool run-command: fix flip-flop init pattern
gc: remove unused launchctl_get_uid() call
parse-options API users: align usage output in C-strings
send-pack: properly use parse_options() API for usage string
git rev-parse --parseopt tests: add more usagestr tests
difftool: prepare "struct child_process" in cmd_difftool()
difftool: use run_command() API in run_file_diff()
parse-options API: remove OPTION_ARGUMENT feature
INSTALL: mention that we need libcurl 7.19.4 or newer to build
Makefile: drop support for curl < 7.9.8 (again)
http: drop support for curl < 7.18.0 (again)
http: correct version check for CURL_HTTP_VERSION_2
http: correct curl version check for CURLOPT_PINNEDPUBLICKEY
http: centralize the accounting of libcurl dependencies
http: don't hardcode the value of CURL_SOCKOPT_OK
wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c
environment.c: remove test-specific "ignore_untracked..." variable
read-cache & fetch-negotiator: check "enum" values in switch()
repo-settings.c: simplify the setup
repository.h: don't use a mix of int and bitfields
Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes
parse-options: properly align continued usage output
test-lib tests: split up "write and run" into two functions
test-lib tests: don't provide a description for the sub-tests
test-lib tests: avoid subshell for "test_cmp" for readability
test-lib tests: refactor common part of check_sub_test_lib_test*()
test-lib tests: assert 1 exit code, not non-zero
test-lib tests: get rid of copy/pasted mock test code
Makefile: make the "sparse" target non-.PHONY
Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic
help: correct usage & behavior of "git help --guides"
help tests: add test for --config output
help: correct logic error in combining --all and --config
help: correct logic error in combining --all and --guides
help: simplify by moving to OPT_CMDMODE()
help tests: test --config-for-completion option & output
help / completion: make "git help" do the hard work
help: move column config discovery to help.c library
Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS
tests: add a test mode for SANITIZE=leak, run it in CI
bundle: remove ignored & undocumented "--verbose" flag
Makefile: mark "check" target as .PHONY
Makefile: stop hardcoding {command,config}-list.h
Makefile: don't perform "mv $@+ $@" dance for $(GENERATED_H)
Makefile: remove an out-of-date comment
hook.[ch]: move find_hook() from run-command.c to hook.c
hook.c users: use "hook_exists()" instead of "find_hook()"
hook-list.h: add a generated list of hooks, like config-list.h
http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors
Makefile: pass -Wno-pendantic under GENERATE_COMPILATION_DATABASE=yes
submodule-config.h: remove unused SUBMODULE_INIT macro
*.[ch] *_INIT macros: use { 0 } for a "zero out" idiom
*.h _INIT macros: don't specify fields equal to 0
*.h: move some *_INIT to designated initializers
cbtree.h: define cb_init() in terms of CBTREE_INIT
daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro
builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro
string-list.[ch]: remove string_list_init() compatibility function
config.c: remove unused git_config_key_is_valid()
refs.[ch]: remove unused ref_storage_backend_exists()
refs/ref-cache.[ch]: remove unused remove_entry_from_dir()
refs/ref-cache.[ch]: remove unused add_ref_entry()
refs/ref-cache.c: remove "mkdir" parameter from find_containing_dir()
refs/ref-cache.[ch]: remove "incomplete" from create_dir_entry()
parse-options.h: move PARSE_OPT_SHELL_EVAL between enums
urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
builtin/remote.c: add and use a REF_STATES_INIT
builtin/remote.c: add and use SHOW_INFO_INIT
builtin.h: remove cmd_tar_tree() declaration
grep.h: remove unused grep_threads_ok() declaration
log-tree.h: remove unused function declarations
config.h: remove unused git_config_get_untracked_cache() declaration
fsck tests: add test for fsck-ing an unknown type
fsck tests: refactor one test to use a sub-repo
fsck tests: test current hash/type mismatch behavior
fsck tests: test for garbage appended to a loose object
cat-file tests: move bogus_* variable declarations earlier
cat-file tests: test for missing/bogus object with -t, -s and -p
cat-file tests: add corrupt loose object test
cat-file tests: test for current --allow-unknown-type behavior
object-file.c: don't set "typep" when returning non-zero
object-file.c: return -1, not "status" from unpack_loose_header()
object-file.c: make parse_loose_header_extended() public
object-file.c: simplify unpack_loose_short_header()
object-file.c: use "enum" return type for unpack_loose_header()
object-file.c: return ULHR_TOO_LONG on "header too long"
object-file.c: stop dying in parse_loose_header()
fsck: don't hard die on invalid object types
fsck: report invalid object type-path combinations
unpack-trees: don't leak memory in verify_clean_subdirectory()
tests: fix a memory leak in test-prio-queue.c
tests: fix a memory leak in test-parse-options.c
tests: fix a memory leak in test-oidtree.c
tests: fix test-oid-array leak, test in SANITIZE=leak
ls-files: fix a trivial dir_clear() leak
ls-files: add missing string_list_clear()
merge: add missing strbuf_release()
parse-options.[ch]: consistently use "enum parse_opt_flags"
parse-options.[ch]: consistently use "enum parse_opt_result"
parse-options.c: use exhaustive "case" arms for "enum parse_opt_result"
parse-options.h: make the "flags" in "struct option" an enum
parse-options.c: move optname() earlier in the file
commit-graph: stop using optname()
parse-options.[ch]: make opt{bug,name}() "static"
parse-options tests: test optname() output
parse-options: change OPT_{SHORT,UNSET} to an enum
unwritable tests: assert exact error output
commit: fix duplication regression in permission error output
leak tests: run various built-in tests in t00*.sh SANITIZE=leak
leak tests: run various "test-tool" tests in t00*.sh SANITIZE=leak
leak tests: mark all ls-tree tests as passing with SANITIZE=leak
leak tests: mark all trace2 tests as passing with SANITIZE=leak
leak tests: mark all checkout-index tests as passing with SANITIZE=leak
leak tests: mark some ls-files tests as passing with SANITIZE=leak
leak tests: mark some read-tree tests as passing with SANITIZE=leak
leak tests: mark various "generic" tests as passing with SANITIZE=leak
leak tests: mark some misc tests as passing with SANITIZE=leak
sequencer: add a "goto cleanup" to do_reset()
sequencer: fix a memory leak in do_reset()
test-lib.sh: de-duplicate error() teardown code
test-lib.sh: use "Bail out!" syntax on bad SANITIZE=leak use
test-lib.sh: try to re-chmod & retry on failed trash removal
"lib-diff" tests: make "README" and "COPYING" test data smaller
tests: stop using top-level "README" and "COPYING" files
doc lint: fix error-hiding regression
doc lint: emit errors on STDERR
doc build: speed up "make lint-docs"
doc lint: make "lint-docs" non-.PHONY
pkt-line.[ch]: remove unused packet_buf_write_len()
pkt-line.[ch]: remove unused packet_read_line_buf()
git config doc: fix recent ASCIIDOC formatting regression
tag: use a "goto cleanup" pattern, leak less memory
ref-filter API user: add and use a ref_sorting_release()
branch: use ref_sorting_release()
git-sh-i18n: remove unused eval_ngettext()
git-sh-setup: remove messaging supporting --preserve-merges
Makefile: remove redundant GIT-CFLAGS dependency from "sparse"
config.c: don't leak memory in handle_path_include()
grep: prefer "struct grep_opt" over its "void *" equivalent
grep: use object_array_clear() in cmd_grep()
grep: fix a "path_list" memory leak
clone: fix a memory leak of the "git_dir" variable
submodule--helper: fix small memory leaks
reflog: free() ref given to us by dwim_log()
Đoàn Trần Công Danh (3):
t6300: don't run cat-file on non-existent object
t6300: check for cat-file exit status code
diff-lib: ignore paths that are outside $cwd if --relative asked
^ permalink raw reply [relevance 3%]
* [PATCH RESEND v3] make: add INSTALL_STRIP option variable
@ 2021-09-05 11:04 3% Bagas Sanjaya
0 siblings, 0 replies; 162+ results
From: Bagas Sanjaya @ 2021-09-05 11:04 UTC (permalink / raw)
To: git
Cc: Carlo Arenas, Đoàn Trần Công Danh,
felipe.contreras, Ævar Arnfjörð Bjarmason,
Eric Sunshine, Johannes Schindelin, Elijah Newren, Derrick Stolee,
Bagas Sanjaya, Junio C Hamano
From: Junio C Hamano <gitster@pobox.com>
Add $(INSTALL_STRIP), which allows passing stripping options to
$(INSTALL).
For this to work, installing executables must be split to installing
compiled binaries and scripts portions, since $(INSTALL_STRIP) is only
meaningful to the former.
Users can set this variable depending on their system. For example,
Linux users can use `-s --strip-program=strip`, while FreeBSD users can
simply set to `-s` and choose strip program with $STRIPBIN.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
---
Changes from v2 [1]:
- Squash suggestion patch from Junio, which:
- drops install-stripped target and rename $(INSTALL_OPTS) to
$(INSTALL_STRIP).
- Describe $(INSTALL_STRIP) usage on the top of Makefile
- Rebase on e0a2f5cbc5 (The third batch, 2021-09-03)
Note: In the future, we may add global $(INSTALL_OPTS), which applies
to both compiled binaries and scripts. When such happens, we should
rename $(INSTALL_STRIP) to $(INSTALL_STRIP_OPTS).
[QUESTION]: I squashed Junio's suggestion patch to produce this patch,
and I want to credit his work. In such situation, what should I do the
right way? For now I add From: line and S-o-b trailer with his
identity, in addition to my S-o-b.
[1]: https://lore.kernel.org/git/xmqqo89cqkt9.fsf@gitster.g/T/#t
Makefile | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 429c276058..c7a9995062 100644
--- a/Makefile
+++ b/Makefile
@@ -465,6 +465,9 @@ all::
# the global variable _wpgmptr containing the absolute path of the current
# executable (this is the case on Windows).
#
+# INSTALL_STRIP can be set to "-s" to strip binaries during installation,
+# if your $(INSTALL) command supports the option.
+#
# Define GENERATE_COMPILATION_DATABASE to "yes" to generate JSON compilation
# database entries during compilation if your compiler supports it, using the
# `-MJ` flag. The JSON entries will be placed in the `compile_commands/`
@@ -3004,7 +3007,8 @@ mergetools_instdir = $(prefix)/$(mergetoolsdir)
endif
mergetools_instdir_SQ = $(subst ','\'',$(mergetools_instdir))
-install_bindir_programs := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X)) $(BINDIR_PROGRAMS_NO_X)
+install_bindir_xprograms := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X))
+install_bindir_programs := $(install_bindir_xprograms) $(BINDIR_PROGRAMS_NO_X)
.PHONY: profile-install profile-fast-install
profile-install: profile
@@ -3013,12 +3017,17 @@ profile-install: profile
profile-fast-install: profile-fast
$(MAKE) install
+INSTALL_STRIP =
+
install: all
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
- $(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+ $(INSTALL) $(INSTALL_STRIP) $(PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+ $(INSTALL) $(SCRIPTS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
$(INSTALL) -m 644 $(SCRIPT_LIB) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
- $(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)'
+ $(INSTALL) $(INSTALL_STRIP) $(install_bindir_xprograms) '$(DESTDIR_SQ)$(bindir_SQ)'
+ $(INSTALL) $(BINDIR_PROGRAMS_NO_X) '$(DESTDIR_SQ)$(bindir_SQ)'
+
ifdef MSVC
# We DO NOT install the individual foo.o.pdb files because they
# have already been rolled up into the exe's pdb file.
base-commit: e0a2f5cbc585657e757385ad918f167f519cfb96
--
2.25.1
^ permalink raw reply related [relevance 3%]
* [ANNOUNCE] Git v2.33.0
@ 2021-08-16 23:06 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-16 23:06 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.33.0 is now available at the
usual places. It is comprised of 449 non-merge commits since
v2.32.0, contributed by 74 people, 19 of which are new faces [*].
As can be seen here, it turns out that this release does not have
many end-user facing changes and new features, but a lot of fixes
and internal improvements went into the codebase during this cycle.
Also, preparation for a new merge strategy backend (can be used with
"git merge -sort" today) is on its final stretch and we are hoping
that it can become the default in the next release.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.33.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.32.0 are as follows.
Welcome to the Git development community!
Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
Tao Klerks, and Teng Long.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Anders Kaseorg, Andrei Rybak, Andrzej Hunt, Atharva Raykar,
Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
Christian Couder, Christopher Diaz Riveros, Daniel Santos,
Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,
Eric Wong, Fangyi Zhou, Felipe Contreras, Han-Wen Nienhuys,
Jean-Noël Avila, Jeff King, Jiang Xin, Johannes Schindelin,
Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C
Hamano, Kaartic Sivaraam, Martin Ågren, Matheus Tavares, Matthew
Rogers, Matthias Aßhauer, Nicolas Pitre, Patrick Steinhardt,
Peter Krefting, Philippe Blain, Ralf Thielow, René Scharfe,
Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
Thomas Braun, Trần Ngọc Quân, Wolfgang Müller, Yi-Jyun Pan,
ZheNing Hu, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.33 Release Notes
======================
Updates since Git 2.32
----------------------
UI, Workflows & Features
* "git send-email" learned the "--sendmail-cmd" command line option
and the "sendemail.sendmailCmd" configuration variable, which is a
more sensible approach than the current way of repurposing the
"smtp-server" that is meant to name the server to instead name the
command to talk to the server.
* The userdiff pattern for C# learned the token "record".
* "git rev-list" learns to omit the "commit <object-name>" header
lines from the output with the `--no-commit-header` option.
* "git worktree add --lock" learned to record why the worktree is
locked with a custom message.
Performance, Internal Implementation, Development Support etc.
* The code to handle the "--format" option in "for-each-ref" and
friends made too many string comparisons on %(atom)s used in the
format string, which has been corrected by converting them into
enum when the format string is parsed.
* Use the hashfile API in the codepath that writes the index file to
reduce code duplication.
* Repeated rename detections in a sequence of mergy operations have
been optimized out for the 'ort' merge strategy.
* Preliminary clean-up of tests before the main reftable changes
hits the codebase.
* The backend for "diff -G/-S" has been updated to use pcre2 engine
when available.
* Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.
* Code cleanup around struct_type_init() functions.
* "git send-email" optimization.
* GitHub Actions / CI update.
(merge 0dc787a9f2 js/ci-windows-update later to maint).
* Object accesses in repositories with many alternate object store
have been optimized.
* "git log" has been optimized not to waste cycles to load ref
decoration data that may not be needed.
* Many "printf"-like helper functions we have have been annotated
with __attribute__() to catch placeholder/parameter mismatches.
* Tests that cover protocol bits have been updated and helpers
used there have been consolidated.
* The CI gained a new job to run "make sparse" check.
* "git status" codepath learned to work with sparsely populated index
without hydrating it fully.
* A guideline for gender neutral documentation has been added.
* Documentation on "git diff -l<n>" and diff.renameLimit have been
updated, and the defaults for these limits have been raised.
* The completion support used to offer alternate spelling of options
that exist only for compatibility, which has been corrected.
* "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
been corrected.
* "git bundle" gained more test coverage.
* "git read-tree" had a codepath where blobs are fetched one-by-one
from the promisor remote, which has been corrected to fetch in bulk.
* Rewrite of "git submodule" in C continues.
* "git checkout" and "git commit" learn to work without unnecessarily
expanding sparse indexes.
Fixes since v2.32
-----------------
* We historically rejected a very short string as an author name
while accepting a patch e-mail, which has been loosened.
(merge 72ee47ceeb ef/mailinfo-short-name later to maint).
* The parallel checkout codepath did not initialize object ID field
used to talk to the worker processes in a futureproof way.
* Rewrite code that triggers undefined behaviour warning.
(merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).
* The description of "fast-forward" in the glossary has been updated.
(merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).
* Recent "git clone" left a temporary directory behind when the
transport layer returned an failure.
(merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).
* "git fetch" over protocol v2 left its side of the socket open after
it finished speaking, which unnecessarily wasted the resource on
the other side.
(merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).
* The command line completion (in contrib/) learned that "git diff"
takes the "--anchored" option.
(merge d1e7c2cac9 tb/complete-diff-anchored later to maint).
* "git-svn" tests assumed that "locale -a", which is used to pick an
available UTF-8 locale, is available everywhere. A knob has been
introduced to allow testers to specify a suitable locale to use.
(merge 482c962de4 dd/svn-test-wo-locale-a later to maint).
* Update "git subtree" to work better on Windows.
(merge 77f37de39f js/subtree-on-windows-fix later to maint).
* Remove multimail from contrib/
(merge f74d11471f js/no-more-multimail later to maint).
* Make the codebase MSAN clean.
(merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).
* Work around inefficient glob substitution in older versions of bash
by rewriting parts of a test.
(merge eb87c6f559 jx/t6020-with-older-bash later to maint).
* Avoid duplicated work while building reachability bitmaps.
(merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).
* We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
update, which got fixed.
* The side-band demultiplexer that is used to display progress output
from the remote end did not clear the line properly when the end of
line hits at a packet boundary, which has been corrected.
* Some test scripts assumed that readlink(1) was universally
installed and available, which is not the case.
(merge 7c0afdf23c jk/test-without-readlink-1 later to maint).
* Recent update to completion script (in contrib/) broke those who
use the __git_complete helper to define completion to their custom
command.
(merge cea232194d fw/complete-cmd-idx-fix later to maint).
* Output from some of our tests were affected by the width of the
terminal that they were run in, which has been corrected by
exporting a fixed value in the COLUMNS environment.
(merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).
* On Windows, mergetool has been taught to find kdiff3.exe just like
it finds winmerge.exe.
(merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).
* When we cannot figure out how wide the terminal is, we use a
fallback value of 80 ourselves (which cannot be avoided), but when
we run the pager, we export it in COLUMNS, which forces the pager
to use the hardcoded value, even when the pager is perfectly
capable to figure it out itself. Stop exporting COLUMNS when we
fall back on the hardcoded default value for our own use.
(merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).
* "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
use and did not ask for certain object traits.
(merge ee02ac6164 zh/cat-file-batch-fix later to maint).
* Some code and doc clarification around "git push".
* The "union" conflict resultion variant misbehaved when used with
binary merge driver.
(merge 382b601acd jk/union-merge-binary later to maint).
* Prevent "git p4" from failing to submit changes to binary file.
(merge 54662d5958 dc/p4-binary-submit-fix later to maint).
* "git grep --and -e foo" ought to have been diagnosed as an error
but instead segfaulted, which has been corrected.
(merge fe7fe62d8d rs/grep-parser-fix later to maint).
* The merge code had funny interactions between content based rename
detection and directory rename detection.
(merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).
* When rebuilding the multi-pack index file reusing an existing one,
we used to blindly trust the existing file and ended up carrying
corrupted data into the updated file, which has been corrected.
(merge f89ecf7988 tb/midx-use-checksum later to maint).
* Update the location of system-side configuration file on Windows.
(merge e355307692 js/gfw-system-config-loc-fix later to maint).
* Code recently added to support common ancestry negotiation during
"git push" did not sanity check its arguments carefully enough.
(merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).
* Update the documentation not to assume users are of certain gender
and adds to guidelines to do so.
(merge 46a237f42f ds/gender-neutral-doc later to maint).
* "git commit --allow-empty-message" won't abort the operation upon
an empty message, but the hint shown in the editor said otherwise.
(merge 6f70f00b4f hj/commit-allow-empty-message later to maint).
* The code that gives an error message in "git multi-pack-index" when
no subcommand is given tried to print a NULL pointer as a strong,
which has been corrected.
(merge 88617d11f9 tb/reverse-midx later to maint).
* CI update.
(merge a066a90db6 js/ci-check-whitespace-updates later to maint).
* Documentation fix for "git pull --rebase=no".
(merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).
* A race between repacking and using pack bitmaps has been corrected.
(merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).
* The local changes stashed by "git merge --autostash" were lost when
the merge failed in certain ways, which has been corrected.
* Windows rmdir() equivalent behaves differently from POSIX ones in
that when used on a symbolic link that points at a directory, the
target directory gets removed, which has been corrected.
(merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge bfe35a6165 ah/doc-describe later to maint).
(merge f302c1e4aa jc/clarify-revision-range later to maint).
(merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
(merge a84216c684 jk/doc-color-pager later to maint).
(merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
(merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
(merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
(merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
(merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
(merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
(merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
(merge abcb66c614 ar/typofix later to maint).
(merge 9853830787 ah/graph-typofix later to maint).
(merge aac578492d ab/config-hooks-path-testfix later to maint).
(merge 98c7656a18 ar/more-typofix later to maint).
(merge 6fb9195f6c jk/doc-max-pack-size later to maint).
(merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
(merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
(merge 338abb0f04 ab/cmd-foo-should-return later to maint).
(merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
(merge b7b793d1e7 ab/progress-cleanup later to maint).
(merge d94f9b8e90 ba/object-info later to maint).
(merge 52ff891c03 ar/test-code-cleanup later to maint).
(merge a0538e5c8b dd/document-log-decorate-default later to maint).
(merge ce24797d38 mr/cmake later to maint).
(merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
(merge 9fffc38583 bk/doc-commit-typofix later to maint).
(merge 1cf823d8f0 ks/submodule-cleanup later to maint).
(merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
(merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
(merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
(merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
(merge b1d87fbaf1 jk/typofix later to maint).
(merge e04170697a ab/gitignore-discovery-doc later to maint).
(merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
(merge eb448631fb dl/diff-merge-base later to maint).
(merge c510928a25 hn/refs-debug-empty-prefix later to maint).
(merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
(merge 878b399734 pb/submodule-recurse-doc later to maint).
(merge 734283855f jk/config-env-doc later to maint).
(merge 482e1488a9 ab/getcwd-test later to maint).
(merge f0b922473e ar/doc-markup-fix later to maint).
----------------------------------------------------------------
Changes since v2.32.0 are as follows:
Alex Henrie (6):
merge: don't translate literal commands
stash: don't translate literal commands
submodule: use the imperative mood to describe the --files option
fetch: improve grammar of "shallow roots" message
setup: split "extensions found" messages into singular and plural
graph: improve grammar of "invalid color" error message
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5227t)
Anders Höckersten (1):
describe-doc: clarify default length of abbreviation
Andrei Rybak (8):
t: fix whitespace around &&
mailinfo: use starts_with() when checking scissors
*: fix typos which duplicate a word
blame: correct name of config option in docs
t: fix typos in test messages
git-worktree.txt: fix typo in example path
help: convert git_cmd to page in one place
Documentation: render special characters correctly
Andrew Berry (1):
docs: .gitignore parsing is to the top of the repo
Andrzej Hunt (15):
bulk-checkin: make buffer reuse more obvious and safer
split-index: use oideq instead of memcmp to compare object_id's
builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
fmt-merge-msg: free newly allocated temporary strings when done
environment: move strbuf into block to plug leak
builtin/submodule--helper: release unused strbuf to avoid leak
builtin/for-each-repo: remove unnecessary argv copy to plug leak
diffcore-rename: move old_dir/new_dir definition to plug leak
ref-filter: also free head for ATOM_HEAD to avoid leak
read-cache: call diff_setup_done to avoid leak
convert: release strbuf to avoid leak
builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
builtin/merge: free found_ref when done
builtin/rebase: fix options.strategy memory lifecycle
reset: clear_unpack_trees_porcelain to plug leak
Atharva Raykar (6):
MyFirstContribution: link #git-devel to Libera Chat
submodule--helper: remove redundant include
t7400: test failure to add submodule in tracked path
submodule: prefix die messages with 'fatal'
submodule--helper: refactor module_clone()
submodule--helper: introduce add-clone subcommand
Bagas Sanjaya (5):
l10n: id.po: fix mismatched variable names
diff: --pickaxe-all typofix
l10n: id: po-id for 2.33.0 (round 1)
l10n: id: mismatch variable name fixes
l10n: id: po-id for 2.33.0 round 2
Beshr Kayali (1):
Documentation: fix typo in the --patch option of the commit command
Carlo Marcelo Arenas Belón (4):
config.mak.uname: PCRE1 cleanup
t7508: avoid non POSIX BRE
oidtree: avoid nested struct oidtree_node
object-store: avoid extra ';' from KHASH_INIT
Christopher Diaz Riveros (1):
l10n: es: 2.33.0 round 2
Daniel Santos (12):
l10n: pt_PT: add Portuguese translations part 4
l10n: pt_PT: add Portuguese translations part 5
l10n: pt_PT: translation tables
l10n: pt_PT: remove trailing comments
l10n: pt_PT: update git-po-helper
l10n: pt_PT: translated git v2.33.0
l10n: pt_PT: update translation tables
l10n: pt_PT: cleaning duplicate translations
l10n: pt_PT: cleaning flags mismatch
l10n: pt_PT: update translation table
l10n: pt_PT: git-po-helper update
l10n: pt_PT: v2.33.0 round 2
Dennis Ameling (2):
cmake(windows): set correct path to the system Git config
ci (vs-build): build with NO_GETTEXT
Denton Liu (2):
pkt-line: replace "stateless separator" with "response end"
git-diff: fix missing --merge-base docs
Derrick Stolee (28):
hashfile: use write_in_full()
csum-file.h: increase hashfile buffer size
read-cache: use hashfile instead of git_hash_ctx
read-cache: delete unused hashing methods
*: fix typos
sparse-index: skip indexes with unmerged entries
sparse-index: include EXTENDED flag when expanding
t1092: replace incorrect 'echo' with 'cat'
t1092: expand repository data shape
t1092: add tests for status/add and sparse files
unpack-trees: preserve cache_bottom
unpack-trees: compare sparse directories correctly
unpack-trees: rename unpack_nondirectories()
unpack-trees: unpack sparse directory entries
dir.c: accept a directory as part of cone-mode patterns
diff-lib: handle index diffs with sparse dirs
status: skip sparse-checkout percentage with sparse-index
status: use sparse-index throughout
wt-status: expand added sparse directory entries
fsmonitor: integrate with sparse index
t1092: document bad sparse-checkout behavior
p2000: add 'git checkout -' test and decrease depth
p2000: compress repo names
commit: integrate with sparse-index
sparse-index: recompute cache-tree
checkout: stop expanding sparse indexes
t1092: document bad 'git checkout' behavior
unpack-trees: resolve sparse-directory/file conflicts
Elijah Newren (36):
t6423: rename file within directory that other side renamed
Documentation/technical: describe remembering renames optimization
fast-rebase: change assert() to BUG()
fast-rebase: write conflict state to working tree, index, and HEAD
t6429: testcases for remembering renames
merge-ort: add data structures for in-memory caching of rename detection
merge-ort: populate caches of rename detection results
merge-ort: add code to check for whether cached renames can be reused
merge-ort: avoid accidental API mis-use
merge-ort: preserve cached renames for the appropriate side
merge-ort: add helper functions for using cached renames
merge-ort: handle interactions of caching and rename/rename(1to1) cases
merge-ort, diffcore-rename: employ cached renames when possible
merge-ort: replace string_list_df_name_compare with faster alternative
diffcore-rename: avoid unnecessary strdup'ing in break_idx
Fix various issues found in comments
merge-ort: miscellaneous touch-ups
promisor-remote: output trace2 statistics for number of objects fetched
t6421: add tests checking for excessive object downloads during merge
diffcore-rename: allow different missing_object_cb functions
diffcore-rename: use a different prefetch for basename comparisons
merge-ort: add prefetching for content merges
t6423: test directory renames causing rename-to-self
merge-ort: ensure we consult df_conflict and path_conflicts
merge-recursive: handle rename-to-self case
diff: correct warning message when renameLimit exceeded
doc: clarify documentation for rename/copy limits
diffcore-rename: treat a rename_limit of 0 as unlimited
rename: bump limit defaults yet again
merge-ort: resolve paths early when we have sufficient information
merge-ort: add some more explanations in collect_merge_info_callback()
merge-ort: add data structures for allowable trivial directory resolves
merge-ort: add a handle_deferred_entries() helper function
merge-ort: defer recursing into directories when merge base is matched
merge-ort: avoid recursing into directories when we don't need to
merge-ort: restart merge with cached renames to reduce process entry cost
Emir Sarı (2):
l10n: tr: v2.33.0 round 1
l10n: tr: v2.33 (round 2)
Eric Wong (6):
xmmap: inform Linux users of tuning knobs on ENOMEM
speed up alt_odb_usable() with many alternates
avoid strlen via strbuf_addstr in link_alt_odb_entry
make object_directory.loose_objects_subdir_seen a bitmap
oidcpy_with_padding: constify `src' arg
oidtree: a crit-bit tree for odb_loose_cache
Fabian Wermelinger (1):
completion: bash: fix late declaration of __git_cmd_idx
Fangyi Zhou (1):
l10n: zh_CN: Revision for git v2.32.0 l10n round 1
Felipe Contreras (33):
doc: refactor common asciidoc dependencies
doc: improve asciidoc dependencies
doc: remove unnecessary rm instances
doc: simplify Makefile using .DELETE_ON_ERROR
doc: avoid using rm directly
push: rename !triangular to same_remote
push: hedge code of default=simple
push: copy code to setup_push_simple()
push: reorganize setup_push_simple()
push: simplify setup_push_simple()
push: remove unused code in setup_push_upstream()
doc: push: explain default=simple correctly
push: create new get_upstream_ref() helper
push: return immediately in trivial switch case
push: split switch cases
push: factor out null branch check
push: only get the branch when needed
push: make setup_push_* return the dst
push: trivial simplifications
push: get rid of all the setup_push_* functions
push: factor out the typical case
push: remove redundant check
push: remove trivial function
push: only check same_remote when needed
push: don't get a full remote object
doc: merge: mention default of defaulttoupstream
doc: avoid using the gender of other people
comments: avoid using the gender of our users
pull: cleanup autostash check
pull: trivial cleanup
pull: trivial whitespace style fix
doc: pull: fix rebase=false documentation
test: fix for COLUMNS and bash 5
Gregory Anders (1):
git-send-email: add option to specify sendmail command
Han-Wen Nienhuys (26):
refs: make explicit that ref_iterator_peel returns boolean
t4202: split testcase for invalid HEAD symref and HEAD hash
t/helper/ref-store: initialize oid in resolve-ref
t9300: check ref existence using test-helper rather than a file system check
t5601: read HEAD using rev-parse
t1401: use tar to snapshot and restore repo state
t1401-symbolic-ref: avoid direct filesystem access
t1413: use tar to save and restore entire .git directory
t1301: fix typo in error message
t5000: reformat indentation to the latest fashion
t5000: inspect HEAD using git-rev-parse
t7003: use rev-parse rather than FS inspection
t5304: restyle: trim empty lines, drop ':' before >
t5304: use "reflog expire --all" to clear the reflog
test-lib: provide test prereq REFFILES
t1407: require REFFILES for for_each_reflog test
t1414: mark corruption test with REFFILES
t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
t1404: mark tests that muck with .git directly as REFFILES.
t7900: stop checking for loose refs
t7003: check reflog existence only for REFFILES
t4202: mark bogus head hash test with REFFILES
t1415: set REFFILES for test specific to storage format
t1415: avoid direct filesystem access for writing refs
t7509: avoid direct file access for writing CHERRY_PICK_HEAD
refs/debug: quote prefix
Hu Jialun (2):
commit: reorganise commit hint strings
commit: remove irrelavent prompt on `--allow-empty-message`
Jean-Noël Avila (5):
help: fix small typo in error message
l10n: fr: fix typo
l10n: fr.po v2.33 rnd 1
l10n: fr.po fix typos in commands and variables
l10n: fr.po v2.33 rnd 2
Jeff King (27):
clone: clean up directory after transport_fetch_refs() failure
fetch-pack: signal v2 server that we are done making requests
doc: explain the use of color.pager
doc: warn people against --max-pack-size
ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
ll_union_merge(): pass name labels to ll_xdl_merge()
ll_union_merge(): rename path_unused parameter
add_pending_object_with_path(): work around "gcc -O3" complaint
bitmaps: don't recurse into trees already in the bitmap
t: use portable wrapper for readlink(1)
pretty.h: update and expand docstring for userformat_find_requirements()
log: avoid loading decorations for userformats that don't need it
object.h: expand docstring for lookup_unknown_object()
object.h: add lookup_object_by_type() function
load_ref_decorations(): avoid parsing non-tag objects
add_ref_decoration(): rename s/type/deco_type/
test-lib: avoid accidental globbing in match_pattern_list()
doc/rev-list-options: fix duplicate word typo
load_ref_decorations(): fix decoration with tags
t0000: clear GIT_SKIP_TESTS before running sub-tests
doc/git-config: explain --file instead of referring to GIT_CONFIG
doc/git-config: clarify GIT_CONFIG environment variable
doc/git-config: simplify "override" advice for FILES section
pack-bitmap: check pack validity when opening bitmap
submodule: drop unused sm_name parameter from show_fetch_remotes()
ci: run "apt-get update" before "apt-get install"
ci/install-dependencies: handle "sparse" job package installs
Jiang Xin (11):
t6020: fix incompatible parameter expansion
sideband: don't lose clear-to-eol at packet boundary
test: compare raw output, not mangle tabs and spaces
test: refactor to use "test_commit" to create commits
test: refactor to use "get_abbrev_oid" to get abbrev oid
l10n: fixed tripple-letter typos
l10n: git.pot: v2.33.0 round 1 (38 new, 15 removed)
l10n: git.pot: v2.33.0 round 2 (11 new, 8 removed)
l10n: README: refactor to use GFM syntax
l10n: zh_CN: for git v2.33.0 l10n round 2
l10n: TEAMS: change Simplified Chinese team leader
Johannes Schindelin (15):
multimail: stop shipping a copy
subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
subtree: fix assumption about the directory separator
pager: avoid setting COLUMNS when we're guessing its value
mingw: move Git for Windows' system config where users expect it
config: normalize the path of the system gitconfig
ci: use the new GitHub Action to download git-sdk-64-minimal
ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
ci: upgrade to using actions/{up,down}load-artifacts v2
ci (windows): transfer also the Git-tracked files to the test jobs
artifacts-tar: respect NO_GETTEXT
ci: accelerate the checkout
ci: run `make sparse` as part of the GitHub workflow
ci(check-whitespace): stop requiring a read/write token
ci(check-whitespace): restrict to the intended commits
Jonathan Nieder (2):
xsize_t: avoid implementation defined behavior when len < 0
Revert 'diff-merges: let "-m" imply "-p"'
Jonathan Tan (7):
repository: move global r_f_p_c to repo struct
promisor-remote: support per-repository config
submodule: refrain from filtering GIT_CONFIG_COUNT
run-command: refactor subprocess env preparation
promisor-remote: teach lazy-fetch in any repo
unpack-trees: refactor prefetching code
cache-tree: prefetch in partial clone read-tree
Jordi Mas (3):
l10n: Update Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (1):
docs: fix api-trace2 doc for "too_many_files" event
Julian Verdurmen (1):
userdiff: add support for C# record types
Junio C Hamano (14):
revisions(7): clarify that most commands take a single revision range
The first batch post Git 2.32
The second batch
The third batch
The fourth batch
CodingGuidelines: recommend gender-neutral description
The fifth batch
The sixth batch
The seventh batch
Git 2.33-rc0
The eighth batch
Git 2.33-rc1
Git 2.33-rc2
Git 2.33
Kaartic Sivaraam (1):
submodule: remove unnecessary `prefix` based option logic
Matheus Tavares (1):
parallel-checkout: send the new object_id algo field to the workers
Matthew Rogers (3):
cmake: add knob to disable vcpkg
cmake: create compile_commands.json by default
cmake: add warning for ignored MSGFMT_EXE
Michael Schindler (1):
mergetools/kdiff3: make kdiff3 work on Windows too
Patrick Steinhardt (2):
perf: fix when running with TEST_OUTPUT_DIRECTORY
t0000: fix test if run with TEST_OUTPUT_DIRECTORY
Peter Krefting (3):
l10n: fixed typos of mismatched constant strings
l10n: sv.po: Update Swedish translation (5227t0f0u)
l10n: sv.po: Update Swedish translation (5230t0f0u)
Philippe Blain (6):
parse-options: don't complete option aliases by default
doc: clarify description of 'submodule.recurse'
merge: add missing word "strategy" to a message
Documentation: define 'MERGE_AUTOSTASH'
merge: apply autostash if fast-forward fails
merge: apply autostash if merge strategy fails
Ralf Thielow (3):
l10n: update German translation for Git v2.33.0
l10n: de.po: fix typos
l10n: update German translation for Git v2.33.0 (rnd2)
René Scharfe (5):
grep: report missing left operand of --and
khash: clarify that allocations never fail
use fspathhash() everywhere
object-file: use unsigned arithmetic with bit mask
oidtree: avoid unaligned access to crit-bit tree
Reuven Y (1):
docs: improve fast-forward in glossary content
Sergey Organov (10):
t4013: test that "-m" alone has no effect in "git log"
t4013: test "git log -m --raw"
t4013: test "git log -m --stat"
t4013: test "git diff-tree -m"
t4013: test "git diff-index -m"
diff-merges: move specific diff-index "-m" handling to diff-index
git-svn: stop passing "-m" to "git rev-list"
stash list: stop passing "-m" to "git log"
diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
diff-merges: let "-m" imply "-p"
Stephen Manz (3):
t2400: clean up '"add" worktree with lock' test
worktree: mark lock strings with `_()` for translation
worktree: teach `add` to accept --reason <string> with --lock
Tao Klerks (1):
Remove warning that repack only works on non-promisor packfiles
Taylor Blau (6):
csum-file: introduce checksum_valid()
commit-graph: rewrite to use checksum_valid()
midx: don't reuse corrupt MIDXs when writing
midx: report checksum mismatches during 'verify'
multi-pack-index: fix potential segfault without sub-command
pack-bitmap: clarify comment in filter_bitmap_exclude_type()
Teng Long (1):
packfile-uri.txt: fix blobPackfileUri description
Thomas Braun (1):
completion: add --anchored to diff's options
Thomas Bétous (1):
mingw: align symlinks-related rmdir() behavior with Linux
Trần Ngọc Quân (3):
l10n: vi.po(5227t): Updated Vietnamese translation for v2.32.0
l10n: vi.po(5227t): Fixed typo after run git-po-helper
l10n: vi.po(5230t): Updated translation for v2.32.0 round 2
Wolfgang Müller (1):
rev-parse: mark die() messages for translation
Yi-Jyun Pan (2):
l10n: zh_TW.po: update for v2.33.0 rnd 2
l10n: zh_TW.po: remove the obsolete glossary
ZheNing Hu (4):
ref-filter: add objectsize to used_atom
ref-filter: introduce enum atom_type
cat-file: handle trivial --batch format with --batch-all-objects
cat-file: merge two block into one
brian m. carlson (1):
rev-list: add option for --pretty=format without header
dorgon.chang (1):
git-p4: fix failed submit by skip non-text data files
edef (1):
mailinfo: don't discard names under 3 characters
Ævar Arnfjörð Bjarmason (93):
test-lib: bring $remove_trash out of retirement
test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
test-lib-functions: reword "test_commit --append" docs
test-lib-functions: document test_commit --no-tag
test-lib functions: add an --annotated option to "test_commit"
describe tests: convert setup to use test_commit
test-lib functions: add --printf option to test_commit
submodule tests: use symbolic-ref --short to discover branch name
test-lib: reformat argument list in test_create_repo()
test-lib: do not show advice about init.defaultBranch under --verbose
test-lib: split up and deprecate test_create_repo()
grep/pcre2 tests: reword comments referring to kwset
pickaxe tests: refactor to use test_commit --append --printf
pickaxe tests: add test for diffgrep_consume() internals
pickaxe tests: add test for "log -S" not being a regex
pickaxe tests: test for -G, -S and --find-object incompatibility
pickaxe tests: add missing test for --no-pickaxe-regex being an error
pickaxe: die when -G and --pickaxe-regex are combined
pickaxe: die when --find-object and --pickaxe-all are combined
diff.h: move pickaxe fields together again
pickaxe/style: consolidate declarations and assignments
perf: add performance test for pickaxe
pickaxe: refactor function selection in diffcore-pickaxe()
pickaxe: assert that we must have a needle under -G or -S
pickaxe -S: support content with NULs under --pickaxe-regex
pickaxe: rename variables in has_changes() for brevity
pickaxe -S: slightly optimize contains()
xdiff-interface: prepare for allowing early return
xdiff-interface: allow early return from xdiff_emit_line_fn
pickaxe -G: terminate early on matching lines
pickaxe -G: don't special-case create/delete
xdiff users: use designated initializers for out_line
xdiff-interface: replace discard_hunk_line() with a flag
describe tests: improve test for --work-tree & --dirty
describe tests: refactor away from glob matching
describe tests: don't rely on err.actual from "check_describe"
describe tests: fix nested "test_expect_success" call
describe tests: support -C in "check_describe"
trace2: refactor to avoid gcc warning under -O3
send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
send-email tests: test for boolean variables without a value
send-email: remove non-working support for "sendemail.smtpssl"
send-email: refactor sendemail.smtpencryption config parsing
send-email: copy "config_regxp" into git-send-email.perl
send-email: lazily load config for a big speedup
send-email: lazily shell out to "git var"
send-email: use function syntax instead of barewords
send-email: get rid of indirect object syntax
send-email: lazily load modules for a big speedup
perl: lazily load some common Git.pm setup code
send-email: move trivial config handling to Perl
perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
protocol-caps.h: add newline at end of file
read-cache.c: don't guard calls to progress.c API
xdiff: use BUG(...), not xdl_bug(...)
builtins + test helpers: use return instead of exit() in cmd_*
mktag tests: parse out options in helper
mktag tests: invert --no-strict test
show-branch tests: rename the one "show-branch" test file
show-branch tests: modernize test code
pre-commit hook tests: don't leave "actual" nonexisting on failure
gc tests: add a test for the "pre-auto-gc" hook
mktag tests: test hash-object --literally and unreachable fsck
mktag tests: test update-ref and reachable fsck
mktag tests: test for-each-ref
mktag tests: test fast-export
show-branch: don't <COLOR></RESET> for space characters
show-branch tests: add missing tests
Makefile: add and use the ".DELETE_ON_ERROR" flag
test-lib.sh: set COLUMNS=80 for --verbose repeatability
send-pack.c: move "no refs in common" abort earlier
fetch: document the --negotiate-only option
*.h: move some *_INIT to designated initializers
*.c *_init(): define in terms of corresponding *_INIT macro
dir.[ch]: replace dir_init() with DIR_INIT
string-list.[ch]: add a string_list_init_{nodup,dup}()
string-list.h users: change to use *_{nodup,dup}()
bundle cmd: stop leaking memory from parse_options_cmd_bundle()
bundle.c: use a temporary variable for OIDs and names
bundle: remove "ref_list" in favor of string-list.c API
imap-send.c: use less verbose strbuf_fread() idiom
fetch: fix segfault in --negotiate-only without --negotiation-tip=*
*.c static functions: don't forward-declare __attribute__
sequencer.c: move static function to avoid forward decl
*.c static functions: add missing __attribute__((format))
*.h: add a few missing __attribute__((format))
advice.h: add missing __attribute__((format)) & fix usage
test-lib-functions: use test-tool for [de]packetize()
SubmittingPatches: move discussion of Signed-off-by above "send"
SubmittingPatches: replace discussion of Travis with GitHub Actions
bundle tests: use ">file" not ": >file"
bundle tests: use test_cmp instead of grep
t0001: fix broken not-quite getcwd(3) test in bed67874e2
Đoàn Trần Công Danh (6):
t: use configured TAR instead of tar
doc/log: correct default for --decorate
t: use user-specified utf-8 locale for testing svn
test-lib-functions: introduce test_stdout_line_count
t6400: preserve git ls-files exit status code
t6402: preserve git exit status code
依云 (1):
l10n: zh_CN: review for git v2.32.0 l10n round 1
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.33.0-rc2
@ 2021-08-11 23:22 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-11 23:22 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.33.0-rc2 is now available for testing at
the usual places. It is comprised of 401 non-merge commits since
v2.32.0, contributed by 63 people, 19 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.33.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.32.0 are as follows.
Welcome to the Git development community!
Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
Tao Klerks, and Teng Long.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
Andrei Rybak, Andrzej Hunt, Atharva Raykar, Bagas Sanjaya,
brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Eric Wong,
Felipe Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff King,
Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Kaartic Sivaraam, Martin Ågren,
Matheus Tavares, Matthew Rogers, Matthias Aßhauer, Nicolas
Pitre, Patrick Steinhardt, Philippe Blain, René Scharfe,
Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
Thomas Braun, Wolfgang Müller, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.33 Release Notes (draft)
==============================
Updates since Git 2.32
----------------------
UI, Workflows & Features
* "git send-email" learned the "--sendmail-cmd" command line option
and the "sendemail.sendmailCmd" configuration variable, which is a
more sensible approach than the current way of repurposing the
"smtp-server" that is meant to name the server to instead name the
command to talk to the server.
* The "-m" option in "git log -m" that does not specify which format,
if any, of diff is desired did not have any visible effect; it now
implies some form of diff (by default "--patch") is produced.
* The userdiff pattern for C# learned the token "record".
* "git rev-list" learns to omit the "commit <object-name>" header
lines from the output with the `--no-commit-header` option.
* "git worktree add --lock" learned to record why the worktree is
locked with a custom message.
Performance, Internal Implementation, Development Support etc.
* The code to handle the "--format" option in "for-each-ref" and
friends made too many string comparisons on %(atom)s used in the
format string, which has been corrected by converting them into
enum when the format string is parsed.
* Use the hashfile API in the codepath that writes the index file to
reduce code duplication.
* Repeated rename detections in a sequence of mergy operations have
been optimized out for the 'ort' merge strategy.
* Preliminary clean-up of tests before the main reftable changes
hits the codebase.
* The backend for "diff -G/-S" has been updated to use pcre2 engine
when available.
* Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.
* Code cleanup around struct_type_init() functions.
* "git send-email" optimization.
* GitHub Actions / CI update.
(merge 0dc787a9f2 js/ci-windows-update later to maint).
* Object accesses in repositories with many alternate object store
have been optimized.
* "git log" has been optimized not to waste cycles to load ref
decoration data that may not be needed.
* Many "printf"-like helper functions we have have been annotated
with __attribute__() to catch placeholder/parameter mismatches.
* Tests that cover protocol bits have been updated and helpers
used there have been consolidated.
* The CI gained a new job to run "make sparse" check.
* "git status" codepath learned to work with sparsely populated index
without hydrating it fully.
* A guideline for gender neutral documentation has been added.
* Documentation on "git diff -l<n>" and diff.renameLimit have been
updated, and the defaults for these limits have been raised.
* The completion support used to offer alternate spelling of options
that exist only for compatibility, which has been corrected.
* "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
been corrected.
* "git bundle" gained more test coverage.
* "git read-tree" had a codepath where blobs are fetched one-by-one
from the promisor remote, which has been corrected to fetch in bulk.
* Rewrite of "git submodule" in C continues.
* "git checkout" and "git commit" learn to work without unnecessarily
expanding sparse indexes.
Fixes since v2.32
-----------------
* We historically rejected a very short string as an author name
while accepting a patch e-mail, which has been loosened.
(merge 72ee47ceeb ef/mailinfo-short-name later to maint).
* The parallel checkout codepath did not initialize object ID field
used to talk to the worker processes in a futureproof way.
* Rewrite code that triggers undefined behaviour warning.
(merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).
* The description of "fast-forward" in the glossary has been updated.
(merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).
* Recent "git clone" left a temporary directory behind when the
transport layer returned an failure.
(merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).
* "git fetch" over protocol v2 left its side of the socket open after
it finished speaking, which unnecessarily wasted the resource on
the other side.
(merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).
* The command line completion (in contrib/) learned that "git diff"
takes the "--anchored" option.
(merge d1e7c2cac9 tb/complete-diff-anchored later to maint).
* "git-svn" tests assumed that "locale -a", which is used to pick an
available UTF-8 locale, is available everywhere. A knob has been
introduced to allow testers to specify a suitable locale to use.
(merge 482c962de4 dd/svn-test-wo-locale-a later to maint).
* Update "git subtree" to work better on Windows.
(merge 77f37de39f js/subtree-on-windows-fix later to maint).
* Remove multimail from contrib/
(merge f74d11471f js/no-more-multimail later to maint).
* Make the codebase MSAN clean.
(merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).
* Work around inefficient glob substitution in older versions of bash
by rewriting parts of a test.
(merge eb87c6f559 jx/t6020-with-older-bash later to maint).
* Avoid duplicated work while building reachability bitmaps.
(merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).
* We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
update, which got fixed.
* The side-band demultiplexer that is used to display progress output
from the remote end did not clear the line properly when the end of
line hits at a packet boundary, which has been corrected.
* Some test scripts assumed that readlink(1) was universally
installed and available, which is not the case.
(merge 7c0afdf23c jk/test-without-readlink-1 later to maint).
* Recent update to completion script (in contrib/) broke those who
use the __git_complete helper to define completion to their custom
command.
(merge cea232194d fw/complete-cmd-idx-fix later to maint).
* Output from some of our tests were affected by the width of the
terminal that they were run in, which has been corrected by
exporting a fixed value in the COLUMNS environment.
(merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).
* On Windows, mergetool has been taught to find kdiff3.exe just like
it finds winmerge.exe.
(merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).
* When we cannot figure out how wide the terminal is, we use a
fallback value of 80 ourselves (which cannot be avoided), but when
we run the pager, we export it in COLUMNS, which forces the pager
to use the hardcoded value, even when the pager is perfectly
capable to figure it out itself. Stop exporting COLUMNS when we
fall back on the hardcoded default value for our own use.
(merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).
* "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
use and did not ask for certain object traits.
(merge ee02ac6164 zh/cat-file-batch-fix later to maint).
* Some code and doc clarification around "git push".
* The "union" conflict resultion variant misbehaved when used with
binary merge driver.
(merge 382b601acd jk/union-merge-binary later to maint).
* Prevent "git p4" from failing to submit changes to binary file.
(merge 54662d5958 dc/p4-binary-submit-fix later to maint).
* "git grep --and -e foo" ought to have been diagnosed as an error
but instead segfaulted, which has been corrected.
(merge fe7fe62d8d rs/grep-parser-fix later to maint).
* The merge code had funny interactions between content based rename
detection and directory rename detection.
(merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).
* When rebuilding the multi-pack index file reusing an existing one,
we used to blindly trust the existing file and ended up carrying
corrupted data into the updated file, which has been corrected.
(merge f89ecf7988 tb/midx-use-checksum later to maint).
* Update the location of system-side configuration file on Windows.
(merge e355307692 js/gfw-system-config-loc-fix later to maint).
* Code recently added to support common ancestry negotiation during
"git push" did not sanity check its arguments carefully enough.
(merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).
* Update the documentation not to assume users are of certain gender
and adds to guidelines to do so.
(merge 46a237f42f ds/gender-neutral-doc later to maint).
* "git commit --allow-empty-message" won't abort the operation upon
an empty message, but the hint shown in the editor said otherwise.
(merge 6f70f00b4f hj/commit-allow-empty-message later to maint).
* The code that gives an error message in "git multi-pack-index" when
no subcommand is given tried to print a NULL pointer as a strong,
which has been corrected.
(merge 88617d11f9 tb/reverse-midx later to maint).
* CI update.
(merge a066a90db6 js/ci-check-whitespace-updates later to maint).
* Documentation fix for "git pull --rebase=no".
(merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).
* A race between repacking and using pack bitmaps has been corrected.
(merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).
* The local changes stashed by "git merge --autostash" were lost when
the merge failed in certain ways, which has been corrected.
* Windows rmdir() equivalent behaves differently from POSIX ones in
that when used on a symbolic link that points at a directory, the
target directory gets removed, which has been corrected.
(merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge bfe35a6165 ah/doc-describe later to maint).
(merge f302c1e4aa jc/clarify-revision-range later to maint).
(merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
(merge a84216c684 jk/doc-color-pager later to maint).
(merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
(merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
(merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
(merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
(merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
(merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
(merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
(merge abcb66c614 ar/typofix later to maint).
(merge 9853830787 ah/graph-typofix later to maint).
(merge aac578492d ab/config-hooks-path-testfix later to maint).
(merge 98c7656a18 ar/more-typofix later to maint).
(merge 6fb9195f6c jk/doc-max-pack-size later to maint).
(merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
(merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
(merge 338abb0f04 ab/cmd-foo-should-return later to maint).
(merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
(merge b7b793d1e7 ab/progress-cleanup later to maint).
(merge d94f9b8e90 ba/object-info later to maint).
(merge 52ff891c03 ar/test-code-cleanup later to maint).
(merge a0538e5c8b dd/document-log-decorate-default later to maint).
(merge ce24797d38 mr/cmake later to maint).
(merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
(merge 9fffc38583 bk/doc-commit-typofix later to maint).
(merge 1cf823d8f0 ks/submodule-cleanup later to maint).
(merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
(merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
(merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
(merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
(merge b1d87fbaf1 jk/typofix later to maint).
(merge e04170697a ab/gitignore-discovery-doc later to maint).
(merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
(merge eb448631fb dl/diff-merge-base later to maint).
(merge c510928a25 hn/refs-debug-empty-prefix later to maint).
(merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
(merge 878b399734 pb/submodule-recurse-doc later to maint).
(merge 734283855f jk/config-env-doc later to maint).
(merge 482e1488a9 ab/getcwd-test later to maint).
(merge f0b922473e ar/doc-markup-fix later to maint).
----------------------------------------------------------------
Changes since v2.32.0 are as follows:
Alex Henrie (6):
merge: don't translate literal commands
stash: don't translate literal commands
submodule: use the imperative mood to describe the --files option
fetch: improve grammar of "shallow roots" message
setup: split "extensions found" messages into singular and plural
graph: improve grammar of "invalid color" error message
Anders Höckersten (1):
describe-doc: clarify default length of abbreviation
Andrei Rybak (8):
t: fix whitespace around &&
mailinfo: use starts_with() when checking scissors
*: fix typos which duplicate a word
blame: correct name of config option in docs
t: fix typos in test messages
git-worktree.txt: fix typo in example path
help: convert git_cmd to page in one place
Documentation: render special characters correctly
Andrew Berry (1):
docs: .gitignore parsing is to the top of the repo
Andrzej Hunt (15):
bulk-checkin: make buffer reuse more obvious and safer
split-index: use oideq instead of memcmp to compare object_id's
builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
fmt-merge-msg: free newly allocated temporary strings when done
environment: move strbuf into block to plug leak
builtin/submodule--helper: release unused strbuf to avoid leak
builtin/for-each-repo: remove unnecessary argv copy to plug leak
diffcore-rename: move old_dir/new_dir definition to plug leak
ref-filter: also free head for ATOM_HEAD to avoid leak
read-cache: call diff_setup_done to avoid leak
convert: release strbuf to avoid leak
builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
builtin/merge: free found_ref when done
builtin/rebase: fix options.strategy memory lifecycle
reset: clear_unpack_trees_porcelain to plug leak
Atharva Raykar (6):
MyFirstContribution: link #git-devel to Libera Chat
submodule--helper: remove redundant include
t7400: test failure to add submodule in tracked path
submodule: prefix die messages with 'fatal'
submodule--helper: refactor module_clone()
submodule--helper: introduce add-clone subcommand
Bagas Sanjaya (1):
diff: --pickaxe-all typofix
Beshr Kayali (1):
Documentation: fix typo in the --patch option of the commit command
Carlo Marcelo Arenas Belón (4):
config.mak.uname: PCRE1 cleanup
t7508: avoid non POSIX BRE
oidtree: avoid nested struct oidtree_node
object-store: avoid extra ';' from KHASH_INIT
Dennis Ameling (2):
cmake(windows): set correct path to the system Git config
ci (vs-build): build with NO_GETTEXT
Denton Liu (2):
pkt-line: replace "stateless separator" with "response end"
git-diff: fix missing --merge-base docs
Derrick Stolee (28):
hashfile: use write_in_full()
csum-file.h: increase hashfile buffer size
read-cache: use hashfile instead of git_hash_ctx
read-cache: delete unused hashing methods
*: fix typos
sparse-index: skip indexes with unmerged entries
sparse-index: include EXTENDED flag when expanding
t1092: replace incorrect 'echo' with 'cat'
t1092: expand repository data shape
t1092: add tests for status/add and sparse files
unpack-trees: preserve cache_bottom
unpack-trees: compare sparse directories correctly
unpack-trees: rename unpack_nondirectories()
unpack-trees: unpack sparse directory entries
dir.c: accept a directory as part of cone-mode patterns
diff-lib: handle index diffs with sparse dirs
status: skip sparse-checkout percentage with sparse-index
status: use sparse-index throughout
wt-status: expand added sparse directory entries
fsmonitor: integrate with sparse index
t1092: document bad sparse-checkout behavior
p2000: add 'git checkout -' test and decrease depth
p2000: compress repo names
commit: integrate with sparse-index
sparse-index: recompute cache-tree
checkout: stop expanding sparse indexes
t1092: document bad 'git checkout' behavior
unpack-trees: resolve sparse-directory/file conflicts
Elijah Newren (36):
t6423: rename file within directory that other side renamed
Documentation/technical: describe remembering renames optimization
fast-rebase: change assert() to BUG()
fast-rebase: write conflict state to working tree, index, and HEAD
t6429: testcases for remembering renames
merge-ort: add data structures for in-memory caching of rename detection
merge-ort: populate caches of rename detection results
merge-ort: add code to check for whether cached renames can be reused
merge-ort: avoid accidental API mis-use
merge-ort: preserve cached renames for the appropriate side
merge-ort: add helper functions for using cached renames
merge-ort: handle interactions of caching and rename/rename(1to1) cases
merge-ort, diffcore-rename: employ cached renames when possible
merge-ort: replace string_list_df_name_compare with faster alternative
diffcore-rename: avoid unnecessary strdup'ing in break_idx
Fix various issues found in comments
merge-ort: miscellaneous touch-ups
promisor-remote: output trace2 statistics for number of objects fetched
t6421: add tests checking for excessive object downloads during merge
diffcore-rename: allow different missing_object_cb functions
diffcore-rename: use a different prefetch for basename comparisons
merge-ort: add prefetching for content merges
t6423: test directory renames causing rename-to-self
merge-ort: ensure we consult df_conflict and path_conflicts
merge-recursive: handle rename-to-self case
diff: correct warning message when renameLimit exceeded
doc: clarify documentation for rename/copy limits
diffcore-rename: treat a rename_limit of 0 as unlimited
rename: bump limit defaults yet again
merge-ort: resolve paths early when we have sufficient information
merge-ort: add some more explanations in collect_merge_info_callback()
merge-ort: add data structures for allowable trivial directory resolves
merge-ort: add a handle_deferred_entries() helper function
merge-ort: defer recursing into directories when merge base is matched
merge-ort: avoid recursing into directories when we don't need to
merge-ort: restart merge with cached renames to reduce process entry cost
Eric Wong (6):
xmmap: inform Linux users of tuning knobs on ENOMEM
speed up alt_odb_usable() with many alternates
avoid strlen via strbuf_addstr in link_alt_odb_entry
make object_directory.loose_objects_subdir_seen a bitmap
oidcpy_with_padding: constify `src' arg
oidtree: a crit-bit tree for odb_loose_cache
Fabian Wermelinger (1):
completion: bash: fix late declaration of __git_cmd_idx
Felipe Contreras (33):
doc: refactor common asciidoc dependencies
doc: improve asciidoc dependencies
doc: remove unnecessary rm instances
doc: simplify Makefile using .DELETE_ON_ERROR
doc: avoid using rm directly
push: rename !triangular to same_remote
push: hedge code of default=simple
push: copy code to setup_push_simple()
push: reorganize setup_push_simple()
push: simplify setup_push_simple()
push: remove unused code in setup_push_upstream()
doc: push: explain default=simple correctly
push: create new get_upstream_ref() helper
push: return immediately in trivial switch case
push: split switch cases
push: factor out null branch check
push: only get the branch when needed
push: make setup_push_* return the dst
push: trivial simplifications
push: get rid of all the setup_push_* functions
push: factor out the typical case
push: remove redundant check
push: remove trivial function
push: only check same_remote when needed
push: don't get a full remote object
doc: merge: mention default of defaulttoupstream
doc: avoid using the gender of other people
comments: avoid using the gender of our users
pull: cleanup autostash check
pull: trivial cleanup
pull: trivial whitespace style fix
doc: pull: fix rebase=false documentation
test: fix for COLUMNS and bash 5
Gregory Anders (1):
git-send-email: add option to specify sendmail command
Han-Wen Nienhuys (26):
refs: make explicit that ref_iterator_peel returns boolean
t4202: split testcase for invalid HEAD symref and HEAD hash
t/helper/ref-store: initialize oid in resolve-ref
t9300: check ref existence using test-helper rather than a file system check
t5601: read HEAD using rev-parse
t1401: use tar to snapshot and restore repo state
t1401-symbolic-ref: avoid direct filesystem access
t1413: use tar to save and restore entire .git directory
t1301: fix typo in error message
t5000: reformat indentation to the latest fashion
t5000: inspect HEAD using git-rev-parse
t7003: use rev-parse rather than FS inspection
t5304: restyle: trim empty lines, drop ':' before >
t5304: use "reflog expire --all" to clear the reflog
test-lib: provide test prereq REFFILES
t1407: require REFFILES for for_each_reflog test
t1414: mark corruption test with REFFILES
t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
t1404: mark tests that muck with .git directly as REFFILES.
t7900: stop checking for loose refs
t7003: check reflog existence only for REFFILES
t4202: mark bogus head hash test with REFFILES
t1415: set REFFILES for test specific to storage format
t1415: avoid direct filesystem access for writing refs
t7509: avoid direct file access for writing CHERRY_PICK_HEAD
refs/debug: quote prefix
Hu Jialun (2):
commit: reorganise commit hint strings
commit: remove irrelavent prompt on `--allow-empty-message`
Jean-Noël Avila (1):
help: fix small typo in error message
Jeff King (27):
clone: clean up directory after transport_fetch_refs() failure
fetch-pack: signal v2 server that we are done making requests
doc: explain the use of color.pager
doc: warn people against --max-pack-size
ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
ll_union_merge(): pass name labels to ll_xdl_merge()
ll_union_merge(): rename path_unused parameter
add_pending_object_with_path(): work around "gcc -O3" complaint
bitmaps: don't recurse into trees already in the bitmap
t: use portable wrapper for readlink(1)
pretty.h: update and expand docstring for userformat_find_requirements()
log: avoid loading decorations for userformats that don't need it
object.h: expand docstring for lookup_unknown_object()
object.h: add lookup_object_by_type() function
load_ref_decorations(): avoid parsing non-tag objects
add_ref_decoration(): rename s/type/deco_type/
test-lib: avoid accidental globbing in match_pattern_list()
doc/rev-list-options: fix duplicate word typo
load_ref_decorations(): fix decoration with tags
t0000: clear GIT_SKIP_TESTS before running sub-tests
doc/git-config: explain --file instead of referring to GIT_CONFIG
doc/git-config: clarify GIT_CONFIG environment variable
doc/git-config: simplify "override" advice for FILES section
pack-bitmap: check pack validity when opening bitmap
submodule: drop unused sm_name parameter from show_fetch_remotes()
ci: run "apt-get update" before "apt-get install"
ci/install-dependencies: handle "sparse" job package installs
Jiang Xin (5):
t6020: fix incompatible parameter expansion
sideband: don't lose clear-to-eol at packet boundary
test: compare raw output, not mangle tabs and spaces
test: refactor to use "test_commit" to create commits
test: refactor to use "get_abbrev_oid" to get abbrev oid
Johannes Schindelin (15):
multimail: stop shipping a copy
subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
subtree: fix assumption about the directory separator
pager: avoid setting COLUMNS when we're guessing its value
mingw: move Git for Windows' system config where users expect it
config: normalize the path of the system gitconfig
ci: use the new GitHub Action to download git-sdk-64-minimal
ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
ci: upgrade to using actions/{up,down}load-artifacts v2
ci (windows): transfer also the Git-tracked files to the test jobs
artifacts-tar: respect NO_GETTEXT
ci: accelerate the checkout
ci: run `make sparse` as part of the GitHub workflow
ci(check-whitespace): stop requiring a read/write token
ci(check-whitespace): restrict to the intended commits
Jonathan Nieder (2):
xsize_t: avoid implementation defined behavior when len < 0
Revert 'diff-merges: let "-m" imply "-p"'
Jonathan Tan (7):
repository: move global r_f_p_c to repo struct
promisor-remote: support per-repository config
submodule: refrain from filtering GIT_CONFIG_COUNT
run-command: refactor subprocess env preparation
promisor-remote: teach lazy-fetch in any repo
unpack-trees: refactor prefetching code
cache-tree: prefetch in partial clone read-tree
Josh Steadmon (1):
docs: fix api-trace2 doc for "too_many_files" event
Julian Verdurmen (1):
userdiff: add support for C# record types
Junio C Hamano (13):
revisions(7): clarify that most commands take a single revision range
The first batch post Git 2.32
The second batch
The third batch
The fourth batch
CodingGuidelines: recommend gender-neutral description
The fifth batch
The sixth batch
The seventh batch
Git 2.33-rc0
The eighth batch
Git 2.33-rc1
Git 2.33-rc2
Kaartic Sivaraam (1):
submodule: remove unnecessary `prefix` based option logic
Matheus Tavares (1):
parallel-checkout: send the new object_id algo field to the workers
Matthew Rogers (3):
cmake: add knob to disable vcpkg
cmake: create compile_commands.json by default
cmake: add warning for ignored MSGFMT_EXE
Michael Schindler (1):
mergetools/kdiff3: make kdiff3 work on Windows too
Patrick Steinhardt (2):
perf: fix when running with TEST_OUTPUT_DIRECTORY
t0000: fix test if run with TEST_OUTPUT_DIRECTORY
Philippe Blain (6):
parse-options: don't complete option aliases by default
doc: clarify description of 'submodule.recurse'
merge: add missing word "strategy" to a message
Documentation: define 'MERGE_AUTOSTASH'
merge: apply autostash if fast-forward fails
merge: apply autostash if merge strategy fails
René Scharfe (4):
grep: report missing left operand of --and
khash: clarify that allocations never fail
use fspathhash() everywhere
object-file: use unsigned arithmetic with bit mask
Reuven Y (1):
docs: improve fast-forward in glossary content
Sergey Organov (10):
t4013: test that "-m" alone has no effect in "git log"
t4013: test "git log -m --raw"
t4013: test "git log -m --stat"
t4013: test "git diff-tree -m"
t4013: test "git diff-index -m"
diff-merges: move specific diff-index "-m" handling to diff-index
git-svn: stop passing "-m" to "git rev-list"
stash list: stop passing "-m" to "git log"
diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
diff-merges: let "-m" imply "-p"
Stephen Manz (3):
t2400: clean up '"add" worktree with lock' test
worktree: mark lock strings with `_()` for translation
worktree: teach `add` to accept --reason <string> with --lock
Tao Klerks (1):
Remove warning that repack only works on non-promisor packfiles
Taylor Blau (6):
csum-file: introduce checksum_valid()
commit-graph: rewrite to use checksum_valid()
midx: don't reuse corrupt MIDXs when writing
midx: report checksum mismatches during 'verify'
multi-pack-index: fix potential segfault without sub-command
pack-bitmap: clarify comment in filter_bitmap_exclude_type()
Teng Long (1):
packfile-uri.txt: fix blobPackfileUri description
Thomas Braun (1):
completion: add --anchored to diff's options
Thomas Bétous (1):
mingw: align symlinks-related rmdir() behavior with Linux
Wolfgang Müller (1):
rev-parse: mark die() messages for translation
ZheNing Hu (4):
ref-filter: add objectsize to used_atom
ref-filter: introduce enum atom_type
cat-file: handle trivial --batch format with --batch-all-objects
cat-file: merge two block into one
brian m. carlson (1):
rev-list: add option for --pretty=format without header
dorgon.chang (1):
git-p4: fix failed submit by skip non-text data files
edef (1):
mailinfo: don't discard names under 3 characters
Ævar Arnfjörð Bjarmason (93):
test-lib: bring $remove_trash out of retirement
test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
test-lib-functions: reword "test_commit --append" docs
test-lib-functions: document test_commit --no-tag
test-lib functions: add an --annotated option to "test_commit"
describe tests: convert setup to use test_commit
test-lib functions: add --printf option to test_commit
submodule tests: use symbolic-ref --short to discover branch name
test-lib: reformat argument list in test_create_repo()
test-lib: do not show advice about init.defaultBranch under --verbose
test-lib: split up and deprecate test_create_repo()
grep/pcre2 tests: reword comments referring to kwset
pickaxe tests: refactor to use test_commit --append --printf
pickaxe tests: add test for diffgrep_consume() internals
pickaxe tests: add test for "log -S" not being a regex
pickaxe tests: test for -G, -S and --find-object incompatibility
pickaxe tests: add missing test for --no-pickaxe-regex being an error
pickaxe: die when -G and --pickaxe-regex are combined
pickaxe: die when --find-object and --pickaxe-all are combined
diff.h: move pickaxe fields together again
pickaxe/style: consolidate declarations and assignments
perf: add performance test for pickaxe
pickaxe: refactor function selection in diffcore-pickaxe()
pickaxe: assert that we must have a needle under -G or -S
pickaxe -S: support content with NULs under --pickaxe-regex
pickaxe: rename variables in has_changes() for brevity
pickaxe -S: slightly optimize contains()
xdiff-interface: prepare for allowing early return
xdiff-interface: allow early return from xdiff_emit_line_fn
pickaxe -G: terminate early on matching lines
pickaxe -G: don't special-case create/delete
xdiff users: use designated initializers for out_line
xdiff-interface: replace discard_hunk_line() with a flag
describe tests: improve test for --work-tree & --dirty
describe tests: refactor away from glob matching
describe tests: don't rely on err.actual from "check_describe"
describe tests: fix nested "test_expect_success" call
describe tests: support -C in "check_describe"
trace2: refactor to avoid gcc warning under -O3
send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
send-email tests: test for boolean variables without a value
send-email: remove non-working support for "sendemail.smtpssl"
send-email: refactor sendemail.smtpencryption config parsing
send-email: copy "config_regxp" into git-send-email.perl
send-email: lazily load config for a big speedup
send-email: lazily shell out to "git var"
send-email: use function syntax instead of barewords
send-email: get rid of indirect object syntax
send-email: lazily load modules for a big speedup
perl: lazily load some common Git.pm setup code
send-email: move trivial config handling to Perl
perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
protocol-caps.h: add newline at end of file
read-cache.c: don't guard calls to progress.c API
xdiff: use BUG(...), not xdl_bug(...)
builtins + test helpers: use return instead of exit() in cmd_*
mktag tests: parse out options in helper
mktag tests: invert --no-strict test
show-branch tests: rename the one "show-branch" test file
show-branch tests: modernize test code
pre-commit hook tests: don't leave "actual" nonexisting on failure
gc tests: add a test for the "pre-auto-gc" hook
mktag tests: test hash-object --literally and unreachable fsck
mktag tests: test update-ref and reachable fsck
mktag tests: test for-each-ref
mktag tests: test fast-export
show-branch: don't <COLOR></RESET> for space characters
show-branch tests: add missing tests
Makefile: add and use the ".DELETE_ON_ERROR" flag
test-lib.sh: set COLUMNS=80 for --verbose repeatability
send-pack.c: move "no refs in common" abort earlier
fetch: document the --negotiate-only option
*.h: move some *_INIT to designated initializers
*.c *_init(): define in terms of corresponding *_INIT macro
dir.[ch]: replace dir_init() with DIR_INIT
string-list.[ch]: add a string_list_init_{nodup,dup}()
string-list.h users: change to use *_{nodup,dup}()
bundle cmd: stop leaking memory from parse_options_cmd_bundle()
bundle.c: use a temporary variable for OIDs and names
bundle: remove "ref_list" in favor of string-list.c API
imap-send.c: use less verbose strbuf_fread() idiom
fetch: fix segfault in --negotiate-only without --negotiation-tip=*
*.c static functions: don't forward-declare __attribute__
sequencer.c: move static function to avoid forward decl
*.c static functions: add missing __attribute__((format))
*.h: add a few missing __attribute__((format))
advice.h: add missing __attribute__((format)) & fix usage
test-lib-functions: use test-tool for [de]packetize()
SubmittingPatches: move discussion of Signed-off-by above "send"
SubmittingPatches: replace discussion of Travis with GitHub Actions
bundle tests: use ">file" not ": >file"
bundle tests: use test_cmp instead of grep
t0001: fix broken not-quite getcwd(3) test in bed67874e2
Đoàn Trần Công Danh (6):
t: use configured TAR instead of tar
doc/log: correct default for --decorate
t: use user-specified utf-8 locale for testing svn
test-lib-functions: introduce test_stdout_line_count
t6400: preserve git ls-files exit status code
t6402: preserve git exit status code
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.33.0-rc1
@ 2021-08-07 0:07 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-07 0:07 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.33.0-rc1 is now available for testing at
the usual places. It is comprised of 396 non-merge commits since
v2.32.0, contributed by 63 people, 19 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.33.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.32.0 are as follows.
Welcome to the Git development community!
Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
Tao Klerks, and Teng Long.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
Andrei Rybak, Andrzej Hunt, Atharva Raykar, Bagas Sanjaya,
brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Eric Wong,
Felipe Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff King,
Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Kaartic Sivaraam, Martin Ågren,
Matheus Tavares, Matthew Rogers, Matthias Aßhauer, Nicolas
Pitre, Patrick Steinhardt, Philippe Blain, René Scharfe,
Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
Thomas Braun, Wolfgang Müller, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.33 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* The "-m" option in "git log -m" that does not specify which format,
if any, of diff is desired did not have any visible effect; it now
implies some form of diff (by default "--patch") is produced.
You can disable the diff output with "git log -m --no-patch", but
then there probably isn't much point in passing "-m" in the first
place ;-).
Updates since Git 2.32
----------------------
UI, Workflows & Features
* "git send-email" learned the "--sendmail-cmd" command line option
and the "sendemail.sendmailCmd" configuration variable, which is a
more sensible approach than the current way of repurposing the
"smtp-server" that is meant to name the server to instead name the
command to talk to the server.
* The "-m" option in "git log -m" that does not specify which format,
if any, of diff is desired did not have any visible effect; it now
implies some form of diff (by default "--patch") is produced.
* The userdiff pattern for C# learned the token "record".
* "git rev-list" learns to omit the "commit <object-name>" header
lines from the output with the `--no-commit-header` option.
* "git worktree add --lock" learned to record why the worktree is
locked with a custom message.
Performance, Internal Implementation, Development Support etc.
* The code to handle the "--format" option in "for-each-ref" and
friends made too many string comparisons on %(atom)s used in the
format string, which has been corrected by converting them into
enum when the format string is parsed.
* Use the hashfile API in the codepath that writes the index file to
reduce code duplication.
* Repeated rename detections in a sequence of mergy operations have
been optimized out for the 'ort' merge strategy.
* Preliminary clean-up of tests before the main reftable changes
hits the codebase.
* The backend for "diff -G/-S" has been updated to use pcre2 engine
when available.
* Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.
* Code cleanup around struct_type_init() functions.
* "git send-email" optimization.
* GitHub Actions / CI update.
(merge 0dc787a9f2 js/ci-windows-update later to maint).
* Object accesses in repositories with many alternate object store
have been optimized.
* "git log" has been optimized not to waste cycles to load ref
decoration data that may not be needed.
* Many "printf"-like helper functions we have have been annotated
with __attribute__() to catch placeholder/parameter mismatches.
* Tests that cover protocol bits have been updated and helpers
used there have been consolidated.
* The CI gained a new job to run "make sparse" check.
* "git status" codepath learned to work with sparsely populated index
without hydrating it fully.
* A guideline for gender neutral documentation has been added.
* Documentation on "git diff -l<n>" and diff.renameLimit have been
updated, and the defaults for these limits have been raised.
* The completion support used to offer alternate spelling of options
that exist only for compatibility, which has been corrected.
* "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
been corrected.
* "git bundle" gained more test coverage.
* "git read-tree" had a codepath where blobs are fetched one-by-one
from the promisor remote, which has been corrected to fetch in bulk.
* Rewrite of "git submodule" in C continues.
* "git checkout" and "git commit" learn to work without unnecessarily
expanding sparse indexes.
Fixes since v2.32
-----------------
* We historically rejected a very short string as an author name
while accepting a patch e-mail, which has been loosened.
(merge 72ee47ceeb ef/mailinfo-short-name later to maint).
* The parallel checkout codepath did not initialize object ID field
used to talk to the worker processes in a futureproof way.
* Rewrite code that triggers undefined behaviour warning.
(merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).
* The description of "fast-forward" in the glossary has been updated.
(merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).
* Recent "git clone" left a temporary directory behind when the
transport layer returned an failure.
(merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).
* "git fetch" over protocol v2 left its side of the socket open after
it finished speaking, which unnecessarily wasted the resource on
the other side.
(merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).
* The command line completion (in contrib/) learned that "git diff"
takes the "--anchored" option.
(merge d1e7c2cac9 tb/complete-diff-anchored later to maint).
* "git-svn" tests assumed that "locale -a", which is used to pick an
available UTF-8 locale, is available everywhere. A knob has been
introduced to allow testers to specify a suitable locale to use.
(merge 482c962de4 dd/svn-test-wo-locale-a later to maint).
* Update "git subtree" to work better on Windows.
(merge 77f37de39f js/subtree-on-windows-fix later to maint).
* Remove multimail from contrib/
(merge f74d11471f js/no-more-multimail later to maint).
* Make the codebase MSAN clean.
(merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).
* Work around inefficient glob substitution in older versions of bash
by rewriting parts of a test.
(merge eb87c6f559 jx/t6020-with-older-bash later to maint).
* Avoid duplicated work while building reachability bitmaps.
(merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).
* We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
update, which got fixed.
* The side-band demultiplexer that is used to display progress output
from the remote end did not clear the line properly when the end of
line hits at a packet boundary, which has been corrected.
* Some test scripts assumed that readlink(1) was universally
installed and available, which is not the case.
(merge 7c0afdf23c jk/test-without-readlink-1 later to maint).
* Recent update to completion script (in contrib/) broke those who
use the __git_complete helper to define completion to their custom
command.
(merge cea232194d fw/complete-cmd-idx-fix later to maint).
* Output from some of our tests were affected by the width of the
terminal that they were run in, which has been corrected by
exporting a fixed value in the COLUMNS environment.
(merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).
* On Windows, mergetool has been taught to find kdiff3.exe just like
it finds winmerge.exe.
(merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).
* When we cannot figure out how wide the terminal is, we use a
fallback value of 80 ourselves (which cannot be avoided), but when
we run the pager, we export it in COLUMNS, which forces the pager
to use the hardcoded value, even when the pager is perfectly
capable to figure it out itself. Stop exporting COLUMNS when we
fall back on the hardcoded default value for our own use.
(merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).
* "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
use and did not ask for certain object traits.
(merge ee02ac6164 zh/cat-file-batch-fix later to maint).
* Some code and doc clarification around "git push".
* The "union" conflict resultion variant misbehaved when used with
binary merge driver.
(merge 382b601acd jk/union-merge-binary later to maint).
* Prevent "git p4" from failing to submit changes to binary file.
(merge 54662d5958 dc/p4-binary-submit-fix later to maint).
* "git grep --and -e foo" ought to have been diagnosed as an error
but instead segfaulted, which has been corrected.
(merge fe7fe62d8d rs/grep-parser-fix later to maint).
* The merge code had funny interactions between content based rename
detection and directory rename detection.
(merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).
* When rebuilding the multi-pack index file reusing an existing one,
we used to blindly trust the existing file and ended up carrying
corrupted data into the updated file, which has been corrected.
(merge f89ecf7988 tb/midx-use-checksum later to maint).
* Update the location of system-side configuration file on Windows.
(merge e355307692 js/gfw-system-config-loc-fix later to maint).
* Code recently added to support common ancestry negotiation during
"git push" did not sanity check its arguments carefully enough.
(merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).
* Update the documentation not to assume users are of certain gender
and adds to guidelines to do so.
(merge 46a237f42f ds/gender-neutral-doc later to maint).
* "git commit --allow-empty-message" won't abort the operation upon
an empty message, but the hint shown in the editor said otherwise.
(merge 6f70f00b4f hj/commit-allow-empty-message later to maint).
* The code that gives an error message in "git multi-pack-index" when
no subcommand is given tried to print a NULL pointer as a strong,
which has been corrected.
(merge 88617d11f9 tb/reverse-midx later to maint).
* CI update.
(merge a066a90db6 js/ci-check-whitespace-updates later to maint).
* Documentation fix for "git pull --rebase=no".
(merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).
* A race between repacking and using pack bitmaps has been corrected.
(merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).
* The local changes stashed by "git merge --autostash" were lost when
the merge failed in certain ways, which has been corrected.
* Windows rmdir() equivalent behaves differently from POSIX ones in
that when used on a symbolic link that points at a directory, the
target directory gets removed, which has been corrected.
(merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge bfe35a6165 ah/doc-describe later to maint).
(merge f302c1e4aa jc/clarify-revision-range later to maint).
(merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
(merge a84216c684 jk/doc-color-pager later to maint).
(merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
(merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
(merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
(merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
(merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
(merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
(merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
(merge abcb66c614 ar/typofix later to maint).
(merge 9853830787 ah/graph-typofix later to maint).
(merge aac578492d ab/config-hooks-path-testfix later to maint).
(merge 98c7656a18 ar/more-typofix later to maint).
(merge 6fb9195f6c jk/doc-max-pack-size later to maint).
(merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
(merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
(merge 338abb0f04 ab/cmd-foo-should-return later to maint).
(merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
(merge b7b793d1e7 ab/progress-cleanup later to maint).
(merge d94f9b8e90 ba/object-info later to maint).
(merge 52ff891c03 ar/test-code-cleanup later to maint).
(merge a0538e5c8b dd/document-log-decorate-default later to maint).
(merge ce24797d38 mr/cmake later to maint).
(merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
(merge 9fffc38583 bk/doc-commit-typofix later to maint).
(merge 1cf823d8f0 ks/submodule-cleanup later to maint).
(merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
(merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
(merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
(merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
(merge b1d87fbaf1 jk/typofix later to maint).
(merge e04170697a ab/gitignore-discovery-doc later to maint).
(merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
(merge eb448631fb dl/diff-merge-base later to maint).
(merge c510928a25 hn/refs-debug-empty-prefix later to maint).
(merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
(merge 878b399734 pb/submodule-recurse-doc later to maint).
(merge 734283855f jk/config-env-doc later to maint).
(merge 482e1488a9 ab/getcwd-test later to maint).
(merge f0b922473e ar/doc-markup-fix later to maint).
----------------------------------------------------------------
Changes since v2.32.0 are as follows:
Alex Henrie (6):
merge: don't translate literal commands
stash: don't translate literal commands
submodule: use the imperative mood to describe the --files option
fetch: improve grammar of "shallow roots" message
setup: split "extensions found" messages into singular and plural
graph: improve grammar of "invalid color" error message
Anders Höckersten (1):
describe-doc: clarify default length of abbreviation
Andrei Rybak (8):
t: fix whitespace around &&
mailinfo: use starts_with() when checking scissors
*: fix typos which duplicate a word
blame: correct name of config option in docs
t: fix typos in test messages
git-worktree.txt: fix typo in example path
help: convert git_cmd to page in one place
Documentation: render special characters correctly
Andrew Berry (1):
docs: .gitignore parsing is to the top of the repo
Andrzej Hunt (15):
bulk-checkin: make buffer reuse more obvious and safer
split-index: use oideq instead of memcmp to compare object_id's
builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
fmt-merge-msg: free newly allocated temporary strings when done
environment: move strbuf into block to plug leak
builtin/submodule--helper: release unused strbuf to avoid leak
builtin/for-each-repo: remove unnecessary argv copy to plug leak
diffcore-rename: move old_dir/new_dir definition to plug leak
ref-filter: also free head for ATOM_HEAD to avoid leak
read-cache: call diff_setup_done to avoid leak
convert: release strbuf to avoid leak
builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
builtin/merge: free found_ref when done
builtin/rebase: fix options.strategy memory lifecycle
reset: clear_unpack_trees_porcelain to plug leak
Atharva Raykar (6):
MyFirstContribution: link #git-devel to Libera Chat
submodule--helper: remove redundant include
t7400: test failure to add submodule in tracked path
submodule: prefix die messages with 'fatal'
submodule--helper: refactor module_clone()
submodule--helper: introduce add-clone subcommand
Bagas Sanjaya (1):
diff: --pickaxe-all typofix
Beshr Kayali (1):
Documentation: fix typo in the --patch option of the commit command
Carlo Marcelo Arenas Belón (2):
config.mak.uname: PCRE1 cleanup
t7508: avoid non POSIX BRE
Dennis Ameling (2):
cmake(windows): set correct path to the system Git config
ci (vs-build): build with NO_GETTEXT
Denton Liu (2):
pkt-line: replace "stateless separator" with "response end"
git-diff: fix missing --merge-base docs
Derrick Stolee (28):
hashfile: use write_in_full()
csum-file.h: increase hashfile buffer size
read-cache: use hashfile instead of git_hash_ctx
read-cache: delete unused hashing methods
*: fix typos
sparse-index: skip indexes with unmerged entries
sparse-index: include EXTENDED flag when expanding
t1092: replace incorrect 'echo' with 'cat'
t1092: expand repository data shape
t1092: add tests for status/add and sparse files
unpack-trees: preserve cache_bottom
unpack-trees: compare sparse directories correctly
unpack-trees: rename unpack_nondirectories()
unpack-trees: unpack sparse directory entries
dir.c: accept a directory as part of cone-mode patterns
diff-lib: handle index diffs with sparse dirs
status: skip sparse-checkout percentage with sparse-index
status: use sparse-index throughout
wt-status: expand added sparse directory entries
fsmonitor: integrate with sparse index
t1092: document bad sparse-checkout behavior
p2000: add 'git checkout -' test and decrease depth
p2000: compress repo names
commit: integrate with sparse-index
sparse-index: recompute cache-tree
checkout: stop expanding sparse indexes
t1092: document bad 'git checkout' behavior
unpack-trees: resolve sparse-directory/file conflicts
Elijah Newren (36):
t6423: rename file within directory that other side renamed
Documentation/technical: describe remembering renames optimization
fast-rebase: change assert() to BUG()
fast-rebase: write conflict state to working tree, index, and HEAD
t6429: testcases for remembering renames
merge-ort: add data structures for in-memory caching of rename detection
merge-ort: populate caches of rename detection results
merge-ort: add code to check for whether cached renames can be reused
merge-ort: avoid accidental API mis-use
merge-ort: preserve cached renames for the appropriate side
merge-ort: add helper functions for using cached renames
merge-ort: handle interactions of caching and rename/rename(1to1) cases
merge-ort, diffcore-rename: employ cached renames when possible
merge-ort: replace string_list_df_name_compare with faster alternative
diffcore-rename: avoid unnecessary strdup'ing in break_idx
Fix various issues found in comments
merge-ort: miscellaneous touch-ups
promisor-remote: output trace2 statistics for number of objects fetched
t6421: add tests checking for excessive object downloads during merge
diffcore-rename: allow different missing_object_cb functions
diffcore-rename: use a different prefetch for basename comparisons
merge-ort: add prefetching for content merges
t6423: test directory renames causing rename-to-self
merge-ort: ensure we consult df_conflict and path_conflicts
merge-recursive: handle rename-to-self case
diff: correct warning message when renameLimit exceeded
doc: clarify documentation for rename/copy limits
diffcore-rename: treat a rename_limit of 0 as unlimited
rename: bump limit defaults yet again
merge-ort: resolve paths early when we have sufficient information
merge-ort: add some more explanations in collect_merge_info_callback()
merge-ort: add data structures for allowable trivial directory resolves
merge-ort: add a handle_deferred_entries() helper function
merge-ort: defer recursing into directories when merge base is matched
merge-ort: avoid recursing into directories when we don't need to
merge-ort: restart merge with cached renames to reduce process entry cost
Eric Wong (6):
xmmap: inform Linux users of tuning knobs on ENOMEM
speed up alt_odb_usable() with many alternates
avoid strlen via strbuf_addstr in link_alt_odb_entry
make object_directory.loose_objects_subdir_seen a bitmap
oidcpy_with_padding: constify `src' arg
oidtree: a crit-bit tree for odb_loose_cache
Fabian Wermelinger (1):
completion: bash: fix late declaration of __git_cmd_idx
Felipe Contreras (33):
doc: refactor common asciidoc dependencies
doc: improve asciidoc dependencies
doc: remove unnecessary rm instances
doc: simplify Makefile using .DELETE_ON_ERROR
doc: avoid using rm directly
push: rename !triangular to same_remote
push: hedge code of default=simple
push: copy code to setup_push_simple()
push: reorganize setup_push_simple()
push: simplify setup_push_simple()
push: remove unused code in setup_push_upstream()
doc: push: explain default=simple correctly
push: create new get_upstream_ref() helper
push: return immediately in trivial switch case
push: split switch cases
push: factor out null branch check
push: only get the branch when needed
push: make setup_push_* return the dst
push: trivial simplifications
push: get rid of all the setup_push_* functions
push: factor out the typical case
push: remove redundant check
push: remove trivial function
push: only check same_remote when needed
push: don't get a full remote object
doc: merge: mention default of defaulttoupstream
doc: avoid using the gender of other people
comments: avoid using the gender of our users
pull: cleanup autostash check
pull: trivial cleanup
pull: trivial whitespace style fix
doc: pull: fix rebase=false documentation
test: fix for COLUMNS and bash 5
Gregory Anders (1):
git-send-email: add option to specify sendmail command
Han-Wen Nienhuys (26):
refs: make explicit that ref_iterator_peel returns boolean
t4202: split testcase for invalid HEAD symref and HEAD hash
t/helper/ref-store: initialize oid in resolve-ref
t9300: check ref existence using test-helper rather than a file system check
t5601: read HEAD using rev-parse
t1401: use tar to snapshot and restore repo state
t1401-symbolic-ref: avoid direct filesystem access
t1413: use tar to save and restore entire .git directory
t1301: fix typo in error message
t5000: reformat indentation to the latest fashion
t5000: inspect HEAD using git-rev-parse
t7003: use rev-parse rather than FS inspection
t5304: restyle: trim empty lines, drop ':' before >
t5304: use "reflog expire --all" to clear the reflog
test-lib: provide test prereq REFFILES
t1407: require REFFILES for for_each_reflog test
t1414: mark corruption test with REFFILES
t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
t1404: mark tests that muck with .git directly as REFFILES.
t7900: stop checking for loose refs
t7003: check reflog existence only for REFFILES
t4202: mark bogus head hash test with REFFILES
t1415: set REFFILES for test specific to storage format
t1415: avoid direct filesystem access for writing refs
t7509: avoid direct file access for writing CHERRY_PICK_HEAD
refs/debug: quote prefix
Hu Jialun (2):
commit: reorganise commit hint strings
commit: remove irrelavent prompt on `--allow-empty-message`
Jean-Noël Avila (1):
help: fix small typo in error message
Jeff King (27):
clone: clean up directory after transport_fetch_refs() failure
fetch-pack: signal v2 server that we are done making requests
doc: explain the use of color.pager
doc: warn people against --max-pack-size
ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
ll_union_merge(): pass name labels to ll_xdl_merge()
ll_union_merge(): rename path_unused parameter
add_pending_object_with_path(): work around "gcc -O3" complaint
bitmaps: don't recurse into trees already in the bitmap
t: use portable wrapper for readlink(1)
pretty.h: update and expand docstring for userformat_find_requirements()
log: avoid loading decorations for userformats that don't need it
object.h: expand docstring for lookup_unknown_object()
object.h: add lookup_object_by_type() function
load_ref_decorations(): avoid parsing non-tag objects
add_ref_decoration(): rename s/type/deco_type/
test-lib: avoid accidental globbing in match_pattern_list()
doc/rev-list-options: fix duplicate word typo
load_ref_decorations(): fix decoration with tags
t0000: clear GIT_SKIP_TESTS before running sub-tests
doc/git-config: explain --file instead of referring to GIT_CONFIG
doc/git-config: clarify GIT_CONFIG environment variable
doc/git-config: simplify "override" advice for FILES section
pack-bitmap: check pack validity when opening bitmap
submodule: drop unused sm_name parameter from show_fetch_remotes()
ci: run "apt-get update" before "apt-get install"
ci/install-dependencies: handle "sparse" job package installs
Jiang Xin (5):
t6020: fix incompatible parameter expansion
sideband: don't lose clear-to-eol at packet boundary
test: compare raw output, not mangle tabs and spaces
test: refactor to use "test_commit" to create commits
test: refactor to use "get_abbrev_oid" to get abbrev oid
Johannes Schindelin (15):
multimail: stop shipping a copy
subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
subtree: fix assumption about the directory separator
pager: avoid setting COLUMNS when we're guessing its value
mingw: move Git for Windows' system config where users expect it
config: normalize the path of the system gitconfig
ci: use the new GitHub Action to download git-sdk-64-minimal
ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
ci: upgrade to using actions/{up,down}load-artifacts v2
ci (windows): transfer also the Git-tracked files to the test jobs
artifacts-tar: respect NO_GETTEXT
ci: accelerate the checkout
ci: run `make sparse` as part of the GitHub workflow
ci(check-whitespace): stop requiring a read/write token
ci(check-whitespace): restrict to the intended commits
Jonathan Nieder (1):
xsize_t: avoid implementation defined behavior when len < 0
Jonathan Tan (7):
repository: move global r_f_p_c to repo struct
promisor-remote: support per-repository config
submodule: refrain from filtering GIT_CONFIG_COUNT
run-command: refactor subprocess env preparation
promisor-remote: teach lazy-fetch in any repo
unpack-trees: refactor prefetching code
cache-tree: prefetch in partial clone read-tree
Josh Steadmon (1):
docs: fix api-trace2 doc for "too_many_files" event
Julian Verdurmen (1):
userdiff: add support for C# record types
Junio C Hamano (12):
revisions(7): clarify that most commands take a single revision range
The first batch post Git 2.32
The second batch
The third batch
The fourth batch
CodingGuidelines: recommend gender-neutral description
The fifth batch
The sixth batch
The seventh batch
Git 2.33-rc0
The eighth batch
Git 2.33-rc1
Kaartic Sivaraam (1):
submodule: remove unnecessary `prefix` based option logic
Matheus Tavares (1):
parallel-checkout: send the new object_id algo field to the workers
Matthew Rogers (3):
cmake: add knob to disable vcpkg
cmake: create compile_commands.json by default
cmake: add warning for ignored MSGFMT_EXE
Michael Schindler (1):
mergetools/kdiff3: make kdiff3 work on Windows too
Patrick Steinhardt (2):
perf: fix when running with TEST_OUTPUT_DIRECTORY
t0000: fix test if run with TEST_OUTPUT_DIRECTORY
Philippe Blain (6):
parse-options: don't complete option aliases by default
doc: clarify description of 'submodule.recurse'
merge: add missing word "strategy" to a message
Documentation: define 'MERGE_AUTOSTASH'
merge: apply autostash if fast-forward fails
merge: apply autostash if merge strategy fails
René Scharfe (3):
grep: report missing left operand of --and
khash: clarify that allocations never fail
use fspathhash() everywhere
Reuven Y (1):
docs: improve fast-forward in glossary content
Sergey Organov (10):
t4013: test that "-m" alone has no effect in "git log"
t4013: test "git log -m --raw"
t4013: test "git log -m --stat"
t4013: test "git diff-tree -m"
t4013: test "git diff-index -m"
diff-merges: move specific diff-index "-m" handling to diff-index
git-svn: stop passing "-m" to "git rev-list"
stash list: stop passing "-m" to "git log"
diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
diff-merges: let "-m" imply "-p"
Stephen Manz (3):
t2400: clean up '"add" worktree with lock' test
worktree: mark lock strings with `_()` for translation
worktree: teach `add` to accept --reason <string> with --lock
Tao Klerks (1):
Remove warning that repack only works on non-promisor packfiles
Taylor Blau (6):
csum-file: introduce checksum_valid()
commit-graph: rewrite to use checksum_valid()
midx: don't reuse corrupt MIDXs when writing
midx: report checksum mismatches during 'verify'
multi-pack-index: fix potential segfault without sub-command
pack-bitmap: clarify comment in filter_bitmap_exclude_type()
Teng Long (1):
packfile-uri.txt: fix blobPackfileUri description
Thomas Braun (1):
completion: add --anchored to diff's options
Thomas Bétous (1):
mingw: align symlinks-related rmdir() behavior with Linux
Wolfgang Müller (1):
rev-parse: mark die() messages for translation
ZheNing Hu (4):
ref-filter: add objectsize to used_atom
ref-filter: introduce enum atom_type
cat-file: handle trivial --batch format with --batch-all-objects
cat-file: merge two block into one
brian m. carlson (1):
rev-list: add option for --pretty=format without header
dorgon.chang (1):
git-p4: fix failed submit by skip non-text data files
edef (1):
mailinfo: don't discard names under 3 characters
Ævar Arnfjörð Bjarmason (93):
test-lib: bring $remove_trash out of retirement
test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
test-lib-functions: reword "test_commit --append" docs
test-lib-functions: document test_commit --no-tag
test-lib functions: add an --annotated option to "test_commit"
describe tests: convert setup to use test_commit
test-lib functions: add --printf option to test_commit
submodule tests: use symbolic-ref --short to discover branch name
test-lib: reformat argument list in test_create_repo()
test-lib: do not show advice about init.defaultBranch under --verbose
test-lib: split up and deprecate test_create_repo()
grep/pcre2 tests: reword comments referring to kwset
pickaxe tests: refactor to use test_commit --append --printf
pickaxe tests: add test for diffgrep_consume() internals
pickaxe tests: add test for "log -S" not being a regex
pickaxe tests: test for -G, -S and --find-object incompatibility
pickaxe tests: add missing test for --no-pickaxe-regex being an error
pickaxe: die when -G and --pickaxe-regex are combined
pickaxe: die when --find-object and --pickaxe-all are combined
diff.h: move pickaxe fields together again
pickaxe/style: consolidate declarations and assignments
perf: add performance test for pickaxe
pickaxe: refactor function selection in diffcore-pickaxe()
pickaxe: assert that we must have a needle under -G or -S
pickaxe -S: support content with NULs under --pickaxe-regex
pickaxe: rename variables in has_changes() for brevity
pickaxe -S: slightly optimize contains()
xdiff-interface: prepare for allowing early return
xdiff-interface: allow early return from xdiff_emit_line_fn
pickaxe -G: terminate early on matching lines
pickaxe -G: don't special-case create/delete
xdiff users: use designated initializers for out_line
xdiff-interface: replace discard_hunk_line() with a flag
describe tests: improve test for --work-tree & --dirty
describe tests: refactor away from glob matching
describe tests: don't rely on err.actual from "check_describe"
describe tests: fix nested "test_expect_success" call
describe tests: support -C in "check_describe"
trace2: refactor to avoid gcc warning under -O3
send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
send-email tests: test for boolean variables without a value
send-email: remove non-working support for "sendemail.smtpssl"
send-email: refactor sendemail.smtpencryption config parsing
send-email: copy "config_regxp" into git-send-email.perl
send-email: lazily load config for a big speedup
send-email: lazily shell out to "git var"
send-email: use function syntax instead of barewords
send-email: get rid of indirect object syntax
send-email: lazily load modules for a big speedup
perl: lazily load some common Git.pm setup code
send-email: move trivial config handling to Perl
perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
protocol-caps.h: add newline at end of file
read-cache.c: don't guard calls to progress.c API
xdiff: use BUG(...), not xdl_bug(...)
builtins + test helpers: use return instead of exit() in cmd_*
mktag tests: parse out options in helper
mktag tests: invert --no-strict test
show-branch tests: rename the one "show-branch" test file
show-branch tests: modernize test code
pre-commit hook tests: don't leave "actual" nonexisting on failure
gc tests: add a test for the "pre-auto-gc" hook
mktag tests: test hash-object --literally and unreachable fsck
mktag tests: test update-ref and reachable fsck
mktag tests: test for-each-ref
mktag tests: test fast-export
show-branch: don't <COLOR></RESET> for space characters
show-branch tests: add missing tests
Makefile: add and use the ".DELETE_ON_ERROR" flag
test-lib.sh: set COLUMNS=80 for --verbose repeatability
send-pack.c: move "no refs in common" abort earlier
fetch: document the --negotiate-only option
*.h: move some *_INIT to designated initializers
*.c *_init(): define in terms of corresponding *_INIT macro
dir.[ch]: replace dir_init() with DIR_INIT
string-list.[ch]: add a string_list_init_{nodup,dup}()
string-list.h users: change to use *_{nodup,dup}()
bundle cmd: stop leaking memory from parse_options_cmd_bundle()
bundle.c: use a temporary variable for OIDs and names
bundle: remove "ref_list" in favor of string-list.c API
imap-send.c: use less verbose strbuf_fread() idiom
fetch: fix segfault in --negotiate-only without --negotiation-tip=*
*.c static functions: don't forward-declare __attribute__
sequencer.c: move static function to avoid forward decl
*.c static functions: add missing __attribute__((format))
*.h: add a few missing __attribute__((format))
advice.h: add missing __attribute__((format)) & fix usage
test-lib-functions: use test-tool for [de]packetize()
SubmittingPatches: move discussion of Signed-off-by above "send"
SubmittingPatches: replace discussion of Travis with GitHub Actions
bundle tests: use ">file" not ": >file"
bundle tests: use test_cmp instead of grep
t0001: fix broken not-quite getcwd(3) test in bed67874e2
Đoàn Trần Công Danh (6):
t: use configured TAR instead of tar
doc/log: correct default for --decorate
t: use user-specified utf-8 locale for testing svn
test-lib-functions: introduce test_stdout_line_count
t6400: preserve git ls-files exit status code
t6402: preserve git exit status code
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.33.0-rc0
@ 2021-08-02 23:45 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-02 23:45 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.33.0-rc0 is now available for
testing at the usual places. It is comprised of 350 non-merge
commits since v2.32.0, contributed by 61 people, 18 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.33.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.32.0 are as follows.
Welcome to the Git development community!
Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
dorgon.chang, edef, Fabian Wermelinger, Gregory Anders, Greg
Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen, Matthew
Hughes, Michael Schindler, Reuven Y, Stephen Manz, Tao Klerks,
and Teng Long.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
Andrei Rybak, Andrzej Hunt, Atharva Raykar, Bagas Sanjaya,
brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Eric Wong,
Felipe Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff King,
Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Kaartic Sivaraam, Martin Ågren,
Matheus Tavares, Matthew Rogers, Matthias Aßhauer, Nicolas
Pitre, Patrick Steinhardt, Philippe Blain, René Scharfe,
Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Braun,
Wolfgang Müller, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.33 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* The "-m" option in "git log -m" that does not specify which format,
if any, of diff is desired did not have any visible effect; it now
implies some form of diff (by default "--patch") is produced.
You can disable the diff output with "git log -m --no-patch", but
then there probably isn't much point in passing "-m" in the first
place ;-).
Updates since Git 2.32
----------------------
UI, Workflows & Features
* "git send-email" learned the "--sendmail-cmd" command line option
and the "sendemail.sendmailCmd" configuration variable, which is a
more sensible approach than the current way of repurposing the
"smtp-server" that is meant to name the server to instead name the
command to talk to the server.
* The "-m" option in "git log -m" that does not specify which format,
if any, of diff is desired did not have any visible effect; it now
implies some form of diff (by default "--patch") is produced.
* The userdiff pattern for C# learned the token "record".
* "git rev-list" learns to omit the "commit <object-name>" header
lines from the output with the `--no-commit-header` option.
* "git worktree add --lock" learned to record why the worktree is
locked with a custom message.
Performance, Internal Implementation, Development Support etc.
* The code to handle the "--format" option in "for-each-ref" and
friends made too many string comparisons on %(atom)s used in the
format string, which has been corrected by converting them into
enum when the format string is parsed.
* Use the hashfile API in the codepath that writes the index file to
reduce code duplication.
* Repeated rename detections in a sequence of mergy operations have
been optimize out.
* Preliminary clean-up of tests before the main reftable changes
hits the codebase.
* The backend for "diff -G/-S" has been updated to use pcre2 engine
when available.
* Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.
* Code cleanup around struct_type_init() functions.
* "git send-email" optimization.
* GitHub Actions / CI update.
(merge 0dc787a9f2 js/ci-windows-update later to maint).
* Object accesses in repositories with many alternate object store
have been optimized.
* "git log" has been optimized not to waste cycles to load ref
decoration data that may not be needed.
* Many "printf"-like helper functions we have have been annotated
with __attribute__() to catch placeholder/parameter mismatches.
* Tests that cover protocol bits have been updated and helpers
used there have been consolidated.
* The CI gained a new job to run "make sparse" check.
* "git status" codepath learned to work with sparsely populated index
without hydrating it fully.
* A guideline for gender neutral documentation has been added.
* Documentation on "git diff -l<n>" and diff.renameLimit have been
updated, and the defaults for these limits have been raised.
* The completion support used to offer alternate spelling of options
that exist only for compatibility, which has been corrected.
* "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
been corrected.
* "git bundle" gained more test coverage.
* "git read-tree" had a codepath where blobs are fetched one-by-one
from the promisor remote, which has been corrected to fetch in bulk.
Fixes since v2.32
-----------------
* We historically rejected a very short string as an author name
while accepting a patch e-mail, which has been loosened.
(merge 72ee47ceeb ef/mailinfo-short-name later to maint).
* The parallel checkout codepath did not initialize object ID field
used to talk to the worker processes in a futureproof way.
* Rewrite code that triggers undefined behaviour warning.
(merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).
* The description of "fast-forward" in the glossary has been updated.
(merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).
* Recent "git clone" left a temporary directory behind when the
transport layer returned an failure.
(merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).
* "git fetch" over protocol v2 left its side of the socket open after
it finished speaking, which unnecessarily wasted the resource on
the other side.
(merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).
* The command line completion (in contrib/) learned that "git diff"
takes the "--anchored" option.
(merge d1e7c2cac9 tb/complete-diff-anchored later to maint).
* "git-svn" tests assumed that "locale -a", which is used to pick an
available UTF-8 locale, is available everywhere. A knob has been
introduced to allow testers to specify a suitable locale to use.
(merge 482c962de4 dd/svn-test-wo-locale-a later to maint).
* Update "git subtree" to work better on Windows.
(merge 77f37de39f js/subtree-on-windows-fix later to maint).
* Remove multimail from contrib/
(merge f74d11471f js/no-more-multimail later to maint).
* Make the codebase MSAN clean.
(merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).
* Work around inefficient glob substitution in older versions of bash
by rewriting parts of a test.
(merge eb87c6f559 jx/t6020-with-older-bash later to maint).
* Avoid duplicated work while building reachability bitmaps.
(merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).
* We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
update, which got fixed.
* The side-band demultiplexer that is used to display progress output
from the remote end did not clear the line properly when the end of
line hits at a packet boundary, which has been corrected.
* Some test scripts assumed that readlink(1) was universally
installed and available, which is not the case.
(merge 7c0afdf23c jk/test-without-readlink-1 later to maint).
* Recent update to completion script (in contrib/) broke those who
use the __git_complete helper to define completion to their custom
command.
(merge cea232194d fw/complete-cmd-idx-fix later to maint).
* Output from some of our tests were affected by the width of the
terminal that they were run in, which has been corrected by
exporting a fixed value in the COLUMNS environment.
(merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).
* On Windows, mergetool has been taught to find kdiff3.exe just like
it finds winmerge.exe.
(merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).
* When we cannot figure out how wide the terminal is, we use a
fallback value of 80 ourselves (which cannot be avoided), but when
we run the pager, we export it in COLUMNS, which forces the pager
to use the hardcoded value, even when the pager is perfectly
capable to figure it out itself. Stop exporting COLUMNS when we
fall back on the hardcoded default value for our own use.
(merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).
* "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
use and did not ask for certain object traits.
(merge ee02ac6164 zh/cat-file-batch-fix later to maint).
* Some code and doc clarification around "git push".
* The "union" conflict resultion variant misbehaved when used with
binary merge driver.
(merge 382b601acd jk/union-merge-binary later to maint).
* Prevent "git p4" from failing to submit changes to binary file.
(merge 54662d5958 dc/p4-binary-submit-fix later to maint).
* "git grep --and -e foo" ought to have been diagnosed as an error
but instead segfaulted, which has been corrected.
(merge fe7fe62d8d rs/grep-parser-fix later to maint).
* The merge code had funny interactions between content based rename
detection and directory rename detection.
(merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).
* When rebuilding the multi-pack index file reusing an existing one,
we used to blindly trust the existing file and ended up carrying
corrupted data into the updated file, which has been corrected.
(merge f89ecf7988 tb/midx-use-checksum later to maint).
* Update the location of system-side configuration file on Windows.
(merge e355307692 js/gfw-system-config-loc-fix later to maint).
* Code recently added to support common ancestry negotiation during
"git push" did not sanity check its arguments carefully enough.
(merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).
* Update the documentation not to assume users are of certain gender
and adds to guidelines to do so.
(merge 46a237f42f ds/gender-neutral-doc later to maint).
* "git commit --allow-empty-message" won't abort the operation upon
an empty message, but the hint shown in the editor said otherwise.
(merge 6f70f00b4f hj/commit-allow-empty-message later to maint).
* The code that gives an error message in "git multi-pack-index" when
no subcommand is given tried to print a NULL pointer as a strong,
which has been corrected.
(merge 88617d11f9 tb/reverse-midx later to maint).
* CI update.
(merge a066a90db6 js/ci-check-whitespace-updates later to maint).
* Documentation fix for "git pull --rebase=no".
(merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).
* A race between repacking and using pack bitmaps has been corrected.
(merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge bfe35a6165 ah/doc-describe later to maint).
(merge f302c1e4aa jc/clarify-revision-range later to maint).
(merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
(merge a84216c684 jk/doc-color-pager later to maint).
(merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
(merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
(merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
(merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
(merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
(merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
(merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
(merge abcb66c614 ar/typofix later to maint).
(merge 9853830787 ah/graph-typofix later to maint).
(merge aac578492d ab/config-hooks-path-testfix later to maint).
(merge 98c7656a18 ar/more-typofix later to maint).
(merge 6fb9195f6c jk/doc-max-pack-size later to maint).
(merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
(merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
(merge 338abb0f04 ab/cmd-foo-should-return later to maint).
(merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
(merge b7b793d1e7 ab/progress-cleanup later to maint).
(merge d94f9b8e90 ba/object-info later to maint).
(merge 52ff891c03 ar/test-code-cleanup later to maint).
(merge a0538e5c8b dd/document-log-decorate-default later to maint).
(merge ce24797d38 mr/cmake later to maint).
(merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
(merge 9fffc38583 bk/doc-commit-typofix later to maint).
(merge 1cf823d8f0 ks/submodule-cleanup later to maint).
(merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
(merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
(merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
(merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
(merge b1d87fbaf1 jk/typofix later to maint).
(merge e04170697a ab/gitignore-discovery-doc later to maint).
(merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
(merge eb448631fb dl/diff-merge-base later to maint).
(merge c510928a25 hn/refs-debug-empty-prefix later to maint).
(merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
(merge 878b399734 pb/submodule-recurse-doc later to maint).
(merge 734283855f jk/config-env-doc later to maint).
----------------------------------------------------------------
Changes since v2.32.0 are as follows:
Alex Henrie (6):
merge: don't translate literal commands
stash: don't translate literal commands
submodule: use the imperative mood to describe the --files option
fetch: improve grammar of "shallow roots" message
setup: split "extensions found" messages into singular and plural
graph: improve grammar of "invalid color" error message
Anders Höckersten (1):
describe-doc: clarify default length of abbreviation
Andrei Rybak (7):
t: fix whitespace around &&
mailinfo: use starts_with() when checking scissors
*: fix typos which duplicate a word
blame: correct name of config option in docs
t: fix typos in test messages
git-worktree.txt: fix typo in example path
help: convert git_cmd to page in one place
Andrew Berry (1):
docs: .gitignore parsing is to the top of the repo
Andrzej Hunt (3):
bulk-checkin: make buffer reuse more obvious and safer
split-index: use oideq instead of memcmp to compare object_id's
builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
Atharva Raykar (2):
MyFirstContribution: link #git-devel to Libera Chat
submodule--helper: remove redundant include
Beshr Kayali (1):
Documentation: fix typo in the --patch option of the commit command
Carlo Marcelo Arenas Belón (1):
config.mak.uname: PCRE1 cleanup
Dennis Ameling (2):
cmake(windows): set correct path to the system Git config
ci (vs-build): build with NO_GETTEXT
Denton Liu (2):
pkt-line: replace "stateless separator" with "response end"
git-diff: fix missing --merge-base docs
Derrick Stolee (21):
hashfile: use write_in_full()
csum-file.h: increase hashfile buffer size
read-cache: use hashfile instead of git_hash_ctx
read-cache: delete unused hashing methods
*: fix typos
sparse-index: skip indexes with unmerged entries
sparse-index: include EXTENDED flag when expanding
t1092: replace incorrect 'echo' with 'cat'
t1092: expand repository data shape
t1092: add tests for status/add and sparse files
unpack-trees: preserve cache_bottom
unpack-trees: compare sparse directories correctly
unpack-trees: rename unpack_nondirectories()
unpack-trees: unpack sparse directory entries
dir.c: accept a directory as part of cone-mode patterns
diff-lib: handle index diffs with sparse dirs
status: skip sparse-checkout percentage with sparse-index
status: use sparse-index throughout
wt-status: expand added sparse directory entries
fsmonitor: integrate with sparse index
t1092: document bad sparse-checkout behavior
Elijah Newren (29):
t6423: rename file within directory that other side renamed
Documentation/technical: describe remembering renames optimization
fast-rebase: change assert() to BUG()
fast-rebase: write conflict state to working tree, index, and HEAD
t6429: testcases for remembering renames
merge-ort: add data structures for in-memory caching of rename detection
merge-ort: populate caches of rename detection results
merge-ort: add code to check for whether cached renames can be reused
merge-ort: avoid accidental API mis-use
merge-ort: preserve cached renames for the appropriate side
merge-ort: add helper functions for using cached renames
merge-ort: handle interactions of caching and rename/rename(1to1) cases
merge-ort, diffcore-rename: employ cached renames when possible
merge-ort: replace string_list_df_name_compare with faster alternative
diffcore-rename: avoid unnecessary strdup'ing in break_idx
Fix various issues found in comments
merge-ort: miscellaneous touch-ups
promisor-remote: output trace2 statistics for number of objects fetched
t6421: add tests checking for excessive object downloads during merge
diffcore-rename: allow different missing_object_cb functions
diffcore-rename: use a different prefetch for basename comparisons
merge-ort: add prefetching for content merges
t6423: test directory renames causing rename-to-self
merge-ort: ensure we consult df_conflict and path_conflicts
merge-recursive: handle rename-to-self case
diff: correct warning message when renameLimit exceeded
doc: clarify documentation for rename/copy limits
diffcore-rename: treat a rename_limit of 0 as unlimited
rename: bump limit defaults yet again
Eric Wong (6):
xmmap: inform Linux users of tuning knobs on ENOMEM
speed up alt_odb_usable() with many alternates
avoid strlen via strbuf_addstr in link_alt_odb_entry
make object_directory.loose_objects_subdir_seen a bitmap
oidcpy_with_padding: constify `src' arg
oidtree: a crit-bit tree for odb_loose_cache
Fabian Wermelinger (1):
completion: bash: fix late declaration of __git_cmd_idx
Felipe Contreras (32):
doc: refactor common asciidoc dependencies
doc: improve asciidoc dependencies
doc: remove unnecessary rm instances
doc: simplify Makefile using .DELETE_ON_ERROR
doc: avoid using rm directly
push: rename !triangular to same_remote
push: hedge code of default=simple
push: copy code to setup_push_simple()
push: reorganize setup_push_simple()
push: simplify setup_push_simple()
push: remove unused code in setup_push_upstream()
doc: push: explain default=simple correctly
push: create new get_upstream_ref() helper
push: return immediately in trivial switch case
push: split switch cases
push: factor out null branch check
push: only get the branch when needed
push: make setup_push_* return the dst
push: trivial simplifications
push: get rid of all the setup_push_* functions
push: factor out the typical case
push: remove redundant check
push: remove trivial function
push: only check same_remote when needed
push: don't get a full remote object
doc: merge: mention default of defaulttoupstream
doc: avoid using the gender of other people
comments: avoid using the gender of our users
pull: cleanup autostash check
pull: trivial cleanup
pull: trivial whitespace style fix
doc: pull: fix rebase=false documentation
Gregory Anders (1):
git-send-email: add option to specify sendmail command
Han-Wen Nienhuys (26):
refs: make explicit that ref_iterator_peel returns boolean
t4202: split testcase for invalid HEAD symref and HEAD hash
t/helper/ref-store: initialize oid in resolve-ref
t9300: check ref existence using test-helper rather than a file system check
t5601: read HEAD using rev-parse
t1401: use tar to snapshot and restore repo state
t1401-symbolic-ref: avoid direct filesystem access
t1413: use tar to save and restore entire .git directory
t1301: fix typo in error message
t5000: reformat indentation to the latest fashion
t5000: inspect HEAD using git-rev-parse
t7003: use rev-parse rather than FS inspection
t5304: restyle: trim empty lines, drop ':' before >
t5304: use "reflog expire --all" to clear the reflog
test-lib: provide test prereq REFFILES
t1407: require REFFILES for for_each_reflog test
t1414: mark corruption test with REFFILES
t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
t1404: mark tests that muck with .git directly as REFFILES.
t7900: stop checking for loose refs
t7003: check reflog existence only for REFFILES
t4202: mark bogus head hash test with REFFILES
t1415: set REFFILES for test specific to storage format
t1415: avoid direct filesystem access for writing refs
t7509: avoid direct file access for writing CHERRY_PICK_HEAD
refs/debug: quote prefix
Hu Jialun (2):
commit: reorganise commit hint strings
commit: remove irrelavent prompt on `--allow-empty-message`
Jean-Noël Avila (1):
help: fix small typo in error message
Jeff King (26):
clone: clean up directory after transport_fetch_refs() failure
fetch-pack: signal v2 server that we are done making requests
doc: explain the use of color.pager
doc: warn people against --max-pack-size
ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
ll_union_merge(): pass name labels to ll_xdl_merge()
ll_union_merge(): rename path_unused parameter
add_pending_object_with_path(): work around "gcc -O3" complaint
bitmaps: don't recurse into trees already in the bitmap
t: use portable wrapper for readlink(1)
pretty.h: update and expand docstring for userformat_find_requirements()
log: avoid loading decorations for userformats that don't need it
object.h: expand docstring for lookup_unknown_object()
object.h: add lookup_object_by_type() function
load_ref_decorations(): avoid parsing non-tag objects
add_ref_decoration(): rename s/type/deco_type/
test-lib: avoid accidental globbing in match_pattern_list()
doc/rev-list-options: fix duplicate word typo
load_ref_decorations(): fix decoration with tags
t0000: clear GIT_SKIP_TESTS before running sub-tests
doc/git-config: explain --file instead of referring to GIT_CONFIG
doc/git-config: clarify GIT_CONFIG environment variable
doc/git-config: simplify "override" advice for FILES section
pack-bitmap: check pack validity when opening bitmap
ci: run "apt-get update" before "apt-get install"
ci/install-dependencies: handle "sparse" job package installs
Jiang Xin (5):
t6020: fix incompatible parameter expansion
sideband: don't lose clear-to-eol at packet boundary
test: compare raw output, not mangle tabs and spaces
test: refactor to use "test_commit" to create commits
test: refactor to use "get_abbrev_oid" to get abbrev oid
Johannes Schindelin (15):
multimail: stop shipping a copy
subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
subtree: fix assumption about the directory separator
pager: avoid setting COLUMNS when we're guessing its value
mingw: move Git for Windows' system config where users expect it
config: normalize the path of the system gitconfig
ci: use the new GitHub Action to download git-sdk-64-minimal
ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
ci: upgrade to using actions/{up,down}load-artifacts v2
ci (windows): transfer also the Git-tracked files to the test jobs
artifacts-tar: respect NO_GETTEXT
ci: accelerate the checkout
ci: run `make sparse` as part of the GitHub workflow
ci(check-whitespace): stop requiring a read/write token
ci(check-whitespace): restrict to the intended commits
Jonathan Nieder (1):
xsize_t: avoid implementation defined behavior when len < 0
Jonathan Tan (7):
repository: move global r_f_p_c to repo struct
promisor-remote: support per-repository config
submodule: refrain from filtering GIT_CONFIG_COUNT
run-command: refactor subprocess env preparation
promisor-remote: teach lazy-fetch in any repo
unpack-trees: refactor prefetching code
cache-tree: prefetch in partial clone read-tree
Josh Steadmon (1):
docs: fix api-trace2 doc for "too_many_files" event
Julian Verdurmen (1):
userdiff: add support for C# record types
Junio C Hamano (10):
revisions(7): clarify that most commands take a single revision range
The first batch post Git 2.32
The second batch
The third batch
The fourth batch
CodingGuidelines: recommend gender-neutral description
The fifth batch
The sixth batch
The seventh batch
Git 2.33-rc0
Kaartic Sivaraam (1):
submodule: remove unnecessary `prefix` based option logic
Matheus Tavares (1):
parallel-checkout: send the new object_id algo field to the workers
Matthew Rogers (3):
cmake: add knob to disable vcpkg
cmake: create compile_commands.json by default
cmake: add warning for ignored MSGFMT_EXE
Michael Schindler (1):
mergetools/kdiff3: make kdiff3 work on Windows too
Patrick Steinhardt (2):
perf: fix when running with TEST_OUTPUT_DIRECTORY
t0000: fix test if run with TEST_OUTPUT_DIRECTORY
Philippe Blain (2):
parse-options: don't complete option aliases by default
doc: clarify description of 'submodule.recurse'
René Scharfe (2):
grep: report missing left operand of --and
khash: clarify that allocations never fail
Reuven Y (1):
docs: improve fast-forward in glossary content
Sergey Organov (10):
t4013: test that "-m" alone has no effect in "git log"
t4013: test "git log -m --raw"
t4013: test "git log -m --stat"
t4013: test "git diff-tree -m"
t4013: test "git diff-index -m"
diff-merges: move specific diff-index "-m" handling to diff-index
git-svn: stop passing "-m" to "git rev-list"
stash list: stop passing "-m" to "git log"
diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
diff-merges: let "-m" imply "-p"
Stephen Manz (3):
t2400: clean up '"add" worktree with lock' test
worktree: mark lock strings with `_()` for translation
worktree: teach `add` to accept --reason <string> with --lock
Tao Klerks (1):
Remove warning that repack only works on non-promisor packfiles
Taylor Blau (6):
csum-file: introduce checksum_valid()
commit-graph: rewrite to use checksum_valid()
midx: don't reuse corrupt MIDXs when writing
midx: report checksum mismatches during 'verify'
multi-pack-index: fix potential segfault without sub-command
pack-bitmap: clarify comment in filter_bitmap_exclude_type()
Teng Long (1):
packfile-uri.txt: fix blobPackfileUri description
Thomas Braun (1):
completion: add --anchored to diff's options
Wolfgang Müller (1):
rev-parse: mark die() messages for translation
ZheNing Hu (4):
ref-filter: add objectsize to used_atom
ref-filter: introduce enum atom_type
cat-file: handle trivial --batch format with --batch-all-objects
cat-file: merge two block into one
brian m. carlson (1):
rev-list: add option for --pretty=format without header
dorgon.chang (1):
git-p4: fix failed submit by skip non-text data files
edef (1):
mailinfo: don't discard names under 3 characters
Ævar Arnfjörð Bjarmason (90):
test-lib: bring $remove_trash out of retirement
test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
test-lib-functions: reword "test_commit --append" docs
test-lib-functions: document test_commit --no-tag
test-lib functions: add an --annotated option to "test_commit"
describe tests: convert setup to use test_commit
test-lib functions: add --printf option to test_commit
submodule tests: use symbolic-ref --short to discover branch name
test-lib: reformat argument list in test_create_repo()
test-lib: do not show advice about init.defaultBranch under --verbose
test-lib: split up and deprecate test_create_repo()
grep/pcre2 tests: reword comments referring to kwset
pickaxe tests: refactor to use test_commit --append --printf
pickaxe tests: add test for diffgrep_consume() internals
pickaxe tests: add test for "log -S" not being a regex
pickaxe tests: test for -G, -S and --find-object incompatibility
pickaxe tests: add missing test for --no-pickaxe-regex being an error
pickaxe: die when -G and --pickaxe-regex are combined
pickaxe: die when --find-object and --pickaxe-all are combined
diff.h: move pickaxe fields together again
pickaxe/style: consolidate declarations and assignments
perf: add performance test for pickaxe
pickaxe: refactor function selection in diffcore-pickaxe()
pickaxe: assert that we must have a needle under -G or -S
pickaxe -S: support content with NULs under --pickaxe-regex
pickaxe: rename variables in has_changes() for brevity
pickaxe -S: slightly optimize contains()
xdiff-interface: prepare for allowing early return
xdiff-interface: allow early return from xdiff_emit_line_fn
pickaxe -G: terminate early on matching lines
pickaxe -G: don't special-case create/delete
xdiff users: use designated initializers for out_line
xdiff-interface: replace discard_hunk_line() with a flag
describe tests: improve test for --work-tree & --dirty
describe tests: refactor away from glob matching
describe tests: don't rely on err.actual from "check_describe"
describe tests: fix nested "test_expect_success" call
describe tests: support -C in "check_describe"
trace2: refactor to avoid gcc warning under -O3
send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
send-email tests: test for boolean variables without a value
send-email: remove non-working support for "sendemail.smtpssl"
send-email: refactor sendemail.smtpencryption config parsing
send-email: copy "config_regxp" into git-send-email.perl
send-email: lazily load config for a big speedup
send-email: lazily shell out to "git var"
send-email: use function syntax instead of barewords
send-email: get rid of indirect object syntax
send-email: lazily load modules for a big speedup
perl: lazily load some common Git.pm setup code
send-email: move trivial config handling to Perl
perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
protocol-caps.h: add newline at end of file
read-cache.c: don't guard calls to progress.c API
xdiff: use BUG(...), not xdl_bug(...)
builtins + test helpers: use return instead of exit() in cmd_*
mktag tests: parse out options in helper
mktag tests: invert --no-strict test
show-branch tests: rename the one "show-branch" test file
show-branch tests: modernize test code
pre-commit hook tests: don't leave "actual" nonexisting on failure
gc tests: add a test for the "pre-auto-gc" hook
mktag tests: test hash-object --literally and unreachable fsck
mktag tests: test update-ref and reachable fsck
mktag tests: test for-each-ref
mktag tests: test fast-export
show-branch: don't <COLOR></RESET> for space characters
show-branch tests: add missing tests
Makefile: add and use the ".DELETE_ON_ERROR" flag
test-lib.sh: set COLUMNS=80 for --verbose repeatability
send-pack.c: move "no refs in common" abort earlier
fetch: document the --negotiate-only option
*.h: move some *_INIT to designated initializers
*.c *_init(): define in terms of corresponding *_INIT macro
dir.[ch]: replace dir_init() with DIR_INIT
string-list.[ch]: add a string_list_init_{nodup,dup}()
string-list.h users: change to use *_{nodup,dup}()
bundle cmd: stop leaking memory from parse_options_cmd_bundle()
bundle.c: use a temporary variable for OIDs and names
bundle: remove "ref_list" in favor of string-list.c API
imap-send.c: use less verbose strbuf_fread() idiom
fetch: fix segfault in --negotiate-only without --negotiation-tip=*
*.c static functions: don't forward-declare __attribute__
sequencer.c: move static function to avoid forward decl
*.c static functions: add missing __attribute__((format))
*.h: add a few missing __attribute__((format))
advice.h: add missing __attribute__((format)) & fix usage
test-lib-functions: use test-tool for [de]packetize()
bundle tests: use ">file" not ": >file"
bundle tests: use test_cmp instead of grep
Đoàn Trần Công Danh (6):
t: use configured TAR instead of tar
doc/log: correct default for --decorate
t: use user-specified utf-8 locale for testing svn
test-lib-functions: introduce test_stdout_line_count
t6400: preserve git ls-files exit status code
t6402: preserve git exit status code
^ permalink raw reply [relevance 3%]
* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
2021-07-15 9:45 0% ` Christian Couder
@ 2021-07-15 13:53 0% ` ZheNing Hu
0 siblings, 0 replies; 162+ results
From: ZheNing Hu @ 2021-07-15 13:53 UTC (permalink / raw)
To: Christian Couder
Cc: Junio C Hamano, ZheNing Hu via GitGitGadget, git, Hariom Verma,
Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
Eric Sunshine
Christian Couder <christian.couder@gmail.com> 于2021年7月15日周四 下午5:45写道:
>
> On Thu, Jul 15, 2021 at 3:53 AM ZheNing Hu <adlternative@gmail.com> wrote:
> >
> > ZheNing Hu <adlternative@gmail.com> 于2021年7月15日周四 上午12:24写道:
> > >
> > > Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:
>
> > > > I find it somewhat alarming if we are talking about "fast-path"
> > > > workaround before understanding why we are seeing slowdown in the
> > > > first place.
> > >
> > > There is no complete conclusion yet, but I try to use time and hyperfine test
> > > for these commits (t/perf/* is not accurate enough):
> > >
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > | subject |
> > > --batch-check (using hyperfine) | --batch(using time) |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: use fast path when using default_format |
> > > 700ms | 25.450s |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: re-implement --textconv, --filters options |
> > > 790ms | 29.933s |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: reuse err buf in batch_object_write() |
> > > 770ms | 29.153s |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: reuse ref-filter logic |
> > > 780ms | 29.412s |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |The third batch (upstream/master) |
> > > 640ms | 26.025s |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > >
> > > I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
> > > But what causes the loss of performance needs further analysis.
> >
> > Now I think:
> > There are three main reasons why the performance of cat-file --batch
> > deteriorates after refactor.
> >
> > 1. Too many copies are used in ref-filter and we cannot avoid these copies
> > easily because ref-filter needs these copied data to implement atoms %(if),
> > %(else), %(end)... and the --sort option. The original cat-file
> > --batch only needs
> > to output the data to the final string. Its copy times are relatively small.
>
> Is it possible to check early if any of the atoms that needs these
> copied data is specified, and if none of them is specified then to
> avoid the copies?
>
Well, The copy I'm talking about here refers to something like "v->s =
xstrdup(xxx)";
but v->s is need by --sort, so it is very difficult to remove. At the
moment I think the
only solution is the fast path mentioned by Ævar Arnfjörð Bjarmason.
> > 2. More complex data structure and parsing process are used in ref-filter.
> > This is why it can provide more and more useful atoms. Therefore, I think the
> > performance degradation that occurs here is normal.
>
> Are there way the more complex parsing could be avoided if it's not
> needed by the atoms that are actually used?
No. For example, we can only support "objectsize" before and now we can
support "objectsize:short", so we need to pay more parsing process here.
(It's necessary)
>
> > 3. As Ævar Arnfjörð Bjarmason mentioned, oid_object_info_extend() was used
> > twice in get_object() before. oid_object_info_extend() is the hot
> > path, we should
> > try to avoid calling it, So in last version of "[GSOC] cat-file:
> > re-implement --textconv,
> > --filters options", I make the unified processing of --textconv and
> > --filter avoid calling
> > oid_object_info_extend() twice.
>
> Ok, thanks for the details and your work on this performance issue!
>
> I wonder if your patch series could be split, so that the early parts
> that add new atoms to ref-filter could be merged sooner?
>
Should this part of the work be handed over to Junio?
The implementation of %(rest) and %(raw) may be worth merging,
they are truly "zh/ref-filter-raw-data".
The other part may be called "cat-file-reuse-ref-filter-logic".
> Best,
> Christian.
Thanks.
--
ZheNing Hu
^ permalink raw reply [relevance 0%]
* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
2021-07-15 1:53 0% ` ZheNing Hu
@ 2021-07-15 9:45 0% ` Christian Couder
2021-07-15 13:53 0% ` ZheNing Hu
0 siblings, 1 reply; 162+ results
From: Christian Couder @ 2021-07-15 9:45 UTC (permalink / raw)
To: ZheNing Hu
Cc: Junio C Hamano, ZheNing Hu via GitGitGadget, git, Hariom Verma,
Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
Eric Sunshine
On Thu, Jul 15, 2021 at 3:53 AM ZheNing Hu <adlternative@gmail.com> wrote:
>
> ZheNing Hu <adlternative@gmail.com> 于2021年7月15日周四 上午12:24写道:
> >
> > Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:
> > > I find it somewhat alarming if we are talking about "fast-path"
> > > workaround before understanding why we are seeing slowdown in the
> > > first place.
> >
> > There is no complete conclusion yet, but I try to use time and hyperfine test
> > for these commits (t/perf/* is not accurate enough):
> >
> > ----------------------------------------------------------------------------------------------------------------------------
> > | subject |
> > --batch-check (using hyperfine) | --batch(using time) |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: use fast path when using default_format |
> > 700ms | 25.450s |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: re-implement --textconv, --filters options |
> > 790ms | 29.933s |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: reuse err buf in batch_object_write() |
> > 770ms | 29.153s |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: reuse ref-filter logic |
> > 780ms | 29.412s |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |The third batch (upstream/master) |
> > 640ms | 26.025s |
> > ----------------------------------------------------------------------------------------------------------------------------
> >
> > I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
> > But what causes the loss of performance needs further analysis.
>
> Now I think:
> There are three main reasons why the performance of cat-file --batch
> deteriorates after refactor.
>
> 1. Too many copies are used in ref-filter and we cannot avoid these copies
> easily because ref-filter needs these copied data to implement atoms %(if),
> %(else), %(end)... and the --sort option. The original cat-file
> --batch only needs
> to output the data to the final string. Its copy times are relatively small.
Is it possible to check early if any of the atoms that needs these
copied data is specified, and if none of them is specified then to
avoid the copies?
> 2. More complex data structure and parsing process are used in ref-filter.
> This is why it can provide more and more useful atoms. Therefore, I think the
> performance degradation that occurs here is normal.
Are there way the more complex parsing could be avoided if it's not
needed by the atoms that are actually used?
> 3. As Ævar Arnfjörð Bjarmason mentioned, oid_object_info_extend() was used
> twice in get_object() before. oid_object_info_extend() is the hot
> path, we should
> try to avoid calling it, So in last version of "[GSOC] cat-file:
> re-implement --textconv,
> --filters options", I make the unified processing of --textconv and
> --filter avoid calling
> oid_object_info_extend() twice.
Ok, thanks for the details and your work on this performance issue!
I wonder if your patch series could be split, so that the early parts
that add new atoms to ref-filter could be merged sooner?
Best,
Christian.
^ permalink raw reply [relevance 0%]
* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
2021-07-14 16:24 6% ` ZheNing Hu
@ 2021-07-15 1:53 0% ` ZheNing Hu
2021-07-15 9:45 0% ` Christian Couder
0 siblings, 1 reply; 162+ results
From: ZheNing Hu @ 2021-07-15 1:53 UTC (permalink / raw)
To: Junio C Hamano
Cc: Christian Couder, ZheNing Hu via GitGitGadget, git, Hariom Verma,
Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
Eric Sunshine
ZheNing Hu <adlternative@gmail.com> 于2021年7月15日周四 上午12:24写道:
>
> Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:
>
> >
> > Christian Couder <christian.couder@gmail.com> writes:
> >
> > More importantly, why is such a fast-path even needed? Isn't it a
> > sign that the ref-filter implementation is eating more cycles than
> > it should for given set of placeholders? Do we know where the extra
> > cycles goes?
> >
> > I find it somewhat alarming if we are talking about "fast-path"
> > workaround before understanding why we are seeing slowdown in the
> > first place.
>
> There is no complete conclusion yet, but I try to use time and hyperfine test
> for these commits (t/perf/* is not accurate enough):
>
> ----------------------------------------------------------------------------------------------------------------------------
> | subject |
> --batch-check (using hyperfine) | --batch(using time) |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: use fast path when using default_format |
> 700ms | 25.450s |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: re-implement --textconv, --filters options |
> 790ms | 29.933s |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: reuse err buf in batch_object_write() |
> 770ms | 29.153s |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: reuse ref-filter logic |
> 780ms | 29.412s |
> ----------------------------------------------------------------------------------------------------------------------------
> |The third batch (upstream/master) |
> 640ms | 26.025s |
> ----------------------------------------------------------------------------------------------------------------------------
>
> I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
> But what causes the loss of performance needs further analysis.
>
Now I think:
There are three main reasons why the performance of cat-file --batch
deteriorates after refactor.
1. Too many copies are used in ref-filter and we cannot avoid these copies
easily because ref-filter needs these copied data to implement atoms %(if),
%(else), %(end)... and the --sort option. The original cat-file
--batch only needs
to output the data to the final string. Its copy times are relatively small.
2. More complex data structure and parsing process are used in ref-filter.
This is why it can provide more and more useful atoms. Therefore, I think the
performance degradation that occurs here is normal.
3. As Ævar Arnfjörð Bjarmason mentioned, oid_object_info_extend() was used
twice in get_object() before. oid_object_info_extend() is the hot
path, we should
try to avoid calling it, So in last version of "[GSOC] cat-file:
re-implement --textconv,
--filters options", I make the unified processing of --textconv and
--filter avoid calling
oid_object_info_extend() twice.
Thanks.
--
ZheNing Hu
^ permalink raw reply [relevance 0%]
* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
@ 2021-07-14 16:24 6% ` ZheNing Hu
2021-07-15 1:53 0% ` ZheNing Hu
0 siblings, 1 reply; 162+ results
From: ZheNing Hu @ 2021-07-14 16:24 UTC (permalink / raw)
To: Junio C Hamano
Cc: Christian Couder, ZheNing Hu via GitGitGadget, git, Hariom Verma,
Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
Eric Sunshine
Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:
>
> Christian Couder <christian.couder@gmail.com> writes:
>
> More importantly, why is such a fast-path even needed? Isn't it a
> sign that the ref-filter implementation is eating more cycles than
> it should for given set of placeholders? Do we know where the extra
> cycles goes?
>
> I find it somewhat alarming if we are talking about "fast-path"
> workaround before understanding why we are seeing slowdown in the
> first place.
There is no complete conclusion yet, but I try to use time and hyperfine test
for these commits (t/perf/* is not accurate enough):
----------------------------------------------------------------------------------------------------------------------------
| subject |
--batch-check (using hyperfine) | --batch(using time) |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: use fast path when using default_format |
700ms | 25.450s |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: re-implement --textconv, --filters options |
790ms | 29.933s |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: reuse err buf in batch_object_write() |
770ms | 29.153s |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: reuse ref-filter logic |
780ms | 29.412s |
----------------------------------------------------------------------------------------------------------------------------
|The third batch (upstream/master) |
640ms | 26.025s |
----------------------------------------------------------------------------------------------------------------------------
I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
But what causes the loss of performance needs further analysis.
Thanks.
--
ZheNing Hu
^ permalink raw reply [relevance 6%]
* Re: [PATCH v2 0/8] Parallel Checkout (part 3)
2021-05-02 10:12 5% ` Torsten Bögershausen
@ 2021-05-03 15:01 0% ` Matheus Tavares Bernardino
0 siblings, 0 replies; 162+ results
From: Matheus Tavares Bernardino @ 2021-05-03 15:01 UTC (permalink / raw)
To: Torsten Bögershausen
Cc: git, Christian Couder, Jeff Hostetler, Derrick Stolee
On Sun, May 2, 2021 at 7:12 AM Torsten Bögershausen <tboegi@web.de> wrote:
>
> On Fri, Apr 30, 2021 at 06:40:27PM -0300, Matheus Tavares wrote:
>
> []
>
> Thank's for the work.
> I just make a quick test:
>
> "swapping" git.git between
>
> HEAD is now at e870325ee8 The third batch
> and
> HEAD is now at 7e39198978 The thirteenth batch
>
> On a Desktop running Linux.
> Using the git.git repo, mounted as nfs on an oldish NAS
> with spinning disks (and WLAN) gave this timing:
>
> git -c checkout.workers=1
> 2 minutes, some seconds.
>
> git -c checkout.workers=4
> 1 minute, some seconds.
>
> git -c checkout.workers=16
> 40..44 seconds
>
> Not a scientific measurement, just a positive feedback from a real-world.
Nice! Thanks for testing the parallel version and for your feedback on
it, I appreciate it.
> Good work, I'm looking forward to have this feature in git.git
Thanks :)
^ permalink raw reply [relevance 0%]
* Re: [PATCH v2 0/8] Parallel Checkout (part 3)
@ 2021-05-02 10:12 5% ` Torsten Bögershausen
2021-05-03 15:01 0% ` Matheus Tavares Bernardino
0 siblings, 1 reply; 162+ results
From: Torsten Bögershausen @ 2021-05-02 10:12 UTC (permalink / raw)
To: Matheus Tavares; +Cc: git, christian.couder, git, stolee
On Fri, Apr 30, 2021 at 06:40:27PM -0300, Matheus Tavares wrote:
[]
Thank's for the work.
I just make a quick test:
"swapping" git.git between
HEAD is now at e870325ee8 The third batch
and
HEAD is now at 7e39198978 The thirteenth batch
On a Desktop running Linux.
Using the git.git repo, mounted as nfs on an oldish NAS
with spinning disks (and WLAN) gave this timing:
git -c checkout.workers=1
2 minutes, some seconds.
git -c checkout.workers=4
1 minute, some seconds.
git -c checkout.workers=16
40..44 seconds
Not a scientific measurement, just a positive feedback from a real-world.
Good work, I'm looking forward to have this feature in git.git
^ permalink raw reply [relevance 5%]
* [ANNOUNCE] Git v2.31.0
@ 2021-03-15 19:30 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-03-15 19:30 UTC (permalink / raw)
To: git
The latest feature release Git v2.31.0 is now available at the
usual places. It is comprised of 679 non-merge commits since
v2.30.0, contributed by 85 people, 23 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.31.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.30.0 are as follows.
Welcome to the Git development community!
Aleksey Kliger, Andreas Bühmann, Andrew Klotz, Andrzej Hunt,
Antonio Russo, Arnaud Morin, Bagas Sanjaya, Christian Walther,
Clement Moyroud, Daniel Levin, Daniel Troger, Harold Kim,
Jacob Vosmaer, LeSeulArtichaut, Mikhail Klyushin, Neeraj Singh,
Sangeeta Jain, Seth House, Shubham Verma, Utku Gultopu, Vasyl
Vavrychuk, Vojtěch Knyttl, and ZheNing Hu.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
Alexander Shopov, Alex Henrie, Arusekk, brian m. carlson,
Christian Couder, Christopher Diaz Riveros, Dana Dahlstrom,
Daniel Santos, Denton Liu, Derrick Stolee, Dimitriy Ryazantcev,
Elijah Newren, Emir Sarı, Eric Sunshine, Eric Wong, Felipe
Contreras, Han-Wen Nienhuys, Hariom Verma, Heba Waly, Jean-Noël
Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joey Salazar,
Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
Tan, Jordi Mas, Junio C Hamano, Kevin Daudt, Kevin Willford,
Lars Schneider, Martin Ågren, Martin von Zweigbergk, Matheus
Tavares, Matthias Rüster, Michael Haggerty, Patrick Steinhardt,
Paul Jolly, Peter Kaestle, Peter Krefting, Phil Hord, Philippe
Blain, Phillip Szelat, Phillip Wood, Pranit Bauva, Pratyush
Yadav, Rafael Silva, Ralf Thielow, René Scharfe, Ross Light,
Sergey Organov, SZEDER Gábor, Taylor Blau, Thomas Ackermann,
Torsten Bögershausen, Trần Ngọc Quân, and Yi-Jyun Pan.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.31 Release Notes
======================
Updates since v2.30
-------------------
Backward incompatible and other important changes
* The "pack-redundant" command, which has been left stale with almost
unusable performance issues, now warns loudly when it gets used, as
we no longer want to recommend its use (instead just "repack -d"
instead).
* The development community has adopted Contributor Covenant v2.0 to
update from v1.4 that we have been using.
* The support for deprecated PCRE1 library has been dropped.
* Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.
UI, Workflows & Features
* The "--format=%(trailers)" mechanism gets enhanced to make it
easier to design output for machine consumption.
* When a user does not tell "git pull" to use rebase or merge, the
command gives a loud message telling a user to choose between
rebase or merge but creates a merge anyway, forcing users who would
want to rebase to redo the operation. Fix an early part of this
problem by tightening the condition to give the message---there is
no reason to stop or force the user to choose between rebase or
merge if the history fast-forwards.
* The configuration variable 'core.abbrev' can be set to 'no' to
force no abbreviation regardless of the hash algorithm.
* "git rev-parse" can be explicitly told to give output as absolute
or relative path with the `--path-format=(absolute|relative)` option.
* Bash completion (in contrib/) update to make it easier for
end-users to add completion for their custom "git" subcommands.
* "git maintenance" learned to drive scheduled maintenance on
platforms whose native scheduling methods are not 'cron'.
* After expiring a reflog and making a single commit, the reflog for
the branch would record a single entry that knows both @{0} and
@{1}, but we failed to answer "what commit were we on?", i.e. @{1}
* "git bundle" learns "--stdin" option to read its refs from the
standard input. Also, it now does not lose refs whey they point
at the same object.
* "git log" learned a new "--diff-merges=<how>" option.
* "git ls-files" can and does show multiple entries when the index is
unmerged, which is a source for confusion unless -s/-u option is in
use. A new option --deduplicate has been introduced.
* `git worktree list` now annotates worktrees as prunable, shows
locked and prunable attributes in --porcelain mode, and gained
a --verbose option.
* "git clone" tries to locally check out the branch pointed at by
HEAD of the remote repository after it is done, but the protocol
did not convey the information necessary to do so when copying an
empty repository. The protocol v2 learned how to do so.
* There are other ways than ".." for a single token to denote a
"commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
range-diff" did not understand them.
* The "git range-diff" command learned "--(left|right)-only" option
to show only one side of the compared range.
* "git mergetool" feeds three versions (base, local and remote) of
a conflicted path unmodified. The command learned to optionally
prepare these files with unconflicted parts already resolved.
* The .mailmap is documented to be read only from the root level of a
working tree, but a stray file in a bare repository also was read
by accident, which has been corrected.
* "git maintenance" tool learned a new "pack-refs" maintenance task.
* The error message given when a configuration variable that is
expected to have a boolean value has been improved.
* Signed commits and tags now allow verification of objects, whose
two object names (one in SHA-1, the other in SHA-256) are both
signed.
* "git rev-list" command learned "--disk-usage" option.
* "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
discard diff output for early paths or move them to the end of the
output.
* "git difftool" learned "--skip-to=<path>" option to restart an
interrupted session from an arbitrary path.
* "git grep" has been tweaked to be limited to the sparse checkout
paths.
* "git rebase --[no-]fork-point" gained a configuration variable
rebase.forkPoint so that users do not have to keep specifying a
non-default setting.
Performance, Internal Implementation, Development Support etc.
* A 3-year old test that was not testing anything useful has been
corrected.
* Retire more names with "sha1" in it.
* The topological walk codepath is covered by new trace2 stats.
* Update the Code-of-conduct to version 2.0 from the upstream (we've
been using version 1.4).
* "git mktag" validates its input using its own rules before writing
a tag object---it has been updated to share the logic with "git
fsck".
* Two new ways to feed configuration variable-value pairs via
environment variables have been introduced, and the way
GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
to make it more robust.
* Tests have been updated so that they do not to get affected by the
name of the default branch "git init" creates.
* "git fetch" learns to treat ref updates atomically in all-or-none
fashion, just like "git push" does, with the new "--atomic" option.
* The peel_ref() API has been replaced with peel_iterated_oid().
* The .use_shell flag in struct child_process that is passed to
run_command() API has been clarified with a bit more documentation.
* Document, clean-up and optimize the code around the cache-tree
extension in the index.
* The ls-refs protocol operation has been optimized to narrow the
sub-hierarchy of refs/ it walks to produce response.
* When removing many branches and tags, the code used to do so one
ref at a time. There is another API it can use to delete multiple
refs, and it makes quite a lot of performance difference when the
refs are packed.
* The "pack-objects" command needs to iterate over all the tags when
automatic tag following is enabled, but it actually iterated over
all refs and then discarded everything outside "refs/tags/"
hierarchy, which was quite wasteful.
* A perf script was made more portable.
* Our setting of GitHub CI test jobs were a bit too eager to give up
once there is even one failure found. Tweak the knob to allow
other jobs keep running even when we see a failure, so that we can
find more failures in a single run.
* We've carried compatibility codepaths for compilers without
variadic macros for quite some time, but the world may be ready for
them to be removed. Force compilation failure on exotic platforms
where variadic macros are not available to find out who screams in
such a way that we can easily revert if it turns out that the world
is not yet ready.
* Code clean-up to ensure our use of hashtables using object names as
keys use the "struct object_id" objects, not the raw hash values.
* Lose the debugging aid that may have been useful in the past, but
no longer is, in the "grep" codepaths.
* Some pretty-format specifiers do not need the data in commit object
(e.g. "%H"), but we were over-eager to load and parse it, which has
been made even lazier.
* Get rid of "GETTEXT_POISON" support altogether, which may or may
not be controversial.
* Introduce an on-disk file to record revindex for packdata, which
traditionally was always created on the fly and only in-core.
* The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
* Piecemeal of rewrite of "git bisect" in C continues.
* When a pager spawned by us exited, the trace log did not record its
exit status correctly, which has been corrected.
* Removal of GIT_TEST_GETTEXT_POISON continues.
* The code to implement "git merge-base --independent" was poorly
done and was kept from the very beginning of the feature.
* Preliminary changes to fsmonitor integration.
* Performance improvements for rename detection.
* The common code to deal with "chunked file format" that is shared
by the multi-pack-index and commit-graph files have been factored
out, to help codepaths for both filetypes to become more robust.
* The approach to "fsck" the incoming objects in "index-pack" is
attractive for performance reasons (we have them already in core,
inflated and ready to be inspected), but fundamentally cannot be
applied fully when we receive more than one pack stream, as a tree
object in one pack may refer to a blob object in another pack as
".gitmodules", when we want to inspect blobs that are used as
".gitmodules" file, for example. Teach "index-pack" to emit
objects that must be inspected later and check them in the calling
"fetch-pack" process.
* The logic to handle "trailer" related placeholders in the
"--format=" mechanisms in the "log" family and "for-each-ref"
family is getting unified.
* Raise the buffer size used when writing the index file out from
(obviously too small) 8kB to (clearly sufficiently large) 128kB.
* It is reported that open() on some platforms (e.g. macOS Big Sur)
can return EINTR even though our timers are set up with SA_RESTART.
A workaround has been implemented and enabled for macOS to rerun
open() transparently from the caller when this happens.
Fixes since v2.30
-----------------
* Diagnose command line error of "git rebase" early.
* Clean up option descriptions in "git cmd --help".
* "git stash" did not work well in a sparsely checked out working
tree.
* Some tests expect that "ls -l" output has either '-' or 'x' for
group executable bit, but setgid bit can be inherited from parent
directory and make these fields 'S' or 's' instead, causing test
failures.
* "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
any repository when the configuration variable <var> is not defined
even once.
* Fix 2.29 regression where "git mergetool --tool-help" fails to list
all the available tools.
* Fix for procedure to building CI test environment for mac.
* The implementation of "git branch --sort" wrt the detached HEAD
display has always been hacky, which has been cleaned up.
* Newline characters in the host and path part of git:// URL are
now forbidden.
* "git diff" showed a submodule working tree with untracked cruft as
"Submodule commit <objectname>-dirty", but a natural expectation is
that the "-dirty" indicator would align with "git describe --dirty",
which does not consider having untracked files in the working tree
as source of dirtiness. The inconsistency has been fixed.
* When more than one commit with the same patch ID appears on one
side, "git log --cherry-pick A...B" did not exclude them all when a
commit with the same patch ID appears on the other side. Now it
does.
* Documentation for "git fsck" lost stale bits that has become
incorrect.
* Doc fix for packfile URI feature.
* When "git rebase -i" processes "fixup" insn, there is no reason to
clean up the commit log message, but we did the usual stripspace
processing. This has been corrected.
(merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).
* Fix in passing custom args from "git clone" to "upload-pack" on the
other side.
(merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).
* The command line completion (in contrib/) completed "git branch -d"
with branch names, but "git branch -D" offered tagnames in addition,
which has been corrected. "git branch -M" had the same problem.
(merge 27dc071b9a jk/complete-branch-force-delete later to maint).
* When commands are started from a subdirectory, they may have to
compare the path to the subdirectory (called prefix and found out
from $(pwd)) with the tracked paths. On macOS, $(pwd) and
readdir() yield decomposed path, while the tracked paths are
usually normalized to the precomposed form, causing mismatch. This
has been fixed by taking the same approach used to normalize the
command line arguments.
(merge 5c327502db tb/precompose-prefix-too later to maint).
* Even though invocations of "die()" were logged to the trace2
system, "BUG()"s were not, which has been corrected.
(merge 0a9dde4a04 jt/trace2-BUG later to maint).
* "git grep --untracked" is meant to be "let's ALSO find in these
files on the filesystem" when looking for matches in the working
tree files, and does not make any sense if the primary search is
done against the index, or the tree objects. The "--cached" and
"--untracked" options have been marked as mutually incompatible.
(merge 0c5d83b248 mt/grep-cached-untracked later to maint).
* Fix "git fsck --name-objects" which apparently has not been used by
anybody who is motivated enough to report breakage.
(merge e89f89361c js/fsck-name-objects-fix later to maint).
* Avoid individual tests in t5411 from getting affected by each other
by forcing them to use separate output files during the test.
(merge 822ee894f6 jx/t5411-unique-filenames later to maint).
* Test to make sure "git rev-parse one-thing one-thing" gives
the same thing twice (when one-thing is --since=X).
(merge a5cdca4520 ew/rev-parse-since-test later to maint).
* When certain features (e.g. grafts) used in the repository are
incompatible with the use of the commit-graph, we used to silently
turned commit-graph off; we now tell the user what we are doing.
(merge c85eec7fc3 js/commit-graph-warning later to maint).
* Objects that lost references can be pruned away, even when they
have notes attached to it (and these notes will become dangling,
which in turn can be pruned with "git notes prune"). This has been
clarified in the documentation.
(merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).
* The error codepath around the "--temp/--prefix" feature of "git
checkout-index" has been improved.
(merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).
* The "git maintenance register" command had trouble registering bare
repositories, which had been corrected.
* A handful of multi-word configuration variable names in
documentation that are spelled in all lowercase have been corrected
to use the more canonical camelCase.
(merge 7dd0eaa39c dl/doc-config-camelcase later to maint).
* "git push $there --delete ''" should have been diagnosed as an
error, but instead turned into a matching push, which has been
corrected.
(merge 20e416409f jc/push-delete-nothing later to maint).
* Test script modernization.
(merge 488acf15df sv/t7001-modernize later to maint).
* An under-allocation for the untracked cache data has been corrected.
(merge 6347d649bc jh/untracked-cache-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
(merge 9d336655ba js/doc-proto-v2-response-end later to maint).
(merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
(merge 3a837b58e3 cw/pack-config-doc later to maint).
(merge 01168a9d89 ug/doc-commit-approxidate later to maint).
(merge b865734760 js/params-vs-args later to maint).
----------------------------------------------------------------
Changes since v2.30.0 are as follows:
Abhishek Kumar (11):
commit-graph: fix regression when computing Bloom filters
revision: parse parent in indegree_walk_step()
commit-graph: consolidate fill_commit_graph_info
t6600-test-reach: generalize *_three_modes
commit-graph: add a slab to store topological levels
commit-graph: return 64-bit generation number
commit-graph: implement corrected commit date
commit-graph: implement generation data chunk
commit-graph: use generation v2 only if entire chain does
commit-reach: use corrected commit dates in paint_down_to_common()
doc: add corrected commit date info
Adam Dinwoodie (1):
t4129: fix setfacl-related permissions failure
Alex Henrie (1):
rebase: add a config option for --no-fork-point
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5104t)
Andrew Klotz (1):
config: improve error message for boolean config
Andrzej Hunt (1):
commit-graph: avoid leaking topo_levels slab in write_commit_graph()
Antonio Russo (1):
t6016: move to lib-log-graph.sh framework
Arusekk (1):
l10n: pl.po: Update translation
Bagas Sanjaya (2):
l10n: start Indonesian translation
l10n: Add translation team info
Christian Couder (3):
fetch-pack: rename helper to create_promisor_file()
fetch-pack: refactor writing promisor file
pack-write: die on error in write_promisor_file()
Christian Walther (1):
doc: mention bigFileThreshold for packing
Christopher Diaz Riveros (1):
l10n: es: 2.31.0 round 2
Daniel Levin (1):
git-p4: fix syncing file types with pattern
Daniel Santos (1):
l10n: pt_PT: add Portuguese translations part 1
Denton Liu (12):
refs: factor out set_read_ref_cutoffs()
refs: allow @{n} to work with n-sized reflog
test-lib-functions.sh: fix usage for test_commit()
t4203: stop losing return codes of git commands
git-stash.txt: be explicit about subcommand options
t3905: remove spaces after redirect operators
t3905: move all commands into test cases
t3905: remove nested git in command substitution
t3905: replace test -s with test_file_not_empty
t3905: use test_cmp() to check file contents
stash: declare ref_stash as an array
i18n.txt: camel case and monospace "i18n.commitEncoding"
Derrick Stolee (65):
maintenance: extract platform-specific scheduling
maintenance: include 'cron' details in docs
pack-bitmap-write: fill bitmap with commit history
bitmap: implement bitmap_is_subset()
commit: implement commit_list_contains()
t5310: add branch-based checks
pack-bitmap-write: rename children to reverse_edges
pack-bitmap-write: build fewer intermediate bitmaps
pack-bitmap-write: use existing bitmaps
pack-bitmap-write: relax unique revwalk condition
pack-bitmap-write: better reuse bitmaps
revision: trace topo-walk statistics
tree-walk: report recursion counts
unpack-trees: add trace2 regions
cache-tree: use trace2 in cache_tree_update()
maintenance: use launchctl on macOS
maintenance: use Windows scheduled tasks
for-each-repo: do nothing on empty config
cache-tree: trace regions for I/O
cache-tree: trace regions for prime_cache_tree
index-format: use 'cache tree' over 'cached tree'
index-format: update preamble to cache tree extension
index-format: discuss recursion of cache-tree better
cache-tree: speed up consecutive path comparisons
maintenance: set log.excludeDecoration durin prefetch
t7900: clean up some broken refs
cache-tree: clean up cache_tree_update()
cache-tree: simplify verify_cache() prototype
cache-tree: extract subtree_pos()
fsmonitor: de-duplicate BUG()s around dirty bits
repository: add repo reference to index_state
name-hash: use trace2 regions for init
sparse-checkout: load sparse-checkout patterns
test-lib: test_region looks for trace2 regions
t1092: test interesting sparse-checkout scenarios
commit-reach: reduce requirements for remove_redundant()
commit-graph: use repo_parse_commit
commit-graph: always parse before commit_graph_data_at()
commit-graph: validate layers for generation data
commit-graph: compute generations separately
commit-graph: be extra careful about mixed generations
commit-graph: prepare commit graph
commit-graph: anonymize data in chunk_write_fn
maintenance: add pack-refs task
maintenance: incremental strategy runs pack-refs weekly
chunk-format: create chunk format write API
commit-graph: use chunk-format write API
midx: rename pack_info to write_midx_context
midx: use context in write_midx_pack_names()
midx: add entries to write_midx_context
midx: add pack_perm to write_midx_context
midx: add num_large_offsets to write_midx_context
midx: return success/failure in chunk write methods
midx: drop chunk progress during write
midx: use chunk-format API in write_midx_internal()
chunk-format: create read chunk API
commit-graph: use chunk-format read API
midx: use chunk-format read API
midx: use 64-bit multiplication for chunk sizes
chunk-format: restore duplicate chunk checks
chunk-format: add technical docs
commit-reach: use one walk in remove_redundant()
commit-reach: move compare_commits_by_gen
commit-reach: use heuristic in remove_redundant()
commit-reach: stale commits may prune generation further
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elijah Newren (93):
t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
stash: remove unnecessary process forking
stash: fix stash application in sparse-checkouts
merge-ort: setup basic internal data structures
merge-ort: add some high-level algorithm structure
merge-ort: port merge_start() from merge-recursive
merge-ort: use histogram diff
merge-ort: add an err() function similar to one from merge-recursive
merge-ort: implement a very basic collect_merge_info()
merge-ort: avoid repeating fill_tree_descriptor() on the same tree
merge-ort: compute a few more useful fields for collect_merge_info
merge-ort: record stage and auxiliary info for every path
merge-ort: avoid recursing into identical trees
merge-ort: add a preliminary simple process_entries() implementation
merge-ort: have process_entries operate in a defined order
merge-ort: step 1 of tree writing -- record basenames, modes, and oids
merge-ort: step 2 of tree writing -- function to create tree object
merge-ort: step 3 of tree writing -- handling subdirectories as we go
merge-ort: basic outline for merge_switch_to_result()
merge-ort: add implementation of checkout()
tree: enable cmp_cache_name_compare() to be used elsewhere
merge-ort: add implementation of record_conflicted_index_entries()
merge-ort: free data structures in merge_finalize()
merge-ort: add a few includes
merge-ort: add a clear_internal_opts helper
merge-ort: add a path_conflict field to merge_options_internal
merge-ort: add a paths_to_free field to merge_options_internal
merge-ort: add function grouping comments
merge-ort: add die-not-implemented stub handle_content_merge() function
merge-ort: add modify/delete handling and delayed output processing
merge-ort: add basic data structures for handling renames
merge-ort: add initial outline for basic rename detection
merge-ort: implement detect_regular_renames()
merge-ort: implement compare_pairs() and collect_renames()
merge-ort: add basic outline for process_renames()
diffcore-rename: rename num_create to num_destinations
diffcore-rename: avoid usage of global in too_many_rename_candidates()
diffcore-rename: simplify limit check
diffcore-rename: reduce jumpiness in progress counters
t4058: add more tests and documentation for duplicate tree entry handling
t4058: explore duplicate tree entry handling in a bit more detail
diffcore-rename: simplify and accelerate register_rename_src()
diffcore-rename: accelerate rename_dst setup
merge-ort: add implementation of both sides renaming identically
merge-ort: add implementation of both sides renaming differently
merge-ort: add implementation of rename/delete conflicts
merge-ort: add implementation of rename collisions
merge-ort: add implementation of normal rename handling
merge-ort: add implementation of type-changed rename handling
commit: move reverse_commit_list() from merge-recursive
merge-ort: copy a few small helper functions from merge-recursive.c
merge-ort: make clear_internal_opts() aware of partial clearing
merge-ort: implement merge_incore_recursive()
merge-ort: handle D/F conflict where directory disappears due to merge
merge-ort: handle directory/file conflicts that remain
merge-ort: implement unique_path() helper
merge-ort: handle book-keeping around two- and three-way content merge
merge-ort: flesh out implementation of handle_content_merge()
merge-ort: copy and adapt merge_3way() from merge-recursive.c
merge-ort: copy and adapt merge_submodule() from merge-recursive.c
merge-ort: implement format_commit()
merge-ort: copy find_first_merges() implementation from merge-recursive.c
merge-ort: add handling for different types of files at same path
diffcore-rename: remove unnecessary duplicate entry checks
merge-ort: add new data structures for directory rename detection
merge-ort: initialize and free new directory rename data structures
merge-ort: collect which directories are removed in dirs_removed
merge-ort: add outline for computing directory renames
merge-ort: add outline of get_provisional_directory_renames()
merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
merge-ort: implement compute_rename_counts()
merge-ort: implement handle_directory_level_conflicts()
merge-ort: modify collect_renames() for directory rename handling
merge-ort: implement compute_collisions()
merge-ort: implement apply_dir_rename() and check_dir_renamed()
merge-ort: implement check_for_directory_rename()
merge-ort: implement handle_path_level_conflicts()
merge-ort: add a new toplevel_dir field
merge-ort: implement apply_directory_rename_modifications()
merge-ort: process_renames() now needs more defensiveness
merge-ort: fix a directory rename detection bug
merge-ort: fix massive leak
merge-ort: ignore the directory rename split conflict for now
merge-ort: begin performance work; instrument with trace2_region_* calls
diffcore-rename: no point trying to find a match better than exact
diffcore-rename: filter rename_src list when possible
t4001: add a test comparing basename similarity and content similarity
diffcore-rename: compute basenames of source and dest candidates
diffcore-rename: complete find_basename_matches()
diffcore-rename: guide inexact rename detection based on basenames
gitdiffcore doc: mention new preliminary step for rename detection
merge-ort: call diffcore_rename() directly
Documentation/RelNotes: improve release note for rename detection work
Emir Sarı (2):
l10n: tr: v2.31.0-rc0
l10n: tr: v2.31.0-rc1
Eric Sunshine (3):
worktree: teach `repair` to fix multi-directional breakage
t/perf: avoid unnecessary test_export() recursion
maintenance: fix incorrect `maintenance.repo` path with bare repository
Eric Wong (2):
core.abbrev=no disables abbreviations
t1500: ensure current --since= behavior remains
Felipe Contreras (8):
pull: refactor fast-forward check
pull: give the advice for choosing rebase/merge much later
pull: display default warning only when non-ff
test: bisect-porcelain: fix location of files
completion: bash: add __git_have_func helper
completion: bash: improve function detection
test: completion: add tests for __git_complete
completion: add proper public __git_complete
Han-Wen Nienhuys (1):
doc/reftable: document how to handle windows
Hariom Verma (4):
t6300: use function to test trailer options
pretty.c: refactor trailer logic to `format_set_trailers_options()`
pretty.c: capture invalid trailer argument
ref-filter: use pretty.c logic for trailers
Jacob Vosmaer (4):
builtin/pack-objects.c: avoid iterating all refs
ls-refs.c: initialize 'prefixes' before using it
upload-pack.c: fix filter spec quoting bug
t5544: clarify 'hook works with partial clone' test
Jean-Noël Avila (2):
l10n: fr: v2.31.0 rnd 1
l10n: fr: v2.31 rnd 2
Jeff Hostetler (11):
p7519: do not rely on "xargs -d" in test
p7519: fix watchman watch-list test on Windows
p7519: move watchman cleanup earlier in the test
p7519: add trace logging during perf test
preload-index: log the number of lstat calls to trace2
read-cache: log the number of lstat calls to trace2
read-cache: log the number of scanned files to trace2
fsmonitor: log invocation of FSMonitor hook to trace2
fsmonitor: log FSMN token when reading and writing the index
fsmonitor: refactor initialization of fsmonitor_last_update token
dir: fix malloc of root untracked_cache_dir
Jeff King (45):
pack-bitmap: fix header size check
pack-bitmap: bounds-check size of cache extension
t5310: drop size of truncated ewah bitmap
rev-list: die when --test-bitmap detects a mismatch
ewah: factor out bitmap growth
ewah: make bitmap growth less aggressive
ewah: implement bitmap_or()
ewah: add bitmap_dup() function
pack-bitmap-write: reimplement bitmap writing
pack-bitmap-write: pass ownership of intermediate bitmaps
pack-bitmap-write: ignore BITMAP_FLAG_REUSE
git_connect_git(): forbid newlines in host and path
fsck: reject .gitmodules git:// urls with newlines
t5516: loosen "not our ref" error check
patch-ids: handle duplicate hashmap entries
quote: make sq_dequote_step() a public function
for_each_object_in_pack(): clarify pack vs index ordering
config: parse more robust format in GIT_CONFIG_PARAMETERS
refs: switch peel_ref() to peel_iterated_oid()
run-command: document use_shell option
git-svn tests: rewrite brittle tests to use "--[no-]merges".
git-compat-util: always enable variadic macros
commit_graft_pos(): take an oid instead of a bare hash
rerere: check dirname format while iterating rr_cache directory
rerere: tighten rr-cache dirname check
rerere: use strmap to store rerere directories
hash_pos(): convert to oid_pos()
oid_pos(): access table through const pointers
t0000: keep clean-up tests together
t0000: run prereq tests inside sub-test
t0000: run cleaning test inside sub-test
t0000: consistently use single quotes for outer tests
pretty: lazy-load commit data when expanding user-format
p5303: avoid sed GNU-ism
completion: treat "branch -D" the same way as "branch -d"
completion: handle other variants of "branch -m"
doc/git-branch: fix awkward wording for "-c"
t: add --no-tag option to test_commit
mailmap: only look for .mailmap in work tree
rev-list: add --disk-usage option for calculating disk usage
docs/rev-list: add an examples section
docs/rev-list: add some examples of --disk-usage
doc: mention approxidates for git-commit --date
Makefile: add OPEN_RETURNS_EINTR knob
config.mak.uname: enable OPEN_RETURNS_EINTR for macOS Big Sur
Jiang Xin (8):
test: add helper functions for git-bundle
bundle: lost objects when removing duplicate pendings
bundle: arguments can be read from stdin
t5411: use different out file to prevent overwriting
t5411: refactor check of refs using test_cmp_refs
l10n: git.pot: v2.31.0 round 1 (155 new, 89 removed)
l10n: git.pot: v2.31.0 round 2 (9 new, 8 removed)
l10n: zh_CN: for git v2.31.0 l10n round 1 and 2
Joey Salazar (1):
doc: fix naming of response-end-pkt
Johannes Schindelin (58):
tests: mark tests relying on the current default for `init.defaultBranch`
t0060: preemptively adjust alignment
t[01]*: adjust the references to the default branch name "main"
t2*: adjust the references to the default branch name "main"
t3[0-3]*: adjust the references to the default branch name "main"
t3416: preemptively adjust alignment in a comment
t34*: adjust the references to the default branch name "main"
t3[5-9]*: adjust the references to the default branch name "main"
t4*: adjust the references to the default branch name "main"
t5323: prepare centered comment for `master` -> `main`
t5[0-4]*: adjust the references to the default branch name "main"
t5503: prepare aligned comment for replacing `master` with `main`
t550*: adjust the references to the default branch name "main"
t551*: adjust the references to the default branch name "main"
t55[23]*: adjust the references to the default branch name "main"
t55[4-9]*: adjust the references to the default branch name "main"
t5[6-9]*: adjust the references to the default branch name "main"
t6[0-3]*: adjust the references to the default branch name "main"
t64*: preemptively adjust alignment to prepare for `master` -> `main`
t6[4-9]*: adjust the references to the default branch name "main"
t7[0-4]*: adjust the references to the default branch name "main"
t7[5-9]*: adjust the references to the default branch name "main"
t8*: adjust the references to the default branch name "main"
t9[0-4]*: adjust the references to the default branch name "main"
t9[5-7]*: adjust the references to the default branch name "main"
tests(git-p4): transition to the default branch name `main`
t99*: adjust the references to the default branch name "main"
tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
SKIP_DASHED_BUILT_INS: respect `config.mak`
range-diff/format-patch: refactor check for commit range
rebase -i: do leave commit message intact in fixup! chains
range-diff: avoid leaking memory in two error code paths
range-diff: libify the read_patches() function again
range-diff: simplify code spawning `git log`
range-diff: combine all options in a single data structure
range-diff: move the diffopt initialization down one layer
range-diff: offer --left-only/--right-only options
range-diff/format-patch: handle commit ranges other than A..B
range-diff(docs): explain how to specify commit ranges
t1450: robustify `remove_object()`
fsck --name-objects: be more careful parsing generation numbers
reflog expire --stale-fix: be generous about missing objects
commit-graph: when incompatible with graphs, indicate why
run-command: invalidate lstat cache after a command finished
Git 2.17.6
Git 2.18.5
Git 2.19.6
Git 2.20.5
Git 2.21.4
Git 2.22.5
Git 2.23.4
Git 2.24.4
Git 2.25.5
Git 2.26.3
Git 2.27.1
Git 2.28.1
Git 2.29.3
Git 2.30.2
Johannes Sixt (2):
annotate-tests: quote variable expansions containing path names
replace "parameters" by "arguments" in error messages
Jonathan Nieder (2):
mergetool: do not enable hideResolved by default
doc: describe mergetool configuration in git-mergetool(1)
Jonathan Tan (10):
Doc: clarify contents of packfile sent as URI
ls-refs: report unborn targets of symrefs
connect, transport: encapsulate arg in struct
clone: respect remote unborn HEAD
usage: trace2 BUG() invocations
http: allow custom index-pack args
http-fetch: allow custom index-pack args
fetch-pack: with packfile URIs, use index-pack arg
fetch-pack: print and use dangling .gitmodules
fetch-pack: do not mix --pack_header and packfile uri
Jordi Mas (1):
l10n: Update Catalan translation
Junio C Hamano (32):
pack-redundant: gauge the usage before proposing its removal
pull: get rid of unnecessary global variable
pull: correct condition to trigger non-ff advice
CoC: explicitly take any whitespace breakage
parse-options: format argh like error messages
The first batch in 2.31 cycle
SubmittingPatches: tighten wording on "sign-off" procedure
ci/install-depends: attempt to fix "brew cask" stuff
t4203: make blame output massaging more robust
The second batch
The third batch
The fourth batch
The fifth batch
Prepare for 2.30.1
The sixth batch
Git 2.30.1
The seventh batch
The eighth batch
diff: --{rotate,skip}-to=<path>
The ninth batch
Documentation: typofix --column description
The tenth batch
push: do not turn --delete '' into a matching push
blame-options.txt: camelcase blame.blankBoundary
index-format doc: camelCase core.excludesFile
Git 2.31-rc0
Revert "commit-graph: when incompatible with graphs, indicate why"
Hopefully the last batch before -rc1
Git 2.31-rc1
Merged the open-eintr workaround for macOS
Git 2.31-rc2
Git 2.31
Kevin Willford (1):
fsmonitor: allow all entries for a folder to be invalidated
Martin von Zweigbergk (1):
docs: clarify that refs/notes/ do not keep the attached objects alive
Martin Ågren (16):
t1300: remove duplicate test for `--file ../foo`
t1300: remove duplicate test for `--file no-such-file`
t1300: don't needlessly work with `core.foo` configs
pack-format.txt: document sizes at start of delta data
object-name.c: rename from sha1-name.c
object-file.c: rename from sha1-file.c
sha1-lookup: rename `sha1_pos()` as `hash_pos()`
hash-lookup: rename from sha1-lookup
builtin/gc: don't peek into `struct lock_file`
commit-graph: don't peek into `struct lock_file`
midx: don't peek into `struct lock_file`
refs/files-backend: don't peek into `struct lock_file`
read-cache: try not to peek into `struct {lock_,temp}file`
rev-list-options.txt: fix rendering of bonus paragraph
git.txt: fix monospace rendering
gitmailmap.txt: fix rendering of e-mail addresses
Matheus Tavares (10):
t4129: don't fail if setgid is set in the test directory
grep: error out if --untracked is used with --cached
grep: honor sparse-checkout on working tree searches
checkout: fix bug that makes checkout follow symlinks in leading path
unpack_trees(): start with a fresh lstat cache
write_entry(): fix misuses of `path` in error messages
checkout-index: omit entries with no tempname from --temp output
add --chmod: don't update index when --dry-run is used
add: mark --chmod error string for translation
add: propagate --chmod errors to exit status
Matthias Rüster (1):
l10n: de.po: Update German translation for Git v2.31.0
Mikhail Klyushin (1):
git-gui: fix typo in russian locale
Neeraj Singh (1):
read-cache: make the index write buffer size 128K
Patrick Steinhardt (11):
git: add `--super-prefix` to usage string
config: add new way to pass config via `--config-env`
config: extract function to parse config pairs
fetch: extract writing to FETCH_HEAD
fetch: use strbuf to format FETCH_HEAD updates
fetch: refactor `s_update_ref` to use common exit path
fetch: allow passing a transaction to `s_update_ref()`
fetch: implement support for atomic reference updates
config: store "git -c" variables using more robust format
environment: make `getenv_safe()` a public function
config: allow specifying config entries via envvar pairs
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (5103t0f0u)
l10n: sv.po: Update Swedish translation (5104t0f0u)
Phil Hord (1):
use delete_refs when deleting tags or branches
Philippe Blain (4):
gitmodules.txt: fix 'GIT_WORK_TREE' variable name
mergetool--lib: fix '--tool-help' to correctly show available tools
mailmap doc: use correct environment variable 'GIT_WORK_TREE'
ci: do not cancel all jobs of a matrix if one fails
Pranit Bauva (7):
bisect--helper: reimplement `bisect_log` shell function in C
bisect--helper: reimplement `bisect_replay` shell function in C
bisect--helper: retire `--bisect-write` subcommand
bisect--helper: use `res` instead of return in BISECT_RESET case option
bisect--helper: retire `--bisect-auto-next` subcommand
bisect--helper: reimplement `bisect_skip` shell function in C
bisect--helper: retire `--check-and-set-terms` subcommand
Pratyush Yadav (2):
git-gui: remove lines starting with the comment character
Revert "git-gui: remove lines starting with the comment character"
Rafael Silva (8):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
t2402: ensure locked worktree is properly cleaned up
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
blame: remove unnecessary use of get_commit_info()
René Scharfe (2):
rebase: verify commit parameter
cache-tree: use ce_namelen() instead of strlen()
SZEDER Gábor (2):
t7800-difftool: don't accidentally match tmp dirs
test-lib: prevent '--stress-jobs=X' from being ignored
Sangeeta Jain (1):
diff: do not show submodule with untracked files as "-dirty"
Sergey Organov (32):
revision: factor out parsing of diff-merge related options
revision: factor out setup of diff-merge related settings
revision: factor out initialization of diff-merge related settings
revision: provide implementation for diff merges tweaks
revision: move diff merges functions to its own diff-merges.c
diff-merges: rename all functions to have common prefix
diff-merges: move checks for first_parent_only out of the module
diff-merges: rename diff_merges_default_to_enable() to match semantics
diff-merges: re-arrange functions to match the order they are called in
diff-merges: new function diff_merges_suppress()
diff-merges: new function diff_merges_set_dense_combined_if_unset()
diff-merges: introduce revs->first_parent_merges flag
diff-merges: handle imply -p on -c/--cc logic for log.c
diff-merges: revise revs->diff flag handling
t4013: support test_expect_failure through ':failure' magic
t4013: add tests for -m failing to override -c/--cc
diff-merges: fix -m to properly override -c/--cc
diff-merges: split 'ignore_merges' field
diff-merges: group diff-merge flags next to each other inside 'rev_info'
diff-merges: get rid of now empty diff_merges_init_revs()
diff-merges: refactor opt settings into separate functions
diff-merges: make -m/-c/--cc explicitly mutually exclusive
diff-merges: implement new values for --diff-merges
diff-merges: do not imply -p for new options
diff-merges: let new options enable diff without -p
diff-merges: add old mnemonic counterparts to --diff-merges
diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
doc/git-log: describe new --diff-merges options
doc/diff-generate-patch: mention new --diff-merges option
doc/rev-list-options: document --first-parent changes merges format
doc/git-show: include --diff-merges description
t4013: add tests for --diff-merges=first-parent
Seth House (4):
mergetool: add hideResolved configuration
mergetool: break setup_tool out into separate initialization function
mergetool: add per-tool support and overrides for the hideResolved flag
mergetools/vimdiff: add vimdiff1 merge tool variant
Shubham Verma (10):
t7001: modernize test formatting
t7001: indent with TABs instead of spaces
t7001: remove unnecessary blank lines
t7001: modernize subshell formatting
t7001: remove whitespace after redirect operators
t7001: avoid using `cd` outside of subshells
t7001: use '>' rather than 'touch'
t7001: put each command on a separate line
t7001: use here-docs instead of echo
t7001: use `test` rather than `[`
Taylor Blau (41):
ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
pack-bitmap.c: check reads more aggressively when loading
pack-bitmap: factor out 'bitmap_for_commit()'
pack-bitmap: factor out 'add_commit_to_bitmap()'
p7519: allow running without watchman prereq
Documentation/git-clone.txt: document race with --local
pack-revindex: introduce a new API
write_reuse_object(): convert to new revindex API
write_reused_pack_one(): convert to new revindex API
write_reused_pack_verbatim(): convert to new revindex API
check_object(): convert to new revindex API
bitmap_position_packfile(): convert to new revindex API
show_objects_for_type(): convert to new revindex API
get_size_by_pos(): convert to new revindex API
try_partial_reuse(): convert to new revindex API
rebuild_existing_bitmaps(): convert to new revindex API
get_delta_base_oid(): convert to new revindex API
retry_bad_packed_offset(): convert to new revindex API
packed_object_info(): convert to new revindex API
unpack_entry(): convert to new revindex API
for_each_object_in_pack(): convert to new revindex API
builtin/gc.c: guess the size of the revindex
pack-revindex: remove unused 'find_pack_revindex()'
pack-revindex: remove unused 'find_revindex_position()'
pack-revindex: hide the definition of 'revindex_entry'
pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
refs: expose 'for_each_fullref_in_prefixes'
ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
packfile: prepare for the existence of '*.rev' files
pack-write.c: prepare to write 'pack-*.rev' files
builtin/index-pack.c: allow stripping arbitrary extensions
builtin/index-pack.c: write reverse indexes
builtin/pack-objects.c: respect 'pack.writeReverseIndex'
Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
t: prepare for GIT_TEST_WRITE_REV_INDEX
t: support GIT_TEST_WRITE_REV_INDEX
pack-revindex: ensure that on-disk reverse indexes are given precedence
t5325: check both on-disk and in-memory reverse index
.github/workflows/main.yml: run static-analysis on bionic
commit-graph.c: display correct number of chunks when writing
pack-revindex.c: don't close unopened file descriptors
Thomas Ackermann (7):
doc: fix some typos
doc hash-function-transition: fix asciidoc output
doc hash-function-transition: use SHA-1 and SHA-256 consistently
doc hash-function-transition: use upper case consistently
doc hash-function-transition: fix incomplete sentence
doc hash-function-transition: move rationale upwards
doc: use https links
Torsten Bögershausen (1):
MacOS: precompose_argv_prefix()
Trần Ngọc Quân (1):
l10n: vi.po(5104t): for git v2.31.0 l10n round 2
Utku Gultopu (1):
doc: remove "directory cache" from man pages
Vasyl Vavrychuk (1):
git-send-email.txt: mention less secure app access with Gmail
Yi-Jyun Pan (1):
l10n: zh_TW.po: v2.31.0 round 2 (15 untranslated)
ZheNing Hu (5):
builtin/*: update usage format
ls_files.c: bugfix for --deleted and --modified
ls_files.c: consolidate two for loops into one
ls-files.c: add --deduplicate option
difftool.c: learn a new way start at specified file
brian m. carlson (9):
abspath: add a function to resolve paths with missing components
rev-parse: add option for absolute or relative path formatting
docs: rephrase and clarify the git status --short format
ref-filter: switch some uses of unsigned long to size_t
commit: ignore additional signatures when parsing signed commits
gpg-interface: improve interface for parsing tags
commit: allow parsing arbitrary buffers with headers
ref-filter: hoist signature parsing
gpg-interface: remove other signature headers before verifying
Ævar Arnfjörð Bjarmason (100):
pretty format %(trailers) test: split a long line
pretty format %(trailers) doc: avoid repetition
pretty-format %(trailers): fix broken standalone "valueonly"
pretty format %(trailers): add a "keyonly"
pretty format %(trailers): add a "key_value_separator"
mktag doc: say <hash> not <sha1>
mktag doc: grammar fix, when exists -> when it exists
CoC: Update word-wrapping to match upstream
mktag doc: update to explain why to use this
mktag tests: don't needlessly use a subshell
mktag tests: use "test_commit" helper
mktag tests: remove needless SHA-1 hardcoding
mktag tests: don't redirect stderr to a file needlessly
mktag tests: don't create "mytag" twice
mktag tests: run "fsck" after creating "mytag"
mktag tests: stress test whitespace handling
mktag tests: test "hash-object" compatibility
mktag tests: improve verify_object() test coverage
mktag tests: test verify_object() with replaced objects
mktag: use default strbuf_read() hint
mktag: remove redundant braces in one-line body "if"
mktag: use puts(str) instead of printf("%s\n", str)
mktag: use fsck instead of custom verify_tag()
fsck: make fsck_config() re-usable
mktag: allow turning off fsck.extraHeaderEntry
mktag: allow omitting the header/body \n separator
mktag: convert to parse-options
mktag: mark strings for translation
mktag: add a --[no-]strict option
branch: change "--local" to "--list" in comment
branch tests: add to --sort tests
ref-filter: add braces to if/else if/else chain
ref-filter: move "cmp_fn" assignment into "else if" arm
ref-filter: move ref_sorting flags to a bitfield
branch: sort detached HEAD based on a flag
branch: show "HEAD detached" first under reverse sort
Makefile: remove a warning about old GETTEXT_POISON flag
gettext.c: remove/reword a mostly-useless comment
mailmap doc: create a new "gitmailmap(5)" man page
mailmap doc: quote config variables `like.this`
check-mailmap doc: note config options
mailmap doc: start by mentioning the comment syntax
mailmap tests: use our preferred whitespace syntax
mailmap tests: modernize syntax & test idioms
mailmap tests: improve --stdin tests
mailmap tests: remove redundant entry in test
mailmap tests: add a test for "not a blob" error
mailmap tests: get rid of overly complex blame fuzzing
mailmap: test for silent exiting on missing file/blob
test-lib functions: expand "test_commit" comment template
test-lib functions: document arguments to test_commit
test-lib functions: add --author support to test_commit
test-lib functions: add an --append option to test_commit
tests: refactor a few tests to use "test_commit --append"
mailmap doc + tests: add better examples & test them
mailmap tests: add a test for comment syntax
mailmap tests: add tests for whitespace syntax
mailmap tests: add tests for empty "<>" syntax
mailmap doc + tests: document and test for case-insensitivity
shortlog: remove unused(?) "repo-abbrev" feature
CoC: update to version 2.0 + local changes
fsck doc: remove ancient out-of-date diagnostics
ci: remove GETTEXT_POISON jobs
tests: remove support for GIT_TEST_GETTEXT_POISON
tests: remove uses of GIT_TEST_GETTEXT_POISON=false
cache-tree tests: refactor for modern test style
cache-tree tests: remove unused $2 parameter
cache-tree tests: use a sub-shell with less indirection
cache-tree tests: explicitly test HEAD and index differences
git svn mergeinfo tests: modernize redirection & quoting style
git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
upload-pack tests: avoid a non-zero "grep" exit status
archive tests: use a cheaper "zipinfo -h" invocation to get header
rm tests: actually test for SIGPIPE in SIGPIPE test
config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
Remove support for v1 of the PCRE library
grep/pcre2 tests: don't rely on invalid UTF-8 data test
grep/pcre2: better support invalid UTF-8 haystacks
grep/log: remove hidden --debug and --grep-debug options
pager: refactor wait_for_pager() function
pager: test for exit code with and without SIGPIPE
run-command: add braces for "if" block in wait_or_whine()
pager: properly log pager exit code when signalled
test-lib: remove check_var_migration
test lib: change "error" to "BUG" as appropriate
test-lib-functions: move test_set_index_version() to its user
test-lib-functions: remove generate_zero_bytes() wrapper
test libs: rename bundle helper to "lib-bundle.sh"
test libs: rename gitweb-lib.sh to lib-gitweb.sh
test-lib-functions: move function to lib-bitmap.sh
t/.gitattributes: sort lines
tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
tests: remove most uses of C_LOCALE_OUTPUT
tests: remove last uses of C_LOCALE_OUTPUT
tests: remove most uses of test_i18ncmp
diff: add an API for deferred freeing
diff: plug memory leak from regcomp() on {log,diff} -I
test libs: rename "diff-lib" to "lib-diff"
test-lib-functions: remove bug-inducing "diagnostics" helper param
test-lib-functions: assert correct parameter count
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.31.0-rc2
@ 2021-03-09 18:05 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-03-09 18:05 UTC (permalink / raw)
To: git
A release candidate Git v2.31.0-rc2 is now available for testing at
the usual places. It is comprised of 655 non-merge commits since
v2.30.0, contributed by 68 people, 22 of which are new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.31.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.30.0 are as follows.
Welcome to the Git development community!
Aleksey Kliger, Andreas Bühmann, Andrew Klotz, Andrzej
Hunt, Antonio Russo, Arnaud Morin, Christian Walther, Clement
Moyroud, Daniel Levin, Daniel Troger, Harold Kim, Jacob Vosmaer,
LeSeulArtichaut, Mikhail Klyushin, Neeraj Singh, Sangeeta Jain,
Seth House, Shubham Verma, Utku Gultopu, Vasyl Vavrychuk,
Vojtěch Knyttl, and ZheNing Hu.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
Alex Henrie, brian m. carlson, Christian Couder, Denton Liu,
Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
Felipe Contreras, Han-Wen Nienhuys, Hariom Verma, Heba Waly,
Jeff Hostetler, Jeff King, Jiang Xin, Joey Salazar, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano,
Kevin Daudt, Kevin Willford, Lars Schneider, Martin Ågren,
Martin von Zweigbergk, Matheus Tavares, Michael Haggerty,
Patrick Steinhardt, Paul Jolly, Peter Kaestle, Phil Hord,
Philippe Blain, Phillip Wood, Pranit Bauva, Pratyush Yadav,
Rafael Silva, René Scharfe, Ross Light, Sergey Organov, SZEDER
Gábor, Taylor Blau, Thomas Ackermann, and Torsten Bögershausen.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.31 Release Notes (draft)
==============================
Updates since v2.30
-------------------
Backward incompatible and other important changes
* The "pack-redundant" command, which has been left stale with almost
unusable performance issues, now warns loudly when it gets used, as
we no longer want to recommend its use (instead just "repack -d"
instead).
* The development community has adopted Contributor Covenant v2.0 to
update from v1.4 that we have been using.
* The support for deprecated PCRE1 library has been dropped.
* Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.
UI, Workflows & Features
* The "--format=%(trailers)" mechanism gets enhanced to make it
easier to design output for machine consumption.
* When a user does not tell "git pull" to use rebase or merge, the
command gives a loud message telling a user to choose between
rebase or merge but creates a merge anyway, forcing users who would
want to rebase to redo the operation. Fix an early part of this
problem by tightening the condition to give the message---there is
no reason to stop or force the user to choose between rebase or
merge if the history fast-forwards.
* The configuration variable 'core.abbrev' can be set to 'no' to
force no abbreviation regardless of the hash algorithm.
* "git rev-parse" can be explicitly told to give output as absolute
or relative path with the `--path-format=(absolute|relative)` option.
* Bash completion (in contrib/) update to make it easier for
end-users to add completion for their custom "git" subcommands.
* "git maintenance" learned to drive scheduled maintenance on
platforms whose native scheduling methods are not 'cron'.
* After expiring a reflog and making a single commit, the reflog for
the branch would record a single entry that knows both @{0} and
@{1}, but we failed to answer "what commit were we on?", i.e. @{1}
* "git bundle" learns "--stdin" option to read its refs from the
standard input. Also, it now does not lose refs whey they point
at the same object.
* "git log" learned a new "--diff-merges=<how>" option.
* "git ls-files" can and does show multiple entries when the index is
unmerged, which is a source for confusion unless -s/-u option is in
use. A new option --deduplicate has been introduced.
* `git worktree list` now annotates worktrees as prunable, shows
locked and prunable attributes in --porcelain mode, and gained
a --verbose option.
* "git clone" tries to locally check out the branch pointed at by
HEAD of the remote repository after it is done, but the protocol
did not convey the information necessary to do so when copying an
empty repository. The protocol v2 learned how to do so.
* There are other ways than ".." for a single token to denote a
"commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
range-diff" did not understand them.
* The "git range-diff" command learned "--(left|right)-only" option
to show only one side of the compared range.
* "git mergetool" feeds three versions (base, local and remote) of
a conflicted path unmodified. The command learned to optionally
prepare these files with unconflicted parts already resolved.
* The .mailmap is documented to be read only from the root level of a
working tree, but a stray file in a bare repository also was read
by accident, which has been corrected.
* "git maintenance" tool learned a new "pack-refs" maintenance task.
* The error message given when a configuration variable that is
expected to have a boolean value has been improved.
* Signed commits and tags now allow verification of objects, whose
two object names (one in SHA-1, the other in SHA-256) are both
signed.
* "git rev-list" command learned "--disk-usage" option.
* "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
discard diff output for early paths or move them to the end of the
output.
* "git difftool" learned "--skip-to=<path>" option to restart an
interrupted session from an arbitrary path.
* "git grep" has been tweaked to be limited to the sparse checkout
paths.
* "git rebase --[no-]fork-point" gained a configuration variable
rebase.forkPoint so that users do not have to keep specifying a
non-default setting.
Performance, Internal Implementation, Development Support etc.
* A 3-year old test that was not testing anything useful has been
corrected.
* Retire more names with "sha1" in it.
* The topological walk codepath is covered by new trace2 stats.
* Update the Code-of-conduct to version 2.0 from the upstream (we've
been using version 1.4).
* "git mktag" validates its input using its own rules before writing
a tag object---it has been updated to share the logic with "git
fsck".
* Two new ways to feed configuration variable-value pairs via
environment variables have been introduced, and the way
GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
to make it more robust.
* Tests have been updated so that they do not to get affected by the
name of the default branch "git init" creates.
* "git fetch" learns to treat ref updates atomically in all-or-none
fashion, just like "git push" does, with the new "--atomic" option.
* The peel_ref() API has been replaced with peel_iterated_oid().
* The .use_shell flag in struct child_process that is passed to
run_command() API has been clarified with a bit more documentation.
* Document, clean-up and optimize the code around the cache-tree
extension in the index.
* The ls-refs protocol operation has been optimized to narrow the
sub-hierarchy of refs/ it walks to produce response.
* When removing many branches and tags, the code used to do so one
ref at a time. There is another API it can use to delete multiple
refs, and it makes quite a lot of performance difference when the
refs are packed.
* The "pack-objects" command needs to iterate over all the tags when
automatic tag following is enabled, but it actually iterated over
all refs and then discarded everything outside "refs/tags/"
hierarchy, which was quite wasteful.
* A perf script was made more portable.
* Our setting of GitHub CI test jobs were a bit too eager to give up
once there is even one failure found. Tweak the knob to allow
other jobs keep running even when we see a failure, so that we can
find more failures in a single run.
* We've carried compatibility codepaths for compilers without
variadic macros for quite some time, but the world may be ready for
them to be removed. Force compilation failure on exotic platforms
where variadic macros are not available to find out who screams in
such a way that we can easily revert if it turns out that the world
is not yet ready.
* Code clean-up to ensure our use of hashtables using object names as
keys use the "struct object_id" objects, not the raw hash values.
* Lose the debugging aid that may have been useful in the past, but
no longer is, in the "grep" codepaths.
* Some pretty-format specifiers do not need the data in commit object
(e.g. "%H"), but we were over-eager to load and parse it, which has
been made even lazier.
* Get rid of "GETTEXT_POISON" support altogether, which may or may
not be controversial.
* Introduce an on-disk file to record revindex for packdata, which
traditionally was always created on the fly and only in-core.
* The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
* Piecemeal of rewrite of "git bisect" in C continues.
* When a pager spawned by us exited, the trace log did not record its
exit status correctly, which has been corrected.
* Removal of GIT_TEST_GETTEXT_POISON continues.
* The code to implement "git merge-base --independent" was poorly
done and was kept from the very beginning of the feature.
* Preliminary changes to fsmonitor integration.
* Performance improvements for rename detection.
* The common code to deal with "chunked file format" that is shared
by the multi-pack-index and commit-graph files have been factored
out, to help codepaths for both filetypes to become more robust.
* The approach to "fsck" the incoming objects in "index-pack" is
attractive for performance reasons (we have them already in core,
inflated and ready to be inspected), but fundamentally cannot be
applied fully when we receive more than one pack stream, as a tree
object in one pack may refer to a blob object in another pack as
".gitmodules", when we want to inspect blobs that are used as
".gitmodules" file, for example. Teach "index-pack" to emit
objects that must be inspected later and check them in the calling
"fetch-pack" process.
* The logic to handle "trailer" related placeholders in the
"--format=" mechanisms in the "log" family and "for-each-ref"
family is getting unified.
* Raise the buffer size used when writing the index file out from
(obviously too small) 8kB to (clearly sufficiently large) 128kB.
* It is reported that open() on some platforms (e.g. macOS Big Sur)
can return EINTR even though our timers are set up with SA_RESTART.
A workaround has been implemented and enabled for macOS to rerun
open() transparently from the caller when this happens.
Fixes since v2.30
-----------------
* Diagnose command line error of "git rebase" early.
* Clean up option descriptions in "git cmd --help".
* "git stash" did not work well in a sparsely checked out working
tree.
* Some tests expect that "ls -l" output has either '-' or 'x' for
group executable bit, but setgid bit can be inherited from parent
directory and make these fields 'S' or 's' instead, causing test
failures.
* "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
any repository when the configuration variable <var> is not defined
even once.
* Fix 2.29 regression where "git mergetool --tool-help" fails to list
all the available tools.
* Fix for procedure to building CI test environment for mac.
* The implementation of "git branch --sort" wrt the detached HEAD
display has always been hacky, which has been cleaned up.
* Newline characters in the host and path part of git:// URL are
now forbidden.
* "git diff" showed a submodule working tree with untracked cruft as
"Submodule commit <objectname>-dirty", but a natural expectation is
that the "-dirty" indicator would align with "git describe --dirty",
which does not consider having untracked files in the working tree
as source of dirtiness. The inconsistency has been fixed.
* When more than one commit with the same patch ID appears on one
side, "git log --cherry-pick A...B" did not exclude them all when a
commit with the same patch ID appears on the other side. Now it
does.
* Documentation for "git fsck" lost stale bits that has become
incorrect.
* Doc fix for packfile URI feature.
* When "git rebase -i" processes "fixup" insn, there is no reason to
clean up the commit log message, but we did the usual stripspace
processing. This has been corrected.
(merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).
* Fix in passing custom args from "git clone" to "upload-pack" on the
other side.
(merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).
* The command line completion (in contrib/) completed "git branch -d"
with branch names, but "git branch -D" offered tagnames in addition,
which has been corrected. "git branch -M" had the same problem.
(merge 27dc071b9a jk/complete-branch-force-delete later to maint).
* When commands are started from a subdirectory, they may have to
compare the path to the subdirectory (called prefix and found out
from $(pwd)) with the tracked paths. On macOS, $(pwd) and
readdir() yield decomposed path, while the tracked paths are
usually normalized to the precomposed form, causing mismatch. This
has been fixed by taking the same approach used to normalize the
command line arguments.
(merge 5c327502db tb/precompose-prefix-too later to maint).
* Even though invocations of "die()" were logged to the trace2
system, "BUG()"s were not, which has been corrected.
(merge 0a9dde4a04 jt/trace2-BUG later to maint).
* "git grep --untracked" is meant to be "let's ALSO find in these
files on the filesystem" when looking for matches in the working
tree files, and does not make any sense if the primary search is
done against the index, or the tree objects. The "--cached" and
"--untracked" options have been marked as mutually incompatible.
(merge 0c5d83b248 mt/grep-cached-untracked later to maint).
* Fix "git fsck --name-objects" which apparently has not been used by
anybody who is motivated enough to report breakage.
(merge e89f89361c js/fsck-name-objects-fix later to maint).
* Avoid individual tests in t5411 from getting affected by each other
by forcing them to use separate output files during the test.
(merge 822ee894f6 jx/t5411-unique-filenames later to maint).
* Test to make sure "git rev-parse one-thing one-thing" gives
the same thing twice (when one-thing is --since=X).
(merge a5cdca4520 ew/rev-parse-since-test later to maint).
* When certain features (e.g. grafts) used in the repository are
incompatible with the use of the commit-graph, we used to silently
turned commit-graph off; we now tell the user what we are doing.
(merge c85eec7fc3 js/commit-graph-warning later to maint).
* Objects that lost references can be pruned away, even when they
have notes attached to it (and these notes will become dangling,
which in turn can be pruned with "git notes prune"). This has been
clarified in the documentation.
(merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).
* The error codepath around the "--temp/--prefix" feature of "git
checkout-index" has been improved.
(merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).
* The "git maintenance register" command had trouble registering bare
repositories, which had been corrected.
* A handful of multi-word configuration variable names in
documentation that are spelled in all lowercase have been corrected
to use the more canonical camelCase.
(merge 7dd0eaa39c dl/doc-config-camelcase later to maint).
* "git push $there --delete ''" should have been diagnosed as an
error, but instead turned into a matching push, which has been
corrected.
(merge 20e416409f jc/push-delete-nothing later to maint).
* Test script modernization.
(merge 488acf15df sv/t7001-modernize later to maint).
* An under-allocation for the untracked cache data has been corrected.
(merge 6347d649bc jh/untracked-cache-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
(merge 9d336655ba js/doc-proto-v2-response-end later to maint).
(merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
(merge 3a837b58e3 cw/pack-config-doc later to maint).
(merge 01168a9d89 ug/doc-commit-approxidate later to maint).
(merge b865734760 js/params-vs-args later to maint).
----------------------------------------------------------------
Changes since v2.30.0 are as follows:
Abhishek Kumar (11):
commit-graph: fix regression when computing Bloom filters
revision: parse parent in indegree_walk_step()
commit-graph: consolidate fill_commit_graph_info
t6600-test-reach: generalize *_three_modes
commit-graph: add a slab to store topological levels
commit-graph: return 64-bit generation number
commit-graph: implement corrected commit date
commit-graph: implement generation data chunk
commit-graph: use generation v2 only if entire chain does
commit-reach: use corrected commit dates in paint_down_to_common()
doc: add corrected commit date info
Adam Dinwoodie (1):
t4129: fix setfacl-related permissions failure
Alex Henrie (1):
rebase: add a config option for --no-fork-point
Andrew Klotz (1):
config: improve error message for boolean config
Andrzej Hunt (1):
commit-graph: avoid leaking topo_levels slab in write_commit_graph()
Antonio Russo (1):
t6016: move to lib-log-graph.sh framework
Christian Couder (3):
fetch-pack: rename helper to create_promisor_file()
fetch-pack: refactor writing promisor file
pack-write: die on error in write_promisor_file()
Christian Walther (1):
doc: mention bigFileThreshold for packing
Daniel Levin (1):
git-p4: fix syncing file types with pattern
Denton Liu (12):
refs: factor out set_read_ref_cutoffs()
refs: allow @{n} to work with n-sized reflog
test-lib-functions.sh: fix usage for test_commit()
t4203: stop losing return codes of git commands
git-stash.txt: be explicit about subcommand options
t3905: remove spaces after redirect operators
t3905: move all commands into test cases
t3905: remove nested git in command substitution
t3905: replace test -s with test_file_not_empty
t3905: use test_cmp() to check file contents
stash: declare ref_stash as an array
i18n.txt: camel case and monospace "i18n.commitEncoding"
Derrick Stolee (65):
maintenance: extract platform-specific scheduling
maintenance: include 'cron' details in docs
pack-bitmap-write: fill bitmap with commit history
bitmap: implement bitmap_is_subset()
commit: implement commit_list_contains()
t5310: add branch-based checks
pack-bitmap-write: rename children to reverse_edges
pack-bitmap-write: build fewer intermediate bitmaps
pack-bitmap-write: use existing bitmaps
pack-bitmap-write: relax unique revwalk condition
pack-bitmap-write: better reuse bitmaps
revision: trace topo-walk statistics
tree-walk: report recursion counts
unpack-trees: add trace2 regions
cache-tree: use trace2 in cache_tree_update()
maintenance: use launchctl on macOS
maintenance: use Windows scheduled tasks
for-each-repo: do nothing on empty config
cache-tree: trace regions for I/O
cache-tree: trace regions for prime_cache_tree
index-format: use 'cache tree' over 'cached tree'
index-format: update preamble to cache tree extension
index-format: discuss recursion of cache-tree better
cache-tree: speed up consecutive path comparisons
maintenance: set log.excludeDecoration durin prefetch
t7900: clean up some broken refs
cache-tree: clean up cache_tree_update()
cache-tree: simplify verify_cache() prototype
cache-tree: extract subtree_pos()
fsmonitor: de-duplicate BUG()s around dirty bits
repository: add repo reference to index_state
name-hash: use trace2 regions for init
sparse-checkout: load sparse-checkout patterns
test-lib: test_region looks for trace2 regions
t1092: test interesting sparse-checkout scenarios
commit-reach: reduce requirements for remove_redundant()
commit-graph: use repo_parse_commit
commit-graph: always parse before commit_graph_data_at()
commit-graph: validate layers for generation data
commit-graph: compute generations separately
commit-graph: be extra careful about mixed generations
commit-graph: prepare commit graph
commit-graph: anonymize data in chunk_write_fn
maintenance: add pack-refs task
maintenance: incremental strategy runs pack-refs weekly
chunk-format: create chunk format write API
commit-graph: use chunk-format write API
midx: rename pack_info to write_midx_context
midx: use context in write_midx_pack_names()
midx: add entries to write_midx_context
midx: add pack_perm to write_midx_context
midx: add num_large_offsets to write_midx_context
midx: return success/failure in chunk write methods
midx: drop chunk progress during write
midx: use chunk-format API in write_midx_internal()
chunk-format: create read chunk API
commit-graph: use chunk-format read API
midx: use chunk-format read API
midx: use 64-bit multiplication for chunk sizes
chunk-format: restore duplicate chunk checks
chunk-format: add technical docs
commit-reach: use one walk in remove_redundant()
commit-reach: move compare_commits_by_gen
commit-reach: use heuristic in remove_redundant()
commit-reach: stale commits may prune generation further
Elijah Newren (93):
t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
stash: remove unnecessary process forking
stash: fix stash application in sparse-checkouts
merge-ort: setup basic internal data structures
merge-ort: add some high-level algorithm structure
merge-ort: port merge_start() from merge-recursive
merge-ort: use histogram diff
merge-ort: add an err() function similar to one from merge-recursive
merge-ort: implement a very basic collect_merge_info()
merge-ort: avoid repeating fill_tree_descriptor() on the same tree
merge-ort: compute a few more useful fields for collect_merge_info
merge-ort: record stage and auxiliary info for every path
merge-ort: avoid recursing into identical trees
merge-ort: add a preliminary simple process_entries() implementation
merge-ort: have process_entries operate in a defined order
merge-ort: step 1 of tree writing -- record basenames, modes, and oids
merge-ort: step 2 of tree writing -- function to create tree object
merge-ort: step 3 of tree writing -- handling subdirectories as we go
merge-ort: basic outline for merge_switch_to_result()
merge-ort: add implementation of checkout()
tree: enable cmp_cache_name_compare() to be used elsewhere
merge-ort: add implementation of record_conflicted_index_entries()
merge-ort: free data structures in merge_finalize()
merge-ort: add a few includes
merge-ort: add a clear_internal_opts helper
merge-ort: add a path_conflict field to merge_options_internal
merge-ort: add a paths_to_free field to merge_options_internal
merge-ort: add function grouping comments
merge-ort: add die-not-implemented stub handle_content_merge() function
merge-ort: add modify/delete handling and delayed output processing
merge-ort: add basic data structures for handling renames
merge-ort: add initial outline for basic rename detection
merge-ort: implement detect_regular_renames()
merge-ort: implement compare_pairs() and collect_renames()
merge-ort: add basic outline for process_renames()
diffcore-rename: rename num_create to num_destinations
diffcore-rename: avoid usage of global in too_many_rename_candidates()
diffcore-rename: simplify limit check
diffcore-rename: reduce jumpiness in progress counters
t4058: add more tests and documentation for duplicate tree entry handling
t4058: explore duplicate tree entry handling in a bit more detail
diffcore-rename: simplify and accelerate register_rename_src()
diffcore-rename: accelerate rename_dst setup
merge-ort: add implementation of both sides renaming identically
merge-ort: add implementation of both sides renaming differently
merge-ort: add implementation of rename/delete conflicts
merge-ort: add implementation of rename collisions
merge-ort: add implementation of normal rename handling
merge-ort: add implementation of type-changed rename handling
commit: move reverse_commit_list() from merge-recursive
merge-ort: copy a few small helper functions from merge-recursive.c
merge-ort: make clear_internal_opts() aware of partial clearing
merge-ort: implement merge_incore_recursive()
merge-ort: handle D/F conflict where directory disappears due to merge
merge-ort: handle directory/file conflicts that remain
merge-ort: implement unique_path() helper
merge-ort: handle book-keeping around two- and three-way content merge
merge-ort: flesh out implementation of handle_content_merge()
merge-ort: copy and adapt merge_3way() from merge-recursive.c
merge-ort: copy and adapt merge_submodule() from merge-recursive.c
merge-ort: implement format_commit()
merge-ort: copy find_first_merges() implementation from merge-recursive.c
merge-ort: add handling for different types of files at same path
diffcore-rename: remove unnecessary duplicate entry checks
merge-ort: add new data structures for directory rename detection
merge-ort: initialize and free new directory rename data structures
merge-ort: collect which directories are removed in dirs_removed
merge-ort: add outline for computing directory renames
merge-ort: add outline of get_provisional_directory_renames()
merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
merge-ort: implement compute_rename_counts()
merge-ort: implement handle_directory_level_conflicts()
merge-ort: modify collect_renames() for directory rename handling
merge-ort: implement compute_collisions()
merge-ort: implement apply_dir_rename() and check_dir_renamed()
merge-ort: implement check_for_directory_rename()
merge-ort: implement handle_path_level_conflicts()
merge-ort: add a new toplevel_dir field
merge-ort: implement apply_directory_rename_modifications()
merge-ort: process_renames() now needs more defensiveness
merge-ort: fix a directory rename detection bug
merge-ort: fix massive leak
merge-ort: ignore the directory rename split conflict for now
merge-ort: begin performance work; instrument with trace2_region_* calls
diffcore-rename: no point trying to find a match better than exact
diffcore-rename: filter rename_src list when possible
t4001: add a test comparing basename similarity and content similarity
diffcore-rename: compute basenames of source and dest candidates
diffcore-rename: complete find_basename_matches()
diffcore-rename: guide inexact rename detection based on basenames
gitdiffcore doc: mention new preliminary step for rename detection
merge-ort: call diffcore_rename() directly
Documentation/RelNotes: improve release note for rename detection work
Eric Sunshine (3):
worktree: teach `repair` to fix multi-directional breakage
t/perf: avoid unnecessary test_export() recursion
maintenance: fix incorrect `maintenance.repo` path with bare repository
Eric Wong (2):
core.abbrev=no disables abbreviations
t1500: ensure current --since= behavior remains
Felipe Contreras (8):
pull: refactor fast-forward check
pull: give the advice for choosing rebase/merge much later
pull: display default warning only when non-ff
test: bisect-porcelain: fix location of files
completion: bash: add __git_have_func helper
completion: bash: improve function detection
test: completion: add tests for __git_complete
completion: add proper public __git_complete
Han-Wen Nienhuys (1):
doc/reftable: document how to handle windows
Hariom Verma (4):
t6300: use function to test trailer options
pretty.c: refactor trailer logic to `format_set_trailers_options()`
pretty.c: capture invalid trailer argument
ref-filter: use pretty.c logic for trailers
Jacob Vosmaer (4):
builtin/pack-objects.c: avoid iterating all refs
ls-refs.c: initialize 'prefixes' before using it
upload-pack.c: fix filter spec quoting bug
t5544: clarify 'hook works with partial clone' test
Jeff Hostetler (11):
p7519: do not rely on "xargs -d" in test
p7519: fix watchman watch-list test on Windows
p7519: move watchman cleanup earlier in the test
p7519: add trace logging during perf test
preload-index: log the number of lstat calls to trace2
read-cache: log the number of lstat calls to trace2
read-cache: log the number of scanned files to trace2
fsmonitor: log invocation of FSMonitor hook to trace2
fsmonitor: log FSMN token when reading and writing the index
fsmonitor: refactor initialization of fsmonitor_last_update token
dir: fix malloc of root untracked_cache_dir
Jeff King (45):
pack-bitmap: fix header size check
pack-bitmap: bounds-check size of cache extension
t5310: drop size of truncated ewah bitmap
rev-list: die when --test-bitmap detects a mismatch
ewah: factor out bitmap growth
ewah: make bitmap growth less aggressive
ewah: implement bitmap_or()
ewah: add bitmap_dup() function
pack-bitmap-write: reimplement bitmap writing
pack-bitmap-write: pass ownership of intermediate bitmaps
pack-bitmap-write: ignore BITMAP_FLAG_REUSE
git_connect_git(): forbid newlines in host and path
fsck: reject .gitmodules git:// urls with newlines
t5516: loosen "not our ref" error check
patch-ids: handle duplicate hashmap entries
quote: make sq_dequote_step() a public function
for_each_object_in_pack(): clarify pack vs index ordering
config: parse more robust format in GIT_CONFIG_PARAMETERS
refs: switch peel_ref() to peel_iterated_oid()
run-command: document use_shell option
git-svn tests: rewrite brittle tests to use "--[no-]merges".
git-compat-util: always enable variadic macros
commit_graft_pos(): take an oid instead of a bare hash
rerere: check dirname format while iterating rr_cache directory
rerere: tighten rr-cache dirname check
rerere: use strmap to store rerere directories
hash_pos(): convert to oid_pos()
oid_pos(): access table through const pointers
t0000: keep clean-up tests together
t0000: run prereq tests inside sub-test
t0000: run cleaning test inside sub-test
t0000: consistently use single quotes for outer tests
pretty: lazy-load commit data when expanding user-format
p5303: avoid sed GNU-ism
completion: treat "branch -D" the same way as "branch -d"
completion: handle other variants of "branch -m"
doc/git-branch: fix awkward wording for "-c"
t: add --no-tag option to test_commit
mailmap: only look for .mailmap in work tree
rev-list: add --disk-usage option for calculating disk usage
docs/rev-list: add an examples section
docs/rev-list: add some examples of --disk-usage
doc: mention approxidates for git-commit --date
Makefile: add OPEN_RETURNS_EINTR knob
config.mak.uname: enable OPEN_RETURNS_EINTR for macOS Big Sur
Jiang Xin (5):
test: add helper functions for git-bundle
bundle: lost objects when removing duplicate pendings
bundle: arguments can be read from stdin
t5411: use different out file to prevent overwriting
t5411: refactor check of refs using test_cmp_refs
Joey Salazar (1):
doc: fix naming of response-end-pkt
Johannes Schindelin (58):
tests: mark tests relying on the current default for `init.defaultBranch`
t0060: preemptively adjust alignment
t[01]*: adjust the references to the default branch name "main"
t2*: adjust the references to the default branch name "main"
t3[0-3]*: adjust the references to the default branch name "main"
t3416: preemptively adjust alignment in a comment
t34*: adjust the references to the default branch name "main"
t3[5-9]*: adjust the references to the default branch name "main"
t4*: adjust the references to the default branch name "main"
t5323: prepare centered comment for `master` -> `main`
t5[0-4]*: adjust the references to the default branch name "main"
t5503: prepare aligned comment for replacing `master` with `main`
t550*: adjust the references to the default branch name "main"
t551*: adjust the references to the default branch name "main"
t55[23]*: adjust the references to the default branch name "main"
t55[4-9]*: adjust the references to the default branch name "main"
t5[6-9]*: adjust the references to the default branch name "main"
t6[0-3]*: adjust the references to the default branch name "main"
t64*: preemptively adjust alignment to prepare for `master` -> `main`
t6[4-9]*: adjust the references to the default branch name "main"
t7[0-4]*: adjust the references to the default branch name "main"
t7[5-9]*: adjust the references to the default branch name "main"
t8*: adjust the references to the default branch name "main"
t9[0-4]*: adjust the references to the default branch name "main"
t9[5-7]*: adjust the references to the default branch name "main"
tests(git-p4): transition to the default branch name `main`
t99*: adjust the references to the default branch name "main"
tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
SKIP_DASHED_BUILT_INS: respect `config.mak`
range-diff/format-patch: refactor check for commit range
rebase -i: do leave commit message intact in fixup! chains
range-diff: avoid leaking memory in two error code paths
range-diff: libify the read_patches() function again
range-diff: simplify code spawning `git log`
range-diff: combine all options in a single data structure
range-diff: move the diffopt initialization down one layer
range-diff: offer --left-only/--right-only options
range-diff/format-patch: handle commit ranges other than A..B
range-diff(docs): explain how to specify commit ranges
t1450: robustify `remove_object()`
fsck --name-objects: be more careful parsing generation numbers
reflog expire --stale-fix: be generous about missing objects
commit-graph: when incompatible with graphs, indicate why
run-command: invalidate lstat cache after a command finished
Git 2.17.6
Git 2.18.5
Git 2.19.6
Git 2.20.5
Git 2.21.4
Git 2.22.5
Git 2.23.4
Git 2.24.4
Git 2.25.5
Git 2.26.3
Git 2.27.1
Git 2.28.1
Git 2.29.3
Git 2.30.2
Johannes Sixt (2):
annotate-tests: quote variable expansions containing path names
replace "parameters" by "arguments" in error messages
Jonathan Tan (10):
Doc: clarify contents of packfile sent as URI
ls-refs: report unborn targets of symrefs
connect, transport: encapsulate arg in struct
clone: respect remote unborn HEAD
usage: trace2 BUG() invocations
http: allow custom index-pack args
http-fetch: allow custom index-pack args
fetch-pack: with packfile URIs, use index-pack arg
fetch-pack: print and use dangling .gitmodules
fetch-pack: do not mix --pack_header and packfile uri
Junio C Hamano (31):
pack-redundant: gauge the usage before proposing its removal
pull: get rid of unnecessary global variable
pull: correct condition to trigger non-ff advice
CoC: explicitly take any whitespace breakage
parse-options: format argh like error messages
The first batch in 2.31 cycle
SubmittingPatches: tighten wording on "sign-off" procedure
ci/install-depends: attempt to fix "brew cask" stuff
t4203: make blame output massaging more robust
The second batch
The third batch
The fourth batch
The fifth batch
Prepare for 2.30.1
The sixth batch
Git 2.30.1
The seventh batch
The eighth batch
diff: --{rotate,skip}-to=<path>
The ninth batch
Documentation: typofix --column description
The tenth batch
push: do not turn --delete '' into a matching push
blame-options.txt: camelcase blame.blankBoundary
index-format doc: camelCase core.excludesFile
Git 2.31-rc0
Revert "commit-graph: when incompatible with graphs, indicate why"
Hopefully the last batch before -rc1
Git 2.31-rc1
Merged the open-eintr workaround for macOS
Git 2.31-rc2
Kevin Willford (1):
fsmonitor: allow all entries for a folder to be invalidated
Martin von Zweigbergk (1):
docs: clarify that refs/notes/ do not keep the attached objects alive
Martin Ågren (16):
t1300: remove duplicate test for `--file ../foo`
t1300: remove duplicate test for `--file no-such-file`
t1300: don't needlessly work with `core.foo` configs
pack-format.txt: document sizes at start of delta data
object-name.c: rename from sha1-name.c
object-file.c: rename from sha1-file.c
sha1-lookup: rename `sha1_pos()` as `hash_pos()`
hash-lookup: rename from sha1-lookup
builtin/gc: don't peek into `struct lock_file`
commit-graph: don't peek into `struct lock_file`
midx: don't peek into `struct lock_file`
refs/files-backend: don't peek into `struct lock_file`
read-cache: try not to peek into `struct {lock_,temp}file`
rev-list-options.txt: fix rendering of bonus paragraph
git.txt: fix monospace rendering
gitmailmap.txt: fix rendering of e-mail addresses
Matheus Tavares (10):
t4129: don't fail if setgid is set in the test directory
grep: error out if --untracked is used with --cached
grep: honor sparse-checkout on working tree searches
checkout: fix bug that makes checkout follow symlinks in leading path
unpack_trees(): start with a fresh lstat cache
write_entry(): fix misuses of `path` in error messages
checkout-index: omit entries with no tempname from --temp output
add --chmod: don't update index when --dry-run is used
add: mark --chmod error string for translation
add: propagate --chmod errors to exit status
Mikhail Klyushin (1):
git-gui: fix typo in russian locale
Neeraj Singh (1):
read-cache: make the index write buffer size 128K
Patrick Steinhardt (11):
git: add `--super-prefix` to usage string
config: add new way to pass config via `--config-env`
config: extract function to parse config pairs
fetch: extract writing to FETCH_HEAD
fetch: use strbuf to format FETCH_HEAD updates
fetch: refactor `s_update_ref` to use common exit path
fetch: allow passing a transaction to `s_update_ref()`
fetch: implement support for atomic reference updates
config: store "git -c" variables using more robust format
environment: make `getenv_safe()` a public function
config: allow specifying config entries via envvar pairs
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Phil Hord (1):
use delete_refs when deleting tags or branches
Philippe Blain (4):
gitmodules.txt: fix 'GIT_WORK_TREE' variable name
mergetool--lib: fix '--tool-help' to correctly show available tools
mailmap doc: use correct environment variable 'GIT_WORK_TREE'
ci: do not cancel all jobs of a matrix if one fails
Pranit Bauva (7):
bisect--helper: reimplement `bisect_log` shell function in C
bisect--helper: reimplement `bisect_replay` shell function in C
bisect--helper: retire `--bisect-write` subcommand
bisect--helper: use `res` instead of return in BISECT_RESET case option
bisect--helper: retire `--bisect-auto-next` subcommand
bisect--helper: reimplement `bisect_skip` shell function in C
bisect--helper: retire `--check-and-set-terms` subcommand
Pratyush Yadav (2):
git-gui: remove lines starting with the comment character
Revert "git-gui: remove lines starting with the comment character"
Rafael Silva (8):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
t2402: ensure locked worktree is properly cleaned up
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
blame: remove unnecessary use of get_commit_info()
René Scharfe (2):
rebase: verify commit parameter
cache-tree: use ce_namelen() instead of strlen()
SZEDER Gábor (2):
t7800-difftool: don't accidentally match tmp dirs
test-lib: prevent '--stress-jobs=X' from being ignored
Sangeeta Jain (1):
diff: do not show submodule with untracked files as "-dirty"
Sergey Organov (32):
revision: factor out parsing of diff-merge related options
revision: factor out setup of diff-merge related settings
revision: factor out initialization of diff-merge related settings
revision: provide implementation for diff merges tweaks
revision: move diff merges functions to its own diff-merges.c
diff-merges: rename all functions to have common prefix
diff-merges: move checks for first_parent_only out of the module
diff-merges: rename diff_merges_default_to_enable() to match semantics
diff-merges: re-arrange functions to match the order they are called in
diff-merges: new function diff_merges_suppress()
diff-merges: new function diff_merges_set_dense_combined_if_unset()
diff-merges: introduce revs->first_parent_merges flag
diff-merges: handle imply -p on -c/--cc logic for log.c
diff-merges: revise revs->diff flag handling
t4013: support test_expect_failure through ':failure' magic
t4013: add tests for -m failing to override -c/--cc
diff-merges: fix -m to properly override -c/--cc
diff-merges: split 'ignore_merges' field
diff-merges: group diff-merge flags next to each other inside 'rev_info'
diff-merges: get rid of now empty diff_merges_init_revs()
diff-merges: refactor opt settings into separate functions
diff-merges: make -m/-c/--cc explicitly mutually exclusive
diff-merges: implement new values for --diff-merges
diff-merges: do not imply -p for new options
diff-merges: let new options enable diff without -p
diff-merges: add old mnemonic counterparts to --diff-merges
diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
doc/git-log: describe new --diff-merges options
doc/diff-generate-patch: mention new --diff-merges option
doc/rev-list-options: document --first-parent changes merges format
doc/git-show: include --diff-merges description
t4013: add tests for --diff-merges=first-parent
Seth House (4):
mergetool: add hideResolved configuration
mergetool: break setup_tool out into separate initialization function
mergetool: add per-tool support and overrides for the hideResolved flag
mergetools/vimdiff: add vimdiff1 merge tool variant
Shubham Verma (10):
t7001: modernize test formatting
t7001: indent with TABs instead of spaces
t7001: remove unnecessary blank lines
t7001: modernize subshell formatting
t7001: remove whitespace after redirect operators
t7001: avoid using `cd` outside of subshells
t7001: use '>' rather than 'touch'
t7001: put each command on a separate line
t7001: use here-docs instead of echo
t7001: use `test` rather than `[`
Taylor Blau (40):
ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
pack-bitmap.c: check reads more aggressively when loading
pack-bitmap: factor out 'bitmap_for_commit()'
pack-bitmap: factor out 'add_commit_to_bitmap()'
p7519: allow running without watchman prereq
Documentation/git-clone.txt: document race with --local
pack-revindex: introduce a new API
write_reuse_object(): convert to new revindex API
write_reused_pack_one(): convert to new revindex API
write_reused_pack_verbatim(): convert to new revindex API
check_object(): convert to new revindex API
bitmap_position_packfile(): convert to new revindex API
show_objects_for_type(): convert to new revindex API
get_size_by_pos(): convert to new revindex API
try_partial_reuse(): convert to new revindex API
rebuild_existing_bitmaps(): convert to new revindex API
get_delta_base_oid(): convert to new revindex API
retry_bad_packed_offset(): convert to new revindex API
packed_object_info(): convert to new revindex API
unpack_entry(): convert to new revindex API
for_each_object_in_pack(): convert to new revindex API
builtin/gc.c: guess the size of the revindex
pack-revindex: remove unused 'find_pack_revindex()'
pack-revindex: remove unused 'find_revindex_position()'
pack-revindex: hide the definition of 'revindex_entry'
pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
refs: expose 'for_each_fullref_in_prefixes'
ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
packfile: prepare for the existence of '*.rev' files
pack-write.c: prepare to write 'pack-*.rev' files
builtin/index-pack.c: allow stripping arbitrary extensions
builtin/index-pack.c: write reverse indexes
builtin/pack-objects.c: respect 'pack.writeReverseIndex'
Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
t: prepare for GIT_TEST_WRITE_REV_INDEX
t: support GIT_TEST_WRITE_REV_INDEX
pack-revindex: ensure that on-disk reverse indexes are given precedence
t5325: check both on-disk and in-memory reverse index
.github/workflows/main.yml: run static-analysis on bionic
commit-graph.c: display correct number of chunks when writing
Thomas Ackermann (7):
doc: fix some typos
doc hash-function-transition: fix asciidoc output
doc hash-function-transition: use SHA-1 and SHA-256 consistently
doc hash-function-transition: use upper case consistently
doc hash-function-transition: fix incomplete sentence
doc hash-function-transition: move rationale upwards
doc: use https links
Torsten Bögershausen (1):
MacOS: precompose_argv_prefix()
Utku Gultopu (1):
doc: remove "directory cache" from man pages
Vasyl Vavrychuk (1):
git-send-email.txt: mention less secure app access with Gmail
ZheNing Hu (5):
builtin/*: update usage format
ls_files.c: bugfix for --deleted and --modified
ls_files.c: consolidate two for loops into one
ls-files.c: add --deduplicate option
difftool.c: learn a new way start at specified file
brian m. carlson (9):
abspath: add a function to resolve paths with missing components
rev-parse: add option for absolute or relative path formatting
docs: rephrase and clarify the git status --short format
ref-filter: switch some uses of unsigned long to size_t
commit: ignore additional signatures when parsing signed commits
gpg-interface: improve interface for parsing tags
commit: allow parsing arbitrary buffers with headers
ref-filter: hoist signature parsing
gpg-interface: remove other signature headers before verifying
Ævar Arnfjörð Bjarmason (100):
pretty format %(trailers) test: split a long line
pretty format %(trailers) doc: avoid repetition
pretty-format %(trailers): fix broken standalone "valueonly"
pretty format %(trailers): add a "keyonly"
pretty format %(trailers): add a "key_value_separator"
mktag doc: say <hash> not <sha1>
mktag doc: grammar fix, when exists -> when it exists
CoC: Update word-wrapping to match upstream
mktag doc: update to explain why to use this
mktag tests: don't needlessly use a subshell
mktag tests: use "test_commit" helper
mktag tests: remove needless SHA-1 hardcoding
mktag tests: don't redirect stderr to a file needlessly
mktag tests: don't create "mytag" twice
mktag tests: run "fsck" after creating "mytag"
mktag tests: stress test whitespace handling
mktag tests: test "hash-object" compatibility
mktag tests: improve verify_object() test coverage
mktag tests: test verify_object() with replaced objects
mktag: use default strbuf_read() hint
mktag: remove redundant braces in one-line body "if"
mktag: use puts(str) instead of printf("%s\n", str)
mktag: use fsck instead of custom verify_tag()
fsck: make fsck_config() re-usable
mktag: allow turning off fsck.extraHeaderEntry
mktag: allow omitting the header/body \n separator
mktag: convert to parse-options
mktag: mark strings for translation
mktag: add a --[no-]strict option
branch: change "--local" to "--list" in comment
branch tests: add to --sort tests
ref-filter: add braces to if/else if/else chain
ref-filter: move "cmp_fn" assignment into "else if" arm
ref-filter: move ref_sorting flags to a bitfield
branch: sort detached HEAD based on a flag
branch: show "HEAD detached" first under reverse sort
Makefile: remove a warning about old GETTEXT_POISON flag
gettext.c: remove/reword a mostly-useless comment
mailmap doc: create a new "gitmailmap(5)" man page
mailmap doc: quote config variables `like.this`
check-mailmap doc: note config options
mailmap doc: start by mentioning the comment syntax
mailmap tests: use our preferred whitespace syntax
mailmap tests: modernize syntax & test idioms
mailmap tests: improve --stdin tests
mailmap tests: remove redundant entry in test
mailmap tests: add a test for "not a blob" error
mailmap tests: get rid of overly complex blame fuzzing
mailmap: test for silent exiting on missing file/blob
test-lib functions: expand "test_commit" comment template
test-lib functions: document arguments to test_commit
test-lib functions: add --author support to test_commit
test-lib functions: add an --append option to test_commit
tests: refactor a few tests to use "test_commit --append"
mailmap doc + tests: add better examples & test them
mailmap tests: add a test for comment syntax
mailmap tests: add tests for whitespace syntax
mailmap tests: add tests for empty "<>" syntax
mailmap doc + tests: document and test for case-insensitivity
shortlog: remove unused(?) "repo-abbrev" feature
CoC: update to version 2.0 + local changes
fsck doc: remove ancient out-of-date diagnostics
ci: remove GETTEXT_POISON jobs
tests: remove support for GIT_TEST_GETTEXT_POISON
tests: remove uses of GIT_TEST_GETTEXT_POISON=false
cache-tree tests: refactor for modern test style
cache-tree tests: remove unused $2 parameter
cache-tree tests: use a sub-shell with less indirection
cache-tree tests: explicitly test HEAD and index differences
git svn mergeinfo tests: modernize redirection & quoting style
git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
upload-pack tests: avoid a non-zero "grep" exit status
archive tests: use a cheaper "zipinfo -h" invocation to get header
rm tests: actually test for SIGPIPE in SIGPIPE test
config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
Remove support for v1 of the PCRE library
grep/pcre2 tests: don't rely on invalid UTF-8 data test
grep/pcre2: better support invalid UTF-8 haystacks
grep/log: remove hidden --debug and --grep-debug options
pager: refactor wait_for_pager() function
pager: test for exit code with and without SIGPIPE
run-command: add braces for "if" block in wait_or_whine()
pager: properly log pager exit code when signalled
test-lib: remove check_var_migration
test lib: change "error" to "BUG" as appropriate
test-lib-functions: move test_set_index_version() to its user
test-lib-functions: remove generate_zero_bytes() wrapper
test libs: rename bundle helper to "lib-bundle.sh"
test libs: rename gitweb-lib.sh to lib-gitweb.sh
test-lib-functions: move function to lib-bitmap.sh
t/.gitattributes: sort lines
tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
tests: remove most uses of C_LOCALE_OUTPUT
tests: remove last uses of C_LOCALE_OUTPUT
tests: remove most uses of test_i18ncmp
diff: add an API for deferred freeing
diff: plug memory leak from regcomp() on {log,diff} -I
test libs: rename "diff-lib" to "lib-diff"
test-lib-functions: remove bug-inducing "diagnostics" helper param
test-lib-functions: assert correct parameter count
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.31.0-rc1
@ 2021-03-03 10:14 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-03-03 10:14 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.31.0-rc1 is now available for testing
at the usual places. It is comprised of 631 non-merge commits
since v2.30.0, contributed by 67 people, 21 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.31.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.30.0 are as follows.
Welcome to the Git development community!
Andreas Bühmann, Andrew Klotz, Andrzej Hunt, Antonio Russo,
Arnaud Morin, Christian Walther, Clement Moyroud, Daniel Levin,
Daniel Troger, Harold Kim, Jacob Vosmaer, LeSeulArtichaut,
Mikhail Klyushin, Neeraj Singh, Sangeeta Jain, Seth House,
Shubham Verma, Utku Gultopu, Vasyl Vavrychuk, Vojtěch Knyttl,
and ZheNing Hu.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
Alex Henrie, brian m. carlson, Christian Couder, Denton Liu,
Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
Felipe Contreras, Han-Wen Nienhuys, Hariom Verma, Heba Waly,
Jeff Hostetler, Jeff King, Jiang Xin, Joey Salazar, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano,
Kevin Daudt, Kevin Willford, Lars Schneider, Martin Ågren,
Martin von Zweigbergk, Matheus Tavares, Michael Haggerty,
Patrick Steinhardt, Paul Jolly, Peter Kaestle, Phil Hord,
Philippe Blain, Phillip Wood, Pranit Bauva, Pratyush Yadav,
Rafael Silva, René Scharfe, Ross Light, Sergey Organov, SZEDER
Gábor, Taylor Blau, Thomas Ackermann, and Torsten Bögershausen.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.31 Release Notes (draft)
==============================
Updates since v2.30
-------------------
Backward incompatible and other important changes
* The "pack-redundant" command, which has been left stale with almost
unusable performance issues, now warns loudly when it gets used, as
we no longer want to recommend its use (instead just "repack -d"
instead).
* The development community has adopted Contributor Covenant v2.0 to
update from v1.4 that we have been using.
* The support for deprecated PCRE1 library has been dropped.
UI, Workflows & Features
* The "--format=%(trailers)" mechanism gets enhanced to make it
easier to design output for machine consumption.
* When a user does not tell "git pull" to use rebase or merge, the
command gives a loud message telling a user to choose between
rebase or merge but creates a merge anyway, forcing users who would
want to rebase to redo the operation. Fix an early part of this
problem by tightening the condition to give the message---there is
no reason to stop or force the user to choose between rebase or
merge if the history fast-forwards.
* The configuration variable 'core.abbrev' can be set to 'no' to
force no abbreviation regardless of the hash algorithm.
* "git rev-parse" can be explicitly told to give output as absolute
or relative path with the `--path-format=(absolute|relative)` option.
* Bash completion (in contrib/) update to make it easier for
end-users to add completion for their custom "git" subcommands.
* "git maintenance" learned to drive scheduled maintenance on
platforms whose native scheduling methods are not 'cron'.
* After expiring a reflog and making a single commit, the reflog for
the branch would record a single entry that knows both @{0} and
@{1}, but we failed to answer "what commit were we on?", i.e. @{1}
* "git bundle" learns "--stdin" option to read its refs from the
standard input. Also, it now does not lose refs whey they point
at the same object.
* "git log" learned a new "--diff-merges=<how>" option.
* "git ls-files" can and does show multiple entries when the index is
unmerged, which is a source for confusion unless -s/-u option is in
use. A new option --deduplicate has been introduced.
* `git worktree list` now annotates worktrees as prunable, shows
locked and prunable attributes in --porcelain mode, and gained
a --verbose option.
* "git clone" tries to locally check out the branch pointed at by
HEAD of the remote repository after it is done, but the protocol
did not convey the information necessary to do so when copying an
empty repository. The protocol v2 learned how to do so.
* There are other ways than ".." for a single token to denote a
"commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
range-diff" did not understand them.
* The "git range-diff" command learned "--(left|right)-only" option
to show only one side of the compared range.
* "git mergetool" feeds three versions (base, local and remote) of
a conflicted path unmodified. The command learned to optionally
prepare these files with unconflicted parts already resolved.
* The .mailmap is documented to be read only from the root level of a
working tree, but a stray file in a bare repository also was read
by accident, which has been corrected.
* "git maintenance" tool learned a new "pack-refs" maintenance task.
* The error message given when a configuration variable that is
expected to have a boolean value has been improved.
* Signed commits and tags now allow verification of objects, whose
two object names (one in SHA-1, the other in SHA-256) are both
signed.
* "git rev-list" command learned "--disk-usage" option.
* "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
discard diff output for early paths or move them to the end of the
output.
* "git difftool" learned "--skip-to=<path>" option to restart an
interrupted session from an arbitrary path.
* "git grep" has been tweaked to be limited to the sparse checkout
paths.
* "git rebase --[no-]fork-point" gained a configuration variable
rebase.forkPoint so that users do not have to keep specifying a
non-default setting.
Performance, Internal Implementation, Development Support etc.
* A 3-year old test that was not testing anything useful has been
corrected.
* Retire more names with "sha1" in it.
* The topological walk codepath is covered by new trace2 stats.
* Update the Code-of-conduct to version 2.0 from the upstream (we've
been using version 1.4).
* "git mktag" validates its input using its own rules before writing
a tag object---it has been updated to share the logic with "git
fsck".
* Two new ways to feed configuration variable-value pairs via
environment variables have been introduced, and the way
GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
to make it more robust.
* Tests have been updated so that they do not to get affected by the
name of the default branch "git init" creates.
* "git fetch" learns to treat ref updates atomically in all-or-none
fashion, just like "git push" does, with the new "--atomic" option.
* The peel_ref() API has been replaced with peel_iterated_oid().
* The .use_shell flag in struct child_process that is passed to
run_command() API has been clarified with a bit more documentation.
* Document, clean-up and optimize the code around the cache-tree
extension in the index.
* The ls-refs protocol operation has been optimized to narrow the
sub-hierarchy of refs/ it walks to produce response.
* When removing many branches and tags, the code used to do so one
ref at a time. There is another API it can use to delete multiple
refs, and it makes quite a lot of performance difference when the
refs are packed.
* The "pack-objects" command needs to iterate over all the tags when
automatic tag following is enabled, but it actually iterated over
all refs and then discarded everything outside "refs/tags/"
hierarchy, which was quite wasteful.
* A perf script was made more portable.
* Our setting of GitHub CI test jobs were a bit too eager to give up
once there is even one failure found. Tweak the knob to allow
other jobs keep running even when we see a failure, so that we can
find more failures in a single run.
* We've carried compatibility codepaths for compilers without
variadic macros for quite some time, but the world may be ready for
them to be removed. Force compilation failure on exotic platforms
where variadic macros are not available to find out who screams in
such a way that we can easily revert if it turns out that the world
is not yet ready.
* Code clean-up to ensure our use of hashtables using object names as
keys use the "struct object_id" objects, not the raw hash values.
* Lose the debugging aid that may have been useful in the past, but
no longer is, in the "grep" codepaths.
* Some pretty-format specifiers do not need the data in commit object
(e.g. "%H"), but we were over-eager to load and parse it, which has
been made even lazier.
* Get rid of "GETTEXT_POISON" support altogether, which may or may
not be controversial.
* Introduce an on-disk file to record revindex for packdata, which
traditionally was always created on the fly and only in-core.
* The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
* Piecemeal of rewrite of "git bisect" in C continues.
* When a pager spawned by us exited, the trace log did not record its
exit status correctly, which has been corrected.
* Removal of GIT_TEST_GETTEXT_POISON continues.
* The code to implement "git merge-base --independent" was poorly
done and was kept from the very beginning of the feature.
* Preliminary changes to fsmonitor integration.
* Performance optimization work on the rename detection continues.
* The common code to deal with "chunked file format" that is shared
by the multi-pack-index and commit-graph files have been factored
out, to help codepaths for both filetypes to become more robust.
* The approach to "fsck" the incoming objects in "index-pack" is
attractive for performance reasons (we have them already in core,
inflated and ready to be inspected), but fundamentally cannot be
applied fully when we receive more than one pack stream, as a tree
object in one pack may refer to a blob object in another pack as
".gitmodules", when we want to inspect blobs that are used as
".gitmodules" file, for example. Teach "index-pack" to emit
objects that must be inspected later and check them in the calling
"fetch-pack" process.
* The logic to handle "trailer" related placeholders in the
"--format=" mechanisms in the "log" family and "for-each-ref"
family is getting unified.
* Raise the buffer size used when writing the index file out from
(obviously too small) 8kB to (clearly sufficiently large) 128kB.
Fixes since v2.30
-----------------
* Diagnose command line error of "git rebase" early.
* Clean up option descriptions in "git cmd --help".
* "git stash" did not work well in a sparsely checked out working
tree.
* Some tests expect that "ls -l" output has either '-' or 'x' for
group executable bit, but setgid bit can be inherited from parent
directory and make these fields 'S' or 's' instead, causing test
failures.
* "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
any repository when the configuration variable <var> is not defined
even once.
* Fix 2.29 regression where "git mergetool --tool-help" fails to list
all the available tools.
* Fix for procedure to building CI test environment for mac.
* The implementation of "git branch --sort" wrt the detached HEAD
display has always been hacky, which has been cleaned up.
* Newline characters in the host and path part of git:// URL are
now forbidden.
* "git diff" showed a submodule working tree with untracked cruft as
"Submodule commit <objectname>-dirty", but a natural expectation is
that the "-dirty" indicator would align with "git describe --dirty",
which does not consider having untracked files in the working tree
as source of dirtiness. The inconsistency has been fixed.
* When more than one commit with the same patch ID appears on one
side, "git log --cherry-pick A...B" did not exclude them all when a
commit with the same patch ID appears on the other side. Now it
does.
* Documentation for "git fsck" lost stale bits that has become
incorrect.
* Doc fix for packfile URI feature.
* When "git rebase -i" processes "fixup" insn, there is no reason to
clean up the commit log message, but we did the usual stripspace
processing. This has been corrected.
(merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).
* Fix in passing custom args from "git clone" to "upload-pack" on the
other side.
(merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).
* The command line completion (in contrib/) completed "git branch -d"
with branch names, but "git branch -D" offered tagnames in addition,
which has been corrected. "git branch -M" had the same problem.
(merge 27dc071b9a jk/complete-branch-force-delete later to maint).
* When commands are started from a subdirectory, they may have to
compare the path to the subdirectory (called prefix and found out
from $(pwd)) with the tracked paths. On macOS, $(pwd) and
readdir() yield decomposed path, while the tracked paths are
usually normalized to the precomposed form, causing mismatch. This
has been fixed by taking the same approach used to normalize the
command line arguments.
(merge 5c327502db tb/precompose-prefix-too later to maint).
* Even though invocations of "die()" were logged to the trace2
system, "BUG()"s were not, which has been corrected.
(merge 0a9dde4a04 jt/trace2-BUG later to maint).
* "git grep --untracked" is meant to be "let's ALSO find in these
files on the filesystem" when looking for matches in the working
tree files, and does not make any sense if the primary search is
done against the index, or the tree objects. The "--cached" and
"--untracked" options have been marked as mutually incompatible.
(merge 0c5d83b248 mt/grep-cached-untracked later to maint).
* Fix "git fsck --name-objects" which apparently has not been used by
anybody who is motivated enough to report breakage.
(merge e89f89361c js/fsck-name-objects-fix later to maint).
* Avoid individual tests in t5411 from getting affected by each other
by forcing them to use separate output files during the test.
(merge 822ee894f6 jx/t5411-unique-filenames later to maint).
* Test to make sure "git rev-parse one-thing one-thing" gives
the same thing twice (when one-thing is --since=X).
(merge a5cdca4520 ew/rev-parse-since-test later to maint).
* When certain features (e.g. grafts) used in the repository are
incompatible with the use of the commit-graph, we used to silently
turned commit-graph off; we now tell the user what we are doing.
(merge c85eec7fc3 js/commit-graph-warning later to maint).
* Objects that lost references can be pruned away, even when they
have notes attached to it (and these notes will become dangling,
which in turn can be pruned with "git notes prune"). This has been
clarified in the documentation.
(merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).
* The error codepath around the "--temp/--prefix" feature of "git
checkout-index" has been improved.
(merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).
* The "git maintenance register" command had trouble registering bare
repositories, which had been corrected.
* A handful of multi-word configuration variable names in
documentation that are spelled in all lowercase have been corrected
to use the more canonical camelCase.
(merge 7dd0eaa39c dl/doc-config-camelcase later to maint).
* "git push $there --delete ''" should have been diagnosed as an
error, but instead turned into a matching push, which has been
corrected.
(merge 20e416409f jc/push-delete-nothing later to maint).
* Test script modernization.
(merge 488acf15df sv/t7001-modernize later to maint).
* An under-allocation for the untracked cache data has been corrected.
(merge 6347d649bc jh/untracked-cache-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
(merge 9d336655ba js/doc-proto-v2-response-end later to maint).
(merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
(merge 3a837b58e3 cw/pack-config-doc later to maint).
(merge 01168a9d89 ug/doc-commit-approxidate later to maint).
(merge b865734760 js/params-vs-args later to maint).
----------------------------------------------------------------
Changes since v2.30.0 are as follows:
Abhishek Kumar (11):
commit-graph: fix regression when computing Bloom filters
revision: parse parent in indegree_walk_step()
commit-graph: consolidate fill_commit_graph_info
t6600-test-reach: generalize *_three_modes
commit-graph: add a slab to store topological levels
commit-graph: return 64-bit generation number
commit-graph: implement corrected commit date
commit-graph: implement generation data chunk
commit-graph: use generation v2 only if entire chain does
commit-reach: use corrected commit dates in paint_down_to_common()
doc: add corrected commit date info
Adam Dinwoodie (1):
t4129: fix setfacl-related permissions failure
Alex Henrie (1):
rebase: add a config option for --no-fork-point
Andrew Klotz (1):
config: improve error message for boolean config
Andrzej Hunt (1):
commit-graph: avoid leaking topo_levels slab in write_commit_graph()
Antonio Russo (1):
t6016: move to lib-log-graph.sh framework
Christian Couder (3):
fetch-pack: rename helper to create_promisor_file()
fetch-pack: refactor writing promisor file
pack-write: die on error in write_promisor_file()
Christian Walther (1):
doc: mention bigFileThreshold for packing
Daniel Levin (1):
git-p4: fix syncing file types with pattern
Denton Liu (12):
refs: factor out set_read_ref_cutoffs()
refs: allow @{n} to work with n-sized reflog
test-lib-functions.sh: fix usage for test_commit()
t4203: stop losing return codes of git commands
git-stash.txt: be explicit about subcommand options
t3905: remove spaces after redirect operators
t3905: move all commands into test cases
t3905: remove nested git in command substitution
t3905: replace test -s with test_file_not_empty
t3905: use test_cmp() to check file contents
stash: declare ref_stash as an array
i18n.txt: camel case and monospace "i18n.commitEncoding"
Derrick Stolee (65):
maintenance: extract platform-specific scheduling
maintenance: include 'cron' details in docs
pack-bitmap-write: fill bitmap with commit history
bitmap: implement bitmap_is_subset()
commit: implement commit_list_contains()
t5310: add branch-based checks
pack-bitmap-write: rename children to reverse_edges
pack-bitmap-write: build fewer intermediate bitmaps
pack-bitmap-write: use existing bitmaps
pack-bitmap-write: relax unique revwalk condition
pack-bitmap-write: better reuse bitmaps
revision: trace topo-walk statistics
tree-walk: report recursion counts
unpack-trees: add trace2 regions
cache-tree: use trace2 in cache_tree_update()
maintenance: use launchctl on macOS
maintenance: use Windows scheduled tasks
for-each-repo: do nothing on empty config
cache-tree: trace regions for I/O
cache-tree: trace regions for prime_cache_tree
index-format: use 'cache tree' over 'cached tree'
index-format: update preamble to cache tree extension
index-format: discuss recursion of cache-tree better
cache-tree: speed up consecutive path comparisons
maintenance: set log.excludeDecoration durin prefetch
t7900: clean up some broken refs
cache-tree: clean up cache_tree_update()
cache-tree: simplify verify_cache() prototype
cache-tree: extract subtree_pos()
fsmonitor: de-duplicate BUG()s around dirty bits
repository: add repo reference to index_state
name-hash: use trace2 regions for init
sparse-checkout: load sparse-checkout patterns
test-lib: test_region looks for trace2 regions
t1092: test interesting sparse-checkout scenarios
commit-reach: reduce requirements for remove_redundant()
commit-graph: use repo_parse_commit
commit-graph: always parse before commit_graph_data_at()
commit-graph: validate layers for generation data
commit-graph: compute generations separately
commit-graph: be extra careful about mixed generations
commit-graph: prepare commit graph
commit-graph: anonymize data in chunk_write_fn
maintenance: add pack-refs task
maintenance: incremental strategy runs pack-refs weekly
chunk-format: create chunk format write API
commit-graph: use chunk-format write API
midx: rename pack_info to write_midx_context
midx: use context in write_midx_pack_names()
midx: add entries to write_midx_context
midx: add pack_perm to write_midx_context
midx: add num_large_offsets to write_midx_context
midx: return success/failure in chunk write methods
midx: drop chunk progress during write
midx: use chunk-format API in write_midx_internal()
chunk-format: create read chunk API
commit-graph: use chunk-format read API
midx: use chunk-format read API
midx: use 64-bit multiplication for chunk sizes
chunk-format: restore duplicate chunk checks
chunk-format: add technical docs
commit-reach: use one walk in remove_redundant()
commit-reach: move compare_commits_by_gen
commit-reach: use heuristic in remove_redundant()
commit-reach: stale commits may prune generation further
Elijah Newren (92):
t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
stash: remove unnecessary process forking
stash: fix stash application in sparse-checkouts
merge-ort: setup basic internal data structures
merge-ort: add some high-level algorithm structure
merge-ort: port merge_start() from merge-recursive
merge-ort: use histogram diff
merge-ort: add an err() function similar to one from merge-recursive
merge-ort: implement a very basic collect_merge_info()
merge-ort: avoid repeating fill_tree_descriptor() on the same tree
merge-ort: compute a few more useful fields for collect_merge_info
merge-ort: record stage and auxiliary info for every path
merge-ort: avoid recursing into identical trees
merge-ort: add a preliminary simple process_entries() implementation
merge-ort: have process_entries operate in a defined order
merge-ort: step 1 of tree writing -- record basenames, modes, and oids
merge-ort: step 2 of tree writing -- function to create tree object
merge-ort: step 3 of tree writing -- handling subdirectories as we go
merge-ort: basic outline for merge_switch_to_result()
merge-ort: add implementation of checkout()
tree: enable cmp_cache_name_compare() to be used elsewhere
merge-ort: add implementation of record_conflicted_index_entries()
merge-ort: free data structures in merge_finalize()
merge-ort: add a few includes
merge-ort: add a clear_internal_opts helper
merge-ort: add a path_conflict field to merge_options_internal
merge-ort: add a paths_to_free field to merge_options_internal
merge-ort: add function grouping comments
merge-ort: add die-not-implemented stub handle_content_merge() function
merge-ort: add modify/delete handling and delayed output processing
merge-ort: add basic data structures for handling renames
merge-ort: add initial outline for basic rename detection
merge-ort: implement detect_regular_renames()
merge-ort: implement compare_pairs() and collect_renames()
merge-ort: add basic outline for process_renames()
diffcore-rename: rename num_create to num_destinations
diffcore-rename: avoid usage of global in too_many_rename_candidates()
diffcore-rename: simplify limit check
diffcore-rename: reduce jumpiness in progress counters
t4058: add more tests and documentation for duplicate tree entry handling
t4058: explore duplicate tree entry handling in a bit more detail
diffcore-rename: simplify and accelerate register_rename_src()
diffcore-rename: accelerate rename_dst setup
merge-ort: add implementation of both sides renaming identically
merge-ort: add implementation of both sides renaming differently
merge-ort: add implementation of rename/delete conflicts
merge-ort: add implementation of rename collisions
merge-ort: add implementation of normal rename handling
merge-ort: add implementation of type-changed rename handling
commit: move reverse_commit_list() from merge-recursive
merge-ort: copy a few small helper functions from merge-recursive.c
merge-ort: make clear_internal_opts() aware of partial clearing
merge-ort: implement merge_incore_recursive()
merge-ort: handle D/F conflict where directory disappears due to merge
merge-ort: handle directory/file conflicts that remain
merge-ort: implement unique_path() helper
merge-ort: handle book-keeping around two- and three-way content merge
merge-ort: flesh out implementation of handle_content_merge()
merge-ort: copy and adapt merge_3way() from merge-recursive.c
merge-ort: copy and adapt merge_submodule() from merge-recursive.c
merge-ort: implement format_commit()
merge-ort: copy find_first_merges() implementation from merge-recursive.c
merge-ort: add handling for different types of files at same path
diffcore-rename: remove unnecessary duplicate entry checks
merge-ort: add new data structures for directory rename detection
merge-ort: initialize and free new directory rename data structures
merge-ort: collect which directories are removed in dirs_removed
merge-ort: add outline for computing directory renames
merge-ort: add outline of get_provisional_directory_renames()
merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
merge-ort: implement compute_rename_counts()
merge-ort: implement handle_directory_level_conflicts()
merge-ort: modify collect_renames() for directory rename handling
merge-ort: implement compute_collisions()
merge-ort: implement apply_dir_rename() and check_dir_renamed()
merge-ort: implement check_for_directory_rename()
merge-ort: implement handle_path_level_conflicts()
merge-ort: add a new toplevel_dir field
merge-ort: implement apply_directory_rename_modifications()
merge-ort: process_renames() now needs more defensiveness
merge-ort: fix a directory rename detection bug
merge-ort: fix massive leak
merge-ort: ignore the directory rename split conflict for now
merge-ort: begin performance work; instrument with trace2_region_* calls
diffcore-rename: no point trying to find a match better than exact
diffcore-rename: filter rename_src list when possible
t4001: add a test comparing basename similarity and content similarity
diffcore-rename: compute basenames of source and dest candidates
diffcore-rename: complete find_basename_matches()
diffcore-rename: guide inexact rename detection based on basenames
gitdiffcore doc: mention new preliminary step for rename detection
merge-ort: call diffcore_rename() directly
Eric Sunshine (3):
worktree: teach `repair` to fix multi-directional breakage
t/perf: avoid unnecessary test_export() recursion
maintenance: fix incorrect `maintenance.repo` path with bare repository
Eric Wong (2):
core.abbrev=no disables abbreviations
t1500: ensure current --since= behavior remains
Felipe Contreras (8):
pull: refactor fast-forward check
pull: give the advice for choosing rebase/merge much later
pull: display default warning only when non-ff
test: bisect-porcelain: fix location of files
completion: bash: add __git_have_func helper
completion: bash: improve function detection
test: completion: add tests for __git_complete
completion: add proper public __git_complete
Han-Wen Nienhuys (1):
doc/reftable: document how to handle windows
Hariom Verma (4):
t6300: use function to test trailer options
pretty.c: refactor trailer logic to `format_set_trailers_options()`
pretty.c: capture invalid trailer argument
ref-filter: use pretty.c logic for trailers
Jacob Vosmaer (4):
builtin/pack-objects.c: avoid iterating all refs
ls-refs.c: initialize 'prefixes' before using it
upload-pack.c: fix filter spec quoting bug
t5544: clarify 'hook works with partial clone' test
Jeff Hostetler (11):
p7519: do not rely on "xargs -d" in test
p7519: fix watchman watch-list test on Windows
p7519: move watchman cleanup earlier in the test
p7519: add trace logging during perf test
preload-index: log the number of lstat calls to trace2
read-cache: log the number of lstat calls to trace2
read-cache: log the number of scanned files to trace2
fsmonitor: log invocation of FSMonitor hook to trace2
fsmonitor: log FSMN token when reading and writing the index
fsmonitor: refactor initialization of fsmonitor_last_update token
dir: fix malloc of root untracked_cache_dir
Jeff King (43):
pack-bitmap: fix header size check
pack-bitmap: bounds-check size of cache extension
t5310: drop size of truncated ewah bitmap
rev-list: die when --test-bitmap detects a mismatch
ewah: factor out bitmap growth
ewah: make bitmap growth less aggressive
ewah: implement bitmap_or()
ewah: add bitmap_dup() function
pack-bitmap-write: reimplement bitmap writing
pack-bitmap-write: pass ownership of intermediate bitmaps
pack-bitmap-write: ignore BITMAP_FLAG_REUSE
git_connect_git(): forbid newlines in host and path
fsck: reject .gitmodules git:// urls with newlines
t5516: loosen "not our ref" error check
patch-ids: handle duplicate hashmap entries
quote: make sq_dequote_step() a public function
for_each_object_in_pack(): clarify pack vs index ordering
config: parse more robust format in GIT_CONFIG_PARAMETERS
refs: switch peel_ref() to peel_iterated_oid()
run-command: document use_shell option
git-svn tests: rewrite brittle tests to use "--[no-]merges".
git-compat-util: always enable variadic macros
commit_graft_pos(): take an oid instead of a bare hash
rerere: check dirname format while iterating rr_cache directory
rerere: tighten rr-cache dirname check
rerere: use strmap to store rerere directories
hash_pos(): convert to oid_pos()
oid_pos(): access table through const pointers
t0000: keep clean-up tests together
t0000: run prereq tests inside sub-test
t0000: run cleaning test inside sub-test
t0000: consistently use single quotes for outer tests
pretty: lazy-load commit data when expanding user-format
p5303: avoid sed GNU-ism
completion: treat "branch -D" the same way as "branch -d"
completion: handle other variants of "branch -m"
doc/git-branch: fix awkward wording for "-c"
t: add --no-tag option to test_commit
mailmap: only look for .mailmap in work tree
rev-list: add --disk-usage option for calculating disk usage
docs/rev-list: add an examples section
docs/rev-list: add some examples of --disk-usage
doc: mention approxidates for git-commit --date
Jiang Xin (5):
test: add helper functions for git-bundle
bundle: lost objects when removing duplicate pendings
bundle: arguments can be read from stdin
t5411: use different out file to prevent overwriting
t5411: refactor check of refs using test_cmp_refs
Joey Salazar (1):
doc: fix naming of response-end-pkt
Johannes Schindelin (43):
tests: mark tests relying on the current default for `init.defaultBranch`
t0060: preemptively adjust alignment
t[01]*: adjust the references to the default branch name "main"
t2*: adjust the references to the default branch name "main"
t3[0-3]*: adjust the references to the default branch name "main"
t3416: preemptively adjust alignment in a comment
t34*: adjust the references to the default branch name "main"
t3[5-9]*: adjust the references to the default branch name "main"
t4*: adjust the references to the default branch name "main"
t5323: prepare centered comment for `master` -> `main`
t5[0-4]*: adjust the references to the default branch name "main"
t5503: prepare aligned comment for replacing `master` with `main`
t550*: adjust the references to the default branch name "main"
t551*: adjust the references to the default branch name "main"
t55[23]*: adjust the references to the default branch name "main"
t55[4-9]*: adjust the references to the default branch name "main"
t5[6-9]*: adjust the references to the default branch name "main"
t6[0-3]*: adjust the references to the default branch name "main"
t64*: preemptively adjust alignment to prepare for `master` -> `main`
t6[4-9]*: adjust the references to the default branch name "main"
t7[0-4]*: adjust the references to the default branch name "main"
t7[5-9]*: adjust the references to the default branch name "main"
t8*: adjust the references to the default branch name "main"
t9[0-4]*: adjust the references to the default branch name "main"
t9[5-7]*: adjust the references to the default branch name "main"
tests(git-p4): transition to the default branch name `main`
t99*: adjust the references to the default branch name "main"
tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
SKIP_DASHED_BUILT_INS: respect `config.mak`
range-diff/format-patch: refactor check for commit range
rebase -i: do leave commit message intact in fixup! chains
range-diff: avoid leaking memory in two error code paths
range-diff: libify the read_patches() function again
range-diff: simplify code spawning `git log`
range-diff: combine all options in a single data structure
range-diff: move the diffopt initialization down one layer
range-diff: offer --left-only/--right-only options
range-diff/format-patch: handle commit ranges other than A..B
range-diff(docs): explain how to specify commit ranges
t1450: robustify `remove_object()`
fsck --name-objects: be more careful parsing generation numbers
reflog expire --stale-fix: be generous about missing objects
commit-graph: when incompatible with graphs, indicate why
Johannes Sixt (2):
annotate-tests: quote variable expansions containing path names
replace "parameters" by "arguments" in error messages
Jonathan Tan (9):
Doc: clarify contents of packfile sent as URI
ls-refs: report unborn targets of symrefs
connect, transport: encapsulate arg in struct
clone: respect remote unborn HEAD
usage: trace2 BUG() invocations
http: allow custom index-pack args
http-fetch: allow custom index-pack args
fetch-pack: with packfile URIs, use index-pack arg
fetch-pack: print and use dangling .gitmodules
Junio C Hamano (29):
pack-redundant: gauge the usage before proposing its removal
pull: get rid of unnecessary global variable
pull: correct condition to trigger non-ff advice
CoC: explicitly take any whitespace breakage
parse-options: format argh like error messages
The first batch in 2.31 cycle
SubmittingPatches: tighten wording on "sign-off" procedure
ci/install-depends: attempt to fix "brew cask" stuff
t4203: make blame output massaging more robust
The second batch
The third batch
The fourth batch
The fifth batch
Prepare for 2.30.1
The sixth batch
Git 2.30.1
The seventh batch
The eighth batch
diff: --{rotate,skip}-to=<path>
The ninth batch
Documentation: typofix --column description
The tenth batch
push: do not turn --delete '' into a matching push
blame-options.txt: camelcase blame.blankBoundary
index-format doc: camelCase core.excludesFile
Git 2.31-rc0
Revert "commit-graph: when incompatible with graphs, indicate why"
Hopefully the last batch before -rc1
Git 2.31-rc1
Kevin Willford (1):
fsmonitor: allow all entries for a folder to be invalidated
Martin von Zweigbergk (1):
docs: clarify that refs/notes/ do not keep the attached objects alive
Martin Ågren (16):
t1300: remove duplicate test for `--file ../foo`
t1300: remove duplicate test for `--file no-such-file`
t1300: don't needlessly work with `core.foo` configs
pack-format.txt: document sizes at start of delta data
object-name.c: rename from sha1-name.c
object-file.c: rename from sha1-file.c
sha1-lookup: rename `sha1_pos()` as `hash_pos()`
hash-lookup: rename from sha1-lookup
builtin/gc: don't peek into `struct lock_file`
commit-graph: don't peek into `struct lock_file`
midx: don't peek into `struct lock_file`
refs/files-backend: don't peek into `struct lock_file`
read-cache: try not to peek into `struct {lock_,temp}file`
rev-list-options.txt: fix rendering of bonus paragraph
git.txt: fix monospace rendering
gitmailmap.txt: fix rendering of e-mail addresses
Matheus Tavares (8):
t4129: don't fail if setgid is set in the test directory
grep: error out if --untracked is used with --cached
grep: honor sparse-checkout on working tree searches
write_entry(): fix misuses of `path` in error messages
checkout-index: omit entries with no tempname from --temp output
add --chmod: don't update index when --dry-run is used
add: mark --chmod error string for translation
add: propagate --chmod errors to exit status
Mikhail Klyushin (1):
git-gui: fix typo in russian locale
Neeraj Singh (1):
read-cache: make the index write buffer size 128K
Patrick Steinhardt (11):
git: add `--super-prefix` to usage string
config: add new way to pass config via `--config-env`
config: extract function to parse config pairs
fetch: extract writing to FETCH_HEAD
fetch: use strbuf to format FETCH_HEAD updates
fetch: refactor `s_update_ref` to use common exit path
fetch: allow passing a transaction to `s_update_ref()`
fetch: implement support for atomic reference updates
config: store "git -c" variables using more robust format
environment: make `getenv_safe()` a public function
config: allow specifying config entries via envvar pairs
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Phil Hord (1):
use delete_refs when deleting tags or branches
Philippe Blain (4):
gitmodules.txt: fix 'GIT_WORK_TREE' variable name
mergetool--lib: fix '--tool-help' to correctly show available tools
mailmap doc: use correct environment variable 'GIT_WORK_TREE'
ci: do not cancel all jobs of a matrix if one fails
Pranit Bauva (7):
bisect--helper: reimplement `bisect_log` shell function in C
bisect--helper: reimplement `bisect_replay` shell function in C
bisect--helper: retire `--bisect-write` subcommand
bisect--helper: use `res` instead of return in BISECT_RESET case option
bisect--helper: retire `--bisect-auto-next` subcommand
bisect--helper: reimplement `bisect_skip` shell function in C
bisect--helper: retire `--check-and-set-terms` subcommand
Pratyush Yadav (1):
git-gui: remove lines starting with the comment character
Rafael Silva (8):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
t2402: ensure locked worktree is properly cleaned up
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
blame: remove unnecessary use of get_commit_info()
René Scharfe (2):
rebase: verify commit parameter
cache-tree: use ce_namelen() instead of strlen()
SZEDER Gábor (2):
t7800-difftool: don't accidentally match tmp dirs
test-lib: prevent '--stress-jobs=X' from being ignored
Sangeeta Jain (1):
diff: do not show submodule with untracked files as "-dirty"
Sergey Organov (32):
revision: factor out parsing of diff-merge related options
revision: factor out setup of diff-merge related settings
revision: factor out initialization of diff-merge related settings
revision: provide implementation for diff merges tweaks
revision: move diff merges functions to its own diff-merges.c
diff-merges: rename all functions to have common prefix
diff-merges: move checks for first_parent_only out of the module
diff-merges: rename diff_merges_default_to_enable() to match semantics
diff-merges: re-arrange functions to match the order they are called in
diff-merges: new function diff_merges_suppress()
diff-merges: new function diff_merges_set_dense_combined_if_unset()
diff-merges: introduce revs->first_parent_merges flag
diff-merges: handle imply -p on -c/--cc logic for log.c
diff-merges: revise revs->diff flag handling
t4013: support test_expect_failure through ':failure' magic
t4013: add tests for -m failing to override -c/--cc
diff-merges: fix -m to properly override -c/--cc
diff-merges: split 'ignore_merges' field
diff-merges: group diff-merge flags next to each other inside 'rev_info'
diff-merges: get rid of now empty diff_merges_init_revs()
diff-merges: refactor opt settings into separate functions
diff-merges: make -m/-c/--cc explicitly mutually exclusive
diff-merges: implement new values for --diff-merges
diff-merges: do not imply -p for new options
diff-merges: let new options enable diff without -p
diff-merges: add old mnemonic counterparts to --diff-merges
diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
doc/git-log: describe new --diff-merges options
doc/diff-generate-patch: mention new --diff-merges option
doc/rev-list-options: document --first-parent changes merges format
doc/git-show: include --diff-merges description
t4013: add tests for --diff-merges=first-parent
Seth House (4):
mergetool: add hideResolved configuration
mergetool: break setup_tool out into separate initialization function
mergetool: add per-tool support and overrides for the hideResolved flag
mergetools/vimdiff: add vimdiff1 merge tool variant
Shubham Verma (10):
t7001: modernize test formatting
t7001: indent with TABs instead of spaces
t7001: remove unnecessary blank lines
t7001: modernize subshell formatting
t7001: remove whitespace after redirect operators
t7001: avoid using `cd` outside of subshells
t7001: use '>' rather than 'touch'
t7001: put each command on a separate line
t7001: use here-docs instead of echo
t7001: use `test` rather than `[`
Taylor Blau (40):
ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
pack-bitmap.c: check reads more aggressively when loading
pack-bitmap: factor out 'bitmap_for_commit()'
pack-bitmap: factor out 'add_commit_to_bitmap()'
p7519: allow running without watchman prereq
Documentation/git-clone.txt: document race with --local
pack-revindex: introduce a new API
write_reuse_object(): convert to new revindex API
write_reused_pack_one(): convert to new revindex API
write_reused_pack_verbatim(): convert to new revindex API
check_object(): convert to new revindex API
bitmap_position_packfile(): convert to new revindex API
show_objects_for_type(): convert to new revindex API
get_size_by_pos(): convert to new revindex API
try_partial_reuse(): convert to new revindex API
rebuild_existing_bitmaps(): convert to new revindex API
get_delta_base_oid(): convert to new revindex API
retry_bad_packed_offset(): convert to new revindex API
packed_object_info(): convert to new revindex API
unpack_entry(): convert to new revindex API
for_each_object_in_pack(): convert to new revindex API
builtin/gc.c: guess the size of the revindex
pack-revindex: remove unused 'find_pack_revindex()'
pack-revindex: remove unused 'find_revindex_position()'
pack-revindex: hide the definition of 'revindex_entry'
pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
refs: expose 'for_each_fullref_in_prefixes'
ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
packfile: prepare for the existence of '*.rev' files
pack-write.c: prepare to write 'pack-*.rev' files
builtin/index-pack.c: allow stripping arbitrary extensions
builtin/index-pack.c: write reverse indexes
builtin/pack-objects.c: respect 'pack.writeReverseIndex'
Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
t: prepare for GIT_TEST_WRITE_REV_INDEX
t: support GIT_TEST_WRITE_REV_INDEX
pack-revindex: ensure that on-disk reverse indexes are given precedence
t5325: check both on-disk and in-memory reverse index
.github/workflows/main.yml: run static-analysis on bionic
commit-graph.c: display correct number of chunks when writing
Thomas Ackermann (7):
doc: fix some typos
doc hash-function-transition: fix asciidoc output
doc hash-function-transition: use SHA-1 and SHA-256 consistently
doc hash-function-transition: use upper case consistently
doc hash-function-transition: fix incomplete sentence
doc hash-function-transition: move rationale upwards
doc: use https links
Torsten Bögershausen (1):
MacOS: precompose_argv_prefix()
Utku Gultopu (1):
doc: remove "directory cache" from man pages
Vasyl Vavrychuk (1):
git-send-email.txt: mention less secure app access with Gmail
ZheNing Hu (5):
builtin/*: update usage format
ls_files.c: bugfix for --deleted and --modified
ls_files.c: consolidate two for loops into one
ls-files.c: add --deduplicate option
difftool.c: learn a new way start at specified file
brian m. carlson (9):
abspath: add a function to resolve paths with missing components
rev-parse: add option for absolute or relative path formatting
docs: rephrase and clarify the git status --short format
ref-filter: switch some uses of unsigned long to size_t
commit: ignore additional signatures when parsing signed commits
gpg-interface: improve interface for parsing tags
commit: allow parsing arbitrary buffers with headers
ref-filter: hoist signature parsing
gpg-interface: remove other signature headers before verifying
Ævar Arnfjörð Bjarmason (100):
pretty format %(trailers) test: split a long line
pretty format %(trailers) doc: avoid repetition
pretty-format %(trailers): fix broken standalone "valueonly"
pretty format %(trailers): add a "keyonly"
pretty format %(trailers): add a "key_value_separator"
mktag doc: say <hash> not <sha1>
mktag doc: grammar fix, when exists -> when it exists
CoC: Update word-wrapping to match upstream
mktag doc: update to explain why to use this
mktag tests: don't needlessly use a subshell
mktag tests: use "test_commit" helper
mktag tests: remove needless SHA-1 hardcoding
mktag tests: don't redirect stderr to a file needlessly
mktag tests: don't create "mytag" twice
mktag tests: run "fsck" after creating "mytag"
mktag tests: stress test whitespace handling
mktag tests: test "hash-object" compatibility
mktag tests: improve verify_object() test coverage
mktag tests: test verify_object() with replaced objects
mktag: use default strbuf_read() hint
mktag: remove redundant braces in one-line body "if"
mktag: use puts(str) instead of printf("%s\n", str)
mktag: use fsck instead of custom verify_tag()
fsck: make fsck_config() re-usable
mktag: allow turning off fsck.extraHeaderEntry
mktag: allow omitting the header/body \n separator
mktag: convert to parse-options
mktag: mark strings for translation
mktag: add a --[no-]strict option
branch: change "--local" to "--list" in comment
branch tests: add to --sort tests
ref-filter: add braces to if/else if/else chain
ref-filter: move "cmp_fn" assignment into "else if" arm
ref-filter: move ref_sorting flags to a bitfield
branch: sort detached HEAD based on a flag
branch: show "HEAD detached" first under reverse sort
Makefile: remove a warning about old GETTEXT_POISON flag
gettext.c: remove/reword a mostly-useless comment
mailmap doc: create a new "gitmailmap(5)" man page
mailmap doc: quote config variables `like.this`
check-mailmap doc: note config options
mailmap doc: start by mentioning the comment syntax
mailmap tests: use our preferred whitespace syntax
mailmap tests: modernize syntax & test idioms
mailmap tests: improve --stdin tests
mailmap tests: remove redundant entry in test
mailmap tests: add a test for "not a blob" error
mailmap tests: get rid of overly complex blame fuzzing
mailmap: test for silent exiting on missing file/blob
test-lib functions: expand "test_commit" comment template
test-lib functions: document arguments to test_commit
test-lib functions: add --author support to test_commit
test-lib functions: add an --append option to test_commit
tests: refactor a few tests to use "test_commit --append"
mailmap doc + tests: add better examples & test them
mailmap tests: add a test for comment syntax
mailmap tests: add tests for whitespace syntax
mailmap tests: add tests for empty "<>" syntax
mailmap doc + tests: document and test for case-insensitivity
shortlog: remove unused(?) "repo-abbrev" feature
CoC: update to version 2.0 + local changes
fsck doc: remove ancient out-of-date diagnostics
ci: remove GETTEXT_POISON jobs
tests: remove support for GIT_TEST_GETTEXT_POISON
tests: remove uses of GIT_TEST_GETTEXT_POISON=false
cache-tree tests: refactor for modern test style
cache-tree tests: remove unused $2 parameter
cache-tree tests: use a sub-shell with less indirection
cache-tree tests: explicitly test HEAD and index differences
git svn mergeinfo tests: modernize redirection & quoting style
git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
upload-pack tests: avoid a non-zero "grep" exit status
archive tests: use a cheaper "zipinfo -h" invocation to get header
rm tests: actually test for SIGPIPE in SIGPIPE test
config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
Remove support for v1 of the PCRE library
grep/pcre2 tests: don't rely on invalid UTF-8 data test
grep/pcre2: better support invalid UTF-8 haystacks
grep/log: remove hidden --debug and --grep-debug options
pager: refactor wait_for_pager() function
pager: test for exit code with and without SIGPIPE
run-command: add braces for "if" block in wait_or_whine()
pager: properly log pager exit code when signalled
test-lib: remove check_var_migration
test lib: change "error" to "BUG" as appropriate
test-lib-functions: move test_set_index_version() to its user
test-lib-functions: remove generate_zero_bytes() wrapper
test libs: rename bundle helper to "lib-bundle.sh"
test libs: rename gitweb-lib.sh to lib-gitweb.sh
test-lib-functions: move function to lib-bitmap.sh
t/.gitattributes: sort lines
tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
tests: remove most uses of C_LOCALE_OUTPUT
tests: remove last uses of C_LOCALE_OUTPUT
tests: remove most uses of test_i18ncmp
diff: add an API for deferred freeing
diff: plug memory leak from regcomp() on {log,diff} -I
test libs: rename "diff-lib" to "lib-diff"
test-lib-functions: remove bug-inducing "diagnostics" helper param
test-lib-functions: assert correct parameter count
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.31.0-rc0
@ 2021-02-26 2:03 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-02-26 2:03 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.31.0-rc0 is now available for
testing at the usual places. It is comprised of 568 non-merge
commits since v2.30.0, contributed by 58 people, 18 of which are
new faces [*].
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.31.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.30.0 are as follows.
Welcome to the Git development community!
Andreas Bühmann, Andrew Klotz, Andrzej Hunt, Antonio Russo,
Arnaud Morin, Christian Walther, Clement Moyroud, Daniel Levin,
Daniel Troger, Harold Kim, Jacob Vosmaer, LeSeulArtichaut,
Sangeeta Jain, Seth House, Utku Gultopu, Vasyl Vavrychuk,
Vojtěch Knyttl, and ZheNing Hu.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
Alex Henrie, brian m. carlson, Christian Couder, Denton Liu,
Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
Felipe Contreras, Jeff King, Jiang Xin, Joey Salazar, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano, Kevin
Daudt, Lars Schneider, Martin Ågren, Martin von Zweigbergk,
Matheus Tavares, Michael Haggerty, Patrick Steinhardt, Paul
Jolly, Peter Kaestle, Phil Hord, Philippe Blain, Phillip Wood,
Pranit Bauva, Rafael Silva, René Scharfe, Ross Light, Sergey
Organov, SZEDER Gábor, Taylor Blau, Thomas Ackermann, and
Torsten Bögershausen.
[*] We are counting not just the authorship contribution but
mention for issue reporting, testing and reviewing in the
commits added during this cycle are all counted.
----------------------------------------------------------------
Git 2.31 Release Notes (draft)
==============================
Updates since v2.30
-------------------
Backward incompatible and other important changes
* The "pack-redundant" command, which has been left stale with almost
unusable performance issues, now warns loudly when it gets used, as
we no longer want to recommend its use (instead just "repack -d"
instead).
* The development community has adopted Contributor Covenant v2.0 to
update from v1.4 that we have been using.
* The support for deprecated PCRE1 library has been dropped.
UI, Workflows & Features
* The "--format=%(trailers)" mechanism gets enhanced to make it
easier to design output for machine consumption.
* When a user does not tell "git pull" to use rebase or merge, the
command gives a loud message telling a user to choose between
rebase or merge but creates a merge anyway, forcing users who would
want to rebase to redo the operation. Fix an early part of this
problem by tightening the condition to give the message---there is
no reason to stop or force the user to choose between rebase or
merge if the history fast-forwards.
* The configuration variable 'core.abbrev' can be set to 'no' to
force no abbreviation regardless of the hash algorithm.
* "git rev-parse" can be explicitly told to give output as absolute
or relative path with the `--path-format=(absolute|relative)` option.
* Bash completion (in contrib/) update to make it easier for
end-users to add completion for their custom "git" subcommands.
* "git maintenance" learned to drive scheduled maintenance on
platforms whose native scheduling methods are not 'cron'.
* After expiring a reflog and making a single commit, the reflog for
the branch would record a single entry that knows both @{0} and
@{1}, but we failed to answer "what commit were we on?", i.e. @{1}
* "git bundle" learns "--stdin" option to read its refs from the
standard input. Also, it now does not lose refs whey they point
at the same object.
* "git log" learned a new "--diff-merges=<how>" option.
* "git ls-files" can and does show multiple entries when the index is
unmerged, which is a source for confusion unless -s/-u option is in
use. A new option --deduplicate has been introduced.
* `git worktree list` now annotates worktrees as prunable, shows
locked and prunable attributes in --porcelain mode, and gained
a --verbose option.
* "git clone" tries to locally check out the branch pointed at by
HEAD of the remote repository after it is done, but the protocol
did not convey the information necessary to do so when copying an
empty repository. The protocol v2 learned how to do so.
* There are other ways than ".." for a single token to denote a
"commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
range-diff" did not understand them.
* The "git range-diff" command learned "--(left|right)-only" option
to show only one side of the compared range.
* "git mergetool" feeds three versions (base, local and remote) of
a conflicted path unmodified. The command learned to optionally
prepare these files with unconflicted parts already resolved.
* The .mailmap is documented to be read only from the root level of a
working tree, but a stray file in a bare repository also was read
by accident, which has been corrected.
* "git maintenance" tool learned a new "pack-refs" maintenance task.
* The error message given when a configuration variable that is
expected to have a boolean value has been improved.
* Signed commits and tags now allow verification of objects, whose
two object names (one in SHA-1, the other in SHA-256) are both
signed.
* "git rev-list" command learned "--disk-usage" option.
* "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
discard diff output for early paths or move them to the end of the
output.
* "git difftool" learned "--skip-to=<path>" option to restart an
interrupted session from an arbitrary path.
* "git grep" has been tweaked to be limited to the sparse checkout
paths.
* "git rebase --[no-]fork-point" gained a configuration variable
rebase.forkPoint so that users do not have to keep specifying a
non-default setting.
Performance, Internal Implementation, Development Support etc.
* A 3-year old test that was not testing anything useful has been
corrected.
* Retire more names with "sha1" in it.
* The topological walk codepath is covered by new trace2 stats.
* Update the Code-of-conduct to version 2.0 from the upstream (we've
been using version 1.4).
* "git mktag" validates its input using its own rules before writing
a tag object---it has been updated to share the logic with "git
fsck".
* Two new ways to feed configuration variable-value pairs via
environment variables have been introduced, and the way
GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
to make it more robust.
* Tests have been updated so that they do not to get affected by the
name of the default branch "git init" creates.
* "git fetch" learns to treat ref updates atomically in all-or-none
fashion, just like "git push" does, with the new "--atomic" option.
* The peel_ref() API has been replaced with peel_iterated_oid().
* The .use_shell flag in struct child_process that is passed to
run_command() API has been clarified with a bit more documentation.
* Document, clean-up and optimize the code around the cache-tree
extension in the index.
* The ls-refs protocol operation has been optimized to narrow the
sub-hierarchy of refs/ it walks to produce response.
* When removing many branches and tags, the code used to do so one
ref at a time. There is another API it can use to delete multiple
refs, and it makes quite a lot of performance difference when the
refs are packed.
* The "pack-objects" command needs to iterate over all the tags when
automatic tag following is enabled, but it actually iterated over
all refs and then discarded everything outside "refs/tags/"
hierarchy, which was quite wasteful.
* A perf script was made more portable.
* Our setting of GitHub CI test jobs were a bit too eager to give up
once there is even one failure found. Tweak the knob to allow
other jobs keep running even when we see a failure, so that we can
find more failures in a single run.
* We've carried compatibility codepaths for compilers without
variadic macros for quite some time, but the world may be ready for
them to be removed. Force compilation failure on exotic platforms
where variadic macros are not available to find out who screams in
such a way that we can easily revert if it turns out that the world
is not yet ready.
* Code clean-up to ensure our use of hashtables using object names as
keys use the "struct object_id" objects, not the raw hash values.
* Lose the debugging aid that may have been useful in the past, but
no longer is, in the "grep" codepaths.
* Some pretty-format specifiers do not need the data in commit object
(e.g. "%H"), but we were over-eager to load and parse it, which has
been made even lazier.
* Get rid of "GETTEXT_POISON" support altogether, which may or may
not be controversial.
* Introduce an on-disk file to record revindex for packdata, which
traditionally was always created on the fly and only in-core.
* The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
* Piecemeal of rewrite of "git bisect" in C continues.
* When a pager spawned by us exited, the trace log did not record its
exit status correctly, which has been corrected.
* Removal of GIT_TEST_GETTEXT_POISON continues.
* The code to implement "git merge-base --independent" was poorly
done and was kept from the very beginning of the feature.
Fixes since v2.30
-----------------
* Diagnose command line error of "git rebase" early.
* Clean up option descriptions in "git cmd --help".
* "git stash" did not work well in a sparsely checked out working
tree.
* Some tests expect that "ls -l" output has either '-' or 'x' for
group executable bit, but setgid bit can be inherited from parent
directory and make these fields 'S' or 's' instead, causing test
failures.
* "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
any repository when the configuration variable <var> is not defined
even once.
* Fix 2.29 regression where "git mergetool --tool-help" fails to list
all the available tools.
* Fix for procedure to building CI test environment for mac.
* The implementation of "git branch --sort" wrt the detached HEAD
display has always been hacky, which has been cleaned up.
* Newline characters in the host and path part of git:// URL are
now forbidden.
* "git diff" showed a submodule working tree with untracked cruft as
"Submodule commit <objectname>-dirty", but a natural expectation is
that the "-dirty" indicator would align with "git describe --dirty",
which does not consider having untracked files in the working tree
as source of dirtiness. The inconsistency has been fixed.
* When more than one commit with the same patch ID appears on one
side, "git log --cherry-pick A...B" did not exclude them all when a
commit with the same patch ID appears on the other side. Now it
does.
* Documentation for "git fsck" lost stale bits that has become
incorrect.
* Doc fix for packfile URI feature.
* When "git rebase -i" processes "fixup" insn, there is no reason to
clean up the commit log message, but we did the usual stripspace
processing. This has been corrected.
(merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).
* Fix in passing custom args from "git clone" to "upload-pack" on the
other side.
(merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).
* The command line completion (in contrib/) completed "git branch -d"
with branch names, but "git branch -D" offered tagnames in addition,
which has been corrected. "git branch -M" had the same problem.
(merge 27dc071b9a jk/complete-branch-force-delete later to maint).
* When commands are started from a subdirectory, they may have to
compare the path to the subdirectory (called prefix and found out
from $(pwd)) with the tracked paths. On macOS, $(pwd) and
readdir() yield decomposed path, while the tracked paths are
usually normalized to the precomposed form, causing mismatch. This
has been fixed by taking the same approach used to normalize the
command line arguments.
(merge 5c327502db tb/precompose-prefix-too later to maint).
* Even though invocations of "die()" were logged to the trace2
system, "BUG()"s were not, which has been corrected.
(merge 0a9dde4a04 jt/trace2-BUG later to maint).
* "git grep --untracked" is meant to be "let's ALSO find in these
files on the filesystem" when looking for matches in the working
tree files, and does not make any sense if the primary search is
done against the index, or the tree objects. The "--cached" and
"--untracked" options have been marked as mutually incompatible.
(merge 0c5d83b248 mt/grep-cached-untracked later to maint).
* Fix "git fsck --name-objects" which apparently has not been used by
anybody who is motivated enough to report breakage.
(merge e89f89361c js/fsck-name-objects-fix later to maint).
* Avoid individual tests in t5411 from getting affected by each other
by forcing them to use separate output files during the test.
(merge 822ee894f6 jx/t5411-unique-filenames later to maint).
* Test to make sure "git rev-parse one-thing one-thing" gives
the same thing twice (when one-thing is --since=X).
(merge a5cdca4520 ew/rev-parse-since-test later to maint).
* When certain features (e.g. grafts) used in the repository are
incompatible with the use of the commit-graph, we used to silently
turned commit-graph off; we now tell the user what we are doing.
(merge c85eec7fc3 js/commit-graph-warning later to maint).
* Objects that lost references can be pruned away, even when they
have notes attached to it (and these notes will become dangling,
which in turn can be pruned with "git notes prune"). This has been
clarified in the documentation.
(merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).
* The error codepath around the "--temp/--prefix" feature of "git
checkout-index" has been improved.
(merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).
* The "git maintenance register" command had trouble registering bare
repositories, which had been corrected.
* A handful of multi-word configuration variable names in
documentation that are spelled in all lowercase have been corrected
to use the more canonical camelCase.
(merge 7dd0eaa39c dl/doc-config-camelcase later to maint).
* "git push $there --delete ''" should have been diagnosed as an
error, but instead turned into a matching push, which has been
corrected.
(merge 20e416409f jc/push-delete-nothing later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
(merge 9d336655ba js/doc-proto-v2-response-end later to maint).
(merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
(merge 3a837b58e3 cw/pack-config-doc later to maint).
(merge 01168a9d89 ug/doc-commit-approxidate later to maint).
(merge b865734760 js/params-vs-args later to maint).
----------------------------------------------------------------
Changes since v2.30.0 are as follows:
Abhishek Kumar (11):
commit-graph: fix regression when computing Bloom filters
revision: parse parent in indegree_walk_step()
commit-graph: consolidate fill_commit_graph_info
t6600-test-reach: generalize *_three_modes
commit-graph: add a slab to store topological levels
commit-graph: return 64-bit generation number
commit-graph: implement corrected commit date
commit-graph: implement generation data chunk
commit-graph: use generation v2 only if entire chain does
commit-reach: use corrected commit dates in paint_down_to_common()
doc: add corrected commit date info
Adam Dinwoodie (1):
t4129: fix setfacl-related permissions failure
Alex Henrie (1):
rebase: add a config option for --no-fork-point
Andrew Klotz (1):
config: improve error message for boolean config
Andrzej Hunt (1):
commit-graph: avoid leaking topo_levels slab in write_commit_graph()
Antonio Russo (1):
t6016: move to lib-log-graph.sh framework
Christian Couder (3):
fetch-pack: rename helper to create_promisor_file()
fetch-pack: refactor writing promisor file
pack-write: die on error in write_promisor_file()
Christian Walther (1):
doc: mention bigFileThreshold for packing
Daniel Levin (1):
git-p4: fix syncing file types with pattern
Denton Liu (12):
refs: factor out set_read_ref_cutoffs()
refs: allow @{n} to work with n-sized reflog
test-lib-functions.sh: fix usage for test_commit()
t4203: stop losing return codes of git commands
git-stash.txt: be explicit about subcommand options
t3905: remove spaces after redirect operators
t3905: move all commands into test cases
t3905: remove nested git in command substitution
t3905: replace test -s with test_file_not_empty
t3905: use test_cmp() to check file contents
stash: declare ref_stash as an array
i18n.txt: camel case and monospace "i18n.commitEncoding"
Derrick Stolee (48):
maintenance: extract platform-specific scheduling
maintenance: include 'cron' details in docs
pack-bitmap-write: fill bitmap with commit history
bitmap: implement bitmap_is_subset()
commit: implement commit_list_contains()
t5310: add branch-based checks
pack-bitmap-write: rename children to reverse_edges
pack-bitmap-write: build fewer intermediate bitmaps
pack-bitmap-write: use existing bitmaps
pack-bitmap-write: relax unique revwalk condition
pack-bitmap-write: better reuse bitmaps
revision: trace topo-walk statistics
tree-walk: report recursion counts
unpack-trees: add trace2 regions
cache-tree: use trace2 in cache_tree_update()
maintenance: use launchctl on macOS
maintenance: use Windows scheduled tasks
for-each-repo: do nothing on empty config
cache-tree: trace regions for I/O
cache-tree: trace regions for prime_cache_tree
index-format: use 'cache tree' over 'cached tree'
index-format: update preamble to cache tree extension
index-format: discuss recursion of cache-tree better
cache-tree: speed up consecutive path comparisons
maintenance: set log.excludeDecoration durin prefetch
t7900: clean up some broken refs
cache-tree: clean up cache_tree_update()
cache-tree: simplify verify_cache() prototype
cache-tree: extract subtree_pos()
fsmonitor: de-duplicate BUG()s around dirty bits
repository: add repo reference to index_state
name-hash: use trace2 regions for init
sparse-checkout: load sparse-checkout patterns
test-lib: test_region looks for trace2 regions
t1092: test interesting sparse-checkout scenarios
commit-reach: reduce requirements for remove_redundant()
commit-graph: use repo_parse_commit
commit-graph: always parse before commit_graph_data_at()
commit-graph: validate layers for generation data
commit-graph: compute generations separately
commit-graph: be extra careful about mixed generations
commit-graph: prepare commit graph
maintenance: add pack-refs task
maintenance: incremental strategy runs pack-refs weekly
commit-reach: use one walk in remove_redundant()
commit-reach: move compare_commits_by_gen
commit-reach: use heuristic in remove_redundant()
commit-reach: stale commits may prune generation further
Elijah Newren (84):
t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
stash: remove unnecessary process forking
stash: fix stash application in sparse-checkouts
merge-ort: setup basic internal data structures
merge-ort: add some high-level algorithm structure
merge-ort: port merge_start() from merge-recursive
merge-ort: use histogram diff
merge-ort: add an err() function similar to one from merge-recursive
merge-ort: implement a very basic collect_merge_info()
merge-ort: avoid repeating fill_tree_descriptor() on the same tree
merge-ort: compute a few more useful fields for collect_merge_info
merge-ort: record stage and auxiliary info for every path
merge-ort: avoid recursing into identical trees
merge-ort: add a preliminary simple process_entries() implementation
merge-ort: have process_entries operate in a defined order
merge-ort: step 1 of tree writing -- record basenames, modes, and oids
merge-ort: step 2 of tree writing -- function to create tree object
merge-ort: step 3 of tree writing -- handling subdirectories as we go
merge-ort: basic outline for merge_switch_to_result()
merge-ort: add implementation of checkout()
tree: enable cmp_cache_name_compare() to be used elsewhere
merge-ort: add implementation of record_conflicted_index_entries()
merge-ort: free data structures in merge_finalize()
merge-ort: add a few includes
merge-ort: add a clear_internal_opts helper
merge-ort: add a path_conflict field to merge_options_internal
merge-ort: add a paths_to_free field to merge_options_internal
merge-ort: add function grouping comments
merge-ort: add die-not-implemented stub handle_content_merge() function
merge-ort: add modify/delete handling and delayed output processing
merge-ort: add basic data structures for handling renames
merge-ort: add initial outline for basic rename detection
merge-ort: implement detect_regular_renames()
merge-ort: implement compare_pairs() and collect_renames()
merge-ort: add basic outline for process_renames()
diffcore-rename: rename num_create to num_destinations
diffcore-rename: avoid usage of global in too_many_rename_candidates()
diffcore-rename: simplify limit check
diffcore-rename: reduce jumpiness in progress counters
t4058: add more tests and documentation for duplicate tree entry handling
t4058: explore duplicate tree entry handling in a bit more detail
diffcore-rename: simplify and accelerate register_rename_src()
diffcore-rename: accelerate rename_dst setup
merge-ort: add implementation of both sides renaming identically
merge-ort: add implementation of both sides renaming differently
merge-ort: add implementation of rename/delete conflicts
merge-ort: add implementation of rename collisions
merge-ort: add implementation of normal rename handling
merge-ort: add implementation of type-changed rename handling
commit: move reverse_commit_list() from merge-recursive
merge-ort: copy a few small helper functions from merge-recursive.c
merge-ort: make clear_internal_opts() aware of partial clearing
merge-ort: implement merge_incore_recursive()
merge-ort: handle D/F conflict where directory disappears due to merge
merge-ort: handle directory/file conflicts that remain
merge-ort: implement unique_path() helper
merge-ort: handle book-keeping around two- and three-way content merge
merge-ort: flesh out implementation of handle_content_merge()
merge-ort: copy and adapt merge_3way() from merge-recursive.c
merge-ort: copy and adapt merge_submodule() from merge-recursive.c
merge-ort: implement format_commit()
merge-ort: copy find_first_merges() implementation from merge-recursive.c
merge-ort: add handling for different types of files at same path
diffcore-rename: remove unnecessary duplicate entry checks
merge-ort: add new data structures for directory rename detection
merge-ort: initialize and free new directory rename data structures
merge-ort: collect which directories are removed in dirs_removed
merge-ort: add outline for computing directory renames
merge-ort: add outline of get_provisional_directory_renames()
merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
merge-ort: implement compute_rename_counts()
merge-ort: implement handle_directory_level_conflicts()
merge-ort: modify collect_renames() for directory rename handling
merge-ort: implement compute_collisions()
merge-ort: implement apply_dir_rename() and check_dir_renamed()
merge-ort: implement check_for_directory_rename()
merge-ort: implement handle_path_level_conflicts()
merge-ort: add a new toplevel_dir field
merge-ort: implement apply_directory_rename_modifications()
merge-ort: process_renames() now needs more defensiveness
merge-ort: fix a directory rename detection bug
merge-ort: fix massive leak
merge-ort: ignore the directory rename split conflict for now
merge-ort: begin performance work; instrument with trace2_region_* calls
Eric Sunshine (3):
worktree: teach `repair` to fix multi-directional breakage
t/perf: avoid unnecessary test_export() recursion
maintenance: fix incorrect `maintenance.repo` path with bare repository
Eric Wong (2):
core.abbrev=no disables abbreviations
t1500: ensure current --since= behavior remains
Felipe Contreras (8):
pull: refactor fast-forward check
pull: give the advice for choosing rebase/merge much later
pull: display default warning only when non-ff
test: bisect-porcelain: fix location of files
completion: bash: add __git_have_func helper
completion: bash: improve function detection
test: completion: add tests for __git_complete
completion: add proper public __git_complete
Jacob Vosmaer (4):
builtin/pack-objects.c: avoid iterating all refs
ls-refs.c: initialize 'prefixes' before using it
upload-pack.c: fix filter spec quoting bug
t5544: clarify 'hook works with partial clone' test
Jeff King (43):
pack-bitmap: fix header size check
pack-bitmap: bounds-check size of cache extension
t5310: drop size of truncated ewah bitmap
rev-list: die when --test-bitmap detects a mismatch
ewah: factor out bitmap growth
ewah: make bitmap growth less aggressive
ewah: implement bitmap_or()
ewah: add bitmap_dup() function
pack-bitmap-write: reimplement bitmap writing
pack-bitmap-write: pass ownership of intermediate bitmaps
pack-bitmap-write: ignore BITMAP_FLAG_REUSE
git_connect_git(): forbid newlines in host and path
fsck: reject .gitmodules git:// urls with newlines
t5516: loosen "not our ref" error check
patch-ids: handle duplicate hashmap entries
quote: make sq_dequote_step() a public function
for_each_object_in_pack(): clarify pack vs index ordering
config: parse more robust format in GIT_CONFIG_PARAMETERS
refs: switch peel_ref() to peel_iterated_oid()
run-command: document use_shell option
git-svn tests: rewrite brittle tests to use "--[no-]merges".
git-compat-util: always enable variadic macros
commit_graft_pos(): take an oid instead of a bare hash
rerere: check dirname format while iterating rr_cache directory
rerere: tighten rr-cache dirname check
rerere: use strmap to store rerere directories
hash_pos(): convert to oid_pos()
oid_pos(): access table through const pointers
t0000: keep clean-up tests together
t0000: run prereq tests inside sub-test
t0000: run cleaning test inside sub-test
t0000: consistently use single quotes for outer tests
pretty: lazy-load commit data when expanding user-format
p5303: avoid sed GNU-ism
completion: treat "branch -D" the same way as "branch -d"
completion: handle other variants of "branch -m"
doc/git-branch: fix awkward wording for "-c"
t: add --no-tag option to test_commit
mailmap: only look for .mailmap in work tree
rev-list: add --disk-usage option for calculating disk usage
docs/rev-list: add an examples section
docs/rev-list: add some examples of --disk-usage
doc: mention approxidates for git-commit --date
Jiang Xin (5):
test: add helper functions for git-bundle
bundle: lost objects when removing duplicate pendings
bundle: arguments can be read from stdin
t5411: use different out file to prevent overwriting
t5411: refactor check of refs using test_cmp_refs
Joey Salazar (1):
doc: fix naming of response-end-pkt
Johannes Schindelin (43):
tests: mark tests relying on the current default for `init.defaultBranch`
t0060: preemptively adjust alignment
t[01]*: adjust the references to the default branch name "main"
t2*: adjust the references to the default branch name "main"
t3[0-3]*: adjust the references to the default branch name "main"
t3416: preemptively adjust alignment in a comment
t34*: adjust the references to the default branch name "main"
t3[5-9]*: adjust the references to the default branch name "main"
t4*: adjust the references to the default branch name "main"
t5323: prepare centered comment for `master` -> `main`
t5[0-4]*: adjust the references to the default branch name "main"
t5503: prepare aligned comment for replacing `master` with `main`
t550*: adjust the references to the default branch name "main"
t551*: adjust the references to the default branch name "main"
t55[23]*: adjust the references to the default branch name "main"
t55[4-9]*: adjust the references to the default branch name "main"
t5[6-9]*: adjust the references to the default branch name "main"
t6[0-3]*: adjust the references to the default branch name "main"
t64*: preemptively adjust alignment to prepare for `master` -> `main`
t6[4-9]*: adjust the references to the default branch name "main"
t7[0-4]*: adjust the references to the default branch name "main"
t7[5-9]*: adjust the references to the default branch name "main"
t8*: adjust the references to the default branch name "main"
t9[0-4]*: adjust the references to the default branch name "main"
t9[5-7]*: adjust the references to the default branch name "main"
tests(git-p4): transition to the default branch name `main`
t99*: adjust the references to the default branch name "main"
tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
SKIP_DASHED_BUILT_INS: respect `config.mak`
range-diff/format-patch: refactor check for commit range
rebase -i: do leave commit message intact in fixup! chains
range-diff: avoid leaking memory in two error code paths
range-diff: libify the read_patches() function again
range-diff: simplify code spawning `git log`
range-diff: combine all options in a single data structure
range-diff: move the diffopt initialization down one layer
range-diff: offer --left-only/--right-only options
range-diff/format-patch: handle commit ranges other than A..B
range-diff(docs): explain how to specify commit ranges
t1450: robustify `remove_object()`
fsck --name-objects: be more careful parsing generation numbers
reflog expire --stale-fix: be generous about missing objects
commit-graph: when incompatible with graphs, indicate why
Johannes Sixt (2):
annotate-tests: quote variable expansions containing path names
replace "parameters" by "arguments" in error messages
Jonathan Tan (5):
Doc: clarify contents of packfile sent as URI
ls-refs: report unborn targets of symrefs
connect, transport: encapsulate arg in struct
clone: respect remote unborn HEAD
usage: trace2 BUG() invocations
Junio C Hamano (26):
pack-redundant: gauge the usage before proposing its removal
pull: get rid of unnecessary global variable
pull: correct condition to trigger non-ff advice
CoC: explicitly take any whitespace breakage
parse-options: format argh like error messages
The first batch in 2.31 cycle
SubmittingPatches: tighten wording on "sign-off" procedure
ci/install-depends: attempt to fix "brew cask" stuff
t4203: make blame output massaging more robust
The second batch
The third batch
The fourth batch
The fifth batch
Prepare for 2.30.1
The sixth batch
Git 2.30.1
The seventh batch
The eighth batch
diff: --{rotate,skip}-to=<path>
The ninth batch
Documentation: typofix --column description
The tenth batch
push: do not turn --delete '' into a matching push
blame-options.txt: camelcase blame.blankBoundary
index-format doc: camelCase core.excludesFile
Git 2.31-rc0
Martin von Zweigbergk (1):
docs: clarify that refs/notes/ do not keep the attached objects alive
Martin Ågren (16):
t1300: remove duplicate test for `--file ../foo`
t1300: remove duplicate test for `--file no-such-file`
t1300: don't needlessly work with `core.foo` configs
pack-format.txt: document sizes at start of delta data
object-name.c: rename from sha1-name.c
object-file.c: rename from sha1-file.c
sha1-lookup: rename `sha1_pos()` as `hash_pos()`
hash-lookup: rename from sha1-lookup
builtin/gc: don't peek into `struct lock_file`
commit-graph: don't peek into `struct lock_file`
midx: don't peek into `struct lock_file`
refs/files-backend: don't peek into `struct lock_file`
read-cache: try not to peek into `struct {lock_,temp}file`
rev-list-options.txt: fix rendering of bonus paragraph
git.txt: fix monospace rendering
gitmailmap.txt: fix rendering of e-mail addresses
Matheus Tavares (8):
t4129: don't fail if setgid is set in the test directory
grep: error out if --untracked is used with --cached
grep: honor sparse-checkout on working tree searches
write_entry(): fix misuses of `path` in error messages
checkout-index: omit entries with no tempname from --temp output
add --chmod: don't update index when --dry-run is used
add: mark --chmod error string for translation
add: propagate --chmod errors to exit status
Patrick Steinhardt (11):
git: add `--super-prefix` to usage string
config: add new way to pass config via `--config-env`
config: extract function to parse config pairs
fetch: extract writing to FETCH_HEAD
fetch: use strbuf to format FETCH_HEAD updates
fetch: refactor `s_update_ref` to use common exit path
fetch: allow passing a transaction to `s_update_ref()`
fetch: implement support for atomic reference updates
config: store "git -c" variables using more robust format
environment: make `getenv_safe()` a public function
config: allow specifying config entries via envvar pairs
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Phil Hord (1):
use delete_refs when deleting tags or branches
Philippe Blain (4):
gitmodules.txt: fix 'GIT_WORK_TREE' variable name
mergetool--lib: fix '--tool-help' to correctly show available tools
mailmap doc: use correct environment variable 'GIT_WORK_TREE'
ci: do not cancel all jobs of a matrix if one fails
Pranit Bauva (7):
bisect--helper: reimplement `bisect_log` shell function in C
bisect--helper: reimplement `bisect_replay` shell function in C
bisect--helper: retire `--bisect-write` subcommand
bisect--helper: use `res` instead of return in BISECT_RESET case option
bisect--helper: retire `--bisect-auto-next` subcommand
bisect--helper: reimplement `bisect_skip` shell function in C
bisect--helper: retire `--check-and-set-terms` subcommand
Rafael Silva (8):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
t2402: ensure locked worktree is properly cleaned up
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
blame: remove unnecessary use of get_commit_info()
René Scharfe (2):
rebase: verify commit parameter
cache-tree: use ce_namelen() instead of strlen()
SZEDER Gábor (2):
t7800-difftool: don't accidentally match tmp dirs
test-lib: prevent '--stress-jobs=X' from being ignored
Sangeeta Jain (1):
diff: do not show submodule with untracked files as "-dirty"
Sergey Organov (32):
revision: factor out parsing of diff-merge related options
revision: factor out setup of diff-merge related settings
revision: factor out initialization of diff-merge related settings
revision: provide implementation for diff merges tweaks
revision: move diff merges functions to its own diff-merges.c
diff-merges: rename all functions to have common prefix
diff-merges: move checks for first_parent_only out of the module
diff-merges: rename diff_merges_default_to_enable() to match semantics
diff-merges: re-arrange functions to match the order they are called in
diff-merges: new function diff_merges_suppress()
diff-merges: new function diff_merges_set_dense_combined_if_unset()
diff-merges: introduce revs->first_parent_merges flag
diff-merges: handle imply -p on -c/--cc logic for log.c
diff-merges: revise revs->diff flag handling
t4013: support test_expect_failure through ':failure' magic
t4013: add tests for -m failing to override -c/--cc
diff-merges: fix -m to properly override -c/--cc
diff-merges: split 'ignore_merges' field
diff-merges: group diff-merge flags next to each other inside 'rev_info'
diff-merges: get rid of now empty diff_merges_init_revs()
diff-merges: refactor opt settings into separate functions
diff-merges: make -m/-c/--cc explicitly mutually exclusive
diff-merges: implement new values for --diff-merges
diff-merges: do not imply -p for new options
diff-merges: let new options enable diff without -p
diff-merges: add old mnemonic counterparts to --diff-merges
diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
doc/git-log: describe new --diff-merges options
doc/diff-generate-patch: mention new --diff-merges option
doc/rev-list-options: document --first-parent changes merges format
doc/git-show: include --diff-merges description
t4013: add tests for --diff-merges=first-parent
Seth House (4):
mergetool: add hideResolved configuration
mergetool: break setup_tool out into separate initialization function
mergetool: add per-tool support and overrides for the hideResolved flag
mergetools/vimdiff: add vimdiff1 merge tool variant
Taylor Blau (39):
ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
pack-bitmap.c: check reads more aggressively when loading
pack-bitmap: factor out 'bitmap_for_commit()'
pack-bitmap: factor out 'add_commit_to_bitmap()'
p7519: allow running without watchman prereq
Documentation/git-clone.txt: document race with --local
pack-revindex: introduce a new API
write_reuse_object(): convert to new revindex API
write_reused_pack_one(): convert to new revindex API
write_reused_pack_verbatim(): convert to new revindex API
check_object(): convert to new revindex API
bitmap_position_packfile(): convert to new revindex API
show_objects_for_type(): convert to new revindex API
get_size_by_pos(): convert to new revindex API
try_partial_reuse(): convert to new revindex API
rebuild_existing_bitmaps(): convert to new revindex API
get_delta_base_oid(): convert to new revindex API
retry_bad_packed_offset(): convert to new revindex API
packed_object_info(): convert to new revindex API
unpack_entry(): convert to new revindex API
for_each_object_in_pack(): convert to new revindex API
builtin/gc.c: guess the size of the revindex
pack-revindex: remove unused 'find_pack_revindex()'
pack-revindex: remove unused 'find_revindex_position()'
pack-revindex: hide the definition of 'revindex_entry'
pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
refs: expose 'for_each_fullref_in_prefixes'
ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
packfile: prepare for the existence of '*.rev' files
pack-write.c: prepare to write 'pack-*.rev' files
builtin/index-pack.c: allow stripping arbitrary extensions
builtin/index-pack.c: write reverse indexes
builtin/pack-objects.c: respect 'pack.writeReverseIndex'
Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
t: prepare for GIT_TEST_WRITE_REV_INDEX
t: support GIT_TEST_WRITE_REV_INDEX
pack-revindex: ensure that on-disk reverse indexes are given precedence
t5325: check both on-disk and in-memory reverse index
.github/workflows/main.yml: run static-analysis on bionic
Thomas Ackermann (7):
doc: fix some typos
doc hash-function-transition: fix asciidoc output
doc hash-function-transition: use SHA-1 and SHA-256 consistently
doc hash-function-transition: use upper case consistently
doc hash-function-transition: fix incomplete sentence
doc hash-function-transition: move rationale upwards
doc: use https links
Torsten Bögershausen (1):
MacOS: precompose_argv_prefix()
Utku Gultopu (1):
doc: remove "directory cache" from man pages
Vasyl Vavrychuk (1):
git-send-email.txt: mention less secure app access with Gmail
ZheNing Hu (5):
builtin/*: update usage format
ls_files.c: bugfix for --deleted and --modified
ls_files.c: consolidate two for loops into one
ls-files.c: add --deduplicate option
difftool.c: learn a new way start at specified file
brian m. carlson (9):
abspath: add a function to resolve paths with missing components
rev-parse: add option for absolute or relative path formatting
docs: rephrase and clarify the git status --short format
ref-filter: switch some uses of unsigned long to size_t
commit: ignore additional signatures when parsing signed commits
gpg-interface: improve interface for parsing tags
commit: allow parsing arbitrary buffers with headers
ref-filter: hoist signature parsing
gpg-interface: remove other signature headers before verifying
Ævar Arnfjörð Bjarmason (100):
pretty format %(trailers) test: split a long line
pretty format %(trailers) doc: avoid repetition
pretty-format %(trailers): fix broken standalone "valueonly"
pretty format %(trailers): add a "keyonly"
pretty format %(trailers): add a "key_value_separator"
mktag doc: say <hash> not <sha1>
mktag doc: grammar fix, when exists -> when it exists
CoC: Update word-wrapping to match upstream
mktag doc: update to explain why to use this
mktag tests: don't needlessly use a subshell
mktag tests: use "test_commit" helper
mktag tests: remove needless SHA-1 hardcoding
mktag tests: don't redirect stderr to a file needlessly
mktag tests: don't create "mytag" twice
mktag tests: run "fsck" after creating "mytag"
mktag tests: stress test whitespace handling
mktag tests: test "hash-object" compatibility
mktag tests: improve verify_object() test coverage
mktag tests: test verify_object() with replaced objects
mktag: use default strbuf_read() hint
mktag: remove redundant braces in one-line body "if"
mktag: use puts(str) instead of printf("%s\n", str)
mktag: use fsck instead of custom verify_tag()
fsck: make fsck_config() re-usable
mktag: allow turning off fsck.extraHeaderEntry
mktag: allow omitting the header/body \n separator
mktag: convert to parse-options
mktag: mark strings for translation
mktag: add a --[no-]strict option
branch: change "--local" to "--list" in comment
branch tests: add to --sort tests
ref-filter: add braces to if/else if/else chain
ref-filter: move "cmp_fn" assignment into "else if" arm
ref-filter: move ref_sorting flags to a bitfield
branch: sort detached HEAD based on a flag
branch: show "HEAD detached" first under reverse sort
Makefile: remove a warning about old GETTEXT_POISON flag
gettext.c: remove/reword a mostly-useless comment
mailmap doc: create a new "gitmailmap(5)" man page
mailmap doc: quote config variables `like.this`
check-mailmap doc: note config options
mailmap doc: start by mentioning the comment syntax
mailmap tests: use our preferred whitespace syntax
mailmap tests: modernize syntax & test idioms
mailmap tests: improve --stdin tests
mailmap tests: remove redundant entry in test
mailmap tests: add a test for "not a blob" error
mailmap tests: get rid of overly complex blame fuzzing
mailmap: test for silent exiting on missing file/blob
test-lib functions: expand "test_commit" comment template
test-lib functions: document arguments to test_commit
test-lib functions: add --author support to test_commit
test-lib functions: add an --append option to test_commit
tests: refactor a few tests to use "test_commit --append"
mailmap doc + tests: add better examples & test them
mailmap tests: add a test for comment syntax
mailmap tests: add tests for whitespace syntax
mailmap tests: add tests for empty "<>" syntax
mailmap doc + tests: document and test for case-insensitivity
shortlog: remove unused(?) "repo-abbrev" feature
CoC: update to version 2.0 + local changes
fsck doc: remove ancient out-of-date diagnostics
ci: remove GETTEXT_POISON jobs
tests: remove support for GIT_TEST_GETTEXT_POISON
tests: remove uses of GIT_TEST_GETTEXT_POISON=false
cache-tree tests: refactor for modern test style
cache-tree tests: remove unused $2 parameter
cache-tree tests: use a sub-shell with less indirection
cache-tree tests: explicitly test HEAD and index differences
git svn mergeinfo tests: modernize redirection & quoting style
git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
upload-pack tests: avoid a non-zero "grep" exit status
archive tests: use a cheaper "zipinfo -h" invocation to get header
rm tests: actually test for SIGPIPE in SIGPIPE test
config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
Remove support for v1 of the PCRE library
grep/pcre2 tests: don't rely on invalid UTF-8 data test
grep/pcre2: better support invalid UTF-8 haystacks
grep/log: remove hidden --debug and --grep-debug options
pager: refactor wait_for_pager() function
pager: test for exit code with and without SIGPIPE
run-command: add braces for "if" block in wait_or_whine()
pager: properly log pager exit code when signalled
test-lib: remove check_var_migration
test lib: change "error" to "BUG" as appropriate
test-lib-functions: move test_set_index_version() to its user
test-lib-functions: remove generate_zero_bytes() wrapper
test libs: rename bundle helper to "lib-bundle.sh"
test libs: rename gitweb-lib.sh to lib-gitweb.sh
test-lib-functions: move function to lib-bitmap.sh
t/.gitattributes: sort lines
tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
tests: remove most uses of C_LOCALE_OUTPUT
tests: remove last uses of C_LOCALE_OUTPUT
tests: remove most uses of test_i18ncmp
diff: add an API for deferred freeing
diff: plug memory leak from regcomp() on {log,diff} -I
test libs: rename "diff-lib" to "lib-diff"
test-lib-functions: remove bug-inducing "diagnostics" helper param
test-lib-functions: assert correct parameter count
^ permalink raw reply [relevance 2%]
* [PATCH v3 0/7] teach `worktree list` verbose mode and prunable annotations
2021-01-19 21:27 2% ` [PATCH v3 0/7] " Rafael Silva
@ 2021-01-27 8:03 2% ` Rafael Silva
0 siblings, 0 replies; 162+ results
From: Rafael Silva @ 2021-01-27 8:03 UTC (permalink / raw)
To: git; +Cc: Eric Sunshine, Phillip Wood, Junio C Hamano, Rafael Silva
In c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) we taught `git worktree list` to annotate working trees that
is locked by appending "locked" text in order to signalize to the user
that a working tree is locked. During the review, there was some
discussion about additional annotations and information that `list`
command could provide to the user that has long been envisioned and
mentioned in [2], [3] and [4].
This patch series addresses some of these changes by teaching
`worktree list` to show "prunable" annotation, adding verbose mode and
extending the --porcelain format with prunable and locked annotation as
follow up from [1]. Additionally, it addresses one shortcoming for porcelain
format to escape any newline characters (LF or CRLF) and quote the lock
reason to prevent breaking the format that is mentioned in [4] and [1] during
the review cycle.
This patch series includes:
1. The first patch moves the should_prune_worktree() machinery to the top-level
worktree.c exposing the function as general API, that will be reference
by should_prune_worktree() wrapper implemented on the second patch.
The original idea was to not only move should_prune_worktree() but also
refactor to accept a "struct worktree" and load the information directly,
which allows simplify the `prune` command by reusing get_worktrees().
However this seems to also require refactoring get_worktrees() itself
to return "non-valid" working trees that can/should be pruned. This is
also mentioned in [5]. Having the wrapper function makes it easier to add
the prunable annotation without touching the get_worktrees() and the
other worktree sub commands. The refactoring can be addressed in a
future patch, if this turns out to be good idea. One possible approach
is to teach get_worktrees() to take additional flags that will tell
whether to return only valid or all worktrees in GIT_DIR/worktrees/
directory and address its own possible shortcoming.
2. Introduces the worktree_prune_reason() to discovery whether a worktree
is prunable along with two new fields in the `worktree` structure. The
function mimics the workree_lock_reason() API.
3. The third patch changes worktree_lock_reason() to be more gentle for
the main working tree to simply returning NULL instead of aborting the
program via assert() macro. This allow us to simplify the code that
checks if the working tree is locked for default and porcelain format.
This changes is also mentioned in [6].
4. Fix t2402 added in [1] to ensure the locked worktree is properly cleaned up.
5. The fourth patch adds the "locked" attribute for the porcelain format
in order to make both default and --porcelain format consistent.
6. The fifth patch introduces "prunable" annotation for both default
and --porcelain format.
7. The sixth patch introduces verbose mode to expand the `list` default
format and show each annotation reason when its available.
Series is built on top of 66e871b664 (The third batch, 2021-01-15).
[1] https://lore.kernel.org/git/20200928154953.30396-1-rafaeloliveira.cs@gmail.com/
[2] https://lore.kernel.org/git/CAPig+cQF6V8HNdMX5AZbmz3_w2WhSfA4SFfNhQqxXBqPXTZL+w@mail.gmail.com/
[3] https://lore.kernel.org/git/CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com/
[4] https://lore.kernel.org/git/CAPig+cTitWCs5vB=0iXuUyEY22c0gvjXvY1ZtTT90s74ydhE=A@mail.gmail.com/
[5] https://lore.kernel.org/git/CACsJy8ChM99n6skQCv-GmFiod19mnwwH4j-6R+cfZSiVFAxjgA@mail.gmail.com/
[6] https://lore.kernel.org/git/xmqq8sctlgzx.fsf@gitster.c.googlers.com/
Changes in v4
=============
Thanks Eric Sunshine and Phillip Wood for the review and suggestions.
* Added documentation to explain that the lock reason is quoted with
the same rules as described for `core.quotePath`.
* The `worktree unlock` issued in the test cleanup is splitted and
executed after each `worktree lock` to ensure the unlock is only
done after we know each locked command was successful.
* Fix a couple of grammos in the [4/7] commit message.
Changes in v3
=============
v3 is 1-patch bigger than v2 and it includes the changes:
* Dropped CQUOTE_NODQ flag in the the locked reason to return a string
enclosed with double quotes if the text reason contains especial
characters, like newlines.
* fix in t2402 to ensure the locked worktree is properly cleaned up,
is move to its own patch.
* In worktree_prune_reason(), the `path` variable is initialize
with NULL to make the code easier to follow.
* The removal of `is_main_worktree()` before `worktree_lock_reason()`
is moved to the patch that actually changes the API to be more gentle
with the main worktree instead of refactoring the code in the next
patches that adds the annotations.
* Drop the `*reason` in `(reason && *reason)` as we know that
worktree_prune_reason() is either going to return a non-empty string
or NULL which makes the code easier to follow.
* The --verbose test for the locked annotation now tests that "locked"
annotation stays on the same line when there is no locked reason.
* Small documentation updates and make the "git worktree --verbose"
example a little consistent with the worktree path.
Changes in v2
=============
v2 changes considerably from v1 taking into account several comments
suggested by Eric Sunshine and Phillip Wood (thanks guys for the
insightful comments and patience reviewing my patches :) ).
* The biggest change are the way the series is organized. In v1 all the
code was implemented in the fourth patch, all the tests and documentation
updates was added in sixth and seventh patch respectfully, in v2 each
patch introduces the annotations and verbose mode together with theirs
respective test and documentation updates.
* Several rewrite of the commit messages
* In v1 the fifth patch was introducing a new function to escape newline
characters for the "locked" attribute. However, we already have this
feature from the quote.h API. So the new function is dropped and the
changes are squashed into v2's fourth patch.
* The new prunable annotation and locked annotation that was introduced
by [1] was refactor to not poke around the worktree private fields.
* Refactoring of the worktree_prune_reason() to cache the prune_reason
and refactor to early return the use cases following the more common
pattern used on Git's codebase.
* Few documentation rewrites, most notably the `--verbose` and `--expire`
doc sentences for the list command are moved to its own line to clearly
separate the description from the others commands instead of continuing
on the same paragraph.
* The `git unlock <worktree>` used in the test's cleanup is moved to after
we know the `git worktree locked` is executed successfully. This ensures
the unlock doesn't error in the cleanup stage which will make it harder
to debug the tests.
Rafael Silva (7):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
t2402: ensure locked worktree is properly cleaned up
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
Documentation/git-worktree.txt | 74 ++++++++++++++++++++--
builtin/worktree.c | 110 +++++++++++----------------------
t/t2402-worktree-list.sh | 96 ++++++++++++++++++++++++++++
worktree.c | 91 ++++++++++++++++++++++++++-
worktree.h | 23 +++++++
5 files changed, 314 insertions(+), 80 deletions(-)
Range-diff against v3:
1: fc4252c129 = 1: 66cd83ba42 worktree: libify should_prune_worktree()
2: 664d84155b = 2: 81f4824028 worktree: teach worktree to lazy-load "prunable" reason
3: cf334da2f0 = 3: c62ecf60d6 worktree: teach worktree_lock_reason() to gently handle main worktree
4: ecb11793d9 ! 4: d2ea467927 t2402: ensure locked worktree is properly cleaned up
@@ Metadata
## Commit message ##
t2402: ensure locked worktree is properly cleaned up
- In c57b3367be (worktree: teach `list` to annotate locked worktree,
+ c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) introduced a new test to ensure locked worktrees are listed
with "locked" annotation. However, the test does not clean up after
itself as "git worktree prune" is not going to remove the locked worktree
in the first place. This not only leaves the test in an unclean state it
- also potentially breaks following tests that relies on the
+ also potentially breaks following tests that rely on the
"git worktree list" output.
Let's fix that by unlocking the worktree before the "prune" command.
5: 1fb68562f6 ! 5: 1b7661a0b3 worktree: teach `list --porcelain` to annotate locked worktree
@@ Commit message
with its value depending whether the value is available or not. Thus
documenting the case of the new "locked" attribute.
+ Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
@@ Documentation/git-worktree.txt: worktree /path/to/other-linked-worktree
+branch refs/heads/locked-with-reason
+locked reason why is locked
+
++------------
++
++If the lock reason contains "unusual" characters such as newline, they
++are escaped and the entire reason is quoted as explained for the
++configuration variable `core.quotePath` (see linkgit:git-config[1]).
++For Example:
++
++------------
++$ git worktree list --porcelain
++...
++locked "reason\nwhy is locked"
++...
------------
EXAMPLES
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
+ # unlocked worktree should not be annotated with "locked"
+ git worktree add --detach unlocked &&
+ git worktree lock locked1 &&
++ test_when_finished "git worktree unlock locked1" &&
+ git worktree lock locked2 --reason "with reason" &&
-+ test_when_finished "git worktree unlock locked1 && git worktree unlock locked2" &&
++ test_when_finished "git worktree unlock locked2" &&
+ git worktree list --porcelain >out &&
+ grep "^locked" out >actual &&
+ test_cmp expect actual
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
+ git worktree add --detach locked_lf &&
+ git worktree add --detach locked_crlf &&
+ git worktree lock locked_lf --reason "$(printf "locked\nreason")" &&
++ test_when_finished "git worktree unlock locked_lf" &&
+ git worktree lock locked_crlf --reason "$(printf "locked\r\nreason")" &&
-+ test_when_finished "git worktree unlock locked_lf && git worktree unlock locked_crlf" &&
++ test_when_finished "git worktree unlock locked_crlf" &&
+ git worktree list --porcelain >out &&
+ grep "^locked" out >actual &&
+ test_cmp expect actual
6: 834584f826 = 6: c29ad7ffb1 worktree: teach `list` to annotate prunable worktree
7: 35ad456fbb ! 7: 7938950d04 worktree: teach `list` verbose mode
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with prunabl
+ git worktree add locked1 --detach &&
+ git worktree add locked2 --detach &&
+ git worktree lock locked1 &&
++ test_when_finished "git worktree unlock locked1" &&
+ git worktree lock locked2 --reason "with reason" &&
-+ test_when_finished "git worktree unlock locked1 && git worktree unlock locked2" &&
++ test_when_finished "git worktree unlock locked2" &&
+ echo "$(git -C locked2 rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
+ printf "\tlocked: with reason\n" >>expect &&
+ git worktree list --verbose >out &&
--
2.30.0.373.geade8fefe8
^ permalink raw reply [relevance 2%]
* [PATCH v3 0/7] teach `worktree list` verbose mode and prunable annotations
2021-01-17 23:42 2% ` [PATCH v2 0/6] " Rafael Silva
@ 2021-01-19 21:27 2% ` Rafael Silva
2021-01-27 8:03 2% ` Rafael Silva
0 siblings, 1 reply; 162+ results
From: Rafael Silva @ 2021-01-19 21:27 UTC (permalink / raw)
To: git; +Cc: Eric Sunshine, Phillip Wood, Rafael Silva
In c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) we taught `git worktree list` to annotate working tree that
is locked by appending "locked" text in order to signalize to the user
that a working tree is locked. During the review, there was some
discussion about additional annotations and information that `list`
command could provide to the user that has long been envisioned and
mentioned in [2], [3] and [4].
This patch series addresses some of these changes by teaching
`worktree list` to show "prunable" annotation, adding verbose mode and
extending the --porcelain format with prunable and locked annotation as
follow up from [1]. Additionally, it addresses one shortcoming for porcelain
format to escape any newline characters (LF or CRLF) for the lock reason
to prevent breaking the format that is mentioned in [4] and [1] during the
review cycle.
The patch series is organizes as:
1. The first patch moves the should_prune_worktree() machinery to the top-level
worktree.c exposing the function as general API, that will be reference
by should_prune_worktree() wrapper implemented on the second patch.
The original idea was to not only move should_prune_worktree() but also
refactor to accept a "struct worktree" and load the information directly,
which allows simplify the `prune` command by reusing get_worktrees().
However this seems to also require refactoring get_worktrees() itself
to return "non-valid" working trees that can/should be pruned. This is
also mentioned in [5]. Having the wrapper function makes it easier to add
the prunable annotation without touching the get_worktrees() and the
other worktree sub commands. The refactoring can be addressed in a
future patch, if this turns out to be good idea. One possible approach
is to teach get_worktrees() to take additional flags that will tell
whether to return only valid or all worktrees in GIT_DIR/worktrees/
directory and address its own possible shortcoming.
2. Introduces the worktree_prune_reason() to discovery whether a worktree
is prunable along with two new fields in the `worktree` structure. The
function mimics the workree_lock_reason() API.
3. The third patch changes worktree_lock_reason() to be more gentle for
the main working tree to simply returning NULL instead of aborting the
program via assert() macro. This allow us to simplify the code that
checks if the working tree is locked for default and porcelain format.
This changes is also mentioned in [6].
4. Fix t2402 added in [1] to ensure the locked worktree is properly cleaned up.
5. The fourth patch adds the "locked" attribute for the porcelain format
in order to make both default and --porcelain format consistent.
6. The fifth patch introduces "prunable" annotation for both default
and --porcelain format.
7. The sixth patch introduces verbose mode to expand the `list` default
format and show each annotation reason when its available.
Series is built on top of 66e871b664 (The third batch, 2021-01-15).
[1] https://lore.kernel.org/git/20200928154953.30396-1-rafaeloliveira.cs@gmail.com/
[2] https://lore.kernel.org/git/CAPig+cQF6V8HNdMX5AZbmz3_w2WhSfA4SFfNhQqxXBqPXTZL+w@mail.gmail.com/
[3] https://lore.kernel.org/git/CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com/
[4] https://lore.kernel.org/git/CAPig+cTitWCs5vB=0iXuUyEY22c0gvjXvY1ZtTT90s74ydhE=A@mail.gmail.com/
[5] https://lore.kernel.org/git/CACsJy8ChM99n6skQCv-GmFiod19mnwwH4j-6R+cfZSiVFAxjgA@mail.gmail.com/
[6] https://lore.kernel.org/git/xmqq8sctlgzx.fsf@gitster.c.googlers.com/
Changes in v3
=============
v3 is 1-patch bigger than v2 and it includes the following changes:
* Dropped CQUOTE_NODQ flag in the the locked reason to return a string
enclosed with double quotes if the text reason contains especial
characters, like newlines.
* fix in t2402 to ensure the locked worktree is properly cleaned up,
is move to its own patch.
* In worktree_prune_reason(), the `path` variable is initialize
with NULL to make the code easier to follow.
* The removal of `is_main_worktree()` before `worktree_lock_reason()`
is moved to the patch that actually changes the API to be more gentle
with the main worktree instead of refactoring the code in the next
patches that adds the annotations.
* Drop the `*reason` in `(reason && *reason)` as we know that
worktree_prune_reason() is either going to return a non-empty string
or NULL which makes the code easier to follow.
* The --verbose test for the locked annotation now tests that "locked"
annotation stays on the same line when there is no locked reason.
* Small documentation updates and make the "git worktree --verbose"
example a little consistent with the worktree path.
Changes in v2
=============
v2 changes considerably from v1 taking into account several comments
suggested by Eric Sunshine and Phillip Wood (thanks guys for the
insightful comments and patience reviewing my patches :) ).
* The biggest change are the way the series is organized. In v1 all the
code was implemented in the fourth patch, all the tests and documentation
updates was added in sixth and seventh patch respectfully, in v2 each
patch introduces the annotations and verbose mode together with theirs
respective test and documentation updates.
* Several rewrite of the commit messages
* In v1 the fifth patch was introducing a new function to escape newline
characters for the "locked" attribute. However, we already have this
feature from the quote.h API. So the new function is dropped and the
changes are squashed into v2's fourth patch.
* The new prunable annotation and locked annotation that was introduced
by [1] was refactor to not poke around the worktree private fields.
* Refactoring of the worktree_prune_reason() to cache the prune_reason
and refactor to early return the use cases following the more common
pattern used on Git's codebase.
* Few documentation rewrites, most notably the `--verbose` and `--expire`
doc sentences for the list command are moved to its own line to clearly
separate the description from the others commands instead of continuing
on the same paragraph.
* The `git unlock <worktree>` used in the test's cleanup is moved to after
we know the `git worktree locked` is executed successfully. This ensures
the unlock doesn't error in the cleanup stage which will make it harder
to debug the tests.
Rafael Silva (7):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
t2402: ensure locked worktree is properly cleaned up
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
Documentation/git-worktree.txt | 62 +++++++++++++++++--
builtin/worktree.c | 110 +++++++++++----------------------
builtin/worktree.cc | 0
t/t2402-worktree-list.sh | 93 ++++++++++++++++++++++++++++
worktree.c | 91 ++++++++++++++++++++++++++-
worktree.h | 23 +++++++
6 files changed, 299 insertions(+), 80 deletions(-)
create mode 100644 builtin/worktree.cc
Range-diff against v2:
-: ---------- > 1: 66cd83ba42 worktree: libify should_prune_worktree()
1: 9d47fcb4a4 ! 2: 81f4824028 worktree: teach worktree to lazy-load "prunable" reason
@@ worktree.c: const char *worktree_lock_reason(struct worktree *wt)
+const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire)
+{
+ struct strbuf reason = STRBUF_INIT;
-+ char *path;
++ char *path = NULL;
+
+ if (is_main_worktree(wt))
+ return NULL;
2: ac7c375bac ! 3: d0dbf0b709 worktree: teach worktree_lock_reason() to gently handle main worktree
@@ Commit message
worktree_lock_reason() aborts with an assertion failure when called on
the main worktree since locking the main worktree is nonsensical. Not
- only is this behaviour undocumented, thus callers might not even be aware
+ only is this behavior undocumented, thus callers might not even be aware
that the call could potentially crash the program, but it also forces
clients to be extra careful:
@@ Commit message
...
Since we know that locking makes no sense in the context of the main
- worktree, we can simpliy return false for the main worktree, thus making
+ worktree, we can simply return false for the main worktree, thus making
client code less complex by eliminating the need for the callers to have
inside knowledge about the implementation:
@@ Commit message
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
+ ## builtin/worktree.c ##
+@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
+ strbuf_addstr(&sb, "(error)");
+ }
+
+- if (!is_main_worktree(wt) && worktree_lock_reason(wt))
++ if (worktree_lock_reason(wt))
+ strbuf_addstr(&sb, " locked");
+
+ printf("%s\n", sb.buf);
+
## worktree.c ##
@@ worktree.c: int is_main_worktree(const struct worktree *wt)
-: ---------- > 4: c6f8a3e9cd t2402: ensure locked worktree is properly cleaned up
3: ec1eb5a9f8 ! 5: 86c5253288 worktree: teach `list --porcelain` to annotate locked worktree
@@ Commit message
locked reason why it is locked
...
- The locked reason is quoted to prevent newline characters (i.e: LF or
- CRLF) breaking the --porcelain format as each attribute is shown per
- line. For example:
+ In porcelain mode, if the lock reason contains special characters
+ such as newlines, they are escaped with backslashes and the entire
+ reason is enclosed in double quotes. For example:
$ git worktree list --porcelain
...
- locked worktree's path mounted in\nremovable device
+ locked "worktree's path mounted in\nremovable device"
...
Furthermore, let's update the documentation to state that some
@@ Commit message
with its value depending whether the value is available or not. Thus
documenting the case of the new "locked" attribute.
- Additionally, c57b3367be (worktree: teach `list` to annotate locked
- worktree, 2020-10-11) introduced a new test to ensure locked worktrees
- are listed with "locked" annotation. However, the test does not clean up
- after itself as "git worktree prune" is not going to remove the locked
- worktree in the first place. This not only leaves the test in an unclean
- state it also potentially breaks following tests that relies on the
- "git worktree list" output. Let's fix that by unlocking the worktree
- before the "prune" command.
-
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
@@ Documentation/git-worktree.txt: Porcelain Format
-if the value is true. The first attribute of a working tree is always
-`worktree`, an empty line indicates the end of the record. For example:
+if the value is true. Some attributes (like `locked`) can be listed as a label
-+only or with a value depending whether a reason is available. The first
++only or with a value depending upon whether a reason is available. The first
+attribute of a working tree is always `worktree`, an empty line indicates the
+end of the record. For example:
@@ Documentation/git-worktree.txt: worktree /path/to/other-linked-worktree
HEAD 1234abc1234abc1234abc1234abc1234abc1234a
detached
-+worktree /path/to/linked-worktree-locked
++worktree /path/to/linked-worktree-locked-no-reason
+HEAD 5678abc5678abc5678abc5678abc5678abc5678c
-+branch refs/heads/locked
++branch refs/heads/locked-no-reason
+locked
+
+worktree /path/to/linked-worktree-locked-with-reason
@@ builtin/worktree.c: static void show_worktree_porcelain(struct worktree *wt)
+ reason = worktree_lock_reason(wt);
+ if (reason && *reason) {
+ struct strbuf sb = STRBUF_INIT;
-+ quote_c_style(reason, &sb, NULL, CQUOTE_NODQ);
++ quote_c_style(reason, &sb, NULL, 0);
+ printf("locked %s\n", sb.buf);
+ strbuf_release(&sb);
+ } else if (reason)
@@ builtin/worktree.c: static void show_worktree_porcelain(struct worktree *wt)
## t/t2402-worktree-list.sh ##
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked annotation' '
- git worktree add --detach locked master &&
- git worktree add --detach unlocked master &&
- git worktree lock locked &&
-+ test_when_finished "git worktree unlock locked" &&
- git worktree list >out &&
- grep "/locked *[0-9a-f].* locked$" out &&
! grep "/unlocked *[0-9a-f].* locked$" out
'
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
+ echo "locked with reason" >>expect &&
+ git worktree add --detach locked1 &&
+ git worktree add --detach locked2 &&
++ # unlocked worktree should not be annotated with "locked"
+ git worktree add --detach unlocked &&
+ git worktree lock locked1 &&
+ git worktree lock locked2 --reason "with reason" &&
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
+
+test_expect_success '"list" all worktrees --porcelain with locked reason newline escaped' '
+ test_when_finished "rm -rf locked_lf locked_crlf out actual expect && git worktree prune" &&
-+ printf "locked locked\\\\r\\\\nreason\n" >expect &&
-+ printf "locked locked\\\\nreason\n" >>expect &&
++ printf "locked \"locked\\\\r\\\\nreason\"\n" >expect &&
++ printf "locked \"locked\\\\nreason\"\n" >>expect &&
+ git worktree add --detach locked_lf &&
+ git worktree add --detach locked_crlf &&
-+ printf "locked\nreason\n\n" >reason_lf &&
-+ printf "locked\r\nreason\n\n" >reason_crlf &&
-+ git worktree lock locked_lf --reason "$(cat reason_lf)" &&
-+ git worktree lock locked_crlf --reason "$(cat reason_crlf)" &&
++ git worktree lock locked_lf --reason "$(printf "locked\nreason")" &&
++ git worktree lock locked_crlf --reason "$(printf "locked\r\nreason")" &&
+ test_when_finished "git worktree unlock locked_lf && git worktree unlock locked_crlf" &&
+ git worktree list --porcelain >out &&
+ grep "^locked" out >actual &&
4: f937df6460 ! 6: be814326ee worktree: teach `list` to annotate prunable worktree
@@ Documentation/git-worktree.txt: This can also be set up as the default behaviour
With `prune`, only expire unused working trees older than `<time>`.
++
+With `list`, annotate missing working trees as prunable if they are
-+older than `<mtime>`.
++older than `<time>`.
--reason <string>::
With `lock`, an explanation why the working tree is locked.
@@ Documentation/git-worktree.txt: $ git worktree list
+
+------------
+$ git worktree list
-+/path/to/linked-worktree abcd1234 [master]
-+/path/to/locked-worktreee acbd5678 (brancha) locked
-+/path/to/prunable-worktree 5678abc (detached HEAD) prunable
++/path/to/linked-worktree abcd1234 [master]
++/path/to/locked-worktreee acbd5678 (brancha) locked
++/path/to/prunable-worktree 5678abc (detached HEAD) prunable
+------------
+
Porcelain Format
@@ builtin/worktree.c: static void show_worktree_porcelain(struct worktree *wt)
printf("locked\n");
+ reason = worktree_prune_reason(wt, expire);
-+ if (reason && *reason)
++ if (reason)
+ printf("prunable %s\n", reason);
+
printf("\n");
}
@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
- struct strbuf sb = STRBUF_INIT;
- int cur_path_len = strlen(wt->path);
- int path_adj = cur_path_len - utf8_strwidth(wt->path);
-+ const char *reason;
-
- strbuf_addf(&sb, "%-*s ", 1 + path_maxlen + path_adj, wt->path);
- if (wt->is_bare)
-@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
- strbuf_addstr(&sb, "(error)");
- }
-
-- if (!is_main_worktree(wt) && worktree_lock_reason(wt))
-+ reason = worktree_lock_reason(wt);
-+ if (reason)
+ if (worktree_lock_reason(wt))
strbuf_addstr(&sb, " locked");
-+ reason = worktree_prune_reason(wt, expire);
-+ if (reason)
++ if (worktree_prune_reason(wt, expire))
+ strbuf_addstr(&sb, " prunable");
+
printf("%s\n", sb.buf);
@@ builtin/worktree.c: static int list(int ac, const char **av, const char *prefix)
if (ac)
usage_with_options(worktree_usage, options);
+ ## builtin/worktree.cc (new) ##
+
## t/t2402-worktree-list.sh ##
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees --porcelain with locked reason newline
test_cmp expect actual
5: 0b6ab6dddb ! 7: b0688f142d worktree: teach `list` verbose mode
@@ Commit message
worktrees a reason might be available provided by the user via `lock`
command.
- Let's teach "git worktree list" to output the reason why the worktrees
- are being annotated. The reason is a text that can take virtually any
- size and appending the text on the default columned format will make it
- difficult to extend the command with other annotations and not fit nicely
- on the screen. In order to address this shortcoming the annotation is
- then moved to the next line indented followed by the reason, if the
- reason is not available the annotation stays on the same line as the
- worktree itself.
+ Let's teach "git worktree list" a --verbose mode that outputs the reason
+ why the worktrees are being annotated. The reason is a text that can take
+ virtually any size and appending the text on the default columned format
+ will make it difficult to extend the command with other annotations and
+ not fit nicely on the screen. In order to address this shortcoming the
+ annotation is then moved to the next line indented followed by the reason
+ If the reason is not available the annotation stays on the same line as
+ the worktree itself.
The output of "git worktree list" with verbose becomes like so:
$ git worktree list --verbose
...
- /path/to/locked acb124 [branch-a] locked
- /path/to/locked-with-reason acc125 [branch-b]
+ /path/to/locked-no-reason acb124 [branch-a] locked
+ /path/to/locked-with-reason acc125 [branch-b]
locked: worktree with a locked reason
- /path/to/prunable-reason ace127 [branch-d]
+ /path/to/prunable-reason ace127 [branch-d]
prunable: gitdir file points to non-existent location
...
@@ Documentation/git-worktree.txt: This can also be set up as the default behaviour
--expire <time>::
With `prune`, only expire unused working trees older than `<time>`.
@@ Documentation/git-worktree.txt: $ git worktree list
- /path/to/prunable-worktree 5678abc (detached HEAD) prunable
+ /path/to/prunable-worktree 5678abc (detached HEAD) prunable
------------
+For these annotations, a reason might also be available and this can be
@@ Documentation/git-worktree.txt: $ git worktree list
+
+------------
+$ git worktree list --verbose
-+/path/to/linked-worktree abcd1234 [master]
-+/path/to/locked-worktreee acbd5678 (brancha)
-+ locked: working tree path is mounted on a removable device
-+/path/to/locked-no-reason abcd578 (detached HEAD) locked
-+/path/to/prunable-worktree 5678abc (detached HEAD)
++/path/to/linked-worktree abcd1234 [master]
++/path/to/locked-worktree-no-reason abcd5678 (detached HEAD) locked
++/path/to/locked-worktree-with-reason 1234abcd (brancha)
++ locked: working tree path is mounted on a portable device
++/path/to/prunable-worktree 5678abc1 (detached HEAD)
+ prunable: gitdir file points to non-existent location
+------------
+
@@ Documentation/git-worktree.txt: $ git worktree list
## builtin/worktree.c ##
@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
+ struct strbuf sb = STRBUF_INIT;
+ int cur_path_len = strlen(wt->path);
+ int path_adj = cur_path_len - utf8_strwidth(wt->path);
++ const char *reason;
+
+ strbuf_addf(&sb, "%-*s ", 1 + path_maxlen + path_adj, wt->path);
+ if (wt->is_bare)
+@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
+ strbuf_addstr(&sb, "(error)");
}
- reason = worktree_lock_reason(wt);
-- if (reason)
+- if (worktree_lock_reason(wt))
++ reason = worktree_lock_reason(wt);
+ if (verbose && reason && *reason)
+ strbuf_addf(&sb, "\n\tlocked: %s", reason);
+ else if (reason)
strbuf_addstr(&sb, " locked");
- reason = worktree_prune_reason(wt, expire);
-- if (reason)
-+ if (verbose && reason && *reason)
+- if (worktree_prune_reason(wt, expire))
++ reason = worktree_prune_reason(wt, expire);
++ if (verbose && reason)
+ strbuf_addf(&sb, "\n\tprunable: %s", reason);
+ else if (reason)
strbuf_addstr(&sb, " prunable");
@@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with prunabl
+'
+
+test_expect_success '"list" all worktrees --verbose with locked' '
-+ test_when_finished "rm -rf locked out actual expect && git worktree prune" &&
-+ git worktree add locked --detach &&
-+ git worktree lock locked --reason "with reason" &&
-+ test_when_finished "git worktree unlock locked" &&
-+ echo "$(git -C locked rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
++ test_when_finished "rm -rf locked1 locked2 out actual expect && git worktree prune" &&
++ git worktree add locked1 --detach &&
++ git worktree add locked2 --detach &&
++ git worktree lock locked1 &&
++ git worktree lock locked2 --reason "with reason" &&
++ test_when_finished "git worktree unlock locked1 && git worktree unlock locked2" &&
++ echo "$(git -C locked2 rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
+ printf "\tlocked: with reason\n" >>expect &&
+ git worktree list --verbose >out &&
-+ sed -n "s/ */ /g;/\/locked *[0-9a-f].*$/,/locked: .*$/p" <out >actual &&
++ grep "/locked1 *[0-9a-f].* locked$" out &&
++ sed -n "s/ */ /g;/\/locked2 *[0-9a-f].*$/,/locked: .*$/p" <out >actual &&
+ test_cmp actual expect
+'
+
--
2.30.0.421.g32f838e276
^ permalink raw reply [relevance 2%]
* [PATCH v2 0/2] Two cleanups around 'prefetch' refs
2021-01-18 3:23 5% [PATCH 0/2] Two cleanups around 'prefetch' refs Derrick Stolee via GitGitGadget
@ 2021-01-19 12:52 4% ` Derrick Stolee via GitGitGadget
0 siblings, 0 replies; 162+ results
From: Derrick Stolee via GitGitGadget @ 2021-01-19 12:52 UTC (permalink / raw)
To: git
Cc: gitster, Eric Sunshine, Emily Shaffer, Taylor Blau,
Derrick Stolee, Derrick Stolee
Here are a couple things that caught my eye during a recent evaluation of
the maintenance feature:
1. 'refs/prefetch/' refs show up in 'git log' decorations. Auto-hide these.
2. t7900-maintenance.sh had some scary warnings that end up being
unimportant.
This is based on 'master' at 66e871b (The third batch, 2021-01-15).
Update in v2: deleting refs more safely for alternate ref backends. (Thanks,
Taylor!)
Thanks, -Stolee
Derrick Stolee (2):
maintenance: set log.excludeDecoration durin prefetch
t7900: clean up some broken refs
builtin/gc.c | 6 ++++++
t/t7900-maintenance.sh | 33 ++++++++++++++++++++++++++++++++-
2 files changed, 38 insertions(+), 1 deletion(-)
base-commit: 66e871b6647ffea61a77a0f82c7ef3415f1ee79c
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-838%2Fderrickstolee%2Fprefetch-refs-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-838/derrickstolee/prefetch-refs-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/838
Range-diff vs v1:
1: 5b2ce9049a6 = 1: 5b2ce9049a6 maintenance: set log.excludeDecoration durin prefetch
2: 616b73a6556 ! 2: 35038dfd037 t7900: clean up some broken refs
@@ Commit message
All that is left is to clean up the tests in t7900-maintenance.sh to
remove these tags and refs that are not being repacked for the
- incremental-repack tests.
+ incremental-repack tests. Use update-ref to ensure this works with all
+ ref backends.
+ Helped-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
## t/t7900-maintenance.sh ##
@@ t/t7900-maintenance.sh: test_expect_success 'incremental-repack task' '
^HEAD~1
EOF
+
++ # Delete refs that have not been repacked in these packs.
++ git for-each-ref --format="delete %(refname)" \
++ refs/prefetch refs/tags >refs &&
++ git update-ref --stdin <refs &&
++
+ # Replace the object directory with this pack layout.
-+ # However, it does not include all objects from the remotes.
-+ rm -rf .git/refs/prefetch &&
-+ rm -rf .git/refs/tags &&
rm -f $packDir/pack-* &&
rm -f $packDir/loose-* &&
ls $packDir/*.pack >packs-before &&
--
gitgitgadget
^ permalink raw reply [relevance 4%]
* [PATCH 0/2] Two cleanups around 'prefetch' refs
@ 2021-01-18 3:23 5% Derrick Stolee via GitGitGadget
2021-01-19 12:52 4% ` [PATCH v2 " Derrick Stolee via GitGitGadget
0 siblings, 1 reply; 162+ results
From: Derrick Stolee via GitGitGadget @ 2021-01-18 3:23 UTC (permalink / raw)
To: git; +Cc: gitster, Eric Sunshine, Emily Shaffer, Derrick Stolee
Here are a couple things that caught my eye during a recent evaluation of
the maintenance feature:
1. 'refs/prefetch/' refs show up in 'git log' decorations. Auto-hide these.
2. t7900-maintenance.sh had some scary warnings that end up being
unimportant.
This is based on 'master' at 66e871b (The third batch, 2021-01-15).
Thanks, -Stolee
Derrick Stolee (2):
maintenance: set log.excludeDecoration durin prefetch
t7900: clean up some broken refs
builtin/gc.c | 6 ++++++
t/t7900-maintenance.sh | 31 ++++++++++++++++++++++++++++++-
2 files changed, 36 insertions(+), 1 deletion(-)
base-commit: 66e871b6647ffea61a77a0f82c7ef3415f1ee79c
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-838%2Fderrickstolee%2Fprefetch-refs-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-838/derrickstolee/prefetch-refs-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/838
--
gitgitgadget
^ permalink raw reply [relevance 5%]
* [PATCH v2 0/6] teach `worktree list` verbose mode and prunable annotations
@ 2021-01-17 23:42 2% ` Rafael Silva
2021-01-19 21:27 2% ` [PATCH v3 0/7] " Rafael Silva
0 siblings, 1 reply; 162+ results
From: Rafael Silva @ 2021-01-17 23:42 UTC (permalink / raw)
To: git; +Cc: Eric Sunshine, Phillip Wood, Rafael Silva
In c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) we taught `git worktree list` to annotate working tree that
is locked by appending "locked" text in order to signalize to the user
that a working tree is locked. During the review, there was some
discussion about additional annotations and information that `list`
command could provide to the user that has long been envisioned and
mentioned in [2], [3] and [4].
This patch series addresses some of these changes by teaching
`worktree list` to show "prunable" annotation, adding verbose mode and
extending the --porcelain format with prunable and locked annotation as
follow up from [1]. Additionally, it addresses one shortcoming for porcelain
format to escape any newline characters (LF or CRLF) for the lock reason
to prevent breaking the format that is mentioned in [4] and [1] during the
review cycle.
The patch series is organizes as:
1. The first patch moves the should_prune_worktree() machinery to the top-level
worktree.c exposing the function as general API, that will be reference
by should_prune_worktree() wrapper implemented on the second patch.
The original idea was to not only move should_prune_worktree() but also
refactor to accept a "struct worktree" and load the information directly,
which allows simplify the `prune` command by reusing get_worktrees().
However this seems to also require refactoring get_worktrees() itself
to return "non-valid" working trees that can/should be pruned. This is
also mentioned in [5]. Having the wrapper function makes it easier to add
the prunable annotation without touching the get_worktrees() and the
other worktree sub commands. The refactoring can be addressed in a
future patch, if this turns out to be good idea. One possible approach
is to teach get_worktrees() to take additional flags that will tell
whether to return only valid or all worktrees in GIT_DIR/worktrees/
directory and address its own possible shortcoming.
2. Introduces the worktree_prune_reason() to discovery whether a worktree
is prunable along with two new fields in the `worktree` structure. The
function mimics the workree_lock_reason() API.
3. The third patch changes worktree_lock_reason() to be more gentle for
the main working tree to simply returning NULL instead of aborting the
program via assert() macro. This allow us to simplify the code that
checks if the working tree is locked for default and porcelain format.
This changes is also mentioned in [6].
4. The fourth patch adds the "locked" attribute for the porcelain format
in order to make both default and --porcelain format consistent.
5. The fifth patch introduces "prunable" annotation for both default
and --porcelain format.
6. The sixth patch introduces verbose mode to expand the `list` default
format and show each annotation reason when its available.
Series is built on top of 66e871b664 (The third batch, 2021-01-15).
[1] https://lore.kernel.org/git/20200928154953.30396-1-rafaeloliveira.cs@gmail.com/
[2] https://lore.kernel.org/git/CAPig+cQF6V8HNdMX5AZbmz3_w2WhSfA4SFfNhQqxXBqPXTZL+w@mail.gmail.com/
[3] https://lore.kernel.org/git/CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com/
[4] https://lore.kernel.org/git/CAPig+cTitWCs5vB=0iXuUyEY22c0gvjXvY1ZtTT90s74ydhE=A@mail.gmail.com/
[5] https://lore.kernel.org/git/CACsJy8ChM99n6skQCv-GmFiod19mnwwH4j-6R+cfZSiVFAxjgA@mail.gmail.com/
[6] https://lore.kernel.org/git/xmqq8sctlgzx.fsf@gitster.c.googlers.com/
Changes in v2
=============
v2 changes considerably from v1 taking into account several comments
suggested by Eric Sunshine and Phillip Wood (thanks guys for the
insightful comments and patience reviewing my patches :) ).
* The biggest change are the way the series is organized. In v1 all the
code was implemented in the fourth patch, all the tests and documentation
updates was added in sixth and seventh patch respectfully, in v2 each
patch introduces the annotations and verbose mode together with theirs
respective test and documentation updates.
* Several rewrite of the commit messages
* In v1 the fifth patch was introducing a new function to escape newline
characters for the "locked" attribute. However, we already have this
feature from the quote.h API. So the new function is dropped and the
changes are squashed into v2's fourth patch.
* The new prunable annotation and locked annotation that was introduced
by [1] was refactor to not poke around the worktree private fields.
* Refactoring of the worktree_prune_reason() to cache the prune_reason
and refactor to early return the use cases following the more common
pattern used on Git's codebase.
* Few documentation rewrites, most notably the `--verbose` and `--expire`
doc sentences for the list command are moved to its own line to clearly
separate the description from the others commands instead of continuing
on the same paragraph.
* The `git unlock <worktree>` used in the test's cleanup is moved to after
we know the `git worktree locked` is executed successfully. This ensures
the unlock doesn't error in the cleanup stage which will make it harder
to debug the tests.
Rafael Silva (6):
worktree: libify should_prune_worktree()
worktree: teach worktree to lazy-load "prunable" reason
worktree: teach worktree_lock_reason() to gently handle main worktree
worktree: teach `list --porcelain` to annotate locked worktree
worktree: teach `list` to annotate prunable worktree
worktree: teach `list` verbose mode
Documentation/git-worktree.txt | 62 +++++++++++++++++--
builtin/worktree.c | 110 +++++++++++----------------------
t/t2402-worktree-list.sh | 91 +++++++++++++++++++++++++++
worktree.c | 91 ++++++++++++++++++++++++++-
worktree.h | 23 +++++++
5 files changed, 297 insertions(+), 80 deletions(-)
Range-diff against v1:
1: 9d3fff52b4 ! 1: e4df49d882 worktree: move should_prune_worktree() to worktree.c
@@ Metadata
Author: Rafael Silva <rafaeloliveira.cs@gmail.com>
## Commit message ##
- worktree: move should_prune_worktree() to worktree.c
+ worktree: libify should_prune_worktree()
As part of teaching "git worktree list" to annotate worktree that is a
candidate for pruning, let's move should_prune_worktree() from
builtin/worktree.c to worktree.c in order to make part of the worktree
public API.
- This function will be used by another API function, implemented in the
- next patch that will accept a pointer to "worktree" structure directly
- making it easier to implement the "prunable" annotations.
+ should_prune_worktree() knows how to select the given worktree for
+ pruning based on an expiration date, however the expiration value is
+ stored in a static file-scope variable and it is not local to the
+ function. In order to move the function, teach should_prune_worktree()
+ to take the expiration date as an argument and document the new
+ parameter that is not immediately obvious.
- should_prune_worktree() knows how to select the given worktree for pruning
- based on an expiration date, however the expiration value is stored on a
- global variable and it is not local to the function. In order to move the
- function, teach should_prune_worktree() to take the expiration date as an
- argument.
+ Also, change the function comment to clearly state that the worktree's
+ path is returned in `wtpath` argument.
+ Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
## builtin/worktree.c ##
@@ worktree.c: void repair_worktree_at_path(const char *path,
strbuf_release(&dotgit);
}
+
-+/*
-+ * Return true if worktree entry should be pruned, along with the reason for
-+ * pruning. Otherwise, return false and the worktree's path, or NULL if it
-+ * cannot be determined. Caller is responsible for freeing returned path.
-+ */
+int should_prune_worktree(const char *id, struct strbuf *reason, char **wtpath, timestamp_t expire)
+{
+ struct stat st;
@@ worktree.h: int is_main_worktree(const struct worktree *wt);
+/*
+ * Return true if worktree entry should be pruned, along with the reason for
-+ * pruning. Otherwise, return false and the worktree's path, or NULL if it
-+ * cannot be determined. Caller is responsible for freeing returned path.
++ * pruning. Otherwise, return false and the worktree's path in `wtpath`, or
++ * NULL if it cannot be determined. Caller is responsible for freeing
++ * returned path.
++ *
++ * `expire` defines a grace period to prune the worktree when its path
++ * does not exist.
+ */
+int should_prune_worktree(const char *id,
+ struct strbuf *reason,
2: 80044e0ba9 ! 2: d8db43fec8 worktree: implement worktree_prune_reason() wrapper
@@ Metadata
Author: Rafael Silva <rafaeloliveira.cs@gmail.com>
## Commit message ##
- worktree: implement worktree_prune_reason() wrapper
+ worktree: teach worktree to lazy-load "prunable" reason
- The should_prune_worktree() machinery is used by the "prune" command to
- identify whether a worktree is a candidate for pruning. This function
- however, is not prepared to work directly with "struct worktree" and
- refactoring is required not only on the function itself, but also also
- changing get_worktrees() to return non-valid worktrees and address the
- changes in all "worktree" sub commands.
-
- Instead let's implement worktree_prune_reason() that accepts
- "struct worktree" and uses should_prune_worktree() and returns whether
- the given worktree is a candidate for pruning. As the "list" sub command
- already uses a list of "struct worktree", this allow to simply check if
- the working tree prunable by passing the structure directly without the
- others parameters.
-
- Also, let's add prune_reason field to the worktree structure that will
- store the reason why the worktree can be pruned that is returned by
- should_prune_worktree() when such reason is available.
+ Add worktree_prune_reason() to allow a caller to discover whether a
+ worktree is prunable and the reason that it is, much like
+ worktree_lock_reason() indicates whether a worktree is locked and the
+ reason for the lock. As with worktree_lock_reason(), retrieve the
+ prunable reason lazily and cache it in the `worktree` structure.
+ Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
## worktree.c ##
@@ worktree.c: const char *worktree_lock_reason(struct worktree *wt)
+const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire)
+{
-+ if (!is_main_worktree(wt)) {
-+ char *path;
-+ struct strbuf reason = STRBUF_INIT;
++ struct strbuf reason = STRBUF_INIT;
++ char *path;
+
-+ if (should_prune_worktree(wt->id, &reason, &path, expire))
-+ wt->prune_reason = strbuf_detach(&reason, NULL);
-+ else
-+ wt->prune_reason = NULL;
++ if (is_main_worktree(wt))
++ return NULL;
++ if (wt->prune_reason_valid)
++ return wt->prune_reason;
+
-+ free(path);
-+ strbuf_release(&reason);
-+ }
++ if (should_prune_worktree(wt->id, &reason, &path, expire))
++ wt->prune_reason = strbuf_detach(&reason, NULL);
++ wt->prune_reason_valid = 1;
+
++ strbuf_release(&reason);
++ free(path);
+ return wt->prune_reason;
+}
+
@@ worktree.h: struct worktree {
struct object_id head_oid;
int is_detached;
int is_bare;
+ int is_current;
+ int lock_reason_valid; /* private */
++ int prune_reason_valid; /* private */
+ };
+
+ /*
@@ worktree.h: int is_main_worktree(const struct worktree *wt);
*/
const char *worktree_lock_reason(struct worktree *wt);
+/*
-+ * Return the reason string if the given worktree should be pruned
-+ * or NULL otherwise.
++ * Return the reason string if the given worktree should be pruned, otherwise
++ * NULL if it should not be pruned. `expire` defines a grace period to prune
++ * the worktree when its path does not exist.
+ */
+const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire);
+
/*
* Return true if worktree entry should be pruned, along with the reason for
- * pruning. Otherwise, return false and the worktree's path, or NULL if it
+ * pruning. Otherwise, return false and the worktree's path in `wtpath`, or
3: fa2297714b < -: ---------- worktree: teach worktree_lock_reason() to gently handle main worktree
4: bcc2e5d745 < -: ---------- worktree: teach `list` prunable annotation and verbose
5: 588051ed5f < -: ---------- worktree: `list` escape lock reason in --porcelain
6: cbff8c993a < -: ---------- worktree: add tests for `list` verbose and annotations
7: 9c5893d2b9 < -: ---------- worktree: document `list` verbose and prunable annotations
-: ---------- > 3: 5b8963292f worktree: teach worktree_lock_reason() to gently handle main worktree
-: ---------- > 4: 6bdd46b9bc worktree: teach `list --porcelain` to annotate locked worktree
-: ---------- > 5: bbf6c53ecc worktree: teach `list` to annotate prunable worktree
-: ---------- > 6: acc0bf22cd worktree: teach `list` verbose mode
--
2.30.0.356.gd4bb5ad4ba
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jan 2021, #04; Sat, 16)
@ 2021-01-16 21:59 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-01-16 21:59 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics are now in 'master'. Most of these cooked
for shorter than usual in 'next' (I usually try to keep any topic in
'next' for at least a week), but many of them are mostly benign doc
and test fixes.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* ab/fsck-doc-fix (2021-01-16) 1 commit
- fsck doc: remove ancient out-of-date diagnostics
Documentation for "git fsck" lost stale bits that has become
incorrect.
Will merge to 'next'.
* ab/tests-various-fixup (2021-01-16) 11 commits
- tests: add a "set -o pipefail" for a patched bash
- tests: split up bash detection library
- archive tests: use a cheaper "zipinfo -h" invocation to get header
- upload-pack tests: avoid a non-zero "grep" exit status
- rm tests: actually test for SIGPIPE in SIGPIPE test
- git-svn tests: rewrite brittle tests to use "--[no-]merges".
- git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
- git svn mergeinfo tests: modernize redirection & quoting style
- cache-tree tests: refactor overly complex function
- cache-tree tests: use a sub-shell with less indirection
- cache-tree tests: remove unused $2 parameter
Various test updates.
Looking good.
--------------------------------------------------
[Graduated to 'master']
* ab/gettext-charset-comment-fix (2021-01-11) 2 commits
(merged to 'next' on 2021-01-12 at bc7f60e246)
+ gettext.c: remove/reword a mostly-useless comment
+ Makefile: remove a warning about old GETTEXT_POISON flag
Comments update.
* ad/t4129-setfacl-target-fix (2021-01-09) 1 commit
(merged to 'next' on 2021-01-12 at e09694772a)
+ t4129: fix setfacl-related permissions failure
Test fix.
* bc/doc-status-short (2021-01-11) 1 commit
(merged to 'next' on 2021-01-13 at 6093625f0c)
+ docs: rephrase and clarify the git status --short format
Doc update.
* dl/p4-encode-after-kw-expansion (2020-12-23) 1 commit
(merged to 'next' on 2021-01-13 at 8fce17d998)
+ git-p4: fix syncing file types with pattern
Text encoding fix for "git p4".
* ds/for-each-repo-noopfix (2021-01-07) 1 commit
(merged to 'next' on 2021-01-12 at 92f83b5db1)
+ for-each-repo: do nothing on empty config
"git for-each-repo --config=<var> <cmd>" should not run <cmd> for
any repository when the configuration variable <var> is not defined
even once.
* ds/maintenance-part-4 (2021-01-05) 4 commits
(merged to 'next' on 2021-01-08 at 1f98c859ea)
+ maintenance: use Windows scheduled tasks
+ maintenance: use launchctl on macOS
+ maintenance: include 'cron' details in docs
+ maintenance: extract platform-specific scheduling
Follow-up on the "maintenance part-3" which introduced scheduled
maintenance tasks to support platforms whose native scheduling
methods are not 'cron'.
* jc/macos-install-dependencies-fix (2021-01-14) 1 commit
(merged to 'next' on 2021-01-14 at 5a11de010b)
+ ci/install-depends: attempt to fix "brew cask" stuff
Fix for procedure to building CI test environment for mac.
* jc/sign-off (2021-01-07) 1 commit
(merged to 'next' on 2021-01-12 at 0d9a2a9a41)
+ SubmittingPatches: tighten wording on "sign-off" procedure
Doc update.
* jk/t5516-deflake (2021-01-09) 1 commit
(merged to 'next' on 2021-01-12 at ed5317a798)
+ t5516: loosen "not our ref" error check
Test fix.
* mt/t4129-with-setgid-dir (2021-01-06) 1 commit
(merged to 'next' on 2021-01-12 at 7a54dd92d8)
+ t4129: don't fail if setgid is set in the test directory
Some tests expect that "ls -l" output has either '-' or 'x' for
group executable bit, but setgid bit can be inherited from parent
directory and make these fields 'S' or 's' instead, causing test
failures.
* pb/mergetool-tool-help-fix (2021-01-06) 1 commit
(merged to 'next' on 2021-01-12 at ba0f76b413)
+ mergetool--lib: fix '--tool-help' to correctly show available tools
Fix 2.29 regression where "git mergetool --tool-help" fails to list
all the available tools.
* tb/local-clone-race-doc (2021-01-11) 1 commit
(merged to 'next' on 2021-01-14 at b86c0426de)
+ Documentation/git-clone.txt: document race with --local
Doc update.
* ug/doc-lose-dircache (2021-01-09) 1 commit
(merged to 'next' on 2021-01-12 at 28310380a5)
+ doc: remove "directory cache" from man pages
Doc update.
* vv/send-email-with-less-secure-apps-access (2021-01-07) 1 commit
(merged to 'next' on 2021-01-12 at 53243ca7e7)
+ git-send-email.txt: mention less secure app access with Gmail
Doc update.
--------------------------------------------------
[Stalled]
* ss/submodule-add-in-c (2020-12-15) 3 commits
. t7400: add test to check 'submodule add' for tracked paths
. submodule: port submodule subcommand 'add' from shell to C
. dir: change the scope of function 'directory_exists_in_index()'
"git submodule add" being rewritten in C.
Expecting a reroll.
The patches are split incorrectly; part of 1/3 belongs to 2/3
cf. <nycvar.QRO.7.76.6.2012190104140.56@tvgsbejvaqbjf.bet>
It seems to introduce a segfault on 'seen'.
cf. <xmqqft3xflw7.fsf@gitster.c.googlers.com>
* mt/grep-sparse-checkout (2020-12-06) 10 commits
- t7817: do not depend on any specific default branch name
- config: add setting to ignore sparsity patterns in some cmds
- grep: honor sparse checkout patterns
- config: correctly read worktree configs in submodules
- config: make do_git_config_sequence receive a 'struct repository'
- t/helper/test-config: unify exit labels
- t/helper/test-config: diagnose missing arguments
- t/helper/test-config: be consistent with exit codes
- t1308-config-set: avoid false positives when using test-config
- doc: grep: unify info on configuration variables
(this branch is used by mt/rm-sparse-checkout.)
"git grep" has been tweaked to be limited to the sparse checkout
paths.
Break out and fast-track bugfix from the remainder of the topic.
cf. <CABPp-BFkACtF6LHkFJNt9dTOmwfQbf8ZO=BTrPYwPSmbqc9+hg@mail.gmail.com>
* mt/rm-sparse-checkout (2020-12-08) 1 commit
- rm: honor sparse checkout patterns
(this branch uses mt/grep-sparse-checkout.)
"git rm" follows suit to "git grep" to ignore paths outside the
sparsity pattern when the sparse checkout feature is in use.
Need to wait for how these fit in larger picture.
cf. <CABPp-BGMX3wb7LiS1HkJpGveoW3J1oR0vVHbKTF5+qYLRF+59g@mail.gmail.com>
cf. <CABPp-BFkACtF6LHkFJNt9dTOmwfQbf8ZO=BTrPYwPSmbqc9+hg@mail.gmail.com>
* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
- docs: document symlink restrictions for .git* files
- fsck: complain when .gitattributes or .gitignore is a symlink
- verify_path(): disallow symlinks in .gitattributes and .gitignore
- t0060: test obscured .gitattributes and .gitignore matching
- t7450: test .gitmodules symlink matching against obscured names
- t7450: test verify_path() handling of gitmodules
- t7415: rename to expand scope
- fsck_tree(): wrap some long lines
- fsck_tree(): fix shadowed variable
"git fsck" and the corresponding check done during the transport
learned to ensure that in-tree files like `.gitignore` and
`.gitattributes` are not symbolic links.
It seems that there are real projects with .gitignore recorded as
symlinks, which may need to loosen the fsck setting. Do we need to
introduce a class that is separate from symlinked .gitmodules that
has potential consequences that is more/less grave, so that these
projects can opt out of the new checks?
* sm/curl-retry (2020-10-13) 3 commits
- http: automatically retry some requests
- replace CURLOPT_FILE With CURLOPT_WRITEDATA
- remote-curl: add testing for intelligent retry for HTTP
The http transport has been taught to retry a failed request that
may reasonably be retried.
Expecting a reroll.
cf. <20201015000410.GB328643@google.com>
cf. <CAM4o00eefXK2CJ_FxwwVPpBKL01JsJANf+SdjCtw_0NVV82L+Q@mail.gmail.com>
* sv/t7001-modernize (2020-09-25) 11 commits
- t7001: move cleanup code from outside the tests into them
- t7001: use `test` rather than `[`
- t7001: use here-docs instead of echo
- t7001: put each command on a separate line
- t7001: use ': >' rather than 'touch'
- t7001: change (cd <path> && git foo) to (git -C <path> foo)
- t7001: remove whitespace after redirect operators
- t7001: change the style for cd according to subshell
- t7001: remove unnecessary blank lines
- t7001: use TAB instead of spaces
- t7001: convert tests from the old style to the current style
Test script modernization.
Expecting a reroll.
cf. <20200925170256.11490-1-shubhunic@gmail.com>
* ar/fetch-transfer-ipversion (2020-09-16) 1 commit
- config: option transfer.ipversion to set transport protocol version for network fetches
Adds transfer.ipversion configuration variable.
Needs more work.
* jc/war-on-dashed-git (2020-12-21) 2 commits
- fixup??? git: catch an attempt to run "git-foo"
- git: catch an attempt to run "git-foo"
The first step to remove on-disk binaries for built-in subcommands
by soliciting objections.
On hold for now.
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
* ag/merge-strategies-in-c (2020-11-24) 13 commits
- sequencer: use the "octopus" merge strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-index: don't fork if the requested program is `git-merge-one-file'
- merge-index: libify merge_one_path() and merge_all()
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- t6060: modify multiple files to expose a possible issue with merge-index
- t6407: modernise tests
(this branch is used by ds/update-index.)
The resolve and octopus merge strategy backends have been rewritten
in C.
Got enough review comments to get updated.
--------------------------------------------------
[Cooking]
* en/ort-directory-rename (2021-01-07) 18 commits
- merge-ort: fix a directory rename detection bug
- merge-ort: process_renames() now needs more defensiveness
- merge-ort: implement apply_directory_rename_modifications()
- merge-ort: add a new toplevel_dir field
- merge-ort: implement handle_path_level_conflicts()
- merge-ort: implement check_for_directory_rename()
- merge-ort: implement apply_dir_rename() and check_dir_renamed()
- merge-ort: implement compute_collisions()
- merge-ort: modify collect_renames() for directory rename handling
- merge-ort: implement handle_directory_level_conflicts()
- merge-ort: implement compute_rename_counts()
- merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
- merge-ort: add outline of get_provisional_directory_renames()
- merge-ort: add outline for computing directory renames
- merge-ort: collect which directories are removed in dirs_removed
- merge-ort: initialize and free new directory rename data structures
- merge-ort: add new data structures for directory rename detection
- Merge branch 'en/merge-ort-3' into en/ort-directory-rename
(this branch is used by en/merge-ort-perf; uses en/merge-ort-3.)
ORT merge strategy learns to infer "renamed directory" while
merging.
* jk/forbid-lf-in-git-url (2021-01-07) 2 commits
(merged to 'next' on 2021-01-12 at 88a1d937ae)
+ fsck: reject .gitmodules git:// urls with newlines
+ git_connect_git(): forbid newlines in host and path
Newline characters in the host and path part of git:// URL are
now forbidden.
Will merge to 'master'.
* ps/fetch-atomic (2021-01-12) 5 commits
(merged to 'next' on 2021-01-13 at a8896d0873)
+ fetch: implement support for atomic reference updates
+ fetch: allow passing a transaction to `s_update_ref()`
+ fetch: refactor `s_update_ref` to use common exit path
+ fetch: use strbuf to format FETCH_HEAD updates
+ fetch: extract writing to FETCH_HEAD
"git fetch" learns to treat ref updates atomically in all-or-none
fashion, just like "git push" does, with the new "--atomic" option.
Will merge to 'master'.
* ab/detox-gettext-tests (2021-01-11) 6 commits
- tests: remove uses of GIT_TEST_GETTEXT_POISON=false
- tests: (almost) remove C_LOCALE_OUTPUT prerequisites
- tests: (almost) remove use of "test_i18ngrep !"
- tests: remove misc use of test_i18n{cmp,grep}
- tests: remove support for GIT_TEST_GETTEXT_POISON
- ci: remove GETTEXT_POISON jobs
Get rid of "GETTEXT_POISON" support altogether, which may or may
not be controversial.
* bc/signed-objects-with-both-hashes (2021-01-11) 6 commits
- SQUASH??? ulong vs size_t
- gpg-interface: remove other signature headers before verifying
- ref-filter: hoist signature parsing
- commit: allow parsing arbitrary buffers with headers
- gpg-interface: improve interface for parsing tags
- commit: ignore additional signatures when parsing signed commits
Signed commits and tags now allow verification of objects, whose
two object names (one in SHA-1, the other in SHA-256) are both
signed.
* ds/update-index (2021-01-09) 14 commits
- update-index: remove static globals from callbacks
- update-index: reduce static globals, part 2
- update-index: reduce static globals, part 1
- update-index: remove ce_match_stat(), all macros
- update-index: replace several compatibility macros
- update-index: use add_index_entry()
- update-index: use remove_file_from_index()
- update-index: use index_name_pos() over cache_name_pos()
- update-index: use istate->cache_changed
- update-index: use istate->cache_nr over active_nr
- update-index: use istate->cache over active_cache
- update-index: drop the_index, the_repository
- rm: remove compatilibity macros
- mv: remove index compatibility macros
(this branch uses ag/merge-strategies-in-c.)
The implementation of a few commands lost reliance of "the_index"
compatibility macros by explicitly passing the index_state through
the callchain.
Unfortunately the base topic still needs to solidify.
* jx/bundle (2021-01-11) 3 commits
(merged to 'next' on 2021-01-14 at 749a907dd2)
+ bundle: arguments can be read from stdin
+ bundle: lost objects when removing duplicate pendings
+ test: add helper functions for git-bundle
"git bundle" learns "--stdin" option to read its refs from the
standard input. Also, it now does not lose refs whey they point
at the same object.
Will merge to 'master'.
* ab/mailmap (2021-01-12) 22 commits
(merged to 'next' on 2021-01-13 at a3ce27912f)
+ shortlog: remove unused(?) "repo-abbrev" feature
+ mailmap doc + tests: document and test for case-insensitivity
+ mailmap tests: add tests for empty "<>" syntax
+ mailmap tests: add tests for whitespace syntax
+ mailmap tests: add a test for comment syntax
+ mailmap doc + tests: add better examples & test them
+ tests: refactor a few tests to use "test_commit --append"
+ test-lib functions: add an --append option to test_commit
+ test-lib functions: add --author support to test_commit
+ test-lib functions: document arguments to test_commit
+ test-lib functions: expand "test_commit" comment template
+ mailmap: test for silent exiting on missing file/blob
+ mailmap tests: get rid of overly complex blame fuzzing
+ mailmap tests: add a test for "not a blob" error
+ mailmap tests: remove redundant entry in test
+ mailmap tests: improve --stdin tests
+ mailmap tests: modernize syntax & test idioms
+ mailmap tests: use our preferred whitespace syntax
+ mailmap doc: start by mentioning the comment syntax
+ check-mailmap doc: note config options
+ mailmap doc: quote config variables `like.this`
+ mailmap doc: create a new "gitmailmap(5)" man page
(this branch is used by ab/mailmap-fixup.)
Clean-up docs, codepaths and tests around mailmap.
Will merge to 'master'.
* jk/log-cherry-pick-duplicate-patches (2021-01-12) 1 commit
(merged to 'next' on 2021-01-13 at abcfbf8603)
+ patch-ids: handle duplicate hashmap entries
When more than one commit with the same patch ID appears on one
side, "git log --cherry-pick A...B" did not exclude them all when a
commit with the same patch ID appears on the other side. Now it
does.
Will merge to 'master'.
* tb/pack-revindex-api (2021-01-14) 21 commits
(merged to 'next' on 2021-01-15 at 1f2997979c)
+ for_each_object_in_pack(): clarify pack vs index ordering
+ pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
+ pack-revindex: hide the definition of 'revindex_entry'
+ pack-revindex: remove unused 'find_revindex_position()'
+ pack-revindex: remove unused 'find_pack_revindex()'
+ builtin/gc.c: guess the size of the revindex
+ for_each_object_in_pack(): convert to new revindex API
+ unpack_entry(): convert to new revindex API
+ packed_object_info(): convert to new revindex API
+ retry_bad_packed_offset(): convert to new revindex API
+ get_delta_base_oid(): convert to new revindex API
+ rebuild_existing_bitmaps(): convert to new revindex API
+ try_partial_reuse(): convert to new revindex API
+ get_size_by_pos(): convert to new revindex API
+ show_objects_for_type(): convert to new revindex API
+ bitmap_position_packfile(): convert to new revindex API
+ check_object(): convert to new revindex API
+ write_reused_pack_verbatim(): convert to new revindex API
+ write_reused_pack_one(): convert to new revindex API
+ write_reuse_object(): convert to new revindex API
+ pack-revindex: introduce a new API
(this branch is used by tb/pack-revindex-on-disk.)
Abstract accesses to in-core revindex that allows enumerating
objects stored in a packfile in the order they appear in the pack,
in preparation for introducing an on-disk precomputed revindex.
Will merge to 'master'.
* cc/write-promisor-file (2021-01-14) 3 commits
(merged to 'next' on 2021-01-14 at 9d773d4734)
+ pack-write: die on error in write_promisor_file()
+ fetch-pack: refactor writing promisor file
+ fetch-pack: rename helper to create_promisor_file()
A bit of code refactoring.
Will merge to 'master'.
* js/rebase-i-commit-cleanup-fix (2021-01-12) 1 commit
- rebase -i: do leave commit message intact in fixup! chains
When "git rebase -i" processes "fixup" insn, there is no reason to
clean up the commit log message, but we did the usual stripspace
processing. This has been corrected.
A bit more tests to document what is still broken have been offered.
cf. <20210112204939.1095-1-martin.agren@gmail.com>
* ab/mailmap-fixup (2021-01-14) 4 commits
(merged to 'next' on 2021-01-15 at ef14e2263d)
+ t4203: make blame output massaging more robust
+ mailmap doc: use correct environment variable 'GIT_WORK_TREE'
+ t4203: stop losing return codes of git commands
+ test-lib-functions.sh: fix usage for test_commit()
(this branch uses ab/mailmap.)
Follow-up fixes and improvements to ab/mailmap topic.
Will merge to 'master'.
* tb/pack-revindex-on-disk (2021-01-14) 8 commits
- pack-revindex: ensure that on-disk reverse indexes are given precedence
- t: support GIT_TEST_WRITE_REV_INDEX
- t: prepare for GIT_TEST_WRITE_REV_INDEX
- Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
- builtin/pack-objects.c: respect 'pack.writeReverseIndex'
- builtin/index-pack.c: write reverse indexes
- pack-write.c: prepare to write 'pack-*.rev' files
- packfile: prepare for the existence of '*.rev' files
(this branch uses tb/pack-revindex-api.)
Introduce an on-disk file to record revindex for packdata, which
traditionally was always created on the fly and only in-core.
* en/merge-ort-perf (2021-01-15) 4 commits
- merge-ort: begin performance work; instrument with trace2_region_* calls
- Merge branch 'en/ort-directory-rename' into en/merge-ort-perf
- Merge branch 'en/ort-conflict-handling' into en/merge-ort-perf
- Merge branch 'en/diffcore-rename' into en/merge-ort-perf
(this branch uses en/diffcore-rename, en/merge-ort-3, en/ort-conflict-handling and en/ort-directory-rename.)
* ab/branch-sort (2021-01-07) 7 commits
(merged to 'next' on 2021-01-12 at 1231feea7c)
+ branch: show "HEAD detached" first under reverse sort
+ branch: sort detached HEAD based on a flag
+ ref-filter: move ref_sorting flags to a bitfield
+ ref-filter: move "cmp_fn" assignment into "else if" arm
+ ref-filter: add braces to if/else if/else chain
+ branch tests: add to --sort tests
+ branch: change "--local" to "--list" in comment
The implementation of "git branch --sort" wrt the detached HEAD
display has always been hacky, which has been cleaned up.
Will merge to 'master'.
* ab/coc-update-to-2.0 (2021-01-13) 3 commits
(merged to 'next' on 2021-01-15 at 4859c12625)
+ CoC: update to version 2.0 + local changes
+ CoC: explicitly take any whitespace breakage
+ CoC: Update word-wrapping to match upstream
Update the Code-of-conduct to version 2.0 from the upstream (we've
been using version 1.4).
Will merge to 'master'.
* dl/reflog-with-single-entry (2021-01-11) 2 commits
(merged to 'next' on 2021-01-13 at 09b33209c4)
+ refs: allow @{n} to work with n-sized reflog
+ refs: factor out set_read_ref_cutoffs()
After expiring a reflog and making a single commit, the reflog for
the branch would record a single entry that knows both @{0} and
@{1}, but we failed to answer "what commit were we on?", i.e. @{1}
Will merge to 'master'.
* ds/cache-tree-basics (2021-01-15) 10 commits
- cache-tree: speed up consecutive path comparisons
- cache-tree: use ce_namelen() instead of strlen()
- index-format: discuss recursion of cache-tree better
- index-format: update preamble to cache tree extension
- index-format: use 'cache tree' over 'cached tree'
- cache-tree: trace regions for prime_cache_tree
- cache-tree: trace regions for I/O
- cache-tree: use trace2 in cache_tree_update()
- unpack-trees: add trace2 regions
- tree-walk: report recursion counts
Document, clean-up and optimize the code around the cache-tree
extension in the index.
Will merge to 'next'.
* en/ort-conflict-handling (2021-01-04) 10 commits
- merge-ort: add handling for different types of files at same path
- merge-ort: copy find_first_merges() implementation from merge-recursive.c
- merge-ort: implement format_commit()
- merge-ort: copy and adapt merge_submodule() from merge-recursive.c
- merge-ort: copy and adapt merge_3way() from merge-recursive.c
- merge-ort: flesh out implementation of handle_content_merge()
- merge-ort: handle book-keeping around two- and three-way content merge
- merge-ort: implement unique_path() helper
- merge-ort: handle directory/file conflicts that remain
- merge-ort: handle D/F conflict where directory disappears due to merge
(this branch is used by en/merge-ort-perf.)
ORT merge strategy learns more support for merge conflicts.
Will merge to 'next'.
* ma/more-opaque-lock-file (2021-01-06) 5 commits
(merged to 'next' on 2021-01-12 at f246e38b50)
+ read-cache: try not to peek into `struct {lock_,temp}file`
+ refs/files-backend: don't peek into `struct lock_file`
+ midx: don't peek into `struct lock_file`
+ commit-graph: don't peek into `struct lock_file`
+ builtin/gc: don't peek into `struct lock_file`
Code clean-up.
Will merge to 'master'.
* sg/t7800-difftool-robustify (2021-01-09) 1 commit
- t7800-difftool: don't accidentally match tmp dirs
Test fix.
Not working on Windows.
cf. https://github.com/git/git/runs/1660588243?check_suite_focus=true#step:7:4186
* ak/corrected-commit-date (2021-01-16) 11 commits
- doc: add corrected commit date info
- commit-reach: use corrected commit dates in paint_down_to_common()
- commit-graph: use generation v2 only if entire chain does
- commit-graph: implement generation data chunk
- commit-graph: implement corrected commit date
- commit-graph: return 64-bit generation number
- commit-graph: add a slab to store topological levels
- t6600-test-reach: generalize *_three_modes
- commit-graph: consolidate fill_commit_graph_info
- revision: parse parent in indegree_walk_step()
- commit-graph: fix regression when computing Bloom filters
The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
* fc/mergetool-automerge (2021-01-09) 8 commits
. fixup! mergetool: break setup_tool out into separate initialization function
. fixup! fixup! mergetool: add automerge configuration
. fixup! mergetool: add automerge configuration
. mergetool: add automerge_enabled tool-specific override function
. mergetool: break setup_tool out into separate initialization function
. mergetool: add per-tool support for the autoMerge flag
. mergetool: alphabetize the mergetool config docs
. mergetool: add automerge configuration
"git mergetool" feeds three versions (base, local and remote) of
a conflicted path unmodified. The command learned to optionally
prepare these files with unconflicted parts already resolved.
Breaks tests on Windows
cf. https://github.com/git/git/runs/1675932107?check_suite_focus=true#step:7:10373
* mr/bisect-in-c-4 (2020-12-21) 7 commits
- bisect--helper: retire `--check-and-set-terms` subcommand
- bisect--helper: reimplement `bisect_skip` shell function in C
- bisect--helper: retire `--bisect-auto-next` subcommand
- bisect--helper: use `res` instead of return in BISECT_RESET case option
- bisect--helper: retire `--bisect-write` subcommand
- bisect--helper: reimplement `bisect_replay` shell function in C
- bisect--helper: reimplement `bisect_log` shell function in C
Piecemeal of rewrite of "git bisect" in C continues.
What's the status of this thing?
* jt/clone-unborn-head (2020-12-22) 3 commits
- clone: respect remote unborn HEAD
- connect, transport: add no-op arg for future patch
- ls-refs: report unborn targets of symrefs
"git clone" tries to locally check out the branch pointed at by
HEAD of the remote repository after it is done, but the protocol
did not convey the information necessary to do so when copying an
empty repository. The protocol v2 learned how to do so.
What's the status of this thing?
* fc/bash-completion-post-2.29 (2020-12-23) 4 commits
. completion: bash: add correct suffix in variables
. completion: bash: fix for multiple dash commands
. completion: bash: fix for suboptions with value
. completion: bash: fix prefix detection in branch.*
Seems to break tests on Windows
* jc/deprecate-pack-redundant (2020-12-15) 1 commit
(merged to 'next' on 2021-01-12 at 14034c7892)
+ pack-redundant: gauge the usage before proposing its removal
Warn loudly when the "pack-redundant" command, which has been left
stale with almost unusable performance issues, gets used, as we no
longer want to recommend its use (instead just "repack -d" instead).
Will merge to 'master'.
* mt/parallel-checkout-part-1 (2020-12-16) 9 commits
- entry: add checkout_entry_ca() taking preloaded conv_attrs
- entry: move conv_attrs lookup up to checkout_entry()
- entry: extract update_ce_after_write() from write_entry()
- entry: make fstat_output() and read_blob_entry() public
- entry: extract a header file for entry.c functions
- convert: add classification for conv_attrs struct
- convert: add get_stream_filter_ca() variant
- convert: add [async_]convert_to_working_tree_ca() variants
- convert: make convert_attrs() and convert structs public
Parallel checkout.
Looking good.
* en/merge-ort-3 (2020-12-15) 11 commits
(merged to 'next' on 2021-01-08 at fe481b9627)
+ merge-ort: add implementation of type-changed rename handling
+ merge-ort: add implementation of normal rename handling
+ merge-ort: add implementation of rename collisions
+ merge-ort: add implementation of rename/delete conflicts
+ merge-ort: add implementation of both sides renaming differently
+ merge-ort: add implementation of both sides renaming identically
+ merge-ort: add basic outline for process_renames()
+ merge-ort: implement compare_pairs() and collect_renames()
+ merge-ort: implement detect_regular_renames()
+ merge-ort: add initial outline for basic rename detection
+ merge-ort: add basic data structures for handling renames
(this branch is used by en/merge-ort-perf and en/ort-directory-rename.)
Rename detection is added to the "ORT" merge strategy.
Will merge to 'master'.
* ps/config-env-pairs (2021-01-15) 8 commits
(merged to 'next' on 2021-01-15 at 4ed0341270)
+ config: allow specifying config entries via envvar pairs
+ environment: make `getenv_safe()` a public function
+ config: store "git -c" variables using more robust format
+ config: parse more robust format in GIT_CONFIG_PARAMETERS
+ config: extract function to parse config pairs
+ quote: make sq_dequote_step() a public function
+ config: add new way to pass config via `--config-env`
+ git: add `--super-prefix` to usage string
Introduce two new ways to feed configuration variable-value pairs
via environment variables, and tweak the way GIT_CONFIG_PARAMETERS
encodes variable/value pairs to make it more robust.
Will merge to 'master'.
* so/log-diff-merge (2020-12-21) 32 commits
- t4013: add tests for --diff-merges=first-parent
- doc/git-show: include --diff-merges description
- doc/rev-list-options: document --first-parent changes merges format
- doc/diff-generate-patch: mention new --diff-merges option
- doc/git-log: describe new --diff-merges options
- diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
- diff-merges: add old mnemonic counterparts to --diff-merges
- diff-merges: let new options enable diff without -p
- diff-merges: do not imply -p for new options
- diff-merges: implement new values for --diff-merges
- diff-merges: make -m/-c/--cc explicitly mutually exclusive
- diff-merges: refactor opt settings into separate functions
- diff-merges: get rid of now empty diff_merges_init_revs()
- diff-merges: group diff-merge flags next to each other inside 'rev_info'
- diff-merges: split 'ignore_merges' field
- diff-merges: fix -m to properly override -c/--cc
- t4013: add tests for -m failing to override -c/--cc
- t4013: support test_expect_failure through ':failure' magic
- diff-merges: revise revs->diff flag handling
- diff-merges: handle imply -p on -c/--cc logic for log.c
- diff-merges: introduce revs->first_parent_merges flag
- diff-merges: new function diff_merges_set_dense_combined_if_unset()
- diff-merges: new function diff_merges_suppress()
- diff-merges: re-arrange functions to match the order they are called in
- diff-merges: rename diff_merges_default_to_enable() to match semantics
- diff-merges: move checks for first_parent_only out of the module
- diff-merges: rename all functions to have common prefix
- revision: move diff merges functions to its own diff-merges.c
- revision: provide implementation for diff merges tweaks
- revision: factor out initialization of diff-merge related settings
- revision: factor out setup of diff-merge related settings
- revision: factor out parsing of diff-merge related options
"git log" learned a new "--diff-merges=<how>" option.
Will merge to 'next'.
* es/config-hooks (2020-12-21) 34 commits
- run-command: stop thinking about hooks
- receive-pack: convert receive hooks to hook.h
- post-update: use hook.h library
- proc-receive: acquire hook list from hook.h
- receive-pack: convert 'update' hook to hook.h
- reference-transaction: look for hooks in config
- transport: convert pre-push hook to use config
- hook: convert 'post-rewrite' hook to config
- hooks: convert 'post-checkout' hook to hook library
- git-p4: use 'git hook' to run hooks
- receive-pack: convert push-to-checkout hook to hook.h
- read-cache: convert post-index-change hook to use config
- rebase: teach pre-rebase to use hook.h
- gc: use hook library for pre-auto-gc hook
- merge: use config-based hooks for post-merge hook
- am: convert applypatch hooks to use config
- commit: use config-based hooks
- hooks: allow callers to capture output
- run-command: allow capturing of collated output
- hook: provide stdin by string_list or callback
- run-command: add stdin callback for parallelization
- hook: allow specifying working directory for hooks
- hook: allow parallel hook execution
- run-command: allow stdin for run_processes_parallel
- hook: support passing stdin to hooks
- hook: replace find_hook() with hook_exists()
- hook: add 'run' subcommand
- parse-options: parse into strvec
- hook: implement hookcmd.<name>.skip
- hook: respect hook.runHookDir
- hook: include hookdir hook in list
- hook: add list command
- hook: scaffolding for git-hook subcommand
- doc: propose hooks managed by the config
The "hooks defined in config" topic.
Expecting doc updates, but otherwise seems to be progressing nicely.
* hn/reftable (2020-12-21) 16 commits
- SQUASH??? allow t0031 to run with any default branch name
- Add "test-tool dump-reftable" command.
- git-prompt: prepare for reftable refs backend
- Reftable support for git-core
- reftable: rest of library
- reftable: reftable file level tests
- reftable: read reftable files
- reftable: write reftable files
- reftable: a generic binary tree implementation
- reftable: reading/writing blocks
- reftable: (de)serialization for the polymorphic record type.
- reftable: add blocksource, an abstraction for random access reads
- reftable: utility functions
- reftable: add error related functionality
- reftable: add LICENSE
- init-db: set the_repository->hash_algo early on
The "reftable" backend for the refs API.
* ab/mktag (2021-01-06) 23 commits
(merged to 'next' on 2021-01-08 at 6f9e11ad97)
+ mktag: add a --[no-]strict option
+ mktag: mark strings for translation
+ mktag: convert to parse-options
+ mktag: allow omitting the header/body \n separator
+ mktag: allow turning off fsck.extraHeaderEntry
+ fsck: make fsck_config() re-usable
+ mktag: use fsck instead of custom verify_tag()
+ mktag: use puts(str) instead of printf("%s\n", str)
+ mktag: remove redundant braces in one-line body "if"
+ mktag: use default strbuf_read() hint
+ mktag tests: test verify_object() with replaced objects
+ mktag tests: improve verify_object() test coverage
+ mktag tests: test "hash-object" compatibility
+ mktag tests: stress test whitespace handling
+ mktag tests: run "fsck" after creating "mytag"
+ mktag tests: don't create "mytag" twice
+ mktag tests: don't redirect stderr to a file needlessly
+ mktag tests: remove needless SHA-1 hardcoding
+ mktag tests: use "test_commit" helper
+ mktag tests: don't needlessly use a subshell
+ mktag doc: update to explain why to use this
+ mktag doc: grammar fix, when exists -> when it exists
+ mktag doc: say <hash> not <sha1>
"git mktag" validates its input using its own rules before writing
a tag object---it has been updated to share the logic with "git
fsck".
Will merge to 'master'.
* en/diffcore-rename (2021-01-04) 9 commits
(merged to 'next' on 2021-01-12 at fa769ebc35)
+ diffcore-rename: remove unnecessary duplicate entry checks
+ diffcore-rename: accelerate rename_dst setup
+ diffcore-rename: simplify and accelerate register_rename_src()
+ t4058: explore duplicate tree entry handling in a bit more detail
+ t4058: add more tests and documentation for duplicate tree entry handling
+ diffcore-rename: reduce jumpiness in progress counters
+ diffcore-rename: simplify limit check
+ diffcore-rename: avoid usage of global in too_many_rename_candidates()
+ diffcore-rename: rename num_create to num_destinations
(this branch is used by en/merge-ort-perf.)
File-level rename detection updates.
Will merge to 'master'.
* js/default-branch-name-tests-final-stretch (2020-11-19) 29 commits
(merged to 'next' on 2021-01-13 at 0e93f0d529)
+ tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
+ t99*: adjust the references to the default branch name "main"
+ tests(git-p4): transition to the default branch name `main`
+ t9[5-7]*: adjust the references to the default branch name "main"
+ t9[0-4]*: adjust the references to the default branch name "main"
+ t8*: adjust the references to the default branch name "main"
+ t7[5-9]*: adjust the references to the default branch name "main"
+ t7[0-4]*: adjust the references to the default branch name "main"
+ t6[4-9]*: adjust the references to the default branch name "main"
+ t64*: preemptively adjust alignment to prepare for `master` -> `main`
+ t6[0-3]*: adjust the references to the default branch name "main"
+ t5[6-9]*: adjust the references to the default branch name "main"
+ t55[4-9]*: adjust the references to the default branch name "main"
+ t55[23]*: adjust the references to the default branch name "main"
+ t551*: adjust the references to the default branch name "main"
+ t550*: adjust the references to the default branch name "main"
+ t5503: prepare aligned comment for replacing `master` with `main`
+ t5[0-4]*: adjust the references to the default branch name "main"
+ t5323: prepare centered comment for `master` -> `main`
+ t4*: adjust the references to the default branch name "main"
+ t3[5-9]*: adjust the references to the default branch name "main"
+ t34*: adjust the references to the default branch name "main"
+ t3416: preemptively adjust alignment in a comment
+ t3[0-3]*: adjust the references to the default branch name "main"
+ t2*: adjust the references to the default branch name "main"
+ t[01]*: adjust the references to the default branch name "main"
+ t0060: preemptively adjust alignment
+ tests: mark tests relying on the current default for `init.defaultBranch`
+ Merge 'jk/diff-release-filespec-fix' into js/default-branch-name-tests-final-stretch
Prepare tests not to be affected by the name of the default branch
"git init" creates.
Will merge to 'master'.
* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-12-08) 1 commit
(merged to 'next' on 2021-01-12 at 2aca21c42e)
+ diff: do not show submodule with untracked files as "-dirty"
"git diff" showed a submodule working tree with untracked cruft as
"Submodule commit <objectname>-dirty", but a natural expectation is
that the "-dirty" indicator would align with "git describe --dirty",
which does not consider having untracked files in the working tree
as source of dirtiness. The inconsistency has been fixed.
Will merge to 'master'.
--------------------------------------------------
[Discarded]
* jc/config-pretend-gitdir (2020-12-15) 1 commit
. config: --pretend-git-dir for includeIf:gitdir
It turns out that the original "problem" that inspired the feature
was working as designed.
cf. <CAPQE4+rhWT9kgusNXOw5cnJ-oFq++4G1FMaXvQ3wppQ0GE0hSA@mail.gmail.com>
* bc/hashed-mailmap (2020-12-12) 1 commit
. mailmap: support hashed entries in mailmaps
The mailmap database learned to take hashed value as the original
side of mapping.
Retracted for now.
cf. <X/uvhc5Hpu792qA/@camp.crustytoothpaste.net>
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Nov 2020, #01; Mon, 2)
@ 2020-11-02 22:27 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-11-02 22:27 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics in this cycle are in 'master' now,
including some microprojects by candidates for the Outreachy
program.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into. Some repositories have
only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* as/sample-push-to-checkout-hook (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at 644026c2f6)
+ hook: add sample template for push-to-checkout
Add a sample 'push-to-checkout' hook, that performs the same as
what the built-in default action does.
* bc/svn-hash-oid-fix (2020-10-21) 1 commit
(merged to 'next' on 2020-10-26 at 743b549d5d)
+ svn: use correct variable name for short OID
A recent oid->hash conversion missed one spot, breaking "git svn".
* bk/sob-dco (2020-10-20) 4 commits
(merged to 'next' on 2020-10-26 at d0e5066a7e)
+ Documentation: stylistically normalize references to Signed-off-by:
+ SubmittingPatches: clarify DCO is our --signoff rule
+ Documentation: clarify and expand description of --signoff
+ doc: preparatory clean-up of description on the sign-off option
Document that the meaning of a Signed-off-by trailer can vary from
project to project in the end-user documentation, and clarify what
it means to this project.
* cm/t7xxx-cleanup (2020-10-22) 6 commits
(merged to 'next' on 2020-10-26 at 8b58e54942)
+ t7102: prepare expected output inside test_expect_* block
+ t7201: put each command on a separate line
+ t7201: use 'git -C' to avoid subshell
+ t7102,t7201: remove whitespace after redirect operator
+ t7102,t7201: remove unnecessary blank spaces in test body
+ t7101,t7102,t7201: modernize test formatting
Originally merged to 'next' on 2020-10-23
Micro clean-up.
* ct/t0000-use-test-path-is-file (2020-10-18) 1 commit
(merged to 'next' on 2020-10-26 at 9b70aa748f)
+ t0000: use test_path_is_file instead of "test -f"
Originally merged to 'next' on 2020-10-23
Micro clean-up of a test script.
* dl/diff-merge-base (2020-09-21) 10 commits
(merged to 'next' on 2020-10-26 at 114d94030b)
+ contrib/completion: complete `git diff --merge-base`
+ builtin/diff-tree: learn --merge-base
+ builtin/diff-index: learn --merge-base
+ t4068: add --merge-base tests
+ diff-lib: define diff_get_merge_base()
+ diff-lib: accept option flags in run_diff_index()
+ contrib/completion: extract common diff/difftool options
+ git-diff.txt: backtick quote command text
+ git-diff-index.txt: make --cached description a proper sentence
+ t4068: remove unnecessary >tmp
"git diff A...B" learned "git diff --merge-base A B", which is a
longer short-hand to say the same thing.
* dl/resurrect-update-for-sha256 (2020-10-08) 2 commits
(merged to 'next' on 2020-10-26 at 7e94297aa4)
+ contrib/git-resurrect.sh: use hash-agnostic OID pattern
+ contrib/git-resurrect.sh: indent with tabs
Originally merged to 'next' on 2020-10-23
"git resurrect" script (in contrib/) learned that the object names
may be longer than 40-hex depending on the hash function in use.
* ds/commit-graph-merging-fix (2020-10-09) 2 commits
(merged to 'next' on 2020-10-26 at a0cf763826)
+ commit-graph: don't write commit-graph when disabled
+ commit-graph: ignore duplicates when merging layers
When "git commit-graph" detects the same commit recorded more than
once while it is merging the layers, it used to die. The code now
ignores all but one of them and continues.
* ds/maintenance-commit-graph-auto-fix (2020-10-12) 2 commits
(merged to 'next' on 2020-10-26 at 429d1371d8)
+ maintenance: core.commitGraph=false prevents writes
+ maintenance: test commit-graph auto condition
Test-coverage enhancement of running commit-graph task "git
maintenance" as needed led to discovery and fix of a bug.
* en/sequencer-rollback-lock-cleanup (2020-10-21) 1 commit
(merged to 'next' on 2020-10-26 at 1234e8297f)
+ sequencer: remove duplicate rollback_lock_file() call
Code clean-up.
* en/t7518-unflake (2020-10-18) 1 commit
(merged to 'next' on 2020-10-26 at 443459f7ca)
+ t7518: fix flaky grep invocation
Originally merged to 'next' on 2020-10-23
Work around flakiness in a test.
* en/test-selector (2020-10-18) 3 commits
(merged to 'next' on 2020-10-26 at 3d6e77c3ff)
+ test-lib: reduce verbosity of skipped tests
+ t6006, t6012: adjust tests to use 'setup' instead of synonyms
+ test-lib: allow selecting tests by substring/glob with --run
Our test scripts can be told to run only individual pieces while
skipping others with the "--run=..." option; they were taught to
take a substring of test title, in addition to numbers, to name the
test pieces to run.
* es/test-cmp-typocatcher (2020-10-20) 1 commit
(merged to 'next' on 2020-10-26 at 62d89db753)
+ Revert "test_cmp: diagnose incorrect arguments"
A test helper "test_cmp A B" was taught to diagnose missing files A
or B as a bug in test, but some tests legitimately wanted to notice
a failure to even create file B as an error, in addition to leaving
the expected result in it, and were misdiagnosed as a bug. This
has been corrected.
* es/tutorial-mention-asciidoc-early (2020-10-16) 1 commit
(merged to 'next' on 2020-10-28 at 96e0d84d94)
+ MyFirstContribution: clarify asciidoc dependency
Doc update.
* jc/doc-final-resend (2020-10-26) 1 commit
(merged to 'next' on 2020-10-30 at 2dd2c8a0d9)
+ SubmittingPatches: clarify the purpose of the final resend
Update developer doc.
* jk/fast-import-marks-alloc-fix (2020-10-15) 1 commit
(merged to 'next' on 2020-10-26 at 2f0a73fd48)
+ fast-import: fix over-allocation of marks storage
"git fast-import" wasted a lot of memory when many marks were in use.
* jk/fast-import-marks-cleanup (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at 1ba987dd54)
+ fast-import: remove duplicated option-parsing line
Code clean-up.
* jk/no-common (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at c888cb8b28)
+ config.mak.dev: build with -fno-common
Dev support to catch a tentative definition of a variable in our C
code as an error.
* jk/report-fn-typedef (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at fa4e128b65)
+ usage: define a type for a reporting function
Code clean-up.
* js/avoid-split-sideband-message (2020-10-27) 3 commits
(merged to 'next' on 2020-10-27 at 06b2f75522)
+ test-pkt-line: drop colon from sideband identity
(merged to 'next' on 2020-10-26 at 1b550f3245)
+ sideband: report unhandled incomplete sideband messages as bugs
+ sideband: avoid reporting incomplete sideband messages
(this branch is used by jk/sideband-more-error-checking.)
The side-band status report can be sent at the same time as the
primary payload multiplexed, but the demultiplexer on the receiving
end incorrectly split a single status report into two, which has
been corrected.
* js/ci-ghwf-dedup-tests (2020-10-12) 2 commits
(merged to 'next' on 2020-10-26 at 4832a8f40b)
+ ci: make the "skip-if-redundant" check more defensive
+ ci: work around old records of GitHub runs
Originally merged to 'next' on 2020-10-23
GitHub Actions automated test improvement to skip tests on a tree
identical to what has already been tested.
* js/default-branch-name-part-4-minus-1 (2020-10-23) 9 commits
(merged to 'next' on 2020-10-26 at 0a66b76c66)
+ t1400: prepare for `main` being default branch name
+ tests: prepare aligned mentions of the default branch name
+ t9902: prepare a test for the upcoming default branch name
+ t3200: prepare for `main` being shorter than `master`
+ t5703: adjust a test case for the upcoming default branch name
+ t6200: adjust suppression pattern to also match "main"
+ tests: start moving to a different default main branch name
+ t9801: use `--` in preparation for default branch rename
+ fmt-merge-msg: also suppress "into main" by default
(this branch is used by js/default-branch-name-adjust-t5411.)
Adjust tests so that they won't scream when the default initial
branch name is changed to 'main'.
* js/t7006-cleanup (2020-10-21) 1 commit
(merged to 'next' on 2020-10-26 at b8582f842d)
+ t7006: Use test_path_is_* functions in test script
Code clean-up.
* jt/apply-reverse-twice (2020-10-20) 1 commit
(merged to 'next' on 2020-10-26 at f060893eb7)
+ apply: when -R, also reverse list of sections
"git apply -R" did not handle patches that touch the same path
twice correctly, which has been corrected. This is most relevant
in a patch that changes a path from a regular file to a symbolic
link (and vice versa).
* lo/zsh-completion (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at 100dc6adde)
+ completion: fix zsh installation instructions
Update instructions for command line completion (in contrib/) for zsh.
* mk/diff-ignore-regex (2020-10-20) 2 commits
(merged to 'next' on 2020-10-26 at c68727da93)
+ diff: add -I<regex> that ignores matching changes
+ merge-base, xdiff: zero out xpparam_t structures
"git diff" family of commands learned the "-I<regex>" option to
ignore hunks whose changed lines all match the given pattern.
* nk/dir-c-comment-update (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at 3a4cb82ad6)
+ dir.c: fix comments to agree with argument name
Update stale in-code comment.
* sc/sequencer-gpg-octopus (2020-10-18) 3 commits
(merged to 'next' on 2020-10-26 at e1c956e52a)
+ t3435: add tests for rebase -r GPG signing
+ sequencer: pass explicit --no-gpg-sign to merge
+ sequencer: fix gpg option passed to merge subcommand
"git rebase --rebase-merges" did not correctly pass --gpg-sign
command line option to underlying "git merge" when replaying a merge
using non-default merge strategy or when replaying an octopus merge
(because replaying a two-head merge with the default strategy was
done in a separate codepath, the problem did not trigger for most
users), which has been corrected.
* tk/credential-config (2020-10-16) 1 commit
(merged to 'next' on 2020-10-26 at 6ab486f389)
+ credential: load default config
"git credential' didn't honor the core.askPass configuration
variable (among other things), which has been corrected.
* ve/userdiff-bash (2020-10-22) 1 commit
(merged to 'next' on 2020-10-26 at 2b34be98fe)
+ userdiff: support Bash
The userdiff pattern learned to identify the function definition in
POSIX shells and bash.
--------------------------------------------------
[New Topics]
* dd/upload-pack-stateless-eof (2020-10-30) 1 commit
- upload-pack: allow stateless client EOF just prior to haves
* js/trace2-session-id (2020-10-31) 11 commits
- upload-pack.c: fix a sparse warning
- receive-pack: log received client trace2 SID
- send-pack: advertise trace2 SID in capabilities
- upload-pack, serve: log received client trace2 SID
- fetch-pack: advertise trace2 SID in capabilities
- transport: log received server trace2 SID
- serve: advertise trace2 SID in v2 capabilities
- receive-pack: advertise trace2 SID in v0 capabilities
- upload-pack: advertise trace2 SID in v0 capabilities
- docs: new trace2.advertiseSID option
- docs: new capability to advertise trace2 SIDs
* so/format-patch-doc-on-default-diff-format (2020-10-31) 1 commit
- doc/diff-options: fix out of place mentions of '--patch/-p'
* jc/sparse-error-for-developer-build (2020-10-31) 1 commit
- Makefile: enable -Wsparse-error for DEVELOPER build
* pb/blame-funcname-range-userdiff (2020-11-01) 8 commits
- blame: simplify 'setup_blame_bloom_data' interface
- blame: simplify 'setup_scoreboard' interface
- blame: enable funcname blaming with userdiff driver
- line-log: mention both modes in 'blame' and 'log' short help
- doc: add more pointers to gitattributes(5) for userdiff
- blame-options.txt: also mention 'funcname' in '-L' description
- doc: line-range: improve formatting
- doc: log, gitk: move '-L' description to 'line-range-options.txt'
* rs/clear-commit-marks-in-repo (2020-10-31) 2 commits
- bisect: clear flags in passed repository
- object: allow clear_commit_marks_all to handle any repo
* rs/empty-stash-check-fix (2020-11-01) 1 commit
- stash: simplify reflog emptiness check
* rs/pack-write-hashwrite-simplify (2020-11-01) 1 commit
- pack-write: use hashwrite_be32() instead of double-buffering array
* sd/prompt-local-variable (2020-11-01) 1 commit
- git-prompt.sh: localize `option` in __git_ps1_show_upstream
* so/log-diff-merge (2020-11-01) 26 commits
- doc/rev-list-options: document --first-parent implies --diff-merges=first-parent
- doc/diff-generate-patch: mention new --diff-merges option
- doc/git-log: describe new --diff-merges options
- t4013: add test for --diff-merges=first-parent
- diff-merges: implement new values for --diff-merges
- diff-merges: make -m/-c/--cc explicitly mutually exclusive
- diff-merges: refactor opt settings into separate functions
- diff-merges: get rid of now empty diff_merges_init_revs()
- diff-merges: group diff-merge flags next to each other inside 'rev_info'
- diff-merges: split 'ignore_merges' field
- diff-merges: fix -m to properly override -c/--cc
- t4013: add tests for -m failing to override -c/--cc
- t4013: support test_expect_failure through ':failure' magic
- diff-merges: revise revs->diff flag handling
- diff-merges: introduce revs->first_parent_merges flag
- diff-merges: new function diff_merges_set_dense_combined_if_unset()
- diff-merges: new function diff_merges_suppress()
- diff-merges: re-arrange functions to match the order they are called in
- diff-merges: rename diff_merges_default_to_enable() to match semantics
- diff-merges: move checks for first_parent_only out of the module
- diff-merges: rename all functions to have common prefix
- revision: move diff merges functions to its own diff-merges.c
- revision: provide implementation for diff merges tweaks
- revision: factor out initialization of diff-merge related settings
- revision: factor out setup of diff-merge related settings
- revision: factor out parsing of diff-merge related options
--------------------------------------------------
[Stalled]
* hn/reftable (2020-10-01) 13 commits
. reftable: "test-tool dump-reftable" command.
. reftable: rest of library
. reftable: file level tests
. reftable: read reftable files
. reftable: write reftable files
. reftable: a generic binary tree implementation
. reftable: reading/writing blocks
. reftable: (de)serialization for the polymorphic record type.
. reftable: utility functions
. reftable: add a barebones unittest framework
. vcxproj: adjust for the reftable changes
. reftable: define the public API
. reftable: add LICENSE
The reftable backend for the refs API.
Expecting a reroll.
Seems not to build for Windows folks.
cf. <nycvar.QRO.7.76.6.2010021555290.50@tvgsbejvaqbjf.bet>
cf. <nycvar.QRO.7.76.6.2010021557570.50@tvgsbejvaqbjf.bet>
* sm/curl-retry (2020-10-13) 3 commits
- http: automatically retry some requests
- replace CURLOPT_FILE With CURLOPT_WRITEDATA
- remote-curl: add testing for intelligent retry for HTTP
The http transport has been taught to retry a failed request that
may reasonably be retried.
cf. <20201015000410.GB328643@google.com>
* sv/t7001-modernize (2020-09-25) 11 commits
- t7001: move cleanup code from outside the tests into them
- t7001: use `test` rather than `[`
- t7001: use here-docs instead of echo
- t7001: put each command on a separate line
- t7001: use ': >' rather than 'touch'
- t7001: change (cd <path> && git foo) to (git -C <path> foo)
- t7001: remove whitespace after redirect operators
- t7001: change the style for cd according to subshell
- t7001: remove unnecessary blank lines
- t7001: use TAB instead of spaces
- t7001: convert tests from the old style to the current style
Test script modernization.
Expecting a reroll.
cf. <20200925170256.11490-1-shubhunic@gmail.com>
* ew/decline-core-abbrev (2020-09-01) 1 commit
- core.abbrev <off|false|no> disables abbreviations
Allow the configuration to specify no abbreviation regardless of
the hash algorithm.
Expecting a reroll. The intent is very good.
* bc/rev-parse-path-format (2020-10-09) 2 commits
- rev-parse: add option for absolute or relative path formatting
- abspath: add a function to resolve paths with missing components
"git rev-parse" can be explicitly told to give output as absolute
or relative path.
* ar/fetch-transfer-ipversion (2020-09-16) 1 commit
- config: option transfer.ipversion to set transport protocol version for network fetches
Adds transfer.ipversion configuration variable.
Needs more work.
* vv/send-email-with-less-secure-apps-access (2020-08-29) 1 commit
- Documentation/git-send-email.txt: Mention less secure app access might need to enable.
Doc update.
Expecting a reroll.
cf. <xmqqwo1hi9nv.fsf@gitster.c.googlers.com>
cf. <xmqqft85i72s.fsf@gitster.c.googlers.com>
* jc/war-on-dashed-git (2020-08-27) 1 commit
- git: catch an attempt to run "git-foo"
The first step to remove on-disk binaries for built-in subcommands
by soliciting objections.
On hold for now.
* dr/push-remoteref-fix (2020-04-23) 1 commit
- remote.c: fix handling of %(push:remoteref)
The "%(push:remoteref)" placeholder in the "--format=" argument of
"git format-patch" (and friends) only showed what got explicitly
configured, not what ref at the receiving end would be updated when
"git push" was used, as it ignored the default behaviour (e.g. update
the same ref as the source).
Discard for now.
cf. <xmqqv9gu7c61.fsf@gitster.c.googlers.com>
cf. <20200911214358.acl3hy2e763begoo@feanor>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
--------------------------------------------------
[Needs Review]
* ag/merge-strategies-in-c (2020-10-06) 11 commits
. sequencer: use the "octopus" merge strategy without forking
. sequencer: use the "resolve" strategy without forking
. merge: use the "octopus" strategy without forking
. merge: use the "resolve" strategy without forking
. merge-octopus: rewrite in C
. merge-recursive: move better_branch_name() to merge.c
. merge-resolve: rewrite in C
. merge-index: don't fork if the requested program is `git-merge-one-file'
. merge-index: libify merge_one_path() and merge_all()
. merge-one-file: rewrite in C
. t6027: modernise tests
The resolve and octopus merge strategy backends have been rewritten
in C.
* ss/submodule-add-in-c (2020-10-07) 3 commits
. t7400: add test to check 'submodule add' for tracked paths
. submodule: port submodule subcommand 'add' from shell to C
. dir: change the scope of function 'directory_exists_in_index()'
"git submodule add" being rewritten in C.
--------------------------------------------------
[Cooking]
* jk/sideband-more-error-checking (2020-10-29) 1 commit
(merged to 'next' on 2020-10-30 at 8131784691)
+ sideband: diagnose more sideband anomalies
The code to detect premature EOF in the sideband demultiplexer has
been cleaned up.
Will merge to 'master'.
* js/default-branch-name-adjust-t5411 (2020-10-31) 4 commits
(merged to 'next' on 2020-11-02 at d625eda73c)
+ t5411: finish preparing for `main` being the default branch name
+ t5411: adjust the remaining support files for init.defaultBranch=main
+ t5411: start adjusting the support files for init.defaultBranch=main
+ t5411: start using the default branch name "main"
Prepare a test script to transition of the default branch name to
'main'.
Will merge to 'master'.
* av/fsmonitor-cleanup (2020-10-21) 2 commits
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
Code clean-up.
Unneeded? Perhaps will drop.
cf. <20201022183822.GA781760@nand.local>
* jc/sequencer-stopped-sha-simplify (2020-10-21) 1 commit
(merged to 'next' on 2020-11-02 at ba3dd9eaf4)
+ sequencer: tolerate abbreviated stopped-sha file
Recently the format of an internal state file "rebase -i" uses has
been tightened up for consistency, which would hurt those who start
"rebase -i" with old git and then continue with new git. Loosen
the reader side a bit (which we may want to tighten again in a year
or so).
Will merge to 'master'
* jk/perl-warning (2020-10-21) 1 commit
(merged to 'next' on 2020-10-28 at 5fcb98f2ff)
+ perl: check for perl warnings while running tests
Dev support.
Will merge to 'master'.
cf. <20201022032400.GC1480820@coredump.intra.peff.net>
* pb/ref-filter-with-crlf (2020-10-29) 2 commits
(merged to 'next' on 2020-10-30 at 8be77584c5)
+ log, show: add tests for messages containing CRLF
+ ref-filter: handle CRLF at end-of-line more gracefully
A commit and tag object may have CR at the end of each and
every line (you can create such an object with hash-object or
using --cleanup=verbatim to decline the default clean-up
action), but it would make it impossible to have a blank line
to separate the title from the body of the message. Be lenient
and accept a line with lone CR on it as a blank line, too.
Will merge to 'master'.
* ab/git-remote-exit-code (2020-10-27) 1 commit
(merged to 'next' on 2020-10-30 at 1fc119404b)
+ remote: add meaningful exit code on missing/existing
Exit codes from "git remote add" etc. were not usable by scripted
callers.
Will merge to 'master'.
* en/merge-ort-api-null-impl (2020-10-29) 4 commits
- merge,rebase,revert: select ort or recursive by config or environment
- fast-rebase: demonstrate merge-ort's API via new test-tool command
- merge-ort-wrappers: new convience wrappers to mimic the old merge API
- merge-ort: barebones API of new merge strategy with empty implementation
Preparation for a new merge strategy.
Looking good.
* en/merge-tests (2020-10-26) 9 commits
- t6423: add more details about direct resolution of directories
- t6423: note improved ort handling with untracked files
- t6423, t6436: note improved ort handling with dirty files
- merge tests: expect slight differences in output for recursive vs. ort
- t6423: expect improved conflict markers labels in the ort backend
- t6404, t6423: expect improved rename/delete handling in ort backend
- t6416: correct expectation for rename/rename(1to2) + directory/file
- merge tests: expect improved directory/file conflict handling in ort
- t/: new helper for tests that pass with ort but fail with recursive
(this branch uses en/dir-rename-tests.)
Preparation for a new merge strategy.
* jk/committer-date-is-author-date-fix-simplify (2020-10-26) 1 commit
(merged to 'next' on 2020-10-30 at 9ba3fad57d)
+ am, sequencer: stop parsing our own committer ident
Code simplification.
Will merge to 'master'.
* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-10-26) 1 commit
- diff: do not show submodule with untracked files as "-dirty"
"git diff" showed a submodule working tree with untracked cruft as
"Submodule commit <objectname>-dirty", but a natural expectation is
that the "-dirty" indicator would align with "git describe --dirty",
which does not consider having untracked files in the working tree
as source of dirtiness. The inconsistency has been fixed.
Needs doc update.
* fc/zsh-completion (2020-10-28) 29 commits
(merged to 'next' on 2020-11-02 at 2c5e3a73ad)
+ zsh: update copyright notices
+ completion: bash: remove old compat wrappers
+ completion: bash: cleanup cygwin check
+ completion: bash: trivial cleanup
+ completion: zsh: add simple version check
+ completion: zsh: trivial simplification
+ completion: zsh: add alias descriptions
+ completion: zsh: improve command tags
+ completion: zsh: refactor command completion
+ completion: zsh: shuffle functions around
+ completion: zsh: simplify file_direct
+ completion: zsh: simplify nl_append
+ completion: zsh: trivial cleanup
+ completion: zsh: simplify direct compadd
+ completion: zsh: simplify compadd functions
+ completion: zsh: fix splitting of words
+ completion: zsh: add missing direct_append
+ completion: fix conflict with bashcomp
+ completion: zsh: fix completion for --no-.. options
+ completion: bash: remove zsh wrapper
+ completion: bash: synchronize zsh wrapper
+ completion: zsh: fix for command aliasing
+ completion: prompt: fix color for Zsh
+ completion: zsh: update slave script locations
+ completion: zsh: fix for directories with spaces
+ completion: zsh: reorganize install instructions
+ completion: zsh: fix bash script extension
+ completion: zsh: fix name due to broken autoloading
+ completion: zsh: fix __gitcomp_direct()
Zsh autocompletion (in contrib/) update.
Will merge to 'master'.
* nk/perf-fsmonitor (2020-10-26) 10 commits
- t/perf/fsmonitor: add benchmark for dirty status
- t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
- t/perf/fsmonitor: initialize test with git reset
- t/perf/fsmonitor: factor setup for fsmonitor into function
- t/perf/fsmonitor: silence initial git commit
- t/perf/fsmonitor: shorten DESC to basename
- t/perf/fsmonitor: factor description out for readability
- t/perf/fsmonitor: improve error message if typoing hook name
- t/perf/fsmonitor: move watchman setup to one-time-repo-setup
- t/perf/fsmonitor: separate one time repo initialization
(this branch uses nk/diff-files-vs-fsmonitor.)
Add t/perf support for fsmonitor.
* jk/checkout-index-errors (2020-10-27) 2 commits
(merged to 'next' on 2020-10-30 at 77dddffe1b)
+ checkout-index: propagate errors to exit code
+ checkout-index: drop error message from empty --stage=all
(this branch is used by mt/parallel-checkout-part-1.)
"git checkout-index" did not consistently signal an error with its
exit status.
Will merge to 'master'.
* pw/rebase-i-orig-head (2020-10-27) 4 commits
- rebase -i: simplify get_revision_ranges()
- rebase -i: use struct object_id when writing state
- rebase -i: use struct object_id rather than looking up commit
- rebase -i: stop overwriting ORIG_HEAD buffer
"git rebase -i" did not
Expecting an update to the log message, but otherwise the change
looked sensible.
cf. <xmqq7drbbcj5.fsf@gitster.c.googlers.com>
* en/strmap (2020-11-02) 13 commits
- Use new HASHMAP_INIT macro to simplify hashmap initialization
- strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
- strmap: enable allocations to come from a mem_pool
- strmap: add a strset sub-type
- strmap: add functions facilitating use as a string->int map
- strmap: enable faster clearing and reusing of strmaps
- strmap: add more utility functions
- strmap: new utility functions
- hashmap: provide deallocation function names
- hashmap: introduce a new hashmap_partial_clear()
- hashmap: allow re-use after hashmap_free()
- hashmap: adjust spacing to fix argument alignment
- hashmap: add usage documentation explaining hashmap_free[_entries]()
A speciailization of hashmap that uses a string as key has been
introduced. Hopefully it will see wider use over time.
Rerolled.
cf. <20201023080202.GA4012156@coredump.intra.peff.net>
cf. <CABPp-BFV8ZAu5vLarG2mX8gT5bfV31oqbd-vjAQF_YDcyNSRiw@mail.gmail.com>
* mr/bisect-in-c-3 (2020-10-16) 7 commits
(merged to 'next' on 2020-10-28 at 435792b62f)
+ bisect--helper: retire `--bisect-autostart` subcommand
+ bisect--helper: retire `--write-terms` subcommand
+ bisect--helper: retire `--check-expected-revs` subcommand
+ bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
+ bisect--helper: retire `--next-all` subcommand
+ bisect--helper: retire `--bisect-clean-state` subcommand
+ bisect--helper: finish porting `bisect_start()` to C
Rewriting "git bisect" in C continues.
Will merge to 'master'.
* as/tests-cleanup (2020-10-18) 1 commit
(merged to 'next' on 2020-10-28 at fd199beb31)
+ t2200,t9832: avoid using 'git' upstream in a pipe
Micro clean-up of a couple of test scripts.
Will merge to 'master'.
* en/dir-rename-tests (2020-10-16) 4 commits
(merged to 'next' on 2020-10-28 at 7bbe123e70)
+ t6423: more involved rules for renaming directories into each other
+ t6423: update directory rename detection tests with new rule
+ t6423: more involved directory rename test
+ directory-rename-detection.txt: update references to regression tests
(this branch is used by en/merge-tests.)
More preliminary tests have been added to document desired outcome
of various "directory rename" situations.
Will merge to 'master'.
* nk/diff-files-vs-fsmonitor (2020-10-20) 7 commits
(merged to 'next' on 2020-10-28 at d3af804056)
+ p7519-fsmonitor: add a git add benchmark
+ p7519-fsmonitor: refactor to avoid code duplication
+ perf lint: add make test-lint to perf tests
+ t/perf: add fsmonitor perf test for git diff
+ t/perf/p7519-fsmonitor.sh: warm cache on first git status
+ t/perf/README: elaborate on output format
+ fsmonitor: use fsmonitor data in `git diff`
(this branch is used by nk/perf-fsmonitor.)
"git diff" and other commands that share the same machinery to
compare with working tree files have been taught to take advantage
of the fsmonitor data when available.
Will merge to 'master'.
* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
(merged to 'next' on 2020-10-26 at c1dd37b024)
+ docs: document symlink restrictions for .git* files
+ fsck: complain when .gitattributes or .gitignore is a symlink
+ verify_path(): disallow symlinks in .gitattributes and .gitignore
+ t0060: test obscured .gitattributes and .gitignore matching
+ t7450: test .gitmodules symlink matching against obscured names
+ t7450: test verify_path() handling of gitmodules
+ t7415: rename to expand scope
+ fsck_tree(): wrap some long lines
+ fsck_tree(): fix shadowed variable
Originally merged to 'next' on 2020-10-23
"git fsck" and the corresponding check done during the transport
learned to ensure that in-tree files like `.gitignore` and
`.gitattributes` are not symbolic links.
It seems that there are real projects with .gitignore recorded as
symlinks, which may need to loosen the fsck setting. Do we need
to introduce a class that is separate from symlinked .gitmodules
that probably is with potential consequences that is more grave?
* ak/corrected-commit-date (2020-10-08) 10 commits
- doc: add corrected commit date info
- commit-reach: use corrected commit dates in paint_down_to_common()
- commit-graph: use generation v2 only if entire chain does
- commit-graph: implement generation data chunk
- commit-graph: implement corrected commit date
- commit-graph: add a slab to store topological levels
- commit-graph: return 64-bit generation number
- commit-graph: consolidate fill_commit_graph_info
- revision: parse parent in indegree_walk_step()
- commit-graph: fix regression when computing Bloom filters
The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
Almost there.
cf. <685afed6-f01f-5d22-80d4-00fdc11caf0a@gmail.com>
* mt/parallel-checkout-part-1 (2020-10-29) 19 commits
- ci: run test round with parallel-checkout enabled
- parallel-checkout: add tests related to .gitattributes
- parallel-checkout: add tests related to clone collisions
- parallel-checkout: add tests for basic operations
- checkout-index: add parallel checkout support
- builtin/checkout.c: complete parallel checkout support
- make_transient_cache_entry(): optionally alloc from mem_pool
- parallel-checkout: support progress displaying
- parallel-checkout: make it truly parallel
- unpack-trees: add basic support for parallel checkout
- entry: add checkout_entry_ca() which takes preloaded conv_attrs
- entry: move conv_attrs lookup up to checkout_entry()
- entry: extract cache_entry update from write_entry()
- entry: make fstat_output() and read_blob_entry() public
- entry: extract a header file for entry.c functions
- convert: add conv_attrs classification
- convert: add get_stream_filter_ca() variant
- convert: add [async_]convert_to_working_tree_ca() variants
- convert: make convert_attrs() and convert structs public
(this branch uses jk/checkout-index-errors.)
Parallel checkout.
* ds/maintenance-part-3 (2020-10-16) 8 commits
- maintenance: add troubleshooting guide to docs
- maintenance: use 'incremental' strategy by default
- maintenance: create maintenance.strategy config
- maintenance: add start/stop subcommands
- maintenance: add [un]register subcommands
- for-each-repo: run subcommands on configured repos
- maintenance: add --schedule option and config
- maintenance: optionally skip --auto process
Parts of "git maintenance" to ease writing crontab entries (and
other scheduling system configuration) for it.
* es/config-hooks (2020-10-16) 8 commits
- hook: replace find_hook() with hook_exists()
- hook: add 'run' subcommand
- parse-options: parse into strvec
- hook: implement hookcmd.<name>.skip
- hook: include hookdir hook in list
- hook: add list command
- hook: scaffolding for git-hook subcommand
- doc: propose hooks managed by the config
The "hooks defined in config" topic.
* mt/grep-sparse-checkout (2020-09-10) 9 commits
- config: add setting to ignore sparsity patterns in some cmds
- grep: honor sparse checkout patterns
- config: correctly read worktree configs in submodules
- config: make do_git_config_sequence receive a 'struct repository'
- t/helper/test-config: unify exit labels
- t/helper/test-config: diagnose missing arguments
- t/helper/test-config: be consistent with exit codes
- t1308-config-set: avoid false positives when using test-config
- doc: grep: unify info on configuration variables
"git grep" has been tweaked to be limited to the sparse checkout
paths.
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.28.0
@ 2020-07-27 16:49 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-27 16:49 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.28.0 is now available at the
usual places. It is comprised of 317 non-merge commits since
v2.27.0, contributed by 58 people, 13 of which are new faces.
It is smaller than the releases in our recent past, mostly due to
the development cycle was near the shorter end of the spectrum (our
cycles last 8-12 weeks and this was a rare 8-week cycle).
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.28.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.27.0 are as follows.
Welcome to the Git development community!
Andrew Ng, Bojun Chen, Chris Torek, David J. Malan, Don
Goodman-Wilson, Jiuyang Xie, Luc Van Oostenryck, Marco Trevisan
(Treviño), Mikhail Terekhov, Miroslav Koškár, Rafael Aquini,
Srinidhi Kaushik, and Trygve Aaberge.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Alessandro Menti, Ben Keene, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Christopher
Diaz Riveros, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,
Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff King,
Jiang Xin, Johannes Schindelin, John Lin, Jonathan Nieder,
Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano, Laurent
Arnoud, Martin Ågren, Matheus Tavares, Matthias Rüster, Paolo
Bonzini, Patrick Steinhardt, Peter Krefting, Pratyush Yadav,
Ralf Thielow, Ramsay Jones, Randall S. Becker, René Scharfe,
Shourya Shukla, SZEDER Gábor, Taylor Blau, Trần Ngọc Quân,
Ville Skyttä, Xin Li, and Yi-Jyun Pan.
----------------------------------------------------------------
Git 2.28 Release Notes
======================
Updates since v2.27
-------------------
Backward compatibility notes
* "fetch.writeCommitGraph" is deemed to be still a bit too risky and
is no longer part of the "feature.experimental" set.
UI, Workflows & Features
* The commands in the "diff" family learned to honor "diff.relative"
configuration variable.
* The check in "git fsck" to ensure that the tree objects are sorted
still had corner cases it missed unsorted entries.
* The interface to redact sensitive information in the trace output
has been simplified.
* The command line completion (in contrib/) learned to complete
options that the "git switch" command takes.
* "git diff" used to take arguments in random and nonsense range
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
which has been cleaned up.
* "git diff-files" has been taught to say paths that are marked as
intent-to-add are new files, not modified from an empty blob.
* "git status" learned to report the status of sparse checkout.
* "git difftool" has trouble dealing with paths added to the index
with the intent-to-add bit.
* "git fast-export --anonymize" learned to take customized mapping to
allow its users to tweak its output more usable for debugging.
* The command line completion support (in contrib/) used to be
prepared to work with "set -u" but recent changes got a bit more
sloppy. This has been corrected.
* "git gui" now allows opening work trees from the start-up dialog.
Performance, Internal Implementation, Development Support etc.
* Code optimization for a common case.
(merge 8777616e4d an/merge-single-strategy-optim later to maint).
* We've adopted a convention that any on-stack structure can be
initialized to have zero values in all fields with "= { 0 }",
even when the first field happens to be a pointer, but sparse
complained that a null pointer should be spelled NULL for a long
time. Start using -Wno-universal-initializer option to squelch
it (the latest sparse has it on by default).
* "git log -L..." now takes advantage of the "which paths are touched
by this commit?" info stored in the commit-graph system.
* As FreeBSD is not the only platform whose regexp library reports
a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
automatically and skip the affected tests.
* "git bugreport" learns to report what shell is in use.
* Support for GIT_CURL_VERBOSE has been rewritten in terms of
GIT_TRACE_CURL.
* Preliminary clean-ups around refs API, plus file format
specification documentation for the reftable backend.
* Workaround breakage in MSVC build, where "curl-config --cflags"
gives settings appropriate for GCC build.
* Code clean-up of "git clean" resulted in a fix of recent
performance regression.
* Code clean-up in the codepath that serves "git fetch" continues.
* "git merge-base --is-ancestor" is taught to take advantage of the
commit graph.
* Rewrite of parts of the scripted "git submodule" Porcelain command
continues; this time it is "git submodule set-branch" subcommand's
turn.
* The "fetch/clone" protocol has been updated to allow the server to
instruct the clients to grab pre-packaged packfile(s) in addition
to the packed object data coming over the wire.
* A misdesigned strbuf_write_fd() function has been retired.
* SHA-256 migration work continues, including CVS/SVN interface.
* A few fields in "struct commit" that do not have to always be
present have been moved to commit slabs.
* API cleanup for get_worktrees()
* By renumbering object flag bits, "struct object" managed to lose
bloated inter-field padding.
* The name of the primary branch in existing repositories, and the
default name used for the first branch in newly created
repositories, is made configurable, so that we can eventually wean
ourselves off of the hardcoded 'master'.
* The effort to avoid using test_must_fail on non-git command continues.
* In 2.28-rc0, we corrected a bug that some repository extensions are
honored by mistake even in a version 0 repositories (these
configuration variables in extensions.* namespace were supposed to
have special meaning in repositories whose version numbers are 1 or
higher), but this was a bit too big a change. The behaviour in
recent versions of Git where certain extensions.* were honored by
mistake even in version 0 repositories has been restored.
Fixes since v2.27
-----------------
* The "--prepare-p4-only" option of "git p4" is supposed to stop
after replaying one changeset, but kept going (by mistake?)
* The error message from "git checkout -b foo -t bar baz" was
confusing.
* Some repositories in the wild have commits that record nonsense
committer timezone (e.g. rails.git); "git fast-import" learned an
option to pass these nonsense timestamps intact to allow recreating
existing repositories as-is.
(merge d42a2fb72f en/fast-import-looser-date later to maint).
* The command line completion script (in contrib/) tried to complete
"git stash -p" as if it were "git stash push -p", but it was too
aggressive and also affected "git stash show -p", which has been
corrected.
(merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
* On-the-wire protocol v2 easily falls into a deadlock between the
remote-curl helper and the fetch-pack process when the server side
prematurely throws an error and disconnects. The communication has
been updated to make it more robust.
* "git checkout -p" did not handle a newly added path at all.
(merge 2c8bd8471a js/checkout-p-new-file later to maint).
* The code to parse "git bisect start" command line was lax in
validating the arguments.
(merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
* Reduce memory usage during "diff --quiet" in a worktree with too
many stat-unmatched paths.
(merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
* The reflog entries for "git clone" and "git fetch" did not
anonymize the URL they operated on.
(merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
* The behaviour of "sparse-checkout" in the state "git clone
--no-checkout" left was changed accidentally in 2.27, which has
been corrected.
* Use of negative pathspec, while collecting paths including
untracked ones in the working tree, was broken.
* The same worktree directory must be registered only once, but
"git worktree move" allowed this invariant to be violated, which
has been corrected.
(merge 810382ed37 es/worktree-duplicate-paths later to maint).
* The effect of sparse checkout settings on submodules is documented.
(merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
* Code clean-up around "git branch" with a minor bugfix.
(merge dc44639904 dl/branch-cleanup later to maint).
* A branch name used in a test has been clarified to match what is
going on.
(merge 08dc26061f pb/t4014-unslave later to maint).
* An in-code comment in "git diff" has been updated.
(merge c592fd4c83 dl/diff-usage-comment-update later to maint).
* The documentation and some tests have been adjusted for the recent
renaming of "pu" branch to "seen".
(merge 6dca5dbf93 js/pu-to-seen later to maint).
* The code to push changes over "dumb" HTTP had a bad interaction
with the commit reachability code due to incorrect allocation of
object flag bits, which has been corrected.
(merge 64472d15e9 bc/http-push-flagsfix later to maint).
* "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
header with the value given from the command line, and let it be
overridden by the value on In-Reply-To: header in the messages
being sent out (if exists).
(merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
* "git log -Lx,y:path --before=date" lost track of where the range
should be because it didn't take the changes made by the youngest
commits that are omitted from the output into account.
* When "fetch.writeCommitGraph" configuration is set in a shallow
repository and a fetch moves the shallow boundary, we wrote out
broken commit-graph files that do not match the reality, which has
been corrected.
* "git checkout" failed to catch an error from fstat() after updating
a path in the working tree.
(merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
* When an aliased command, whose output is piped to a pager by git,
gets killed by a signal, the pager got into a funny state, which
has been corrected (again).
(merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
* The code to produce progress output from "git commit-graph --write"
had a few breakages, which have been fixed.
* Other code cleanup, docfix, build fix, etc.
(merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
(merge d63ae31962 cb/t5608-cleanup later to maint).
(merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
(merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
(merge b75a219904 es/advertise-contribution-doc later to maint).
(merge 0c9a4f638a rs/pull-leakfix later to maint).
(merge d546fe2874 rs/commit-reach-leakfix later to maint).
(merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
(merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
(merge 0172f7834a cc/cat-file-usage-update later to maint).
(merge 81de0c01cf ma/rebase-doc-typofix later to maint).
----------------------------------------------------------------
Changes since v2.27.0 are as follows:
Abhishek Kumar (4):
object: drop parsed_object_pool->commit_count
commit-graph: introduce commit_graph_data_slab
commit: move members graph_pos, generation to a slab
commit-graph: minimize commit_graph_data_slab access
Alessandro Menti (1):
l10n: it.po: update the Italian translation for Git 2.28.0 round 1
Andrew Ng (1):
merge: optimization to skip evaluate_result for single strategy
Ben Keene (1):
git-p4.py: fix --prepare-p4-only error with multiple commits
Bojun Chen (1):
githooks.txt: use correct "reference-transaction" hook name
Carlo Marcelo Arenas Belón (5):
t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
t4210: detect REG_ILLSEQ dynamically and skip affected tests
bisect--helper: avoid segfault with bad syntax in `start --term-*`
t5608: avoid say() and use "skip_all" instead for consistency
commit-reach: avoid is_descendant_of() shim
Chris Torek (3):
t/t3430: avoid undefined git diff behavior
git diff: improve range handling
Documentation: usage for diff combined commits
Christian Couder (40):
upload-pack: remove unused 'wants' from upload_pack_data
upload-pack: move {want,have}_obj to upload_pack_data
upload-pack: move 'struct upload_pack_data' around
upload-pack: use 'struct upload_pack_data' in upload_pack()
upload-pack: pass upload_pack_data to get_common_commits()
upload-pack: pass upload_pack_data to receive_needs()
upload-pack: use upload_pack_data writer in receive_needs()
upload-pack: move symref to upload_pack_data
upload-pack: pass upload_pack_data to send_ref()
upload-pack: pass upload_pack_data to check_non_tip()
upload-pack: remove static variable 'stateless_rpc'
upload-pack: pass upload_pack_data to create_pack_file()
upload-pack: use upload_pack_data fields in receive_needs()
upload-pack: annotate upload_pack_data fields
upload-pack: move static vars to upload_pack_data
upload-pack: move use_sideband to upload_pack_data
upload-pack: move filter_capability_requested to upload_pack_data
upload-pack: move multi_ack to upload_pack_data
upload-pack: change multi_ack to an enum
upload-pack: pass upload_pack_data to upload_pack_config()
upload-pack: move keepalive to upload_pack_data
upload-pack: move allow_filter to upload_pack_data
upload-pack: move allow_ref_in_want to upload_pack_data
upload-pack: move allow_sideband_all to upload_pack_data
upload-pack: move pack_objects_hook to upload_pack_data
upload-pack: pass upload_pack_data to send_shallow_list()
upload-pack: pass upload_pack_data to deepen()
upload-pack: pass upload_pack_data to deepen_by_rev_list()
upload-pack: pass upload_pack_data to send_unshallow()
upload-pack: move shallow_nr to upload_pack_data
upload-pack: move extra_edge_obj to upload_pack_data
upload-pack: move allow_unadvertised_object_request to upload_pack_data
upload-pack: change allow_unadvertised_object_request to an enum
upload-pack: pass upload_pack_data to process_haves()
upload-pack: pass upload_pack_data to send_acks()
upload-pack: pass upload_pack_data to ok_to_give_up()
upload-pack: pass upload_pack_data to got_oid()
upload-pack: move oldest_have to upload_pack_data
upload-pack: refactor common code into do_got_oid()
cat-file: add missing [=<format>] to usage/synopsis
Christopher Diaz Riveros (1):
l10n: es: 2.28.0 round 1
David J. Malan (1):
git-prompt: change == to = for zsh's sake
Denton Liu (18):
lib-submodule-update: add space after function name
lib-submodule-update: consolidate --recurse-submodules
remote-curl: fix typo
remote-curl: remove label indentation
transport: extract common fetch_pack() call
pkt-line: extern packet_length()
remote-curl: error on incomplete packet
pkt-line: define PACKET_READ_RESPONSE_END
stateless-connect: send response end packet
t/README: avoid poor-man's small caps GIT
CodingGuidelines: specify Python 2.7 is the oldest version
lib-submodule-update: prepend "git" to $command
t3200: rename "expected" to "expect"
t3200: test for specific errors
branch: don't mix --edit-description
builtin/diff: update usage comment
builtin/diff: fix botched update of usage comment
lib-submodule-update: pass 'test_must_fail' as an argument
Derrick Stolee (3):
line-log: integrate with changed-path Bloom filters
commit-reach: create repo_is_descendant_of()
commit-reach: use fast logic in repo_in_merge_base
Don Goodman-Wilson (1):
init: allow setting the default for the initial branch name via the config
Elijah Newren (11):
fast-import: add new --date-format=raw-permissive format
sparse-checkout: avoid staging deletions of all files
dir: fix treatment of negated pathspecs
git-sparse-checkout: clarify interactions with submodules
dir: fix a few confusing comments
dir, clean: avoid disallowed behavior
clean: consolidate handling of ignored parameters
clean: optimize and document cases where we recurse into subdirectories
wt-status: show sparse checkout status as well
git-prompt: document how in-progress operations affect the prompt
git-prompt: include sparsity state as well
Emily Shaffer (3):
help: add shell-path to --build-options
bugreport: include user interactive shell
docs: mention MyFirstContribution in more places
Emir Sarı (1):
l10n: tr: v2.28.0 round 1
Eric Sunshine (10):
worktree: factor out repeated string literal
worktree: give "should be pruned?" function more meaningful name
worktree: make high-level pruning re-usable
worktree: prune duplicate entries referencing same worktree path
worktree: prune linked worktree referencing main worktree path
worktree: generalize candidate worktree path validation
worktree: make "move" refuse to move atop missing registered worktree
worktree: drop get_worktrees() special-purpose sorting option
worktree: drop get_worktrees() unused 'flags' argument
worktree: avoid dead-code in conditional
Han-Wen Nienhuys (5):
refs.h: clarify reflog iteration order
t: use update-ref and show-ref to reading/writing refs
refs: improve documentation for ref iterator
reftable: clarify how empty tables should be written
reftable: define version 2 of the spec to accomodate SHA256
Jacob Keller (16):
completion: add test showing subpar git switch completion
completion: add tests showing subpar DWIM logic for switch/checkout
completion: add tests showing subar checkout --detach logic
completion: add tests showing subpar switch/checkout --track logic
completion: add tests showing subpar -c/-C startpoint completion
completion: add tests showing subpar -c/C argument completion
completion: add tests showing subpar switch/checkout --orphan logic
completion: replace overloaded track term for __git_complete_refs
completion: extract function __git_dwim_remote_heads
completion: perform DWIM logic directly in __git_complete_refs
completion: improve handling of DWIM mode for switch/checkout
completion: improve completion for git switch with no options
completion: improve handling of --detach in checkout
completion: improve handling of --track in switch/checkout
completion: improve handling of -c/-C and -b/-B in switch/checkout
completion: improve handling of --orphan option of switch/checkout
Jean-Noël Avila (1):
l10n: fr v2.28.0 round 1
Jeff King (14):
diff: discard blob data from stat-unmatched pairs
upload-pack: actually use some upload_pack_data bitfields
t9351: derive anonymized tree checks from original repo
fast-export: use xmemdupz() for anonymizing oids
fast-export: store anonymized oids as hex strings
fast-export: tighten anonymize_mem() interface to handle only strings
fast-export: stop storing lengths in anonymized hashmaps
fast-export: use a flex array to store anonymized entries
fast-export: move global "idents" anonymize hashmap into function
fast-export: add a "data" callback parameter to anonymize_str()
fast-export: allow seeding the anonymized mapping
fast-export: anonymize "master" refname
fast-export: use local array to store anonymized oid
diff: check for merge bases before assigning sym->base
Jiang Xin (2):
l10n: git.pot: v2.28.0 round 1 (70 new, 14 removed)
l10n: zh_CN: for git v2.28.0 l10n round 1
Jiuyang Xie (1):
doc: fix wrong 4-byte length of pkt-line message
Johannes Schindelin (16):
checkout -p: handle new files correctly
clone/fetch: anonymize URLs in the reflog
msvc: fix "REG_STARTEND" issue
fmt-merge-msg: stop treating `master` specially
send-pack/transport-helper: avoid mentioning a particular branch
submodule: fall back to remote's HEAD for missing remote.<name>.branch
docs: add missing diamond brackets
init: allow specifying the initial branch name for the new repository
clone: use configured default branch name when appropriate
remote: use the configured default branch name when appropriate
testsvn: respect `init.defaultBranch`
docs: adjust for the recent rename of `pu` to `seen`
docs: adjust the technical overview for the rename `pu` -> `seen`
tests: reference `seen` wherever `pu` was referenced
diff-files --raw: show correct post-image of intent-to-add files
difftool -d: ensure that intent-to-add files are handled correctly
John Lin (1):
bash-completion: add git-prune into bash completion
Jonathan Nieder (5):
config: let feature.experimental imply protocol.version=2
reftable: file format documentation
experimental: default to fetch.writeCommitGraph=false
Revert "check_repository_format_gently(): refuse extensions for old repositories"
repository: allow repository format upgrade with extensions
Jonathan Tan (12):
t5551: test that GIT_TRACE_CURL redacts password
http, imap-send: stop using CURLOPT_VERBOSE
http: redact all cookies, teach GIT_TRACE_REDACT=0
http: use --stdin when indexing dumb HTTP pack
http: refactor finish_http_pack_request()
http-fetch: refactor into function
http-fetch: support fetching packfiles by URL
Documentation: order protocol v2 sections
Documentation: add Packfile URIs design doc
upload-pack: refactor reading of pack-objects out
fetch-pack: support more than one pack lockfile
upload-pack: send part of packfile response as uri
Jordi Mas (1):
l10n: Update Catalan translation
Josh Steadmon (1):
fuzz-commit-graph: properly free graph struct
Junio C Hamano (13):
Start the post 2.27 cycle
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
Git 2.28-rc0
Hopefully the last batch before -rc1
Git 2.28-rc1
RelNotes: update the v0 with extension situation
Git 2.28-rc2
Git 2.28
Laurent Arnoud (1):
diff: add config option relative
Luc Van Oostenryck (1):
sparse: allow '{ 0 }' to be used without warnings
Marco Trevisan (Treviño) (1):
completion: use native ZSH array pattern matching
Martin Ågren (5):
git-rebase.txt: fix description list separator
git-diff.txt: don't mark required argument as optional
git-diff.txt: reorder possible usages
gitworkflows.txt: fix broken subsection underline
t3200: don't grep for `strerror()` string
Matheus Tavares (1):
entry: check for fstat() errors after checkout
Matthias Rüster (1):
l10n: de.po: Update German translation for Git v2.28.0
Mikhail Terekhov (1):
git-gui: allow opening work trees from the startup dialog
Miroslav Koškár (1):
doc: fix author vs. committer copy/paste error
Paolo Bonzini (1):
t4014: do not use "slave branch" nomenclature
Patrick Steinhardt (1):
refs: implement reference transaction hook
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (4931t0f0u)
Rafael Aquini (1):
send-email: restore --in-reply-to superseding behavior
Ralf Thielow (1):
l10n: de.po: fix grammar
Ramsay Jones (1):
upload-pack: fix a sparse '0 as NULL pointer' warning
Randall S. Becker (2):
bugreport.c: replace strbuf_write_fd with write_in_full
strbuf: remove unreferenced strbuf_write_fd method.
René Scharfe (10):
fsck: fix a typo in a comment
t1450: increase test coverage of in-tree d/f detection
t1450: demonstrate undetected in-tree d/f conflict
fsck: detect more in-tree d/f conflicts
checkout: add tests for -b and --track
checkout: improve error messages for -b with extra argument
commit-reach: plug minor memory leak after using is_descendant_of()
pull: plug minor memory leak after using is_descendant_of()
revision: reallocate TOPO_WALK object flags
revision: disable min_age optimization with line-log
SZEDER Gábor (7):
line-log: remove unused fields from 'struct line_log_data'
t4211-line-log: add tests for parent oids
line-log: more responsive, incremental 'git log -L'
line-log: try to use generation number-based topo-ordering
commit-graph: fix progress of reachable commits
commit-graph: fix "Writing out commit graph" progress counter
commit-graph: fix "Collecting commits from input" progress line
Shourya Shukla (1):
submodule: port subcommand 'set-branch' from shell to C
Srinidhi Kaushik (1):
diff-files: treat "i-t-a" files as "not-in-index"
Taylor Blau (12):
commit-graph.c: extract 'refs_cb_data'
commit-graph.c: show progress of finding reachable commits
commit-graph.c: peel refs in 'add_ref_to_set'
builtin/commit-graph.c: extract 'read_one_commit()'
builtin/commit-graph.c: dereference tags in builtin
commit-graph.c: simplify 'fill_oids_from_commits'
t5318: reorder test below 'graph_read_expect'
commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
t5318: use 'test_must_be_empty'
t5318: test that '--stdin-commits' respects '--[no-]progress'
commit.c: don't persist substituted parents when unshallowing
Documentation/RelNotes: fix a typo in 2.28's relnotes
Trygve Aaberge (2):
Wait for child on signal death for aliases to builtins
Wait for child on signal death for aliases to externals
Trần Ngọc Quân (1):
l10n: vi.po(4931t): Updated translation for v2.28.0
Ville Skyttä (2):
completion: don't override given stash subcommand with -p
completion: nounset mode fixes
Xin Li (4):
repository: add a helper function to perform repository format upgrade
fetch: allow adding a filter after initial clone
sparse-checkout: upgrade repository to version 1 when enabling extension
check_repository_format_gently(): refuse extensions for old repositories
Yi-Jyun Pan (1):
l10n: zh_TW.po: v2.28.0 round 1 (0 untranslated)
brian m. carlson (61):
t1050: match object ID paths in a hash-insensitive way
Documentation: document v1 protocol object-format capability
builtin/checkout: simplify metadata initialization
t2060: add a test for switch with --orphan and --discard-changes
connect: have ref processing code take struct packet_reader
wrapper: add function to compare strings with different NUL termination
remote: advertise the object-format capability on the server side
connect: add function to parse multiple v1 capability values
connect: add function to fetch value of a v2 server capability
pkt-line: add a member for hash algorithm
transport: add a hash algorithm member
connect: add function to detect supported v1 hash functions
send-pack: detect when the server doesn't support our hash
connect: make parse_feature_value extern
fetch-pack: detect when the server doesn't support our hash
connect: detect algorithm when fetching refs
builtin/receive-pack: detect when the server doesn't support our hash
docs: update remote helper docs for object-format extensions
transport-helper: implement object-format extensions
remote-curl: implement object-format extensions
builtin/clone: initialize hash algorithm properly
t5562: pass object-format in synthesized test data
fetch-pack: parse and advertise the object-format capability
setup: set the_repository's hash algo when checking format
t3200: mark assertion with SHA1 prerequisite
packfile: compute and use the index CRC offset
t5302: modernize test formatting
builtin/show-index: provide options to determine hash algo
t1302: expect repo format version 1 for SHA-256
Documentation/technical: document object-format for protocol v2
connect: pass full packet reader when parsing v2 refs
connect: parse v2 refs with correct hash algorithm
serve: advertise object-format capability for protocol v2
t5500: make hash independent
builtin/ls-remote: initialize repository based on fetch
remote-curl: detect algorithm for dumb HTTP by size
builtin/index-pack: add option to specify hash algorithm
t1050: pass algorithm to index-pack when outside repo
remote-curl: avoid truncating refs with ls-remote
t/helper: initialize the repository for test-sha1-array
t5702: offer an object-format capability in the test
t5703: use object-format serve option
t5704: send object-format capability with SHA-256
t5300: pass --object-format to git index-pack
bundle: detect hash algorithm when reading refs
remote-testgit: adapt for object-format
t9109: make test hash independent
t9168: make test hash independent
t9108: make test hash independent
t9100: make test work with SHA-256
t9104: make hash size independent
t9101: make hash independent
t/lib-git-svn: make hash size independent
perl: create and switch variables for hash constants
perl: make Git::IndexInfo work with SHA-256
perl: make SVN code hash independent
git-svn: set the OID length based on hash algorithm
git-cvsserver: port to SHA-256
git-cvsimport: port to SHA-256
git-cvsexportcommit: port to SHA-256
http-push: ensure unforced pushes fail when data would be lost
Đoàn Trần Công Danh (2):
contrib: subtree: adjust test to change in fmt-merge-msg
l10n: vi.po: correct "ident line" translation
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.28.0-rc2
@ 2020-07-22 17:30 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-22 17:30 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.28.0-rc2 is now available for testing
at the usual places. It is comprised of 301 non-merge commits
since v2.27.0, contributed by 46 people, 12 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.28.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.27.0 are as follows.
Welcome to the Git development community!
Andrew Ng, Chris Torek, David J. Malan, Don Goodman-Wilson,
Jiuyang Xie, Luc Van Oostenryck, Marco Trevisan (Treviño),
Mikhail Terekhov, Miroslav Koškár, Rafael Aquini, Srinidhi
Kaushik, and Trygve Aaberge.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo
Arenas Belón, Christian Couder, Denton Liu, Derrick Stolee,
Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer,
Eric Sunshine, Han-Wen Nienhuys, Jacob Keller, Jeff King,
Johannes Schindelin, John Lin, Jonathan Nieder, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Laurent Arnoud, Martin Ågren,
Matheus Tavares, Paolo Bonzini, Patrick Steinhardt, Pratyush
Yadav, Ramsay Jones, Randall S. Becker, René Scharfe, Shourya
Shukla, SZEDER Gábor, Taylor Blau, Ville Skyttä, and Xin Li.
----------------------------------------------------------------
Git 2.28 Release Notes (draft)
==============================
Updates since v2.27
-------------------
Backward compatibility notes
* "fetch.writeCommitGraph" is deemed to be still a bit too risky and
is no longer part of the "feature.experimental" set.
UI, Workflows & Features
* The commands in the "diff" family learned to honor "diff.relative"
configuration variable.
* The check in "git fsck" to ensure that the tree objects are sorted
still had corner cases it missed unsorted entries.
* The interface to redact sensitive information in the trace output
has been simplified.
* The command line completion (in contrib/) learned to complete
options that the "git switch" command takes.
* "git diff" used to take arguments in random and nonsense range
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
which has been cleaned up.
* "git diff-files" has been taught to say paths that are marked as
intent-to-add are new files, not modified from an empty blob.
* "git status" learned to report the status of sparse checkout.
* "git difftool" has trouble dealing with paths added to the index
with the intent-to-add bit.
* "git fast-export --anonymize" learned to take customized mapping to
allow its users to tweak its output more usable for debugging.
* The command line completion support (in contrib/) used to be
prepared to work with "set -u" but recent changes got a bit more
sloppy. This has been corrected.
* "git gui" now allows opening work trees from the start-up dialog.
Performance, Internal Implementation, Development Support etc.
* Code optimization for a common case.
(merge 8777616e4d an/merge-single-strategy-optim later to maint).
* We've adopted a convention that any on-stack structure can be
initialized to have zero values in all fields with "= { 0 }",
even when the first field happens to be a pointer, but sparse
complained that a null pointer should be spelled NULL for a long
time. Start using -Wno-universal-initializer option to squelch
it (the latest sparse has it on by default).
* "git log -L..." now takes advantage of the "which paths are touched
by this commit?" info stored in the commit-graph system.
* As FreeBSD is not the only platform whose regexp library reports
a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
automatically and skip the affected tests.
* "git bugreport" learns to report what shell is in use.
* Support for GIT_CURL_VERBOSE has been rewritten in terms of
GIT_TRACE_CURL.
* Preliminary clean-ups around refs API, plus file format
specification documentation for the reftable backend.
* Workaround breakage in MSVC build, where "curl-config --cflags"
gives settings appropriate for GCC build.
* Code clean-up of "git clean" resulted in a fix of recent
performance regression.
* Code clean-up in the codepath that serves "git fetch" continues.
* "git merge-base --is-ancestor" is taught to take advantage of the
commit graph.
* Rewrite of parts of the scripted "git submodule" Porcelain command
continues; this time it is "git submodule set-branch" subcommand's
turn.
* The "fetch/clone" protocol has been updated to allow the server to
instruct the clients to grab pre-packaged packfile(s) in addition
to the packed object data coming over the wire.
* A misdesigned strbuf_write_fd() function has been retired.
* SHA-256 migration work continues, including CVS/SVN interface.
* A few fields in "struct commit" that do not have to always be
present have been moved to commit slabs.
* API cleanup for get_worktrees()
* By renumbering object flag bits, "struct object" managed to lose
bloated inter-field padding.
* The name of the primary branch in existing repositories, and the
default name used for the first branch in newly created
repositories, is made configurable, so that we can eventually wean
ourselves off of the hardcoded 'master'.
* The effort to avoid using test_must_fail on non-git command continues.
* In 2.28-rc0, we corrected a bug that some repository extensions are
honored by mistake even in a version 0 repositories (these
configuration variables in extensions.* namespace were supposed to
have special meaning in repositories whose version numbers are 1 or
higher), but this was a bit too big a change. The behaviour in
recent versions of Git where certaion extensions.* were honored by
mistake even in version 0 repositories has been restored.
Fixes since v2.27
-----------------
* The "--prepare-p4-only" option of "git p4" is supposed to stop
after replaying one changeset, but kept going (by mistake?)
* The error message from "git checkout -b foo -t bar baz" was
confusing.
* Some repositories in the wild have commits that record nonsense
committer timezone (e.g. rails.git); "git fast-import" learned an
option to pass these nonsense timestamps intact to allow recreating
existing repositories as-is.
(merge d42a2fb72f en/fast-import-looser-date later to maint).
* The command line completion script (in contrib/) tried to complete
"git stash -p" as if it were "git stash push -p", but it was too
aggressive and also affected "git stash show -p", which has been
corrected.
(merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
* On-the-wire protocol v2 easily falls into a deadlock between the
remote-curl helper and the fetch-pack process when the server side
prematurely throws an error and disconnects. The communication has
been updated to make it more robust.
* "git checkout -p" did not handle a newly added path at all.
(merge 2c8bd8471a js/checkout-p-new-file later to maint).
* The code to parse "git bisect start" command line was lax in
validating the arguments.
(merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
* Reduce memory usage during "diff --quiet" in a worktree with too
many stat-unmatched paths.
(merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
* The reflog entries for "git clone" and "git fetch" did not
anonymize the URL they operated on.
(merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
* The behaviour of "sparse-checkout" in the state "git clone
--no-checkout" left was changed accidentally in 2.27, which has
been corrected.
* Use of negative pathspec, while collecting paths including
untracked ones in the working tree, was broken.
* The same worktree directory must be registered only once, but
"git worktree move" allowed this invariant to be violated, which
has been corrected.
(merge 810382ed37 es/worktree-duplicate-paths later to maint).
* The effect of sparse checkout settings on submodules is documented.
(merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
* Code clean-up around "git branch" with a minor bugfix.
(merge dc44639904 dl/branch-cleanup later to maint).
* A branch name used in a test has been clarified to match what is
going on.
(merge 08dc26061f pb/t4014-unslave later to maint).
* An in-code comment in "git diff" has been updated.
(merge c592fd4c83 dl/diff-usage-comment-update later to maint).
* The documentation and some tests have been adjusted for the recent
renaming of "pu" branch to "seen".
(merge 6dca5dbf93 js/pu-to-seen later to maint).
* The code to push changes over "dumb" HTTP had a bad interaction
with the commit reachability code due to incorrect allocation of
object flag bits, which has been corrected.
(merge 64472d15e9 bc/http-push-flagsfix later to maint).
* "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
header with the value given from the command line, and let it be
overridden by the value on In-Reply-To: header in the messages
being sent out (if exists).
(merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
* "git log -Lx,y:path --before=date" lost track of where the range
should be because it didn't take the changes made by the youngest
commits that are omitted from the output into account.
* When "fetch.writeCommitGraph" configuration is set in a shallow
repository and a fetch moves the shallow boundary, we wrote out
broken commit-graph files that do not match the reality, which has
been corrected.
* "git checkout" failed to catch an error from fstat() after updating
a path in the working tree.
(merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
* When an aliased command, whose output is piped to a pager by git,
gets killed by a signal, the pager got into a funny state, which
has been corrected (again).
(merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
* The code to produce progress output from "git commit-graph --write"
had a few breakages, which have been fixed.
* Other code cleanup, docfix, build fix, etc.
(merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
(merge d63ae31962 cb/t5608-cleanup later to maint).
(merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
(merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
(merge b75a219904 es/advertise-contribution-doc later to maint).
(merge 0c9a4f638a rs/pull-leakfix later to maint).
(merge d546fe2874 rs/commit-reach-leakfix later to maint).
(merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
(merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
(merge 0172f7834a cc/cat-file-usage-update later to maint).
(merge 81de0c01cf ma/rebase-doc-typofix later to maint).
----------------------------------------------------------------
Changes since v2.27.0 are as follows:
Abhishek Kumar (4):
object: drop parsed_object_pool->commit_count
commit-graph: introduce commit_graph_data_slab
commit: move members graph_pos, generation to a slab
commit-graph: minimize commit_graph_data_slab access
Andrew Ng (1):
merge: optimization to skip evaluate_result for single strategy
Ben Keene (1):
git-p4.py: fix --prepare-p4-only error with multiple commits
Carlo Marcelo Arenas Belón (5):
t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
t4210: detect REG_ILLSEQ dynamically and skip affected tests
bisect--helper: avoid segfault with bad syntax in `start --term-*`
t5608: avoid say() and use "skip_all" instead for consistency
commit-reach: avoid is_descendant_of() shim
Chris Torek (3):
t/t3430: avoid undefined git diff behavior
git diff: improve range handling
Documentation: usage for diff combined commits
Christian Couder (40):
upload-pack: remove unused 'wants' from upload_pack_data
upload-pack: move {want,have}_obj to upload_pack_data
upload-pack: move 'struct upload_pack_data' around
upload-pack: use 'struct upload_pack_data' in upload_pack()
upload-pack: pass upload_pack_data to get_common_commits()
upload-pack: pass upload_pack_data to receive_needs()
upload-pack: use upload_pack_data writer in receive_needs()
upload-pack: move symref to upload_pack_data
upload-pack: pass upload_pack_data to send_ref()
upload-pack: pass upload_pack_data to check_non_tip()
upload-pack: remove static variable 'stateless_rpc'
upload-pack: pass upload_pack_data to create_pack_file()
upload-pack: use upload_pack_data fields in receive_needs()
upload-pack: annotate upload_pack_data fields
upload-pack: move static vars to upload_pack_data
upload-pack: move use_sideband to upload_pack_data
upload-pack: move filter_capability_requested to upload_pack_data
upload-pack: move multi_ack to upload_pack_data
upload-pack: change multi_ack to an enum
upload-pack: pass upload_pack_data to upload_pack_config()
upload-pack: move keepalive to upload_pack_data
upload-pack: move allow_filter to upload_pack_data
upload-pack: move allow_ref_in_want to upload_pack_data
upload-pack: move allow_sideband_all to upload_pack_data
upload-pack: move pack_objects_hook to upload_pack_data
upload-pack: pass upload_pack_data to send_shallow_list()
upload-pack: pass upload_pack_data to deepen()
upload-pack: pass upload_pack_data to deepen_by_rev_list()
upload-pack: pass upload_pack_data to send_unshallow()
upload-pack: move shallow_nr to upload_pack_data
upload-pack: move extra_edge_obj to upload_pack_data
upload-pack: move allow_unadvertised_object_request to upload_pack_data
upload-pack: change allow_unadvertised_object_request to an enum
upload-pack: pass upload_pack_data to process_haves()
upload-pack: pass upload_pack_data to send_acks()
upload-pack: pass upload_pack_data to ok_to_give_up()
upload-pack: pass upload_pack_data to got_oid()
upload-pack: move oldest_have to upload_pack_data
upload-pack: refactor common code into do_got_oid()
cat-file: add missing [=<format>] to usage/synopsis
David J. Malan (1):
git-prompt: change == to = for zsh's sake
Denton Liu (18):
lib-submodule-update: add space after function name
lib-submodule-update: consolidate --recurse-submodules
remote-curl: fix typo
remote-curl: remove label indentation
transport: extract common fetch_pack() call
pkt-line: extern packet_length()
remote-curl: error on incomplete packet
pkt-line: define PACKET_READ_RESPONSE_END
stateless-connect: send response end packet
t/README: avoid poor-man's small caps GIT
CodingGuidelines: specify Python 2.7 is the oldest version
lib-submodule-update: prepend "git" to $command
t3200: rename "expected" to "expect"
t3200: test for specific errors
branch: don't mix --edit-description
builtin/diff: update usage comment
builtin/diff: fix botched update of usage comment
lib-submodule-update: pass 'test_must_fail' as an argument
Derrick Stolee (3):
line-log: integrate with changed-path Bloom filters
commit-reach: create repo_is_descendant_of()
commit-reach: use fast logic in repo_in_merge_base
Don Goodman-Wilson (1):
init: allow setting the default for the initial branch name via the config
Elijah Newren (11):
fast-import: add new --date-format=raw-permissive format
sparse-checkout: avoid staging deletions of all files
dir: fix treatment of negated pathspecs
git-sparse-checkout: clarify interactions with submodules
dir: fix a few confusing comments
dir, clean: avoid disallowed behavior
clean: consolidate handling of ignored parameters
clean: optimize and document cases where we recurse into subdirectories
wt-status: show sparse checkout status as well
git-prompt: document how in-progress operations affect the prompt
git-prompt: include sparsity state as well
Emily Shaffer (3):
help: add shell-path to --build-options
bugreport: include user interactive shell
docs: mention MyFirstContribution in more places
Eric Sunshine (10):
worktree: factor out repeated string literal
worktree: give "should be pruned?" function more meaningful name
worktree: make high-level pruning re-usable
worktree: prune duplicate entries referencing same worktree path
worktree: prune linked worktree referencing main worktree path
worktree: generalize candidate worktree path validation
worktree: make "move" refuse to move atop missing registered worktree
worktree: drop get_worktrees() special-purpose sorting option
worktree: drop get_worktrees() unused 'flags' argument
worktree: avoid dead-code in conditional
Han-Wen Nienhuys (5):
refs.h: clarify reflog iteration order
t: use update-ref and show-ref to reading/writing refs
refs: improve documentation for ref iterator
reftable: clarify how empty tables should be written
reftable: define version 2 of the spec to accomodate SHA256
Jacob Keller (16):
completion: add test showing subpar git switch completion
completion: add tests showing subpar DWIM logic for switch/checkout
completion: add tests showing subar checkout --detach logic
completion: add tests showing subpar switch/checkout --track logic
completion: add tests showing subpar -c/-C startpoint completion
completion: add tests showing subpar -c/C argument completion
completion: add tests showing subpar switch/checkout --orphan logic
completion: replace overloaded track term for __git_complete_refs
completion: extract function __git_dwim_remote_heads
completion: perform DWIM logic directly in __git_complete_refs
completion: improve handling of DWIM mode for switch/checkout
completion: improve completion for git switch with no options
completion: improve handling of --detach in checkout
completion: improve handling of --track in switch/checkout
completion: improve handling of -c/-C and -b/-B in switch/checkout
completion: improve handling of --orphan option of switch/checkout
Jeff King (14):
diff: discard blob data from stat-unmatched pairs
upload-pack: actually use some upload_pack_data bitfields
t9351: derive anonymized tree checks from original repo
fast-export: use xmemdupz() for anonymizing oids
fast-export: store anonymized oids as hex strings
fast-export: tighten anonymize_mem() interface to handle only strings
fast-export: stop storing lengths in anonymized hashmaps
fast-export: use a flex array to store anonymized entries
fast-export: move global "idents" anonymize hashmap into function
fast-export: add a "data" callback parameter to anonymize_str()
fast-export: allow seeding the anonymized mapping
fast-export: anonymize "master" refname
fast-export: use local array to store anonymized oid
diff: check for merge bases before assigning sym->base
Jiuyang Xie (1):
doc: fix wrong 4-byte length of pkt-line message
Johannes Schindelin (16):
checkout -p: handle new files correctly
clone/fetch: anonymize URLs in the reflog
msvc: fix "REG_STARTEND" issue
fmt-merge-msg: stop treating `master` specially
send-pack/transport-helper: avoid mentioning a particular branch
submodule: fall back to remote's HEAD for missing remote.<name>.branch
docs: add missing diamond brackets
init: allow specifying the initial branch name for the new repository
clone: use configured default branch name when appropriate
remote: use the configured default branch name when appropriate
testsvn: respect `init.defaultBranch`
docs: adjust for the recent rename of `pu` to `seen`
docs: adjust the technical overview for the rename `pu` -> `seen`
tests: reference `seen` wherever `pu` was referenced
diff-files --raw: show correct post-image of intent-to-add files
difftool -d: ensure that intent-to-add files are handled correctly
John Lin (1):
bash-completion: add git-prune into bash completion
Jonathan Nieder (5):
config: let feature.experimental imply protocol.version=2
reftable: file format documentation
experimental: default to fetch.writeCommitGraph=false
Revert "check_repository_format_gently(): refuse extensions for old repositories"
repository: allow repository format upgrade with extensions
Jonathan Tan (12):
t5551: test that GIT_TRACE_CURL redacts password
http, imap-send: stop using CURLOPT_VERBOSE
http: redact all cookies, teach GIT_TRACE_REDACT=0
http: use --stdin when indexing dumb HTTP pack
http: refactor finish_http_pack_request()
http-fetch: refactor into function
http-fetch: support fetching packfiles by URL
Documentation: order protocol v2 sections
Documentation: add Packfile URIs design doc
upload-pack: refactor reading of pack-objects out
fetch-pack: support more than one pack lockfile
upload-pack: send part of packfile response as uri
Josh Steadmon (1):
fuzz-commit-graph: properly free graph struct
Junio C Hamano (12):
Start the post 2.27 cycle
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
Git 2.28-rc0
Hopefully the last batch before -rc1
Git 2.28-rc1
RelNotes: update the v0 with extension situation
Git 2.28-rc2
Laurent Arnoud (1):
diff: add config option relative
Luc Van Oostenryck (1):
sparse: allow '{ 0 }' to be used without warnings
Marco Trevisan (Treviño) (1):
completion: use native ZSH array pattern matching
Martin Ågren (5):
git-rebase.txt: fix description list separator
git-diff.txt: don't mark required argument as optional
git-diff.txt: reorder possible usages
gitworkflows.txt: fix broken subsection underline
t3200: don't grep for `strerror()` string
Matheus Tavares (1):
entry: check for fstat() errors after checkout
Mikhail Terekhov (1):
git-gui: allow opening work trees from the startup dialog
Miroslav Koškár (1):
doc: fix author vs. committer copy/paste error
Paolo Bonzini (1):
t4014: do not use "slave branch" nomenclature
Patrick Steinhardt (1):
refs: implement reference transaction hook
Rafael Aquini (1):
send-email: restore --in-reply-to superseding behavior
Ramsay Jones (1):
upload-pack: fix a sparse '0 as NULL pointer' warning
Randall S. Becker (2):
bugreport.c: replace strbuf_write_fd with write_in_full
strbuf: remove unreferenced strbuf_write_fd method.
René Scharfe (10):
fsck: fix a typo in a comment
t1450: increase test coverage of in-tree d/f detection
t1450: demonstrate undetected in-tree d/f conflict
fsck: detect more in-tree d/f conflicts
checkout: add tests for -b and --track
checkout: improve error messages for -b with extra argument
commit-reach: plug minor memory leak after using is_descendant_of()
pull: plug minor memory leak after using is_descendant_of()
revision: reallocate TOPO_WALK object flags
revision: disable min_age optimization with line-log
SZEDER Gábor (7):
line-log: remove unused fields from 'struct line_log_data'
t4211-line-log: add tests for parent oids
line-log: more responsive, incremental 'git log -L'
line-log: try to use generation number-based topo-ordering
commit-graph: fix progress of reachable commits
commit-graph: fix "Writing out commit graph" progress counter
commit-graph: fix "Collecting commits from input" progress line
Shourya Shukla (1):
submodule: port subcommand 'set-branch' from shell to C
Srinidhi Kaushik (1):
diff-files: treat "i-t-a" files as "not-in-index"
Taylor Blau (11):
commit-graph.c: extract 'refs_cb_data'
commit-graph.c: show progress of finding reachable commits
commit-graph.c: peel refs in 'add_ref_to_set'
builtin/commit-graph.c: extract 'read_one_commit()'
builtin/commit-graph.c: dereference tags in builtin
commit-graph.c: simplify 'fill_oids_from_commits'
t5318: reorder test below 'graph_read_expect'
commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
t5318: use 'test_must_be_empty'
t5318: test that '--stdin-commits' respects '--[no-]progress'
commit.c: don't persist substituted parents when unshallowing
Trygve Aaberge (2):
Wait for child on signal death for aliases to builtins
Wait for child on signal death for aliases to externals
Ville Skyttä (2):
completion: don't override given stash subcommand with -p
completion: nounset mode fixes
Xin Li (4):
repository: add a helper function to perform repository format upgrade
fetch: allow adding a filter after initial clone
sparse-checkout: upgrade repository to version 1 when enabling extension
check_repository_format_gently(): refuse extensions for old repositories
brian m. carlson (61):
t1050: match object ID paths in a hash-insensitive way
Documentation: document v1 protocol object-format capability
builtin/checkout: simplify metadata initialization
t2060: add a test for switch with --orphan and --discard-changes
connect: have ref processing code take struct packet_reader
wrapper: add function to compare strings with different NUL termination
remote: advertise the object-format capability on the server side
connect: add function to parse multiple v1 capability values
connect: add function to fetch value of a v2 server capability
pkt-line: add a member for hash algorithm
transport: add a hash algorithm member
connect: add function to detect supported v1 hash functions
send-pack: detect when the server doesn't support our hash
connect: make parse_feature_value extern
fetch-pack: detect when the server doesn't support our hash
connect: detect algorithm when fetching refs
builtin/receive-pack: detect when the server doesn't support our hash
docs: update remote helper docs for object-format extensions
transport-helper: implement object-format extensions
remote-curl: implement object-format extensions
builtin/clone: initialize hash algorithm properly
t5562: pass object-format in synthesized test data
fetch-pack: parse and advertise the object-format capability
setup: set the_repository's hash algo when checking format
t3200: mark assertion with SHA1 prerequisite
packfile: compute and use the index CRC offset
t5302: modernize test formatting
builtin/show-index: provide options to determine hash algo
t1302: expect repo format version 1 for SHA-256
Documentation/technical: document object-format for protocol v2
connect: pass full packet reader when parsing v2 refs
connect: parse v2 refs with correct hash algorithm
serve: advertise object-format capability for protocol v2
t5500: make hash independent
builtin/ls-remote: initialize repository based on fetch
remote-curl: detect algorithm for dumb HTTP by size
builtin/index-pack: add option to specify hash algorithm
t1050: pass algorithm to index-pack when outside repo
remote-curl: avoid truncating refs with ls-remote
t/helper: initialize the repository for test-sha1-array
t5702: offer an object-format capability in the test
t5703: use object-format serve option
t5704: send object-format capability with SHA-256
t5300: pass --object-format to git index-pack
bundle: detect hash algorithm when reading refs
remote-testgit: adapt for object-format
t9109: make test hash independent
t9168: make test hash independent
t9108: make test hash independent
t9100: make test work with SHA-256
t9104: make hash size independent
t9101: make hash independent
t/lib-git-svn: make hash size independent
perl: create and switch variables for hash constants
perl: make Git::IndexInfo work with SHA-256
perl: make SVN code hash independent
git-svn: set the OID length based on hash algorithm
git-cvsserver: port to SHA-256
git-cvsimport: port to SHA-256
git-cvsexportcommit: port to SHA-256
http-push: ensure unforced pushes fail when data would be lost
Đoàn Trần Công Danh (1):
contrib: subtree: adjust test to change in fmt-merge-msg
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.28.0-rc1
@ 2020-07-17 20:24 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-17 20:24 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.28.0-rc1 is now available for testing
at the usual places. It is comprised of 295 non-merge commits
since v2.27.0, contributed by 43 people, 10 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.28.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.27.0 are as follows.
Welcome to the Git development community!
Andrew Ng, Chris Torek, Don Goodman-Wilson, Jiuyang Xie, Luc
Van Oostenryck, Marco Trevisan (Treviño), Miroslav Koškár,
Rafael Aquini, Srinidhi Kaushik, and Trygve Aaberge.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo Arenas
Belón, Christian Couder, Denton Liu, Derrick Stolee, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Han-Wen Nienhuys, Jacob Keller, Jeff King, Johannes Schindelin,
John Lin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C
Hamano, Laurent Arnoud, Martin Ågren, Matheus Tavares, Paolo
Bonzini, Patrick Steinhardt, Ramsay Jones, Randall S. Becker,
René Scharfe, Shourya Shukla, SZEDER Gábor, Taylor Blau,
Ville Skyttä, and Xin Li.
----------------------------------------------------------------
Git 2.28 Release Notes (draft)
==============================
Updates since v2.27
-------------------
Backward compatibility notes
* "fetch.writeCommitGraph" is deemed to be still a bit too risky and
is no longer part of the "feature.experimental" set.
UI, Workflows & Features
* The commands in the "diff" family learned to honor "diff.relative"
configuration variable.
* The check in "git fsck" to ensure that the tree objects are sorted
still had corner cases it missed unsorted entries.
* The interface to redact sensitive information in the trace output
has been simplified.
* The command line completion (in contrib/) learned to complete
options that the "git switch" command takes.
* "git diff" used to take arguments in random and nonsense range
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
which has been cleaned up.
* "git diff-files" has been taught to say paths that are marked as
intent-to-add are new files, not modified from an empty blob.
* "git status" learned to report the status of sparse checkout.
* "git difftool" has trouble dealing with paths added to the index
with the intent-to-add bit.
* "git fast-export --anonymize" learned to take customized mapping to
allow its users to tweak its output more usable for debugging.
* The command line completion support (in contrib/) used to be
prepared to work with "set -u" but recent changes got a bit more
sloppy. This has been corrected.
Performance, Internal Implementation, Development Support etc.
* Code optimization for a common case.
(merge 8777616e4d an/merge-single-strategy-optim later to maint).
* We've adopted a convention that any on-stack structure can be
initialized to have zero values in all fields with "= { 0 }",
even when the first field happens to be a pointer, but sparse
complained that a null pointer should be spelled NULL for a long
time. Start using -Wno-universal-initializer option to squelch
it (the latest sparse has it on by default).
* "git log -L..." now takes advantage of the "which paths are touched
by this commit?" info stored in the commit-graph system.
* As FreeBSD is not the only platform whose regexp library reports
a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
automatically and skip the affected tests.
* "git bugreport" learns to report what shell is in use.
* Support for GIT_CURL_VERBOSE has been rewritten in terms of
GIT_TRACE_CURL.
* Preliminary clean-ups around refs API, plus file format
specification documentation for the reftable backend.
* Workaround breakage in MSVC build, where "curl-config --cflags"
gives settings appropriate for GCC build.
* Code clean-up of "git clean" resulted in a fix of recent
performance regression.
* Code clean-up in the codepath that serves "git fetch" continues.
* "git merge-base --is-ancestor" is taught to take advantage of the
commit graph.
* Rewrite of parts of the scripted "git submodule" Porcelain command
continues; this time it is "git submodule set-branch" subcommand's
turn.
* The "fetch/clone" protocol has been updated to allow the server to
instruct the clients to grab pre-packaged packfile(s) in addition
to the packed object data coming over the wire.
* A misdesigned strbuf_write_fd() function has been retired.
* SHA-256 migration work continues, including CVS/SVN interface.
* A few fields in "struct commit" that do not have to always be
present have been moved to commit slabs.
* API cleanup for get_worktrees()
* By renumbering object flag bits, "struct object" managed to lose
bloated inter-field padding.
* The name of the primary branch in existing repositories, and the
default name used for the first branch in newly created
repositories, is made configurable, so that we can eventually wean
ourselves off of the hardcoded 'master'.
* The effort to avoid using test_must_fail on non-git command continues.
* In 2.28-rc0, we corrected a bug that some repository extensions are
honored by mistake even in a version 0 repositories (these
configuration variables in extensions.* namespace were supposed to
have special meaning in repositories whose version numbers are 1 or
higher), but this was a bit too big a change. The behaviour in
recent versions of Git where certaion extensions.* were honored by
mistake even in version 0 repositories has been restored.
Fixes since v2.27
-----------------
* The "--prepare-p4-only" option of "git p4" is supposed to stop
after replaying one changeset, but kept going (by mistake?)
* The error message from "git checkout -b foo -t bar baz" was
confusing.
* Some repositories in the wild have commits that record nonsense
committer timezone (e.g. rails.git); "git fast-import" learned an
option to pass these nonsense timestamps intact to allow recreating
existing repositories as-is.
(merge d42a2fb72f en/fast-import-looser-date later to maint).
* The command line completion script (in contrib/) tried to complete
"git stash -p" as if it were "git stash push -p", but it was too
aggressive and also affected "git stash show -p", which has been
corrected.
(merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
* On-the-wire protocol v2 easily falls into a deadlock between the
remote-curl helper and the fetch-pack process when the server side
prematurely throws an error and disconnects. The communication has
been updated to make it more robust.
* "git checkout -p" did not handle a newly added path at all.
(merge 2c8bd8471a js/checkout-p-new-file later to maint).
* The code to parse "git bisect start" command line was lax in
validating the arguments.
(merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
* Reduce memory usage during "diff --quiet" in a worktree with too
many stat-unmatched paths.
(merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
* The reflog entries for "git clone" and "git fetch" did not
anonymize the URL they operated on.
(merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
* The behaviour of "sparse-checkout" in the state "git clone
--no-checkout" left was changed accidentally in 2.27, which has
been corrected.
* Use of negative pathspec, while collecting paths including
untracked ones in the working tree, was broken.
* The same worktree directory must be registered only once, but
"git worktree move" allowed this invariant to be violated, which
has been corrected.
(merge 810382ed37 es/worktree-duplicate-paths later to maint).
* The effect of sparse checkout settings on submodules is documented.
(merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
* Code clean-up around "git branch" with a minor bugfix.
(merge dc44639904 dl/branch-cleanup later to maint).
* A branch name used in a test has been clarified to match what is
going on.
(merge 08dc26061f pb/t4014-unslave later to maint).
* An in-code comment in "git diff" has been updated.
(merge c592fd4c83 dl/diff-usage-comment-update later to maint).
* The documentation and some tests have been adjusted for the recent
renaming of "pu" branch to "seen".
(merge 6dca5dbf93 js/pu-to-seen later to maint).
* The code to push changes over "dumb" HTTP had a bad interaction
with the commit reachability code due to incorrect allocation of
object flag bits, which has been corrected.
(merge 64472d15e9 bc/http-push-flagsfix later to maint).
* "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
header with the value given from the command line, and let it be
overridden by the value on In-Reply-To: header in the messages
being sent out (if exists).
(merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
* "git log -Lx,y:path --before=date" lost track of where the range
should be because it didn't take the changes made by the youngest
commits that are omitted from the output into account.
* When "fetch.writeCommitGraph" configuration is set in a shallow
repository and a fetch moves the shallow boundary, we wrote out
broken commit-graph files that do not match the reality, which has
been corrected.
* "git checkout" failed to catch an error from fstat() after updating
a path in the working tree.
(merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
* When an aliased command, whose output is piped to a pager by git,
gets killed by a signal, the pager got into a funny state, which
has been corrected (again).
(merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
* The code to produce progress output from "git commit-graph --write"
had a few breakages, which have been fixed.
* Other code cleanup, docfix, build fix, etc.
(merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
(merge d63ae31962 cb/t5608-cleanup later to maint).
(merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
(merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
(merge b75a219904 es/advertise-contribution-doc later to maint).
(merge 0c9a4f638a rs/pull-leakfix later to maint).
(merge d546fe2874 rs/commit-reach-leakfix later to maint).
(merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
(merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
(merge 0172f7834a cc/cat-file-usage-update later to maint).
(merge 81de0c01cf ma/rebase-doc-typofix later to maint).
----------------------------------------------------------------
Changes since v2.27.0 are as follows:
Abhishek Kumar (4):
object: drop parsed_object_pool->commit_count
commit-graph: introduce commit_graph_data_slab
commit: move members graph_pos, generation to a slab
commit-graph: minimize commit_graph_data_slab access
Andrew Ng (1):
merge: optimization to skip evaluate_result for single strategy
Ben Keene (1):
git-p4.py: fix --prepare-p4-only error with multiple commits
Carlo Marcelo Arenas Belón (5):
t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
t4210: detect REG_ILLSEQ dynamically and skip affected tests
bisect--helper: avoid segfault with bad syntax in `start --term-*`
t5608: avoid say() and use "skip_all" instead for consistency
commit-reach: avoid is_descendant_of() shim
Chris Torek (3):
t/t3430: avoid undefined git diff behavior
git diff: improve range handling
Documentation: usage for diff combined commits
Christian Couder (40):
upload-pack: remove unused 'wants' from upload_pack_data
upload-pack: move {want,have}_obj to upload_pack_data
upload-pack: move 'struct upload_pack_data' around
upload-pack: use 'struct upload_pack_data' in upload_pack()
upload-pack: pass upload_pack_data to get_common_commits()
upload-pack: pass upload_pack_data to receive_needs()
upload-pack: use upload_pack_data writer in receive_needs()
upload-pack: move symref to upload_pack_data
upload-pack: pass upload_pack_data to send_ref()
upload-pack: pass upload_pack_data to check_non_tip()
upload-pack: remove static variable 'stateless_rpc'
upload-pack: pass upload_pack_data to create_pack_file()
upload-pack: use upload_pack_data fields in receive_needs()
upload-pack: annotate upload_pack_data fields
upload-pack: move static vars to upload_pack_data
upload-pack: move use_sideband to upload_pack_data
upload-pack: move filter_capability_requested to upload_pack_data
upload-pack: move multi_ack to upload_pack_data
upload-pack: change multi_ack to an enum
upload-pack: pass upload_pack_data to upload_pack_config()
upload-pack: move keepalive to upload_pack_data
upload-pack: move allow_filter to upload_pack_data
upload-pack: move allow_ref_in_want to upload_pack_data
upload-pack: move allow_sideband_all to upload_pack_data
upload-pack: move pack_objects_hook to upload_pack_data
upload-pack: pass upload_pack_data to send_shallow_list()
upload-pack: pass upload_pack_data to deepen()
upload-pack: pass upload_pack_data to deepen_by_rev_list()
upload-pack: pass upload_pack_data to send_unshallow()
upload-pack: move shallow_nr to upload_pack_data
upload-pack: move extra_edge_obj to upload_pack_data
upload-pack: move allow_unadvertised_object_request to upload_pack_data
upload-pack: change allow_unadvertised_object_request to an enum
upload-pack: pass upload_pack_data to process_haves()
upload-pack: pass upload_pack_data to send_acks()
upload-pack: pass upload_pack_data to ok_to_give_up()
upload-pack: pass upload_pack_data to got_oid()
upload-pack: move oldest_have to upload_pack_data
upload-pack: refactor common code into do_got_oid()
cat-file: add missing [=<format>] to usage/synopsis
Denton Liu (18):
lib-submodule-update: add space after function name
lib-submodule-update: consolidate --recurse-submodules
remote-curl: fix typo
remote-curl: remove label indentation
transport: extract common fetch_pack() call
pkt-line: extern packet_length()
remote-curl: error on incomplete packet
pkt-line: define PACKET_READ_RESPONSE_END
stateless-connect: send response end packet
t/README: avoid poor-man's small caps GIT
CodingGuidelines: specify Python 2.7 is the oldest version
lib-submodule-update: prepend "git" to $command
t3200: rename "expected" to "expect"
t3200: test for specific errors
branch: don't mix --edit-description
builtin/diff: update usage comment
builtin/diff: fix botched update of usage comment
lib-submodule-update: pass 'test_must_fail' as an argument
Derrick Stolee (3):
line-log: integrate with changed-path Bloom filters
commit-reach: create repo_is_descendant_of()
commit-reach: use fast logic in repo_in_merge_base
Don Goodman-Wilson (1):
init: allow setting the default for the initial branch name via the config
Elijah Newren (11):
fast-import: add new --date-format=raw-permissive format
sparse-checkout: avoid staging deletions of all files
dir: fix treatment of negated pathspecs
git-sparse-checkout: clarify interactions with submodules
dir: fix a few confusing comments
dir, clean: avoid disallowed behavior
clean: consolidate handling of ignored parameters
clean: optimize and document cases where we recurse into subdirectories
wt-status: show sparse checkout status as well
git-prompt: document how in-progress operations affect the prompt
git-prompt: include sparsity state as well
Emily Shaffer (3):
help: add shell-path to --build-options
bugreport: include user interactive shell
docs: mention MyFirstContribution in more places
Eric Sunshine (10):
worktree: factor out repeated string literal
worktree: give "should be pruned?" function more meaningful name
worktree: make high-level pruning re-usable
worktree: prune duplicate entries referencing same worktree path
worktree: prune linked worktree referencing main worktree path
worktree: generalize candidate worktree path validation
worktree: make "move" refuse to move atop missing registered worktree
worktree: drop get_worktrees() special-purpose sorting option
worktree: drop get_worktrees() unused 'flags' argument
worktree: avoid dead-code in conditional
Han-Wen Nienhuys (5):
refs.h: clarify reflog iteration order
t: use update-ref and show-ref to reading/writing refs
refs: improve documentation for ref iterator
reftable: clarify how empty tables should be written
reftable: define version 2 of the spec to accomodate SHA256
Jacob Keller (16):
completion: add test showing subpar git switch completion
completion: add tests showing subpar DWIM logic for switch/checkout
completion: add tests showing subar checkout --detach logic
completion: add tests showing subpar switch/checkout --track logic
completion: add tests showing subpar -c/-C startpoint completion
completion: add tests showing subpar -c/C argument completion
completion: add tests showing subpar switch/checkout --orphan logic
completion: replace overloaded track term for __git_complete_refs
completion: extract function __git_dwim_remote_heads
completion: perform DWIM logic directly in __git_complete_refs
completion: improve handling of DWIM mode for switch/checkout
completion: improve completion for git switch with no options
completion: improve handling of --detach in checkout
completion: improve handling of --track in switch/checkout
completion: improve handling of -c/-C and -b/-B in switch/checkout
completion: improve handling of --orphan option of switch/checkout
Jeff King (14):
diff: discard blob data from stat-unmatched pairs
upload-pack: actually use some upload_pack_data bitfields
t9351: derive anonymized tree checks from original repo
fast-export: use xmemdupz() for anonymizing oids
fast-export: store anonymized oids as hex strings
fast-export: tighten anonymize_mem() interface to handle only strings
fast-export: stop storing lengths in anonymized hashmaps
fast-export: use a flex array to store anonymized entries
fast-export: move global "idents" anonymize hashmap into function
fast-export: add a "data" callback parameter to anonymize_str()
fast-export: allow seeding the anonymized mapping
fast-export: anonymize "master" refname
fast-export: use local array to store anonymized oid
diff: check for merge bases before assigning sym->base
Jiuyang Xie (1):
doc: fix wrong 4-byte length of pkt-line message
Johannes Schindelin (16):
checkout -p: handle new files correctly
clone/fetch: anonymize URLs in the reflog
msvc: fix "REG_STARTEND" issue
fmt-merge-msg: stop treating `master` specially
send-pack/transport-helper: avoid mentioning a particular branch
submodule: fall back to remote's HEAD for missing remote.<name>.branch
docs: add missing diamond brackets
init: allow specifying the initial branch name for the new repository
clone: use configured default branch name when appropriate
remote: use the configured default branch name when appropriate
testsvn: respect `init.defaultBranch`
docs: adjust for the recent rename of `pu` to `seen`
docs: adjust the technical overview for the rename `pu` -> `seen`
tests: reference `seen` wherever `pu` was referenced
diff-files --raw: show correct post-image of intent-to-add files
difftool -d: ensure that intent-to-add files are handled correctly
John Lin (1):
bash-completion: add git-prune into bash completion
Jonathan Nieder (5):
config: let feature.experimental imply protocol.version=2
reftable: file format documentation
experimental: default to fetch.writeCommitGraph=false
Revert "check_repository_format_gently(): refuse extensions for old repositories"
repository: allow repository format upgrade with extensions
Jonathan Tan (12):
t5551: test that GIT_TRACE_CURL redacts password
http, imap-send: stop using CURLOPT_VERBOSE
http: redact all cookies, teach GIT_TRACE_REDACT=0
http: use --stdin when indexing dumb HTTP pack
http: refactor finish_http_pack_request()
http-fetch: refactor into function
http-fetch: support fetching packfiles by URL
Documentation: order protocol v2 sections
Documentation: add Packfile URIs design doc
upload-pack: refactor reading of pack-objects out
fetch-pack: support more than one pack lockfile
upload-pack: send part of packfile response as uri
Josh Steadmon (1):
fuzz-commit-graph: properly free graph struct
Junio C Hamano (10):
Start the post 2.27 cycle
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
Git 2.28-rc0
Hopefully the last batch before -rc1
Git 2.28-rc1
Laurent Arnoud (1):
diff: add config option relative
Luc Van Oostenryck (1):
sparse: allow '{ 0 }' to be used without warnings
Marco Trevisan (Treviño) (1):
completion: use native ZSH array pattern matching
Martin Ågren (3):
git-rebase.txt: fix description list separator
git-diff.txt: don't mark required argument as optional
git-diff.txt: reorder possible usages
Matheus Tavares (1):
entry: check for fstat() errors after checkout
Miroslav Koškár (1):
doc: fix author vs. committer copy/paste error
Paolo Bonzini (1):
t4014: do not use "slave branch" nomenclature
Patrick Steinhardt (1):
refs: implement reference transaction hook
Rafael Aquini (1):
send-email: restore --in-reply-to superseding behavior
Ramsay Jones (1):
upload-pack: fix a sparse '0 as NULL pointer' warning
Randall S. Becker (2):
bugreport.c: replace strbuf_write_fd with write_in_full
strbuf: remove unreferenced strbuf_write_fd method.
René Scharfe (10):
fsck: fix a typo in a comment
t1450: increase test coverage of in-tree d/f detection
t1450: demonstrate undetected in-tree d/f conflict
fsck: detect more in-tree d/f conflicts
checkout: add tests for -b and --track
checkout: improve error messages for -b with extra argument
commit-reach: plug minor memory leak after using is_descendant_of()
pull: plug minor memory leak after using is_descendant_of()
revision: reallocate TOPO_WALK object flags
revision: disable min_age optimization with line-log
SZEDER Gábor (7):
line-log: remove unused fields from 'struct line_log_data'
t4211-line-log: add tests for parent oids
line-log: more responsive, incremental 'git log -L'
line-log: try to use generation number-based topo-ordering
commit-graph: fix progress of reachable commits
commit-graph: fix "Writing out commit graph" progress counter
commit-graph: fix "Collecting commits from input" progress line
Shourya Shukla (1):
submodule: port subcommand 'set-branch' from shell to C
Srinidhi Kaushik (1):
diff-files: treat "i-t-a" files as "not-in-index"
Taylor Blau (11):
commit-graph.c: extract 'refs_cb_data'
commit-graph.c: show progress of finding reachable commits
commit-graph.c: peel refs in 'add_ref_to_set'
builtin/commit-graph.c: extract 'read_one_commit()'
builtin/commit-graph.c: dereference tags in builtin
commit-graph.c: simplify 'fill_oids_from_commits'
t5318: reorder test below 'graph_read_expect'
commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
t5318: use 'test_must_be_empty'
t5318: test that '--stdin-commits' respects '--[no-]progress'
commit.c: don't persist substituted parents when unshallowing
Trygve Aaberge (2):
Wait for child on signal death for aliases to builtins
Wait for child on signal death for aliases to externals
Ville Skyttä (2):
completion: don't override given stash subcommand with -p
completion: nounset mode fixes
Xin Li (4):
repository: add a helper function to perform repository format upgrade
fetch: allow adding a filter after initial clone
sparse-checkout: upgrade repository to version 1 when enabling extension
check_repository_format_gently(): refuse extensions for old repositories
brian m. carlson (61):
t1050: match object ID paths in a hash-insensitive way
Documentation: document v1 protocol object-format capability
builtin/checkout: simplify metadata initialization
t2060: add a test for switch with --orphan and --discard-changes
connect: have ref processing code take struct packet_reader
wrapper: add function to compare strings with different NUL termination
remote: advertise the object-format capability on the server side
connect: add function to parse multiple v1 capability values
connect: add function to fetch value of a v2 server capability
pkt-line: add a member for hash algorithm
transport: add a hash algorithm member
connect: add function to detect supported v1 hash functions
send-pack: detect when the server doesn't support our hash
connect: make parse_feature_value extern
fetch-pack: detect when the server doesn't support our hash
connect: detect algorithm when fetching refs
builtin/receive-pack: detect when the server doesn't support our hash
docs: update remote helper docs for object-format extensions
transport-helper: implement object-format extensions
remote-curl: implement object-format extensions
builtin/clone: initialize hash algorithm properly
t5562: pass object-format in synthesized test data
fetch-pack: parse and advertise the object-format capability
setup: set the_repository's hash algo when checking format
t3200: mark assertion with SHA1 prerequisite
packfile: compute and use the index CRC offset
t5302: modernize test formatting
builtin/show-index: provide options to determine hash algo
t1302: expect repo format version 1 for SHA-256
Documentation/technical: document object-format for protocol v2
connect: pass full packet reader when parsing v2 refs
connect: parse v2 refs with correct hash algorithm
serve: advertise object-format capability for protocol v2
t5500: make hash independent
builtin/ls-remote: initialize repository based on fetch
remote-curl: detect algorithm for dumb HTTP by size
builtin/index-pack: add option to specify hash algorithm
t1050: pass algorithm to index-pack when outside repo
remote-curl: avoid truncating refs with ls-remote
t/helper: initialize the repository for test-sha1-array
t5702: offer an object-format capability in the test
t5703: use object-format serve option
t5704: send object-format capability with SHA-256
t5300: pass --object-format to git index-pack
bundle: detect hash algorithm when reading refs
remote-testgit: adapt for object-format
t9109: make test hash independent
t9168: make test hash independent
t9108: make test hash independent
t9100: make test work with SHA-256
t9104: make hash size independent
t9101: make hash independent
t/lib-git-svn: make hash size independent
perl: create and switch variables for hash constants
perl: make Git::IndexInfo work with SHA-256
perl: make SVN code hash independent
git-svn: set the OID length based on hash algorithm
git-cvsserver: port to SHA-256
git-cvsimport: port to SHA-256
git-cvsexportcommit: port to SHA-256
http-push: ensure unforced pushes fail when data would be lost
Đoàn Trần Công Danh (1):
contrib: subtree: adjust test to change in fmt-merge-msg
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.28.0-rc0
@ 2020-07-09 21:40 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-09 21:40 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.28.0-rc0 is now available for
testing at the usual places. It is comprised of 284 non-merge
commits since v2.27.0, contributed by 42 people, 9 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.28.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.27.0 are as follows.
Welcome to the Git development community!
Andrew Ng, Chris Torek, Don Goodman-Wilson, Jiuyang Xie, Luc
Van Oostenryck, Marco Trevisan (Treviño), Miroslav Koškár,
Rafael Aquini, and Srinidhi Kaushik.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo Arenas
Belón, Christian Couder, Denton Liu, Derrick Stolee, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Han-Wen Nienhuys, Jacob Keller, Jeff King, Johannes Schindelin,
John Lin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C
Hamano, Laurent Arnoud, Martin Ågren, Matheus Tavares, Paolo
Bonzini, Patrick Steinhardt, Ramsay Jones, Randall S. Becker,
René Scharfe, Shourya Shukla, SZEDER Gábor, Taylor Blau,
Ville Skyttä, and Xin Li.
----------------------------------------------------------------
Git 2.28 Release Notes (draft)
==============================
Updates since v2.27
-------------------
Backward compatibility notes
* "fetch.writeCommitGraph" is deemed to be still a bit too risky and
is no longer part of the "feature.experimental" set.
* It used to be that setting extensions.* configuration variables
alone, while leaving core.repositoryFormatVersion=0, made these
settings effective, which was a wrong thing to do. In version 0,
there was no special meaning in extensions.* configuration
variables. This has been corrected. If you need these repository
extensions to be effective, the core.repositoryFormatVersion
variable needs to be updated to 1 after vetting these extensions.*
variables are set correctly.
UI, Workflows & Features
* The commands in the "diff" family learned to honor "diff.relative"
configuration variable.
* The check in "git fsck" to ensure that the tree objects are sorted
still had corner cases it missed unsorted entries.
* The interface to redact sensitive information in the trace output
has been simplified.
* The command line completion (in contrib/) learned to complete
options that the "git switch" command takes.
* "git diff" used to take arguments in random and nonsense range
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
which has been cleaned up.
* "git diff-files" has been taught to say paths that are marked as
intent-to-add are new files, not modified from an empty blob.
* "git status" learned to report the status of sparse checkout.
* "git difftool" has trouble dealing with paths added to the index
with the intent-to-add bit.
* "git fast-export --anonymize" learned to take customized mapping to
allow its users to tweak its output more usable for debugging.
* The command line completion support (in contrib/) used to be
prepared to work with "set -u" but recent changes got a bit more
sloppy. This has been corrected.
Performance, Internal Implementation, Development Support etc.
* Code optimization for a common case.
(merge 8777616e4d an/merge-single-strategy-optim later to maint).
* We've adopted a convention that any on-stack structure can be
initialized to have zero values in all fields with "= { 0 }",
even when the first field happens to be a pointer, but sparse
complained that a null pointer should be spelled NULL for a long
time. Start using -Wno-universal-initializer option to squelch
it (the latest sparse has it on by default).
* "git log -L..." now takes advantage of the "which paths are touched
by this commit?" info stored in the commit-graph system.
* As FreeBSD is not the only platform whose regexp library reports
a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
automatically and skip the affected tests.
* "git bugreport" learns to report what shell is in use.
* Support for GIT_CURL_VERBOSE has been rewritten in terms of
GIT_TRACE_CURL.
* Preliminary clean-ups around refs API, plus file format
specification documentation for the reftable backend.
* Workaround breakage in MSVC build, where "curl-config --cflags"
gives settings appropriate for GCC build.
* Code clean-up of "git clean" resulted in a fix of recent
performance regression.
* Code clean-up in the codepath that serves "git fetch" continues.
* "git merge-base --is-ancestor" is taught to take advantage of the
commit graph.
* Rewrite of parts of the scripted "git submodule" Porcelain command
continues; this time it is "git submodule set-branch" subcommand's
turn.
* The "fetch/clone" protocol has been updated to allow the server to
instruct the clients to grab pre-packaged packfile(s) in addition
to the packed object data coming over the wire.
* A misdesigned strbuf_write_fd() function has been retired.
* SHA-256 migration work continues, including CVS/SVN interface.
* A few fields in "struct commit" that do not have to always be
present have been moved to commit slabs.
* API cleanup for get_worktrees()
* By renumbering object flag bits, "struct object" managed to lose
bloated inter-field padding.
* The name of the primary branch in existing repositories, and the
default name used for the first branch in newly created
repositories, is made configurable, so that we can eventually wean
ourselves off of the hardcoded 'master'.
* The effort to avoid using test_must_fail on non-git command continues.
Fixes since v2.27
-----------------
* The "--prepare-p4-only" option of "git p4" is supposed to stop
after replaying one changeset, but kept going (by mistake?)
* The error message from "git checkout -b foo -t bar baz" was
confusing.
* Some repositories in the wild have commits that record nonsense
committer timezone (e.g. rails.git); "git fast-import" learned an
option to pass these nonsense timestamps intact to allow recreating
existing repositories as-is.
(merge d42a2fb72f en/fast-import-looser-date later to maint).
* The command line completion script (in contrib/) tried to complete
"git stash -p" as if it were "git stash push -p", but it was too
aggressive and also affected "git stash show -p", which has been
corrected.
(merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
* On-the-wire protocol v2 easily falls into a deadlock between the
remote-curl helper and the fetch-pack process when the server side
prematurely throws an error and disconnects. The communication has
been updated to make it more robust.
* "git checkout -p" did not handle a newly added path at all.
(merge 2c8bd8471a js/checkout-p-new-file later to maint).
* The code to parse "git bisect start" command line was lax in
validating the arguments.
(merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
* Reduce memory usage during "diff --quiet" in a worktree with too
many stat-unmatched paths.
(merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
* The reflog entries for "git clone" and "git fetch" did not
anonymize the URL they operated on.
(merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
* The behaviour of "sparse-checkout" in the state "git clone
--no-checkout" left was changed accidentally in 2.27, which has
been corrected.
* Use of negative pathspec, while collecting paths including
untracked ones in the working tree, was broken.
* The same worktree directory must be registered only once, but
"git worktree move" allowed this invariant to be violated, which
has been corrected.
(merge 810382ed37 es/worktree-duplicate-paths later to maint).
* The effect of sparse checkout settings on submodules is documented.
(merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
* Code clean-up around "git branch" with a minor bugfix.
(merge dc44639904 dl/branch-cleanup later to maint).
* A branch name used in a test has been clarified to match what is
going on.
(merge 08dc26061f pb/t4014-unslave later to maint).
* An in-code comment in "git diff" has been updated.
(merge c592fd4c83 dl/diff-usage-comment-update later to maint).
* The documentation and some tests have been adjusted for the recent
renaming of "pu" branch to "seen".
(merge 6dca5dbf93 js/pu-to-seen later to maint).
* The code to push changes over "dumb" HTTP had a bad interaction
with the commit reachability code due to incorrect allocation of
object flag bits, which has been corrected.
(merge 64472d15e9 bc/http-push-flagsfix later to maint).
* "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
header with the value given from the command line, and let it be
overridden by the value on In-Reply-To: header in the messages
being sent out (if exists).
(merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
* "git log -Lx,y:path --before=date" lost track of where the range
should be because it didn't take the changes made by the youngest
commits that are omitted from the output into account.
* When "fetch.writeCommitGraph" configuration is set in a shallow
repository and a fetch moves the shallow boundary, we wrote out
broken commit-graph files that do not match the reality, which has
been corrected.
* "git checkout" failed to catch an error from fstat() after updating
a path in the working tree.
(merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
(merge d63ae31962 cb/t5608-cleanup later to maint).
(merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
(merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
(merge b75a219904 es/advertise-contribution-doc later to maint).
(merge 0c9a4f638a rs/pull-leakfix later to maint).
(merge d546fe2874 rs/commit-reach-leakfix later to maint).
(merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
(merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
(merge 0172f7834a cc/cat-file-usage-update later to maint).
(merge 81de0c01cf ma/rebase-doc-typofix later to maint).
----------------------------------------------------------------
Changes since v2.27.0 are as follows:
Abhishek Kumar (4):
object: drop parsed_object_pool->commit_count
commit-graph: introduce commit_graph_data_slab
commit: move members graph_pos, generation to a slab
commit-graph: minimize commit_graph_data_slab access
Andrew Ng (1):
merge: optimization to skip evaluate_result for single strategy
Ben Keene (1):
git-p4.py: fix --prepare-p4-only error with multiple commits
Carlo Marcelo Arenas Belón (5):
t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
t4210: detect REG_ILLSEQ dynamically and skip affected tests
bisect--helper: avoid segfault with bad syntax in `start --term-*`
t5608: avoid say() and use "skip_all" instead for consistency
commit-reach: avoid is_descendant_of() shim
Chris Torek (3):
t/t3430: avoid undefined git diff behavior
git diff: improve range handling
Documentation: usage for diff combined commits
Christian Couder (40):
upload-pack: remove unused 'wants' from upload_pack_data
upload-pack: move {want,have}_obj to upload_pack_data
upload-pack: move 'struct upload_pack_data' around
upload-pack: use 'struct upload_pack_data' in upload_pack()
upload-pack: pass upload_pack_data to get_common_commits()
upload-pack: pass upload_pack_data to receive_needs()
upload-pack: use upload_pack_data writer in receive_needs()
upload-pack: move symref to upload_pack_data
upload-pack: pass upload_pack_data to send_ref()
upload-pack: pass upload_pack_data to check_non_tip()
upload-pack: remove static variable 'stateless_rpc'
upload-pack: pass upload_pack_data to create_pack_file()
upload-pack: use upload_pack_data fields in receive_needs()
upload-pack: annotate upload_pack_data fields
upload-pack: move static vars to upload_pack_data
upload-pack: move use_sideband to upload_pack_data
upload-pack: move filter_capability_requested to upload_pack_data
upload-pack: move multi_ack to upload_pack_data
upload-pack: change multi_ack to an enum
upload-pack: pass upload_pack_data to upload_pack_config()
upload-pack: move keepalive to upload_pack_data
upload-pack: move allow_filter to upload_pack_data
upload-pack: move allow_ref_in_want to upload_pack_data
upload-pack: move allow_sideband_all to upload_pack_data
upload-pack: move pack_objects_hook to upload_pack_data
upload-pack: pass upload_pack_data to send_shallow_list()
upload-pack: pass upload_pack_data to deepen()
upload-pack: pass upload_pack_data to deepen_by_rev_list()
upload-pack: pass upload_pack_data to send_unshallow()
upload-pack: move shallow_nr to upload_pack_data
upload-pack: move extra_edge_obj to upload_pack_data
upload-pack: move allow_unadvertised_object_request to upload_pack_data
upload-pack: change allow_unadvertised_object_request to an enum
upload-pack: pass upload_pack_data to process_haves()
upload-pack: pass upload_pack_data to send_acks()
upload-pack: pass upload_pack_data to ok_to_give_up()
upload-pack: pass upload_pack_data to got_oid()
upload-pack: move oldest_have to upload_pack_data
upload-pack: refactor common code into do_got_oid()
cat-file: add missing [=<format>] to usage/synopsis
Denton Liu (18):
lib-submodule-update: add space after function name
lib-submodule-update: consolidate --recurse-submodules
remote-curl: fix typo
remote-curl: remove label indentation
transport: extract common fetch_pack() call
pkt-line: extern packet_length()
remote-curl: error on incomplete packet
pkt-line: define PACKET_READ_RESPONSE_END
stateless-connect: send response end packet
t/README: avoid poor-man's small caps GIT
CodingGuidelines: specify Python 2.7 is the oldest version
lib-submodule-update: prepend "git" to $command
t3200: rename "expected" to "expect"
t3200: test for specific errors
branch: don't mix --edit-description
builtin/diff: update usage comment
builtin/diff: fix botched update of usage comment
lib-submodule-update: pass 'test_must_fail' as an argument
Derrick Stolee (3):
line-log: integrate with changed-path Bloom filters
commit-reach: create repo_is_descendant_of()
commit-reach: use fast logic in repo_in_merge_base
Don Goodman-Wilson (1):
init: allow setting the default for the initial branch name via the config
Elijah Newren (11):
fast-import: add new --date-format=raw-permissive format
sparse-checkout: avoid staging deletions of all files
dir: fix treatment of negated pathspecs
git-sparse-checkout: clarify interactions with submodules
dir: fix a few confusing comments
dir, clean: avoid disallowed behavior
clean: consolidate handling of ignored parameters
clean: optimize and document cases where we recurse into subdirectories
wt-status: show sparse checkout status as well
git-prompt: document how in-progress operations affect the prompt
git-prompt: include sparsity state as well
Emily Shaffer (3):
help: add shell-path to --build-options
bugreport: include user interactive shell
docs: mention MyFirstContribution in more places
Eric Sunshine (10):
worktree: factor out repeated string literal
worktree: give "should be pruned?" function more meaningful name
worktree: make high-level pruning re-usable
worktree: prune duplicate entries referencing same worktree path
worktree: prune linked worktree referencing main worktree path
worktree: generalize candidate worktree path validation
worktree: make "move" refuse to move atop missing registered worktree
worktree: drop get_worktrees() special-purpose sorting option
worktree: drop get_worktrees() unused 'flags' argument
worktree: avoid dead-code in conditional
Han-Wen Nienhuys (5):
refs.h: clarify reflog iteration order
t: use update-ref and show-ref to reading/writing refs
refs: improve documentation for ref iterator
reftable: clarify how empty tables should be written
reftable: define version 2 of the spec to accomodate SHA256
Jacob Keller (16):
completion: add test showing subpar git switch completion
completion: add tests showing subpar DWIM logic for switch/checkout
completion: add tests showing subar checkout --detach logic
completion: add tests showing subpar switch/checkout --track logic
completion: add tests showing subpar -c/-C startpoint completion
completion: add tests showing subpar -c/C argument completion
completion: add tests showing subpar switch/checkout --orphan logic
completion: replace overloaded track term for __git_complete_refs
completion: extract function __git_dwim_remote_heads
completion: perform DWIM logic directly in __git_complete_refs
completion: improve handling of DWIM mode for switch/checkout
completion: improve completion for git switch with no options
completion: improve handling of --detach in checkout
completion: improve handling of --track in switch/checkout
completion: improve handling of -c/-C and -b/-B in switch/checkout
completion: improve handling of --orphan option of switch/checkout
Jeff King (14):
diff: discard blob data from stat-unmatched pairs
upload-pack: actually use some upload_pack_data bitfields
t9351: derive anonymized tree checks from original repo
fast-export: use xmemdupz() for anonymizing oids
fast-export: store anonymized oids as hex strings
fast-export: tighten anonymize_mem() interface to handle only strings
fast-export: stop storing lengths in anonymized hashmaps
fast-export: use a flex array to store anonymized entries
fast-export: move global "idents" anonymize hashmap into function
fast-export: add a "data" callback parameter to anonymize_str()
fast-export: allow seeding the anonymized mapping
fast-export: anonymize "master" refname
fast-export: use local array to store anonymized oid
diff: check for merge bases before assigning sym->base
Jiuyang Xie (1):
doc: fix wrong 4-byte length of pkt-line message
Johannes Schindelin (16):
checkout -p: handle new files correctly
clone/fetch: anonymize URLs in the reflog
msvc: fix "REG_STARTEND" issue
fmt-merge-msg: stop treating `master` specially
send-pack/transport-helper: avoid mentioning a particular branch
submodule: fall back to remote's HEAD for missing remote.<name>.branch
docs: add missing diamond brackets
init: allow specifying the initial branch name for the new repository
clone: use configured default branch name when appropriate
remote: use the configured default branch name when appropriate
testsvn: respect `init.defaultBranch`
docs: adjust for the recent rename of `pu` to `seen`
docs: adjust the technical overview for the rename `pu` -> `seen`
tests: reference `seen` wherever `pu` was referenced
diff-files --raw: show correct post-image of intent-to-add files
difftool -d: ensure that intent-to-add files are handled correctly
John Lin (1):
bash-completion: add git-prune into bash completion
Jonathan Nieder (3):
config: let feature.experimental imply protocol.version=2
reftable: file format documentation
experimental: default to fetch.writeCommitGraph=false
Jonathan Tan (12):
t5551: test that GIT_TRACE_CURL redacts password
http, imap-send: stop using CURLOPT_VERBOSE
http: redact all cookies, teach GIT_TRACE_REDACT=0
http: use --stdin when indexing dumb HTTP pack
http: refactor finish_http_pack_request()
http-fetch: refactor into function
http-fetch: support fetching packfiles by URL
Documentation: order protocol v2 sections
Documentation: add Packfile URIs design doc
upload-pack: refactor reading of pack-objects out
fetch-pack: support more than one pack lockfile
upload-pack: send part of packfile response as uri
Josh Steadmon (1):
fuzz-commit-graph: properly free graph struct
Junio C Hamano (8):
Start the post 2.27 cycle
The second batch
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
Git 2.28-rc0
Laurent Arnoud (1):
diff: add config option relative
Luc Van Oostenryck (1):
sparse: allow '{ 0 }' to be used without warnings
Marco Trevisan (Treviño) (1):
completion: use native ZSH array pattern matching
Martin Ågren (1):
git-rebase.txt: fix description list separator
Matheus Tavares (1):
entry: check for fstat() errors after checkout
Miroslav Koškár (1):
doc: fix author vs. committer copy/paste error
Paolo Bonzini (1):
t4014: do not use "slave branch" nomenclature
Patrick Steinhardt (1):
refs: implement reference transaction hook
Rafael Aquini (1):
send-email: restore --in-reply-to superseding behavior
Ramsay Jones (1):
upload-pack: fix a sparse '0 as NULL pointer' warning
Randall S. Becker (2):
bugreport.c: replace strbuf_write_fd with write_in_full
strbuf: remove unreferenced strbuf_write_fd method.
René Scharfe (10):
fsck: fix a typo in a comment
t1450: increase test coverage of in-tree d/f detection
t1450: demonstrate undetected in-tree d/f conflict
fsck: detect more in-tree d/f conflicts
checkout: add tests for -b and --track
checkout: improve error messages for -b with extra argument
commit-reach: plug minor memory leak after using is_descendant_of()
pull: plug minor memory leak after using is_descendant_of()
revision: reallocate TOPO_WALK object flags
revision: disable min_age optimization with line-log
SZEDER Gábor (4):
line-log: remove unused fields from 'struct line_log_data'
t4211-line-log: add tests for parent oids
line-log: more responsive, incremental 'git log -L'
line-log: try to use generation number-based topo-ordering
Shourya Shukla (1):
submodule: port subcommand 'set-branch' from shell to C
Srinidhi Kaushik (1):
diff-files: treat "i-t-a" files as "not-in-index"
Taylor Blau (11):
commit-graph.c: extract 'refs_cb_data'
commit-graph.c: show progress of finding reachable commits
commit-graph.c: peel refs in 'add_ref_to_set'
builtin/commit-graph.c: extract 'read_one_commit()'
builtin/commit-graph.c: dereference tags in builtin
commit-graph.c: simplify 'fill_oids_from_commits'
t5318: reorder test below 'graph_read_expect'
commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
t5318: use 'test_must_be_empty'
t5318: test that '--stdin-commits' respects '--[no-]progress'
commit.c: don't persist substituted parents when unshallowing
Ville Skyttä (2):
completion: don't override given stash subcommand with -p
completion: nounset mode fixes
Xin Li (4):
repository: add a helper function to perform repository format upgrade
fetch: allow adding a filter after initial clone
sparse-checkout: upgrade repository to version 1 when enabling extension
check_repository_format_gently(): refuse extensions for old repositories
brian m. carlson (61):
t1050: match object ID paths in a hash-insensitive way
Documentation: document v1 protocol object-format capability
builtin/checkout: simplify metadata initialization
t2060: add a test for switch with --orphan and --discard-changes
connect: have ref processing code take struct packet_reader
wrapper: add function to compare strings with different NUL termination
remote: advertise the object-format capability on the server side
connect: add function to parse multiple v1 capability values
connect: add function to fetch value of a v2 server capability
pkt-line: add a member for hash algorithm
transport: add a hash algorithm member
connect: add function to detect supported v1 hash functions
send-pack: detect when the server doesn't support our hash
connect: make parse_feature_value extern
fetch-pack: detect when the server doesn't support our hash
connect: detect algorithm when fetching refs
builtin/receive-pack: detect when the server doesn't support our hash
docs: update remote helper docs for object-format extensions
transport-helper: implement object-format extensions
remote-curl: implement object-format extensions
builtin/clone: initialize hash algorithm properly
t5562: pass object-format in synthesized test data
fetch-pack: parse and advertise the object-format capability
setup: set the_repository's hash algo when checking format
t3200: mark assertion with SHA1 prerequisite
packfile: compute and use the index CRC offset
t5302: modernize test formatting
builtin/show-index: provide options to determine hash algo
t1302: expect repo format version 1 for SHA-256
Documentation/technical: document object-format for protocol v2
connect: pass full packet reader when parsing v2 refs
connect: parse v2 refs with correct hash algorithm
serve: advertise object-format capability for protocol v2
t5500: make hash independent
builtin/ls-remote: initialize repository based on fetch
remote-curl: detect algorithm for dumb HTTP by size
builtin/index-pack: add option to specify hash algorithm
t1050: pass algorithm to index-pack when outside repo
remote-curl: avoid truncating refs with ls-remote
t/helper: initialize the repository for test-sha1-array
t5702: offer an object-format capability in the test
t5703: use object-format serve option
t5704: send object-format capability with SHA-256
t5300: pass --object-format to git index-pack
bundle: detect hash algorithm when reading refs
remote-testgit: adapt for object-format
t9109: make test hash independent
t9168: make test hash independent
t9108: make test hash independent
t9100: make test work with SHA-256
t9104: make hash size independent
t9101: make hash independent
t/lib-git-svn: make hash size independent
perl: create and switch variables for hash constants
perl: make Git::IndexInfo work with SHA-256
perl: make SVN code hash independent
git-svn: set the OID length based on hash algorithm
git-cvsserver: port to SHA-256
git-cvsimport: port to SHA-256
git-cvsexportcommit: port to SHA-256
http-push: ensure unforced pushes fail when data would be lost
Đoàn Trần Công Danh (1):
contrib: subtree: adjust test to change in fmt-merge-msg
^ permalink raw reply [relevance 2%]
* [PATCH 0/3] update delete_ref(), update_ref() and ref_exists() to take a struct repository
@ 2020-06-19 15:21 3% Phillip Wood via GitGitGadget
0 siblings, 0 replies; 162+ results
From: Phillip Wood via GitGitGadget @ 2020-06-19 15:21 UTC (permalink / raw)
To: git; +Cc: Han-Wen Nienhuys, Phillip Wood
The code handling pseudo refs such as BISECT_HEAD or CHERRY_PICK_HEAD
assumes that they are files and uses unlink() and file_exists() on the
corresponding paths rather than using the ref api. In repositories using
reftable to store references this will not work. This patch series is a
preparatory step that updates some reference functions to take a struct
repository in preparation for converting code that handles pseudo refs to
the ref api. The conversion will be handled by a separate series
These patches could each be split in two (thereby making the individual
patches smaller) by changing the callers to pass the_repository first and
then changing the call chain to pass a struct repository around if desired.
This series is based on master - 101b3204f3 ("The third batch", 2020-06-17).
When merging into pu there are non-trivial conflicts with
jx/proc-receive-hook, dr/push-remoteref-fix and mr/bisect-in-c-2. I have
prepared a conflict resolution [1] I'm happy to rebase on top of a merge of
master and those three branches if that is helpful.
[1] tag merge-repo-refs-into-pu/v1 at https://github.com/phillipwood/git.git
Phillip Wood (3):
refs: update delete_ref() to take a struct repository
refs: update update_ref() to take a struct repository
refs: update ref_exists() to take a struct repository
bisect.c | 18 ++++++----
branch.c | 14 ++++----
branch.h | 6 ++--
builtin/am.c | 19 +++++-----
builtin/bisect--helper.c | 8 ++---
builtin/branch.c | 23 ++++++------
builtin/checkout.c | 17 +++++----
builtin/clone.c | 16 ++++-----
builtin/commit.c | 4 +--
builtin/for-each-ref.c | 4 +--
builtin/log.c | 6 ++--
builtin/ls-remote.c | 2 +-
builtin/merge.c | 12 +++----
builtin/notes.c | 15 ++++----
builtin/pull.c | 5 +--
builtin/rebase.c | 10 +++---
builtin/receive-pack.c | 2 +-
builtin/remote.c | 11 +++---
builtin/replace.c | 2 +-
builtin/reset.c | 10 +++---
builtin/revert.c | 2 +-
builtin/send-pack.c | 3 +-
builtin/stash.c | 8 ++---
builtin/symbolic-ref.c | 3 +-
builtin/tag.c | 8 ++---
builtin/update-ref.c | 5 +--
builtin/verify-tag.c | 2 +-
builtin/worktree.c | 8 ++---
diff.c | 2 +-
fast-import.c | 2 +-
notes-cache.c | 4 +--
notes-cache.h | 2 +-
notes-utils.c | 2 +-
ref-filter.c | 76 +++++++++++++++++++++++++---------------
ref-filter.h | 11 +++---
refs.c | 14 ++++----
refs.h | 6 ++--
remote.c | 30 +++++++++-------
remote.h | 13 ++++---
reset.c | 8 ++---
sequencer.c | 41 +++++++++++-----------
sequencer.h | 2 +-
sha1-name.c | 5 +--
transport-helper.c | 32 +++++++++--------
transport-internal.h | 4 ++-
transport.c | 15 ++++----
transport.h | 3 +-
wt-status.c | 41 ++++++++++++----------
wt-status.h | 2 +-
49 files changed, 314 insertions(+), 244 deletions(-)
base-commit: 101b3204f37606972b40fc17dec84560c22f69f6
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-665%2Fphillipwood%2Fwip%2Frepo-refs-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-665/phillipwood/wip/repo-refs-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/665
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jun 2020, #03; Wed, 17)
@ 2020-06-18 6:35 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-06-18 6:35 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics are now in 'master'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* dl/python-2.7-is-the-floor-version (2020-06-08) 1 commit
(merged to 'next' on 2020-06-10 at ad3269ff40)
+ CodingGuidelines: specify Python 2.7 is the oldest version
Document that we do not support Python 2.6 or older.
* dl/t-readme-spell-git-correctly (2020-06-08) 1 commit
(merged to 'next' on 2020-06-10 at 60144a59ed)
+ t/README: avoid poor-man's small caps GIT
Doc updates.
* en/do-match-pathspec-fix (2020-06-05) 1 commit
(merged to 'next' on 2020-06-10 at 2e63c8c0fc)
+ dir: fix treatment of negated pathspecs
Use of negative pathspec, while collecting paths including
untracked ones in the working tree, was broken.
* en/sparse-checkout (2020-06-05) 1 commit
(merged to 'next' on 2020-06-10 at 697a10b031)
+ sparse-checkout: avoid staging deletions of all files
The behaviour of "sparse-checkout" in the state "git clone
--no-checkout" left was changed accidentally in 2.27, which has
been corrected.
* es/advertise-contribution-doc (2020-06-08) 1 commit
(merged to 'next' on 2020-06-10 at c72c7da667)
+ docs: mention MyFirstContribution in more places
Doc updates.
* hn/refs-cleanup (2020-06-09) 6 commits
(merged to 'next' on 2020-06-09 at abb59f83a2)
+ reftable: define version 2 of the spec to accomodate SHA256
+ reftable: clarify how empty tables should be written
+ reftable: file format documentation
+ refs: improve documentation for ref iterator
+ t: use update-ref and show-ref to reading/writing refs
+ refs.h: clarify reflog iteration order
(this branch is used by hn/reftable.)
Preliminary clean-ups around refs API, plus file format
specification documentation for the reftable backend.
* jk/diff-memuse-optim-with-stat-unmatch (2020-06-02) 1 commit
(merged to 'next' on 2020-06-10 at 4cea3bfaac)
+ diff: discard blob data from stat-unmatched pairs
Reduce memory usage during "diff --quiet" in a worktree with too
many stat-unmatched paths.
* js/fuzz-commit-graph-leakfix (2020-06-08) 1 commit
(merged to 'next' on 2020-06-10 at 92944ed7f6)
+ fuzz-commit-graph: properly free graph struct
Leakfix.
* js/msvc-build-fix (2020-06-04) 1 commit
(merged to 'next' on 2020-06-10 at 167a629359)
+ msvc: fix "REG_STARTEND" issue
Workaround breakage in MSVC build, where "curl-config --cflags"
gives settings appropriate for GCC build.
* js/reflog-anonymize-for-clone-and-fetch (2020-06-04) 1 commit
(merged to 'next' on 2020-06-10 at 2901ff943e)
+ clone/fetch: anonymize URLs in the reflog
The reflog entries for "git clone" and "git fetch" did not
anonymize the URL they operated on.
* tb/t5318-cleanup (2020-06-04) 2 commits
(merged to 'next' on 2020-06-10 at 5a72620cbe)
+ t5318: test that '--stdin-commits' respects '--[no-]progress'
+ t5318: use 'test_must_be_empty'
Code cleanup.
--------------------------------------------------
[New Topics]
* cc/upload-pack-data-3 (2020-06-11) 14 commits
(merged to 'next' on 2020-06-17 at 393eff577a)
+ upload-pack: refactor common code into do_got_oid()
+ upload-pack: move oldest_have to upload_pack_data
+ upload-pack: pass upload_pack_data to got_oid()
+ upload-pack: pass upload_pack_data to ok_to_give_up()
+ upload-pack: pass upload_pack_data to send_acks()
+ upload-pack: pass upload_pack_data to process_haves()
+ upload-pack: change allow_unadvertised_object_request to an enum
+ upload-pack: move allow_unadvertised_object_request to upload_pack_data
+ upload-pack: move extra_edge_obj to upload_pack_data
+ upload-pack: move shallow_nr to upload_pack_data
+ upload-pack: pass upload_pack_data to send_unshallow()
+ upload-pack: pass upload_pack_data to deepen_by_rev_list()
+ upload-pack: pass upload_pack_data to deepen()
+ upload-pack: pass upload_pack_data to send_shallow_list()
(this branch uses cc/upload-pack-data-2)
Code clean-up in the codepath that serves "git fetch" continues.
Will merge to 'master'.
* ct/diff-with-merge-base-clarification (2020-06-12) 3 commits
(merged to 'next' on 2020-06-17 at e0b54a001c)
+ Documentation: usage for diff combined commits
+ git diff: improve range handling
+ t/t3430: avoid undefined git diff behavior
"git diff" used to take arguments in random and nonsense range
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
which has been cleaned up.
Will merge to 'master'.
* js/default-branch-name (2020-06-10) 9 commits
- Document how the default branch name can be overridden
- fast-export: respect the possibly-overridden default branch name
- fmt-merge-msg: learn about the possibly-configured default branch name
- clone: learn about the possibly-configured default branch name
- submodule: use the (possibly overridden) default branch name
- testsvn: respect `core.defaultBranchName`
- send-pack/transport-helper: respect `core.defaultBranchName`
- remote: respect `core.defaultBranchName`
- init: allow overriding the default branch name for new repositories
The name of the primary branch in existing repositories, and the
default name used for the first branch in newly created
repositories, is made configurable, so that we can eventually wean
ourselves off of the hardcoded 'master'.
Expecting a reroll.
* jt/cdn-offload (2020-06-17) 10 commits
- upload-pack: fix a sparse '0 as NULL pointer' warning
- upload-pack: send part of packfile response as uri
- fetch-pack: support more than one pack lockfile
- upload-pack: refactor reading of pack-objects out
- Documentation: add Packfile URIs design doc
- Documentation: order protocol v2 sections
- http-fetch: support fetching packfiles by URL
- http-fetch: refactor into function
- http: refactor finish_http_pack_request()
- http: use --stdin when indexing dumb HTTP pack
(this branch uses cc/upload-pack-data-2)
The "fetch/clone" protocol has been updated to allow the server to
instruct the clients to grab pre-packaged packfile(s) in addition
to the packed object data coming over the wire.
Will merge to 'next'.
* ss/cmake-build (2020-06-12) 8 commits
- ci: modification of main.yml to use cmake for vs-build job
- cmake: support for building git on windows with msvc and clang.
- cmake: support for building git on windows with mingw
- cmake: support for testing git when building out of the source tree
- cmake: support for testing git with ctest
- cmake: installation support for git
- cmake: generate the shell/perl/python scripts and templates, translations
- Introduce CMake support for configuring Git
CMake support to build with MSVC for Windows bypassing the Makefile.
Almost there.
* ak/commit-graph-to-slab (2020-06-17) 4 commits
- commit-graph: minimize commit_graph_data_slab access
- commit: move members graph_pos, generation to a slab
- commit-graph: introduce commit_graph_data_slab
- object: drop parsed_object_pool->commit_count
A few fields in "struct commit" that do not have to always be
present have been moved to commit slabs.
* en/clean-cleanups (2020-06-12) 4 commits
(merged to 'next' on 2020-06-17 at 2c4ec990a6)
+ clean: optimize and document cases where we recurse into subdirectories
+ clean: consolidate handling of ignored parameters
+ dir, clean: avoid disallowed behavior
+ dir: fix a few confusing comments
"git clean" code clean-up that resulted in a fix of recent
performance regression.
Will merge to 'master'.
* dl/branch-cleanup (2020-06-17) 3 commits
- branch: don't mix --edit-description
- t3200: test for specific errors
- t3200: rename "expected" to "expect"
Code clean-up around "git branch" with a minor bugfix.
Will merge to 'next'.
* ds/merge-base-is-ancestor-optim (2020-06-17) 2 commits
- commit-reach: use fast logic in repo_in_merge_base
- commit-reach: create repo_is_descendant_of()
"git merge-base --is-ancestor" is taught to take advantage of the
commit graph.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* dr/push-remoteref-fix (2020-04-23) 1 commit
- remote.c: fix handling of %(push:remoteref)
The "%(push:remoteref)" placeholder in the "--format=" argument of
"git format-patch" (and friends) only showed what got explicitly
configured, not what ref at the receiving end would be updated when
"git push" was used, as it ignored the default behaviour (e.g. update
the same ref as the source).
Expecting a reroll.
cf. <20200416152145.wp2zeibxmuyas6y6@feanor>
* mr/bisect-in-c-2 (2020-04-23) 12 commits
- bisect--helper: retire `--bisect-autostart` subcommand
- bisect--helper: retire `--write-terms` subcommand
- bisect--helper: retire `--check-expected-revs` subcommand
- bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
- bisect--helper: retire `--next-all` subcommand
- bisect--helper: retire `--bisect-clean-state` subcommand
- bisect--helper: finish porting `bisect_start()` to C
- bisect--helper: reimplement `bisect_next` and `bisect_auto_next` shell functions in C
- bisect--helper: reimplement `bisect_autostart` shell function in C
- bisect--helper: introduce new `write_in_file()` function
- bisect--helper: use '-res' in 'cmd_bisect__helper' return
- bisect--helper: fix `cmd_*()` function switch default return
Rewrite of the remainder of "git bisect" script in C continues.
Expecting a response to reviews.
cf. <nycvar.QRO.7.76.6.2005230007260.56@tvgsbejvaqbjf.bet>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
--------------------------------------------------
[Cooking]
* dl/test-must-fail-fixes-5 (2020-06-12) 4 commits
- lib-submodule-update: use callbacks in test_submodule_switch_common()
- lib-submodule-update: prepend "git" to $command
- lib-submodule-update: consolidate --recurse-submodules
- lib-submodule-update: add space after function name
The effort to avoid using test_must_fail on non-git command continues.
Ready???
* jt/redact-all-cookies (2020-06-05) 1 commit
(merged to 'next' on 2020-06-12 at 912c337d63)
+ http: redact all cookies, teach GIT_TRACE_REDACT=0
The interface to redact sensitive information in the trace output
has been simplified.
Will merge to 'master'.
* es/worktree-duplicate-paths (2020-06-10) 7 commits
(merged to 'next' on 2020-06-12 at 5f7c822a9d)
+ worktree: make "move" refuse to move atop missing registered worktree
+ worktree: generalize candidate worktree path validation
+ worktree: prune linked worktree referencing main worktree path
+ worktree: prune duplicate entries referencing same worktree path
+ worktree: make high-level pruning re-usable
+ worktree: give "should be pruned?" function more meaningful name
+ worktree: factor out repeated string literal
The same worktree directory must be registered only once, but
"git worktree move" allowed this invariant to be violated, which
has been corrected.
Will merge to 'master'.
* sg/commit-graph-cleanups (2020-06-17) 18 commits
- commit-graph: persist existence of changed-paths
- commit-graph: change test to die on parse, not load
- bloom: enforce a minimum size of 8 bytes
- commit-graph: check all leading directories in changed path Bloom filters
- commit-graph: check chunk sizes after writing
- commit-graph: simplify chunk writes into loop
- commit-graph: unify the signatures of all write_graph_chunk_*() functions
- commit-graph: place bloom_settings in context
- commit-graph: simplify write_commit_graph_file() #2
- commit-graph: simplify write_commit_graph_file() #1
- commit-graph: simplify parse_commit_graph() #2
- commit-graph: simplify parse_commit_graph() #1
- commit-graph: clean up #includes
- diff.h: drop diff_tree_oid() & friends' return value
- commit-slab: add a function to deep free entries on the slab
- commit-graph-format.txt: all multi-byte numbers are in network byte order
- commit-graph: fix parsing the Chunk Lookup table
- tree-walk.c: don't match submodule entries for 'submod/anything'
Code cleanup.
* cc/upload-pack-data-2 (2020-06-04) 13 commits
(merged to 'next' on 2020-06-12 at ee63b70dc2)
+ upload-pack: move pack_objects_hook to upload_pack_data
+ upload-pack: move allow_sideband_all to upload_pack_data
+ upload-pack: move allow_ref_in_want to upload_pack_data
+ upload-pack: move allow_filter to upload_pack_data
+ upload-pack: move keepalive to upload_pack_data
+ upload-pack: pass upload_pack_data to upload_pack_config()
+ upload-pack: change multi_ack to an enum
+ upload-pack: move multi_ack to upload_pack_data
+ upload-pack: move filter_capability_requested to upload_pack_data
+ upload-pack: move use_sideband to upload_pack_data
+ upload-pack: move static vars to upload_pack_data
+ upload-pack: annotate upload_pack_data fields
+ upload-pack: actually use some upload_pack_data bitfields
(this branch is used by cc/upload-pack-data-3 and jt/cdn-offload.)
Further code clean-up.
Will merge to 'master'.
* xl/upgrade-repo-format (2020-06-05) 4 commits
- check_repository_format_gently(): refuse extensions for old repositories
- sparse-checkout: upgrade repository to version 1 when enabling extension
- fetch: allow adding a filter after initial clone
- repository: add a helper function to perform repository format upgrade
Allow runtime upgrade of the repository format version, which needs
to be done carefully.
There is a rather unpleasant backward compatibility worry with the
last step of this series, but it is the right thing to do in the
longer term.
Will merge to 'next'.
* jk/complete-git-switch (2020-05-28) 16 commits
(merged to 'next' on 2020-06-17 at 5b31140c0a)
+ completion: improve handling of --orphan option of switch/checkout
+ completion: improve handling of -c/-C and -b/-B in switch/checkout
+ completion: improve handling of --track in switch/checkout
+ completion: improve handling of --detach in checkout
+ completion: improve completion for git switch with no options
+ completion: improve handling of DWIM mode for switch/checkout
+ completion: perform DWIM logic directly in __git_complete_refs
+ completion: extract function __git_dwim_remote_heads
+ completion: replace overloaded track term for __git_complete_refs
+ completion: add tests showing subpar switch/checkout --orphan logic
+ completion: add tests showing subpar -c/C argument completion
+ completion: add tests showing subpar -c/-C startpoint completion
+ completion: add tests showing subpar switch/checkout --track logic
+ completion: add tests showing subar checkout --detach logic
+ completion: add tests showing subpar DWIM logic for switch/checkout
+ completion: add test showing subpar git switch completion
The command line completion (in contrib/) learned to complete
options that the "git switch" command takes.
Will merge to 'master'.
* en/sparse-with-submodule-doc (2020-06-12) 1 commit
(merged to 'next' on 2020-06-17 at 3521be3834)
+ git-sparse-checkout: clarify interactions with submodules
The effect of sparse checkout settings on submodules is documented.
Will merge to 'master'.
* ss/submodule-set-branch-in-c (2020-06-02) 1 commit
- submodule: port subcommand 'set-branch' from shell to C
Rewrite of parts of the scripted "git submodule" Porcelain command
continues; this time it is "git submodule set-branch" subcommand's
turn.
Will merge to 'next'.
* es/config-hooks (2020-05-21) 4 commits
- hook: add --porcelain to list command
- hook: add list command
- hook: scaffolding for git-hook subcommand
- doc: propose hooks managed by the config
The "hooks defined in config" topic.
Ready???
* pw/rebase-i-more-options (2020-05-27) 5 commits
- rebase: add --reset-author-date
- rebase -i: support --ignore-date
- sequencer: rename amend_author to author_to_free
- rebase -i: support --committer-date-is-author-date
- rebase -i: add --ignore-whitespace flag
"git rebase -i" learns a bit more options.
Not quite.
cf. <nycvar.QRO.7.76.6.2005290437350.56@tvgsbejvaqbjf.bet>
* mt/grep-sparse-checkout (2020-06-12) 6 commits
- config: add setting to ignore sparsity patterns in some cmds
- grep: honor sparse checkout patterns
- config: correctly read worktree configs in submodules
- t/helper/test-config: facilitate addition of new cli options
- t/helper/test-config: return exit codes consistently
- doc: grep: unify info on configuration variables
"git grep" has been tweaked to be limited to the sparse checkout
paths.
Review needed on 4/6; otherwise looking sane.
cf. <CABPp-BGdEyEeajYZj_rdxp=MyEQdszuyjVTax=hhYj3fOtRQUQ@mail.gmail.com>
* bc/sha-256-part-2 (2020-05-27) 44 commits
- remote-testgit: adapt for object-format
- bundle: detect hash algorithm when reading refs
- t5300: pass --object-format to git index-pack
- t5704: send object-format capability with SHA-256
- t5703: use object-format serve option
- t5702: offer an object-format capability in the test
- t/helper: initialize the repository for test-sha1-array
- remote-curl: avoid truncating refs with ls-remote
- t1050: pass algorithm to index-pack when outside repo
- builtin/index-pack: add option to specify hash algorithm
- remote-curl: detect algorithm for dumb HTTP by size
- builtin/ls-remote: initialize repository based on fetch
- t5500: make hash independent
- serve: advertise object-format capability for protocol v2
- connect: parse v2 refs with correct hash algorithm
- connect: pass full packet reader when parsing v2 refs
- Documentation/technical: document object-format for protocol v2
- t1302: expect repo format version 1 for SHA-256
- builtin/show-index: provide options to determine hash algo
- t5302: modernize test formatting
- packfile: compute and use the index CRC offset
- t3200: mark assertion with SHA1 prerequisite
- setup: set the_repository's hash algo when checking format
- fetch-pack: parse and advertise the object-format capability
- t5562: pass object-format in synthesized test data
- builtin/clone: initialize hash algorithm properly
- remote-curl: implement object-format extensions
- transport-helper: implement object-format extensions
- docs: update remote helper docs for object-format extensions
- builtin/receive-pack: detect when the server doesn't support our hash
- connect: detect algorithm when fetching refs
- fetch-pack: detect when the server doesn't support our hash
- connect: make parse_feature_value extern
- send-pack: detect when the server doesn't support our hash
- connect: add function to detect supported v1 hash functions
- transport: add a hash algorithm member
- pkt-line: add a member for hash algorithm
- connect: add function to fetch value of a v2 server capability
- connect: add function to parse multiple v1 capability values
- remote: advertise the object-format capability on the server side
- wrapper: add function to compare strings with different NUL termination
- connect: have ref processing code take struct packet_reader
- Documentation: document v1 protocol object-format capability
- t1050: match object ID paths in a hash-insensitive way
SHA-256 migration work continues.
Ready???
* jx/proc-receive-hook (2020-05-18) 11 commits
- doc: add documentation for the proc-receive hook
- transport: parse report options for tracking refs
- t5411: test updates of remote-tracking branches
- receive-pack: new config receive.procReceiveRefs
- refs.c: refactor to reuse ref_is_hidden()
- receive-pack: feed report options to post-receive
- doc: add document for capability report-status-v2
- New capability "report-status-v2" for git-push
- receive-pack: add new proc-receive hook
- t5411: add basic test cases for proc-receive hook
- transport: not report a non-head push as a branch
"git receive-pack" that accepts requests by "git push" learned to
outsource most of the ref updates to the new "proc-receive" hook.
Needs review.
* hn/reftable (2020-06-17) 18 commits
. SQUASH??? whitespace breakage fix
. Add "test-tool dump-reftable" command.
. Add reftable testing infrastructure
. vcxproj: adjust for the reftable changes
. Add GIT_DEBUG_REFS debugging mechanism
. Hookup unittests for the reftable library.
. Reftable support for git-core
. Add reftable library
. Add .gitattributes for the reftable/ directory
. Iterate over the "refs/" namespace in for_each_[raw]ref
. Move REF_LOG_ONLY to refs-internal.h
. Treat REVERT_HEAD as a pseudo ref
. Treat CHERRY_PICK_HEAD as a pseudo ref
. Treat BISECT_HEAD as a pseudo ref
. Make refs_ref_exists public
. Write pseudorefs through ref backends.
. checkout: add '\n' to reflog message
. lib-t6000.sh: write tag using git-update-ref
A new refs backend "reftable" to replace the traditional
combination of packed-refs files and one-file-per-ref loose refs
has been implemented and integrated for improved performance and
atomicity.
Tentatively omitted from tonight's pushout but will push out 'pu'
again with this merged in (which will break the tests,
unfortunately).
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.27.0
@ 2020-06-01 16:34 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-06-01 16:34 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.27.0 is now available at the
usual places. It is comprised of 537 non-merge commits since
v2.26.0, contributed by 71 people, 19 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.27.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.26.0 are as follows.
Welcome to the Git development community!
Andras Kucsma, Ansgar Röber, Ash Holland, Christopher
Warrington, Emma Brooks, Jan Engelhardt, Jessica Clarke,
Jorge Lopez Silva, Julien Moutinho, Li Xuejiang,
luciano.rocha@booking.com, Matthias Aßhauer, Michael
F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry Moschou,
Toon Claes, Vasil Dimov, and Yang Zhao.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Abhishek Kumar, Alban Gruin, Alessandro Menti,
Alexander Shopov, Alexandr Miloslavskiy, Alex Henrie, Andrei
Rybak, Andrew Oakley, Ben Keene, brian m. carlson, Carlo
Marcelo Arenas Belón, Christian Couder, Christopher Diaz
Riveros, Damien Robert, Denton Liu, Derrick Stolee, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Emir Sarı,
Eric Sunshine, Garima Singh, Greg Price, Hans Jerry Illikainen,
Heba Waly, Ismael Luceno, Jean-Noël Avila, Jeff King, Jiang
Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Jordi
Mas, Josh Steadmon, Junio C Hamano, Martin Ågren, Matheus
Tavares, Matthias Rüster, Patrick Steinhardt, Peter Krefting,
Philippe Blain, Phillip Wood, Pratyush Yadav, René Scharfe,
Shourya Shukla, SZEDER Gábor, Taylor Blau, Thomas Gummerer,
Todd Zullinger, Trần Ngọc Quân, and Yi-Jyun Pan.
----------------------------------------------------------------
Git 2.27 Release Notes
======================
Updates since v2.26
-------------------
Backward compatibility notes
* When "git describe C" finds that commit C is pointed by a signed or
annotated tag, which records T as its tagname in the object, the
command gives T as its answer. Even if the user renames or moves
such a tag from its natural location in the "refs/tags/" hierarchy,
"git describe C" would still give T as the answer, but in such a
case "git show T^0" would no longer work as expected. There may be
nothing at "refs/tags/T" or even worse there may be a different tag
instead.
Starting from this version, "git describe" will always use the
"long" version, as if the "--long" option were given, when giving
its output based on such a misplaced tag to work around the problem.
* "git pull" issues a warning message until the pull.rebase
configuration variable is explicitly given, which some existing
users may find annoying---those who prefer not to rebase need to
set the variable to false to squelch the warning.
* The transport protocol version 2, which was promoted to the default
in Git 2.26 release, turned out to have some remaining rough edges,
so it has been demoted from the default.
UI, Workflows & Features
* A handful of options to configure SSL when talking to proxies have
been added.
* Smudge/clean conversion filters are now given more information
(e.g. the object of the tree-ish in which the blob being converted
appears, in addition to its path, which has already been given).
* When "git describe C" finds an annotated tag with tagname A to be
the best name to explain commit C, and the tag is stored in a
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
command gave a warning message but used A (not B) to describe C.
If C is exactly at the tag, the describe output would be "A", but
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
behavior of the command has been changed to use the "long" form
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
* "git pull" learned to warn when no pull.rebase configuration
exists, and neither --[no-]rebase nor --ff-only is given (which
would result a merge).
* "git p4" learned four new hooks and also "--no-verify" option to
bypass them (and the existing "p4-pre-submit" hook).
* "git pull" shares many options with underlying "git fetch", but
some of them were not documented and some of those that would make
sense to pass down were not passed down.
* "git rebase" learned the "--no-gpg-sign" option to countermand
commit.gpgSign the user may have.
* The output from "git format-patch" uses RFC 2047 encoding for
non-ASCII letters on From: and Subject: headers, so that it can
directly be fed to e-mail programs. A new option has been added
to produce these headers in raw.
* "git log" learned "--show-pulls" that helps pathspec limited
history views; a merge commit that takes the whole change from a
side branch, which is normally omitted from the output, is shown
in addition to the commits that introduce real changes.
* The interactive input from various codepaths are consolidated and
any prompt possibly issued earlier are fflush()ed before we read.
* Allow "git rebase" to reapply all local commits, even if the may be
already in the upstream, without checking first.
* The 'pack.useSparse' configuration variable now defaults to 'true',
enabling an optimization that has been experimental since Git 2.21.
* "git rebase" happens to call some hooks meant for "checkout" and
"commit" by this was not a designed behaviour than historical
accident. This has been documented.
* "git merge" learns the "--autostash" option.
* "sparse-checkout" UI improvements.
* "git update-ref --stdin" learned a handful of new verbs to let the
user control ref update transactions more explicitly, which helps
as an ingredient to implement two-phase commit-style atomic
ref-updates across multiple repositories.
* "git commit-graph write" learned different ways to write out split
files.
* Introduce an extension to the commit-graph to make it efficient to
check for the paths that were modified at each commit using Bloom
filters.
* The approxidate parser learns to parse seconds with fraction and
ignore fractional part.
* The userdiff patterns for Markdown documents have been added.
* The sparse-checkout patterns have been forbidden from excluding all
paths, leaving an empty working tree, for a long time. This
limitation has been lifted.
* "git restore --staged --worktree" now defaults to take the contents
out of "HEAD", instead of erring out.
* "git p4" learned to recover from a (broken) state where a directory
and a file are recorded at the same path in the Perforce repository
the same way as their clients do.
* "git multi-pack-index repack" has been taught to honor some
repack.* configuration variables.
Performance, Internal Implementation, Development Support etc.
* The advise API has been revamped to allow more systematic enumeration of
advice knobs in the future.
* SHA-256 transition continues.
* The code to interface with GnuPG has been refactored.
* "git stash" has kept an escape hatch to use the scripted version
for a few releases, which got stale. It has been removed.
* Enable tests that require GnuPG on Windows.
* Minor test usability improvement.
* Trace2 enhancement to allow logging of the environment variables.
* Test clean-up continues.
* Perf-test update.
* A Windows-specific test element has been made more robust against
misuse from both user's environment and programmer's errors.
* Various tests have been updated to work around issues found with
shell utilities that come with busybox etc.
* The config API made mixed uses of int and size_t types to represent
length of various pieces of text it parsed, which has been updated
to use the correct type (i.e. size_t) throughout.
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
log" takes have learned a companion configuration variable
log.excludeDecoration that sits at the lowest priority in the
family.
* A new CI job to build and run test suite on linux with musl libc
has been added.
* Update the CI configuration to use GitHub Actions, retiring the one
based on Azure Pipelines.
* The directory traversal code had redundant recursive calls which
made its performance characteristics exponential with respect to
the depth of the tree, which was corrected.
* "git blame" learns to take advantage of the "changed-paths" Bloom
filter stored in the commit-graph file.
* The "bugreport" tool has been added.
* The object walk with object filter "--filter=tree:0" can now take
advantage of the pack bitmap when available.
* Instead of always building all branches at GitHub via Actions,
users can specify which branches to build.
* Codepaths that show progress meter have been taught to also use the
start_progress() and the stop_progress() calls as a "region" to be
traced.
* Instead of downloading Windows SDK for CI jobs for windows builds
from an external site (wingit.blob.core.windows.net), use the one
created in the windows-build job, to work around quota issues at
the external site.
Fixes since v2.26
-----------------
* The real_path() convenience function can easily be misused; with a
bit of code refactoring in the callers' side, its use has been
eliminated.
(merge 49d3c4b481 am/real-path-fix later to maint).
* Update "git p4" to work with Python 3.
(merge 6bb40ed20a yz/p4-py3 later to maint).
* The mechanism to prevent "git commit" from making an empty commit
or amending during an interrupted cherry-pick was broken during the
rewrite of "git rebase" in C, which has been corrected.
(merge 430b75f720 pw/advise-rebase-skip later to maint).
* Fix "git checkout --recurse-submodules" of a nested submodule
hierarchy.
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
* The "--fork-point" mode of "git rebase" regressed when the command
was rewritten in C back in 2.20 era, which has been corrected.
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
* The import-tars importer (in contrib/fast-import/) used to create
phony files at the top-level of the repository when the archive
contains global PAX headers, which made its own logic to detect and
omit the common leading directory ineffective, which has been
corrected.
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
* Simplify the commit ancestry connectedness check in a partial clone
repository in which "promised" objects are assumed to be obtainable
lazily on-demand from promisor remote repositories.
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
* The server-end of the v2 protocol to serve "git clone" and "git
fetch" was not prepared to see a delim packets at unexpected
places, which led to a crash.
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
* When fed a midx that records no objects, some codepaths tried to
loop from 0 through (num_objects-1), which, due to integer
arithmetic wrapping around, made it nonsense operation with out of
bounds array accesses. The code has been corrected to reject such
an midx file.
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
* Utitiles run via the run_command() API were not spawned correctly
on Cygwin, when the paths to them are given as a full path with
backslashes.
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
* "git pull --rebase" tried to run a rebase even after noticing that
the pull results in a fast-forward and no rebase is needed nor
sensible, for the past few years due to a mistake nobody noticed.
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
* "git rebase" with the merge backend did not work well when the
rebase.abbreviateCommands configuration was set.
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
* The logic to auto-follow tags by "git clone --single-branch" was
not careful to avoid lazy-fetching unnecessary tags, which has been
corrected.
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
* "git rebase -i" did not leave the reflog entries correctly.
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
* The more aggressive updates to remote-tracking branches we had for
the past 7 years or so were not reflected in the documentation,
which has been corrected.
(merge a44088435c pb/pull-fetch-doc later to maint).
* We've left the command line parsing of "git log :/a/b/" broken for
about a full year without anybody noticing, which has been
corrected.
(merge 0220461071 jc/missing-ref-store-fix later to maint).
* Misc fixes for Windows.
(merge 3efc128cd5 js/mingw-fixes later to maint).
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
the user to discard commits that are empty from the beginning (as
opposed to the ones that become empty because of rebasing). The
interactive rebase also marks commits that are empty in the todo.
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
* Parsing the host part out of URL for the credential helper has been corrected.
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
* Document the recommended way to abort a failing test early (e.g. by
exiting a loop), which is to say "return 1".
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
* The code that refreshes the last access and modified time of
on-disk packfiles and loose object files have been updated.
(merge 312cd76130 lr/freshen-file-fix later to maint).
* Validation of push certificate has been made more robust against
timing attacks.
(merge 719483e547 bc/constant-memequal later to maint).
* The custom hash function used by "git fast-import" has been
replaced with the one from hashmap.c, which gave us a nice
performance boost.
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
* The "git submodule" command did not initialize a few variables it
internally uses and was affected by variable settings leaked from
the environment.
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
* Raise the minimum required version of docbook-xsl package to 1.74,
as 1.74.0 was from late 2008, which is more than 10 years old, and
drop compatibility cruft from our documentation suite.
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
(merge 88acccda38 jc/log-no-mailmap later to maint).
* "git commit-graph write --expire-time=<timestamp>" did not use the
given timestamp correctly, which has been corrected.
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
* Tests update to use "test-chmtime" instead of "touch -t".
(merge e892a56845 ds/t5319-touch-fix later to maint).
* "git diff" in a partial clone learned to avoid lazy loading blob
objects in more casese when they are not needed.
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
* "git push --atomic" used to show failures for refs that weren't
even pushed, which has been corrected.
(merge dfe1b7f19c jx/atomic-push later to maint).
* Code in builtin/*, i.e. those can only be called from within
built-in subcommands, that implements bulk of a couple of
subcommands have been moved to libgit.a so that they could be used
by others.
(merge 9460fd48b5 dl/libify-a-few later to maint).
* Allowing the user to split a patch hunk while "git stash -p" does
not work well; a band-aid has been added to make this (partially)
work better.
* "git diff-tree --pretty --notes" used to hit an assertion failure,
as it forgot to initialize the notes subsystem.
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
* "git range-diff" fixes.
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
* "git grep" did not quote a path with unusual character like other
commands (like "git diff", "git status") do, but did quote when run
from a subdirectory, both of which has been corrected.
(merge 45115d8490 mt/grep-cquote-path later to maint).
* GNU/Hurd is also among the ones that need the fopen() wrapper.
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
* Those fetching over protocol v2 from linux-next and other kernel
repositories are reporting that v2 often fetches way too much than
needed.
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
* The upload-pack protocol v2 gave up too early before finding a
common ancestor, resulting in a wasteful fetch from a fork of a
project. This has been corrected to match the behaviour of v0
protocol.
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
* The build procedure did not use the libcurl library and its include
files correctly for a custom-built installation.
(merge 0573831950 jk/build-with-right-curl later to maint).
* Tighten "git mailinfo" to notice and error out when decoded result
contains NUL in it.
(merge 3919997447 dd/mailinfo-with-nul later to maint).
* Fix in-core inconsistency after fetching into a shallow repository
that broke the code to write out commit-graph.
(merge 37b9dcabfc tb/reset-shallow later to maint).
* The commit-graph code exhausted file descriptors easily when it
does not have to.
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
* The multi-pack-index left mmapped file descriptors open when it
does not have to.
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
* Recent update to Homebrew used by macOS folks breaks build by
moving gettext library and necessary headers.
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
* Incompatible options "--root" and "--fork-point" of "git rebase"
have been marked and documented as being incompatible.
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
* Error and verbose trace messages from "git push" did not redact
credential material embedded in URLs.
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
* Update the parser used for credential.<URL>.<variable>
configuration, to handle <URL>s with '/' in them correctly.
(merge b44d0118ac bc/wildcard-credential later to maint).
* Recent updates broke parsing of "credential.<url>.<key>" where
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
stopped working, which has been corrected.
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
(merge cd93e6c029 js/partial-urlmatch later to maint).
* Some of the files commit-graph subsystem keeps on disk did not
correctly honor the core.sharedRepository settings and some were
left read-write.
* In error messages that "git switch" mentions its option to create a
new branch, "-b/-B" options were shown, where "-c/-C" options
should be, which has been corrected.
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
* With the recent tightening of the code that is used to parse
various parts of a URL for use in the credential subsystem, a
hand-edited credential-store file causes the credential helper to
die, which is a bit too harsh to the users. Demote the error
behaviour to just ignore and keep using well-formed lines instead.
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
* The samples in the credential documentation has been updated to
make it clear that we depict what would appear in the .git/config
file, by adding appropriate quotes as needed..
(merge 177681a07e jk/credential-sample-update later to maint).
* "git branch" and other "for-each-ref" variants accepted multiple
--sort=<key> options in the increasing order of precedence, but it
had a few breakages around "--ignore-case" handling, and tie-breaking
with the refname, which have been fixed.
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
* The coding guideline for shell scripts instructed to refer to a
variable with dollar-sign inside arithmetic expansion to work
around a bug in old versions of dash, which is a thing of the past.
Now we are not forbidden from writing $((var+1)).
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
* The <stdlib.h> header on NetBSD brings in its own definition of
hmac() function (eek), which conflicts with our own and unrelated
function with the same name. Our function has been renamed to work
around the issue.
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
* The basic test did not honor $TEST_SHELL_PATH setting, which has
been corrected.
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
* Minor in-code comments and documentation updates around credential
API.
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
* Teach "am", "commit", "merge" and "rebase", when they are run with
the "--quiet" option, to pass "--quiet" down to "gc --auto".
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
* The code to skip unmerged paths in the index when sparse checkout
is in use would have made out-of-bound access of the in-core index
when the last path was unmerged, which has been corrected.
* Serving a "git fetch" client over "git://" and "ssh://" protocols
using the on-wire protocol version 2 was buggy on the server end
when the client needs to make a follow-up request to
e.g. auto-follow tags.
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
* "git bisect replay" had trouble with input files when they used
CRLF line ending, which has been corrected.
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
* "rebase -i" segfaulted when rearranging a sequence that has a
fix-up that applies another fix-up (which may or may not be a
fix-up of yet another step).
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
* "git fsck" ensures that the paths recorded in tree objects are
sorted and without duplicates, but it failed to notice a case where
a blob is followed by entries that sort before a tree with the same
name. This has been corrected.
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
* Code clean-up by removing a compatibility implementation of a
function we no longer use.
(merge 84b0115f0d cb/no-more-gmtime later to maint).
* When a binary file gets modified and renamed on both sides of history
to different locations, both files would be written to the working
tree but both would have the contents from "ours". This has been
corrected so that the path from each side gets their original content.
* Fix for a copy-and-paste error introduced during 2.20 era.
(merge e68a5272b1 ds/multi-pack-verify later to maint).
* Update an unconditional use of "grep -a" with a perl script in a test.
(merge 1eb7371236 dd/t5703-grep-a-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 564956f358 jc/maintain-doc later to maint).
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
(merge 8312aa7d74 jc/config-tar later to maint).
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
(merge 64d1022e14 ar/test-style-fixes later to maint).
(merge 4a465443a6 ds/doc-clone-filter later to maint).
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
(merge 2149b6748f bc/faq later to maint).
(merge 12dc0879f1 jk/test-cleanup later to maint).
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
(merge a1aba0c95c js/t0007-typofix later to maint).
(merge 76ba7fa225 ma/config-doc-fix later to maint).
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
(merge 4153274052 bc/doc-credential-helper-value later to maint).
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
----------------------------------------------------------------
Changes since v2.26.0 are as follows:
Abhishek Kumar (1):
commit-slab-decl.h: update include guard
Alban Gruin (3):
sequencer: mark messages for translation
sequencer: don't abbreviate a command if it doesn't have a short form
t3432: test `--merge' with `rebase.abbreviateCommands = true', too
Alessandro Menti (2):
l10n: it.po: update the Italian translation for Git 2.27.0 round 1
l10n: it.po: update for Git 2.27.0 round #2
Alex Henrie (1):
pull: warn if the user didn't say whether to rebase or to merge
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (4868t)
l10n: bg.po: Updated Bulgarian translation (4875t)
Alexandr Miloslavskiy (4):
set_git_dir: fix crash when used with real_path()
real_path: remove unsafe API
real_path_if_valid(): remove unsafe API
get_superproject_working_tree(): return strbuf
Andras Kucsma (1):
run-command: trigger PATH lookup properly on Cygwin
Andrei Rybak (2):
t9500: remove spaces after redirect operators
t: fix whitespace around &&
Andrew Oakley (1):
git-p4: recover from inconsistent perforce history
Ansgar Röber (1):
Subject: git-gui: fix syntax error because of missing semicolon
Ash Holland (1):
userdiff: support Markdown
Ben Keene (8):
git-p4: change the expansion test from basestring to list
git-p4: rewrite prompt to be Windows compatible
git-p4: create new function run_git_hook
git-p4: add p4-pre-submit exit text
git-p4: add --no-verify option
git-p4: restructure code in submit
git-p4: add p4 submit hooks
git-p4: add RCS keyword status message
Carlo Marcelo Arenas Belón (13):
credential-store: ignore bogus lines from store file
credential: update description for credential_from_url_gently
credential: correct order of parameters for credential_match
builtin/receive-pack: avoid generic function name hmac()
t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
t/test_lib: avoid naked bash arrays in file_lineno
credential: update gitcredentials documentation
credential: document protocol updates
compat: remove gmtime
t4216: avoid unnecessary subshell in test_bloom_filters_not_used
t5520: avoid alternation in grep's BRE (not POSIX)
bisect: avoid tailing CR characters from revision in replay
t: avoid alternation (not POSIX) in grep's BRE
Christian Couder (1):
upload-pack: clear filter_options for each v2 fetch command
Christopher Diaz Riveros (1):
l10n: es: 2.27.0 round 1
Christopher Warrington (1):
bisect: allow CRLF line endings in "git bisect replay" input
Damien Robert (6):
midx.c: fix an integer underflow
doc: list all commands affected by submodule.recurse
doc: document --recurse-submodules for reset and restore
doc: explain how to deactivate submodule.recurse completely
doc: be more precise on (fetch|push).recurseSubmodules
doc: --recurse-submodules mostly applies to active submodules
Denton Liu (45):
Makefile: ASCII-sort += lists
t7600: use test_write_lines()
Lib-ify fmt-merge-msg
Lib-ify prune-packed
t5512: don't use `test_must_fail test_cmp`
t5512: stop losing git exit code in here-docs
t5512: stop losing return codes of git commands
t5550: simplify no matching line check
t5607: reorder `nongit test_must_fail`
t5612: don't use `test_must_fail test_cmp`
t5612: stop losing return codes of git commands
t5801: teach compare_refs() to accept !
wrapper: indent with tabs
sequencer: stop leaking buf
sequencer: make file exists check more efficient
sequencer: make read_oneliner() accept flags
sequencer: configurably warn on non-existent files
sequencer: make read_oneliner() extern
rebase: use read_oneliner()
sequencer: make apply_autostash() accept a path
sequencer: rename stash_sha1 to stash_oid
rebase: use apply_autostash() from sequencer.c
rebase: generify reset_head()
reset: extract reset_head() from rebase
rebase: extract create_autostash()
rebase: generify create_autostash()
sequencer: extract perform_autostash() from rebase
sequencer: unlink autostash in apply_autostash()
sequencer: implement save_autostash()
sequencer: implement apply_autostash_oid()
merge: teach --autostash option
t5520: make test_pull_autostash() accept expect_parent_num
pull: pass --autostash to merge
t6030: use test_path_is_missing()
t7408: replace incorrect uses of test_must_fail
t7508: don't use `test_must_fail test_cmp`
t9141: use test_path_is_missing()
t9160: use test_path_is_missing()
t9164: use test_must_fail only on git commands
t9819: don't use test_must_fail with p4
Use OPT_CALLBACK and OPT_CALLBACK_F
push: unset PARSE_OPT_OPTARG for --recurse-submodules
rebase: save autostash entry into stash reflog on --quit
switch: fix errors and comments related to -c and -C
Doc: reference the "stash list" in autostash docs
Derrick Stolee (27):
connected.c: reprepare packs for corner cases
config: set pack.useSparse=true by default
pack-objects: flip the use of GIT_TEST_PACK_SPARSE
clone: document --filter options
diff: halt tree-diff early after max_changes
dir: refactor treat_directory to clarify control flow
commit-graph: fix buggy --expire-time option
t5319: replace 'touch -m' with 'test-tool chmtime'
bloom: ignore renames when computing changed paths
revision: --show-pulls adds helpful merges
log-tree: make ref_filter_match() a helper method
log: add log.excludeDecoration config option
revision: complicated pathspecs disable filters
tests: write commit-graph with Bloom filters
blame: use changed-path Bloom filters
multi-pack-index: close file descriptor after mmap
bloom: fix whitespace around tab length
test-bloom: fix usage typo
sparse-checkout: stop blocking empty workdirs
unpack-trees: avoid array out-of-bounds error
multi-pack-index: respect repack.packKeptObjects=false
bloom: parse commit before computing filters
Documentation: changed-path Bloom filters use byte words
bloom: de-duplicate directory entries
bloom: use num_changes not nr for limit detection
progress: call trace2_region_leave() only after calling _enter()
fsck: use ERROR_MULTI_PACK_INDEX
Elijah Newren (39):
oidset: remove unnecessary include
unpack-trees: fix minor typo in comment
unpack-trees: remove unused error type
unpack-trees: simplify verify_absent_sparse()
unpack-trees: simplify pattern_list freeing
t1091: make some tests a little more defensive against failures
unpack-trees: allow check_updates() to work on a different index
unpack-trees: do not mark a dirty path with SKIP_WORKTREE
unpack-trees: pull sparse-checkout pattern reading into a new function
unpack-trees: add a new update_sparsity() function
sparse-checkout: use new update_sparsity() function
sparse-checkout: use improved unpack_trees porcelain messages
unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
unpack-trees: split display_error_msgs() into two
unpack-trees: make sparse path messages sound like warnings
unpack-trees: provide warnings on sparse updates for unmerged paths too
unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
sparse-checkout: provide a new reapply subcommand
pull: avoid running both merge and rebase
t7063: more thorough status checking
t3000: add more testcases testing a variety of ls-files issues
dir: fix simple typo in comment
dir: consolidate treat_path() and treat_one_path()
dir: fix broken comment
dir: fix confusion based on variable tense
dir: replace exponential algorithm with a linear one
dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
dir: replace double pathspec matching with single in treat_directory()
Fix error-prone fill_directory() API; make it only return matches
completion: fix 'git add' on paths under an untracked directory
git-rebase.txt: add another hook to the hooks section, and explain more
sequencer: honor GIT_REFLOG_ACTION
rebase -i: mark commits that begin empty in todo editor
rebase: reinstate --no-keep-empty
rebase: fix an incompatible-options error message
rebase: display an error if --root and --fork-point are both provided
merge-recursive: fix rename/rename(1to2) for working tree with a binary
unpack-trees: also allow get_progress() to work on a different index
Emily Shaffer (8):
help: move list_config_help to builtin/help
bugreport: add tool to generate debugging info
bugreport: gather git version and build info
bugreport: add uname info
bugreport: add compiler info
bugreport: drop extraneous includes
bugreport: collect list of populated hooks
trace2: log progress time and throughput
Emir Sarı (2):
l10n: tr: v2.27.0 round 1
l10n: tr: v2.27.0 round 2
Emma Brooks (3):
format-patch: teach --no-encode-email-headers
Documentation: explain "mboxrd" pretty format
gitweb: Recognize *-to and Closes/Fixes trailers
Eric Sunshine (1):
restore: default to HEAD when combining --staged and --worktree
Garima Singh (13):
commit-graph: define and use MAX_NUM_CHUNKS
bloom.c: add the murmur3 hash implementation
bloom.c: introduce core Bloom filter constructs
bloom.c: core Bloom filter implementation for changed paths.
commit-graph: compute Bloom filters for changed paths
commit-graph: examine commits by generation number
commit-graph: write Bloom filters to commit graph file
commit-graph: reuse existing Bloom filters during write
commit-graph: add --changed-paths option to write subcommand
revision.c: use Bloom filters to speed up path based revision walks
revision.c: add trace2 stats around Bloom filter usage
t4216: add end to end tests for git log with Bloom filters
commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag
Greg Price (1):
tests: skip small-stack tests on hppa architecture
Hans Jerry Illikainen (2):
t: increase test coverage of signature verification output
gpg-interface: prefer check_signature() for GPG verification
Heba Waly (4):
advice: extract vadvise() from advise()
advice: change "setupStreamFailure" to "setUpstreamFailure"
advice: revamp advise API
tag: use new advice API to check visibility
Ismael Luceno (1):
git-gui: Handle Ctrl + BS/Del in the commit msg
Jan Engelhardt (1):
l10n: de.po: Fix typo in the German translation of octopus
Jean-Noël Avila (2):
l10n: fr v2.27.0 rnd 1
l10n: fr.po v2.27.0 rnd 2
Jeff King (51):
credential: avoid writing values with newlines
t/lib-credential: use test_i18ncmp to check stderr
credential: detect unrepresentable values when parsing urls
fsck: detect gitmodules URLs with embedded newlines
t3419: drop EXPENSIVE tests
t/lib-credential.sh: drop shebang line
t/lib-*.sh: drop executable bit
test-lib-functions: make packetize() more efficient
upload-pack: handle unexpected delim packets
p5310: stop timing non-bitmap pack-to-disk
Makefile: avoid running curl-config multiple times
Makefile: use curl-config --cflags
test-lib-functions: simplify packetize() stdin code
commit-graph: examine changed-path objects in pack order
oid_array: use size_t for count and allocation
oid_array: use size_t for iteration
oid_array: rename source file from sha1-array
test-tool: rename sha1-array to oid-array
bisect: stop referring to sha1_array
ref-filter: stop referring to "sha1 array"
oidset: stop referring to sha1-array
clone: use "quick" lookup while following tags
Makefile: avoid running curl-config unnecessarily
fast-import: replace custom hash with hashmap.c
repository: mark the "refs" pointer as private
remote: drop auto-strlen behavior of make_branch() and make_rewrite()
parse_config_key(): return subsection len as size_t
config: drop useless length variable in write_pair()
git_config_parse_key(): return baselen as size_t
config: use size_t to store parsed variable baselen
config: reject parsing of files over INT_MAX
credential: treat "?" and "#" in URLs as end of host
t0300: make "quit" helper more realistic
t0300: use more realistic inputs
credential: parse URL without host as empty host, not unset
credential: refuse to operate when missing host or protocol
credential: die() when parsing invalid urls
Git 2.17.5
blame: drop unused parameter from maybe_changed_path
test-bloom: fix some whitespace issues
test-bloom: check that we have expected arguments
commit-graph: close descriptors after mmap
t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
gitcredentials(7): clarify quoting of helper examples
gitcredentials(7): make shell-snippet example more realistic
CodingGuidelines: drop arithmetic expansion advice to use "$x"
ref-filter: apply --ignore-case to all sorting keys
ref-filter: apply fallback refname sort only after all user sorts
list-objects-filter: treat NULL filter_options as "disabled"
pack-bitmap: pass object filter to fill-in traversal
ci: allow per-branch config for GitHub Actions
Jessica Clarke (1):
config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd
Jiang Xin (8):
send-pack: fix inconsistent porcelain output
t5543: never report what we do not push
send-pack: mark failure of atomic push properly
transport-helper: mark failure for atomic push
transport-helper: new method reject_atomic_push()
l10n: git.pot: v2.27.0 round 1 (72 new, 37 removed)
l10n: git.pot: v2.27.0 round 2 (+1)
l10n: zh_CN: for git v2.27.0 l10n round 1~2
Johannes Schindelin (37):
cherry-pick: add test for `--skip` advice in `git commit`
tests(junit-xml): avoid invalid XML
import-tars: ignore the global PAX header
tests(gpg): allow the gpg-agent to start on Windows
t/lib-gpg.sh: stop pretending to be a stand-alone script
tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
tests: increase the verbosity of the GPG-related prereqs
MyFirstObjectWalk: remove unnecessary conditional statement
t0007: fix a typo
ci/lib: if CI type is unknown, show the environment variables
ci/lib: allow running in GitHub Actions
ci: fix the `jobname` of the `GETTEXT_POISON` job
subtree: fix build with AsciiDoctor 2
mingw: do not treat `COM0` as a reserved file name
t3904: fix incorrect demonstration of a bug
stash -p: (partially) fix bug concerning split hunks
mingw: help debugging by optionally executing bash with strace
interactive: refactor code asking the user for interactive input
ci: run gem with sudo to install asciidoctor
README: add a build badge for the GitHub Actions runs
ci: retire the Azure Pipelines definition
tests: when run in Bash, annotate test failures with file name/line number
ci: add a problem matcher for GitHub Actions
ci: let GitHub Actions upload failed tests' directories
t: consolidate the `is_hidden` functions
mingw: make test_path_is_hidden more robust
t: restrict `is_hidden` to be called only on Windows
credential: fix grammar
credential: optionally allow partial URLs in credential_from_url_gently()
credential: optionally allow partial URLs in credential_from_url_gently()
credential: handle `credential.<partial-URL>.<key>` again
macOS/brew: let the build find gettext headers/libraries/msgfmt
push: anonymize URLs in error messages and warnings
credential: handle `credential.<partial-URL>.<key>` again
rebase --autosquash: fix a potential segfault
ci: avoid pounding on the poor ci-artifacts container
Jonathan Nieder (5):
fsck: convert gitmodules url to URL passed to curl
credential: treat URL without scheme as invalid
credential: treat URL with empty scheme as invalid
fsck: reject URL with empty host in .gitmodules
Revert "fetch: default to protocol version 2"
Jonathan Tan (12):
connected: always use partial clone optimization
promisor-remote: accept 0 as oid_nr in function
diff: make diff_populate_filespec_options struct
diff: refactor object read
diff: restrict when prefetching occurs
rebase --merge: optionally skip upstreamed commits
fetch-pack: return enum from process_acks()
fetch-pack: in protocol v2, in_vain only after ACK
fetch-pack: in protocol v2, reset in_vain upon ACK
commit-graph: avoid memory leaks
t5500: count objects through stderr, not trace
t4067: make rename detection test output raw diff
Jordi Mas (3):
l10n: Update Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Jorge Lopez Silva (2):
http: add client cert support for HTTPS proxies
http: add environment variable support for HTTPS proxies
Josh Steadmon (1):
trace2: teach Git to log environment variables
Julien Moutinho (1):
gitweb: fix UTF-8 encoding when using CGI::Fast
Junio C Hamano (34):
rebase: --fork-point regression fix
describe: force long format for a name based on a mislocated tag
update how-to-maintain-git
parse-options: teach "git cmd -h" to show alias as alias
clone: reorder --recursive/--recurse-submodules
log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
Git 2.17.4
separate tar.* config to its own source file
The first batch post 2.26 cycle
The second batch post 2.26 cycle
t/README: suggest how to leave test early with failure
CodingGuidelines: allow ${#posix} == strlen($posix)
sha1-name: do not assume that the ref store is initialized
receive-pack: compilation fix
The third batch
The fourth batch
credential-store: document the file format a bit more
Revert "commit-graph.c: introduce '--[no-]check-oids'"
The fifth batch
The sixth batch
The seventh batch
auto-gc: extract a reusable helper from "git fetch"
auto-gc: pass --quiet down from am, commit, merge and rebase
CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
The eighth batch
The ninth batch
Git 2.27-rc0
Revert "t/test_lib: avoid naked bash arrays in file_lineno"
Revert "ci: add a problem matcher for GitHub Actions"
Revert "tests: when run in Bash, annotate test failures with file name/line number"
Git 2.27-rc1
Hopefully final batch before 2.27-rc2
Git 2.27-rc2
Git 2.27
Li Xuejiang (1):
git-submodule.sh: setup uninitialized variables
Martin Ågren (15):
Doc: drop support for docbook-xsl before 1.71.1
Doc: drop support for docbook-xsl before 1.72.0
Doc: drop support for docbook-xsl before 1.73.0
manpage-bold-literal.xsl: stop using git.docbook.backslash
manpage-normal.xsl: fold in manpage-base.xsl
INSTALL: drop support for docbook-xsl before 1.74
user-manual.conf: don't specify [listingblock]
config.txt: move closing "----" to cover entire listing
merge: use skip_prefix to parse config key
date-formats.txt: fix list continuation
git-commit-graph.txt: fix grammo
git-commit-graph.txt: fix list rendering
git-credential.txt: use list continuation
git-sparse-checkout.txt: add missing '
rev-list-options.txt: start a list for `show-pulls`
Matheus Tavares (3):
test-lib: allow short options to be bundled
grep: follow conventions for printing paths w/ unusual chars
config doc: fix reference to config.worktree info
Matthias Aßhauer (1):
mingw: use modern strftime implementation if possible
Matthias Rüster (1):
l10n: de.po: Update German translation for Git 2.27.0
Michael F. Schönitzer (1):
docs: fix minor glitch in illustration
Nathan Sanders (1):
mingw: cope with the Isilon network file system
Patrick Steinhardt (9):
refs: fix segfault when aborting empty transaction
git-update-ref.txt: add missing word
strbuf: provide function to append whole lines
update-ref: organize commands in an array
update-ref: drop unused argument for `parse_refname`
update-ref: pass end pointer instead of strbuf
update-ref: move transaction handling into `update_refs_stdin()`
update-ref: read commands in a line-wise fashion
update-ref: implement interactive transaction handling
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (4839t0f0u)
l10n: sv.po: Update Swedish translation (4875t0f0u)
Philippe Blain (10):
t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
t/lib-submodule-update: remove outdated test description
t/lib-submodule-update: move a test to the right section
unpack-trees: remove outdated description for verify_clean_submodule
unpack-trees: check for missing submodule directory in merged_entry
t/lib-submodule-update: add test removing nested submodules
git-rebase.txt: fix typo
pull doc: refer to a specific section in 'fetch' doc
pull doc: correct outdated description of an example
command-list.txt: add gitfaq to the list of guides
Phillip Wood (6):
t3404: use test_cmp_rev
cherry-pick: check commit error messages
sequencer: write CHERRY_PICK_HEAD for reword and edit
commit: use enum value for multiple cherry-picks
commit: encapsulate determine_whence() for sequencer
commit: give correct advice for empty commit during a rebase
René Scharfe (4):
pull: document more passthru options
pull: remove --update-head-ok from documentation
pull: pass documented fetch options on
fsck: report non-consecutive duplicate names in trees
SZEDER Gábor (4):
ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
commit-slab: clarify slabname##_peek()'s return value
ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
completion: offer '--(no-)patch' among 'git log' options
Shourya Shukla (4):
submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
gitfaq: files in .gitignore are tracked
gitfaq: fetching and pulling a repository
submodule: port subcommand 'set-url' from shell to C
Son Luong Ngoc (1):
midx: teach "git multi-pack-index repack" honor "git repack" configurations
Taylor Blau (24):
t/helper/test-read-graph.c: support commit-graph chains
builtin/commit-graph.c: support for '--split[=<strategy>]'
builtin/commit-graph.c: introduce split strategy 'no-merge'
builtin/commit-graph.c: introduce split strategy 'replace'
oidset: introduce 'oidset_size'
commit-graph.h: replace 'commit_hex' with 'commits'
commit-graph.c: introduce '--[no-]check-oids'
diff-tree.c: load notes machinery when required
commit-graph.c: don't use discarded graph_name in error
t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
commit-graph.c: gracefully handle file descriptor exhaustion
t5537: use test_write_lines and indented heredocs for readability
shallow.c: use '{commit,rollback}_shallow_file'
tempfile.c: introduce 'create_tempfile_mode'
lockfile.c: introduce 'hold_lock_file_for_update_mode'
commit-graph.c: write non-split graphs as read-only
commit-graph.c: ensure graph layers respect core.sharedRepository
commit-graph.c: make 'commit-graph-chain's read-only
commit: make 'commit_graft_pos' non-static
shallow: extract a header file for shallow-related functions
shallow.h: document '{commit,rollback}_shallow_file'
shallow: use struct 'shallow_lock' for additional safety
pack-bitmap.c: make object filtering functions generic
pack-bitmap.c: support 'tree:0' filtering
Terry Moschou (1):
complete: zsh: add missing sub cmd completion candidates
Thomas Gummerer (2):
stash: get git_stash_config at the top level
stash: remove the stash.useBuiltin setting
Todd Zullinger (2):
git-bugreport.txt: adjust reference to strftime(3)
gitfaq: avoid validation error with older asciidoc
Toon Claes (1):
Documentation: correct hash environment variable
Trần Ngọc Quân (2):
l10n: vi(4874t): Updated Vietnamses translation for 2.27.0
l10n: vi(4875t): Updated Vietnamses translation for 2.27.0rd2
Vasil Dimov (2):
range-diff: fix a crash in parsing git-log output
range-diff: avoid negative string precision
Yang Zhao (12):
git-p4: make python2.7 the oldest supported version
git-p4: remove string type aliasing
git-p4: encode/decode communication with p4 for python3
git-p4: encode/decode communication with git for python3
git-p4: convert path to unicode before processing them
git-p4: open .gitp4-usercache.txt in text mode
git-p4: use marshal format version 2 when sending to p4
git-p4: fix freezing while waiting for fast-import progress
git-p4: use functools.reduce instead of reduce
git-p4: use dict.items() iteration for python3 compatibility
git-p4: simplify regex pattern generation for parsing diff-tree
git-p4: use python3's input() everywhere
Yi-Jyun Pan (2):
l10n: zh_TW.po: v2.27.0 round 1 (0 untranslated)
l10n: zh_TW.po: v2.27.0 round 2 (0 untranslated)
brian m. carlson (34):
builtin/pack-objects: make hash agnostic
hash: implement and use a context cloning function
hex: introduce parsing variants taking hash algorithms
hex: add functions to parse hex object IDs in any algorithm
repository: require a build flag to use SHA-256
t: use hash-specific lookup tables to define test constants
t6300: abstract away SHA-1-specific constants
t6300: make hash algorithm independent
t/helper/test-dump-split-index: initialize git repository
t/helper: initialize repository if necessary
t/helper: make repository tests hash independent
setup: allow check_repository_format to read repository format
builtin/init-db: allow specifying hash algorithm on command line
builtin/init-db: add environment variable for new repo hash
init-db: move writing repo version into a function
worktree: allow repository version 1
commit: use expected signature header for SHA-256
fast-import: permit reading multiple marks files
fast-import: add helper function for inserting mark object entries
fast-import: make find_marks work on any mark set
fast-import: add a generic function to iterate over marks
fast-import: add options for rewriting submodules
builtin/checkout: pass branch info down to checkout_worktree
convert: permit passing additional metadata to filter processes
convert: provide additional metadata to filters
builtin/checkout: compute checkout metadata for checkouts
builtin/clone: compute checkout metadata for clones
builtin/rebase: compute checkout metadata for rebases
builtin/reset: compute checkout metadata for reset
t0021: test filter metadata for additional cases
docs: add a FAQ
builtin/receive-pack: use constant-time comparison for HMAC value
credential: fix matching URLs with multiple levels in path
docs: document credential.helper allowed values
luciano.rocha@booking.com (1):
freshen_file(): use NULL `times' for implicit current-time
Đoàn Trần Công Danh (37):
t4061: use POSIX compliant regex(7)
test-lib-functions: test_cmp: eval $GIT_TEST_CMP
t5003: drop the subshell in test_lazy_prereq
t5003: skip conversion test if unzip -a is unavailable
t5616: use rev-parse instead to get HEAD's object_id
t7063: drop non-POSIX argument "-ls" from find(1)
t4124: tweak test so that non-compliant diff(1) can also be used
t5703: feed raw data into test-tool unpack-sideband
rebase.c: honour --no-gpg-sign
cherry-pick/revert: honour --no-gpg-sign in all case
Documentation: document am --no-gpg-sign
Documentation: reword commit --no-gpg-sign
Documentation: merge commit-tree --[no-]gpg-sign
Documentation: document merge option --no-gpg-sign
ci/lib-docker: preserve required environment variables
ci/linux32: parameterise command to switch arch
ci: refactor docker runner script
ci/linux32: libify install-dependencies step
travis: build and test on Linux with musl libc and busybox
ci/lib: set TERM environment variable if not exist
ci: explicit install all required packages
ci: configure GitHub Actions for CI/PR
t4254: merge 2 steps of a single test
mailinfo.c: avoid strlen on strings that can contains NUL
mailinfo: disallow NUL character in mail's header
date.c: s/is_date/set_date/
date.c: validate and set time in a helper function
date.c: skip fractional second part of ISO-8601
date.c: allow compact version of ISO-8601 datetime
test-parse-pathspec-file.c: s/0/NULL/ for pointer type
compat/regex: move stdlib.h up in inclusion chain
graph.c: limit linkage of internal variable
progress.c: silence cgcc suggestion about internal linkage
bloom: fix `make sparse` warning
t1509: correct i18n test
ci/config: correct instruction for CI preferences
t5703: replace "grep -a" usage by perl
마누엘 (1):
interactive: explicitly `fflush` stdout before expecting input
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.27.0-rc2
@ 2020-05-26 18:47 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-26 18:47 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.27.0-rc2 is now available for testing
at the usual places. It is comprised of 509 non-merge commits
since v2.26.0, contributed by 59 people, 17 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.27.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.26.0 are as follows.
Welcome to the Git development community!
Andras Kucsma, Ansgar Röber, Ash Holland, Christopher
Warrington, Emma Brooks, Jessica Clarke, Jorge Lopez Silva,
Julien Moutinho, Li Xuejiang, luciano.rocha@booking.com,
Matthias Aßhauer, Michael F. Schönitzer, Nathan Sanders,
Son Luong Ngoc, Terry Moschou, Vasil Dimov, and Yang Zhao.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Abhishek Kumar, Alban Gruin, Alexandr Miloslavskiy,
Alex Henrie, Andrei Rybak, Andrew Oakley, Ben Keene, brian
m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
Damien Robert, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Garima Singh,
Greg Price, Hans Jerry Illikainen, Heba Waly, Ismael Luceno,
Jeff King, Jiang Xin, Johannes Schindelin, Jonathan Nieder,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Martin Ågren,
Matheus Tavares, Patrick Steinhardt, Philippe Blain, Phillip
Wood, Pratyush Yadav, René Scharfe, Shourya Shukla, SZEDER
Gábor, Taylor Blau, Thomas Gummerer, and Todd Zullinger.
----------------------------------------------------------------
Git 2.27 Release Notes (draft)
==============================
Updates since v2.26
-------------------
Backward compatibility notes
* When "git describe C" finds that commit C is pointed by a signed or
annotated tag, which records T as its tagname in the object, the
command gives T as its answer. Even if the user renames or moves
such a tag from its natural location in the "refs/tags/" hierarchy,
"git describe C" would still give T as the answer, but in such a
case "git show T^0" would no longer work as expected. There may be
nothing at "refs/tags/T" or even worse there may be a different tag
instead.
Starting from this version, "git describe" will always use the
"long" version, as if the "--long" option were given, when giving
its output based on such a misplaced tag to work around the problem.
* "git pull" issues a warning message until the pull.rebase
configuration variable is explicitly given, which some existing
users may find annoying---those who prefer not to rebase need to
set the variable to false to squelch the warning.
* The transport protocol version 2, which was promoted to the default
in Git 2.26 release, turned out to have some remaining rough edges,
so it has been demoted from the default.
UI, Workflows & Features
* A handful of options to configure SSL when talking to proxies have
been added.
* Smudge/clean conversion filters are now given more information
(e.g. the object of the tree-ish in which the blob being converted
appears, in addition to its path, which has already been given).
* When "git describe C" finds an annotated tag with tagname A to be
the best name to explain commit C, and the tag is stored in a
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
command gave a warning message but used A (not B) to describe C.
If C is exactly at the tag, the describe output would be "A", but
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
behavior of the command has been changed to use the "long" form
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
* "git pull" learned to warn when no pull.rebase configuration
exists, and neither --[no-]rebase nor --ff-only is given (which
would result a merge).
* "git p4" learned four new hooks and also "--no-verify" option to
bypass them (and the existing "p4-pre-submit" hook).
* "git pull" shares many options with underlying "git fetch", but
some of them were not documented and some of those that would make
sense to pass down were not passed down.
* "git rebase" learned the "--no-gpg-sign" option to countermand
commit.gpgSign the user may have.
* The output from "git format-patch" uses RFC 2047 encoding for
non-ASCII letters on From: and Subject: headers, so that it can
directly be fed to e-mail programs. A new option has been added
to produce these headers in raw.
* "git log" learned "--show-pulls" that helps pathspec limited
history views; a merge commit that takes the whole change from a
side branch, which is normally omitted from the output, is shown
in addition to the commits that introduce real changes.
* The interactive input from various codepaths are consolidated and
any prompt possibly issued earlier are fflush()ed before we read.
* Allow "git rebase" to reapply all local commits, even if the may be
already in the upstream, without checking first.
* The 'pack.useSparse' configuration variable now defaults to 'true',
enabling an optimization that has been experimental since Git 2.21.
* "git rebase" happens to call some hooks meant for "checkout" and
"commit" by this was not a designed behaviour than historical
accident. This has been documented.
* "git merge" learns the "--autostash" option.
* "sparse-checkout" UI improvements.
* "git update-ref --stdin" learned a handful of new verbs to let the
user control ref update transactions more explicitly, which helps
as an ingredient to implement two-phase commit-style atomic
ref-updates across multiple repositories.
* "git commit-graph write" learned different ways to write out split
files.
* Introduce an extension to the commit-graph to make it efficient to
check for the paths that were modified at each commit using Bloom
filters.
* The approxidate parser learns to parse seconds with fraction and
ignore fractional part.
* The userdiff patterns for Markdown documents have been added.
* The sparse-checkout patterns have been forbidden from excluding all
paths, leaving an empty working tree, for a long time. This
limitation has been lifted.
* "git restore --staged --worktree" now defaults to take the contents
out of "HEAD", instead of erring out.
* "git p4" learned to recover from a (broken) state where a directory
and a file are recorded at the same path in the Perforce repository
the same way as their clients do.
* "git multi-pack-index repack" has been taught to honor some
repack.* configuration variables.
Performance, Internal Implementation, Development Support etc.
* The advise API has been revamped to allow more systematic enumeration of
advice knobs in the future.
* SHA-256 transition continues.
* The code to interface with GnuPG has been refactored.
* "git stash" has kept an escape hatch to use the scripted version
for a few releases, which got stale. It has been removed.
* Enable tests that require GnuPG on Windows.
* Minor test usability improvement.
* Trace2 enhancement to allow logging of the environment variables.
* Test clean-up continues.
* Perf-test update.
* A Windows-specific test element has been made more robust against
misuse from both user's environment and programmer's errors.
* Various tests have been updated to work around issues found with
shell utilities that come with busybox etc.
* The config API made mixed uses of int and size_t types to represent
length of various pieces of text it parsed, which has been updated
to use the correct type (i.e. size_t) throughout.
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
log" takes have learned a companion configuration variable
log.excludeDecoration that sits at the lowest priority in the
family.
* A new CI job to build and run test suite on linux with musl libc
has been added.
* Update the CI configuration to use GitHub Actions, retiring the one
based on Azure Pipelines.
* The directory traversal code had redundant recursive calls which
made its performance characteristics exponential with respect to
the depth of the tree, which was corrected.
* "git blame" learns to take advantage of the "changed-paths" Bloom
filter stored in the commit-graph file.
* The "bugreport" tool has been added.
* The object walk with object filter "--filter=tree:0" can now take
advantage of the pack bitmap when available.
* Instead of always building all branches at GitHub via Actions,
users can specify which branches to build.
* Codepaths that show progress meter have been taught to also use the
start_progress() and the stop_progress() calls as a "region" to be
traced.
* Instead of downloading Windows SDK for CI jobs for windows builds
from an external site (wingit.blob.core.windows.net), use the one
created in the windows-build job, to work around quota issues at
the external site.
Fixes since v2.26
-----------------
* The real_path() convenience function can easily be misused; with a
bit of code refactoring in the callers' side, its use has been
eliminated.
(merge 49d3c4b481 am/real-path-fix later to maint).
* Update "git p4" to work with Python 3.
(merge 6bb40ed20a yz/p4-py3 later to maint).
* The mechanism to prevent "git commit" from making an empty commit
or amending during an interrupted cherry-pick was broken during the
rewrite of "git rebase" in C, which has been corrected.
(merge 430b75f720 pw/advise-rebase-skip later to maint).
* Fix "git checkout --recurse-submodules" of a nested submodule
hierarchy.
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
* The "--fork-point" mode of "git rebase" regressed when the command
was rewritten in C back in 2.20 era, which has been corrected.
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
* The import-tars importer (in contrib/fast-import/) used to create
phony files at the top-level of the repository when the archive
contains global PAX headers, which made its own logic to detect and
omit the common leading directory ineffective, which has been
corrected.
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
* Simplify the commit ancestry connectedness check in a partial clone
repository in which "promised" objects are assumed to be obtainable
lazily on-demand from promisor remote repositories.
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
* The server-end of the v2 protocol to serve "git clone" and "git
fetch" was not prepared to see a delim packets at unexpected
places, which led to a crash.
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
* When fed a midx that records no objects, some codepaths tried to
loop from 0 through (num_objects-1), which, due to integer
arithmetic wrapping around, made it nonsense operation with out of
bounds array accesses. The code has been corrected to reject such
an midx file.
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
* Utitiles run via the run_command() API were not spawned correctly
on Cygwin, when the paths to them are given as a full path with
backslashes.
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
* "git pull --rebase" tried to run a rebase even after noticing that
the pull results in a fast-forward and no rebase is needed nor
sensible, for the past few years due to a mistake nobody noticed.
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
* "git rebase" with the merge backend did not work well when the
rebase.abbreviateCommands configuration was set.
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
* The logic to auto-follow tags by "git clone --single-branch" was
not careful to avoid lazy-fetching unnecessary tags, which has been
corrected.
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
* "git rebase -i" did not leave the reflog entries correctly.
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
* The more aggressive updates to remote-tracking branches we had for
the past 7 years or so were not reflected in the documentation,
which has been corrected.
(merge a44088435c pb/pull-fetch-doc later to maint).
* We've left the command line parsing of "git log :/a/b/" broken for
about a full year without anybody noticing, which has been
corrected.
(merge 0220461071 jc/missing-ref-store-fix later to maint).
* Misc fixes for Windows.
(merge 3efc128cd5 js/mingw-fixes later to maint).
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
the user to discard commits that are empty from the beginning (as
opposed to the ones that become empty because of rebasing). The
interactive rebase also marks commits that are empty in the todo.
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
* Parsing the host part out of URL for the credential helper has been corrected.
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
* Document the recommended way to abort a failing test early (e.g. by
exiting a loop), which is to say "return 1".
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
* The code that refreshes the last access and modified time of
on-disk packfiles and loose object files have been updated.
(merge 312cd76130 lr/freshen-file-fix later to maint).
* Validation of push certificate has been made more robust against
timing attacks.
(merge 719483e547 bc/constant-memequal later to maint).
* The custom hash function used by "git fast-import" has been
replaced with the one from hashmap.c, which gave us a nice
performance boost.
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
* The "git submodule" command did not initialize a few variables it
internally uses and was affected by variable settings leaked from
the environment.
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
* Raise the minimum required version of docbook-xsl package to 1.74,
as 1.74.0 was from late 2008, which is more than 10 years old, and
drop compatibility cruft from our documentation suite.
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
(merge 88acccda38 jc/log-no-mailmap later to maint).
* "git commit-graph write --expire-time=<timestamp>" did not use the
given timestamp correctly, which has been corrected.
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
* Tests update to use "test-chmtime" instead of "touch -t".
(merge e892a56845 ds/t5319-touch-fix later to maint).
* "git diff" in a partial clone learned to avoid lazy loading blob
objects in more casese when they are not needed.
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
* "git push --atomic" used to show failures for refs that weren't
even pushed, which has been corrected.
(merge dfe1b7f19c jx/atomic-push later to maint).
* Code in builtin/*, i.e. those can only be called from within
built-in subcommands, that implements bulk of a couple of
subcommands have been moved to libgit.a so that they could be used
by others.
(merge 9460fd48b5 dl/libify-a-few later to maint).
* Allowing the user to split a patch hunk while "git stash -p" does
not work well; a band-aid has been added to make this (partially)
work better.
* "git diff-tree --pretty --notes" used to hit an assertion failure,
as it forgot to initialize the notes subsystem.
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
* "git range-diff" fixes.
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
* "git grep" did not quote a path with unusual character like other
commands (like "git diff", "git status") do, but did quote when run
from a subdirectory, both of which has been corrected.
(merge 45115d8490 mt/grep-cquote-path later to maint).
* GNU/Hurd is also among the ones that need the fopen() wrapper.
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
* Those fetching over protocol v2 from linux-next and other kernel
repositories are reporting that v2 often fetches way too much than
needed.
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
* The upload-pack protocol v2 gave up too early before finding a
common ancestor, resulting in a wasteful fetch from a fork of a
project. This has been corrected to match the behaviour of v0
protocol.
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
* The build procedure did not use the libcurl library and its include
files correctly for a custom-built installation.
(merge 0573831950 jk/build-with-right-curl later to maint).
* Tighten "git mailinfo" to notice and error out when decoded result
contains NUL in it.
(merge 3919997447 dd/mailinfo-with-nul later to maint).
* Fix in-core inconsistency after fetching into a shallow repository
that broke the code to write out commit-graph.
(merge 37b9dcabfc tb/reset-shallow later to maint).
* The commit-graph code exhausted file descriptors easily when it
does not have to.
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
* The multi-pack-index left mmapped file descriptors open when it
does not have to.
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
* Recent update to Homebrew used by macOS folks breaks build by
moving gettext library and necessary headers.
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
* Incompatible options "--root" and "--fork-point" of "git rebase"
have been marked and documented as being incompatible.
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
* Error and verbose trace messages from "git push" did not redact
credential material embedded in URLs.
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
* Update the parser used for credential.<URL>.<variable>
configuration, to handle <URL>s with '/' in them correctly.
(merge b44d0118ac bc/wildcard-credential later to maint).
* Recent updates broke parsing of "credential.<url>.<key>" where
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
stopped working, which has been corrected.
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
(merge cd93e6c029 js/partial-urlmatch later to maint).
* Some of the files commit-graph subsystem keeps on disk did not
correctly honor the core.sharedRepository settings and some were
left read-write.
* In error messages that "git switch" mentions its option to create a
new branch, "-b/-B" options were shown, where "-c/-C" options
should be, which has been corrected.
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
* With the recent tightening of the code that is used to parse
various parts of a URL for use in the credential subsystem, a
hand-edited credential-store file causes the credential helper to
die, which is a bit too harsh to the users. Demote the error
behaviour to just ignore and keep using well-formed lines instead.
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
* The samples in the credential documentation has been updated to
make it clear that we depict what would appear in the .git/config
file, by adding appropriate quotes as needed..
(merge 177681a07e jk/credential-sample-update later to maint).
* "git branch" and other "for-each-ref" variants accepted multiple
--sort=<key> options in the increasing order of precedence, but it
had a few breakages around "--ignore-case" handling, and tie-breaking
with the refname, which have been fixed.
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
* The coding guideline for shell scripts instructed to refer to a
variable with dollar-sign inside arithmetic expansion to work
around a bug in old versions of dash, which is a thing of the past.
Now we are not forbidden from writing $((var+1)).
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
* The <stdlib.h> header on NetBSD brings in its own definition of
hmac() function (eek), which conflicts with our own and unrelated
function with the same name. Our function has been renamed to work
around the issue.
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
* The basic test did not honor $TEST_SHELL_PATH setting, which has
been corrected.
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
* Minor in-code comments and documentation updates around credential
API.
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
* Teach "am", "commit", "merge" and "rebase", when they are run with
the "--quiet" option, to pass "--quiet" down to "gc --auto".
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
* The code to skip unmerged paths in the index when sparse checkout
is in use would have made out-of-bound access of the in-core index
when the last path was unmerged, which has been corrected.
* Serving a "git fetch" client over "git://" and "ssh://" protocols
using the on-wire protocol version 2 was buggy on the server end
when the client needs to make a follow-up request to
e.g. auto-follow tags.
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
* "git bisect replay" had trouble with input files when they used
CRLF line ending, which has been corrected.
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
* "rebase -i" segfaulted when rearranging a sequence that has a
fix-up that applies another fix-up (which may or may not be a
fix-up of yet another step).
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
* "git fsck" ensures that the paths recorded in tree objects are
sorted and without duplicates, but it failed to notice a case where
a blob is followed by entries that sort before a tree with the same
name. This has been corrected.
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
* Code clean-up by removing a compatibility implementation of a
function we no longer use.
(merge 84b0115f0d cb/no-more-gmtime later to maint).
* When a binary file gets modified and renamed on both sides of history
to different locations, both files would be written to the working
tree but both would have the contents from "ours". This has been
corrected so that the path from each side gets their original content.
* Fix for a copy-and-paste error introduced during 2.20 era.
(merge e68a5272b1 ds/multi-pack-verify later to maint).
* Update an unconditional use of "grep -a" with a perl script in a test.
(merge 1eb7371236 dd/t5703-grep-a-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 564956f358 jc/maintain-doc later to maint).
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
(merge 8312aa7d74 jc/config-tar later to maint).
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
(merge 64d1022e14 ar/test-style-fixes later to maint).
(merge 4a465443a6 ds/doc-clone-filter later to maint).
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
(merge 2149b6748f bc/faq later to maint).
(merge 12dc0879f1 jk/test-cleanup later to maint).
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
(merge a1aba0c95c js/t0007-typofix later to maint).
(merge 76ba7fa225 ma/config-doc-fix later to maint).
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
(merge 4153274052 bc/doc-credential-helper-value later to maint).
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
----------------------------------------------------------------
Changes since v2.26.0 are as follows:
Abhishek Kumar (1):
commit-slab-decl.h: update include guard
Alban Gruin (3):
sequencer: mark messages for translation
sequencer: don't abbreviate a command if it doesn't have a short form
t3432: test `--merge' with `rebase.abbreviateCommands = true', too
Alex Henrie (1):
pull: warn if the user didn't say whether to rebase or to merge
Alexandr Miloslavskiy (4):
set_git_dir: fix crash when used with real_path()
real_path: remove unsafe API
real_path_if_valid(): remove unsafe API
get_superproject_working_tree(): return strbuf
Andras Kucsma (1):
run-command: trigger PATH lookup properly on Cygwin
Andrei Rybak (2):
t9500: remove spaces after redirect operators
t: fix whitespace around &&
Andrew Oakley (1):
git-p4: recover from inconsistent perforce history
Ansgar Röber (1):
Subject: git-gui: fix syntax error because of missing semicolon
Ash Holland (1):
userdiff: support Markdown
Ben Keene (8):
git-p4: change the expansion test from basestring to list
git-p4: rewrite prompt to be Windows compatible
git-p4: create new function run_git_hook
git-p4: add p4-pre-submit exit text
git-p4: add --no-verify option
git-p4: restructure code in submit
git-p4: add p4 submit hooks
git-p4: add RCS keyword status message
Carlo Marcelo Arenas Belón (12):
credential-store: ignore bogus lines from store file
credential: update description for credential_from_url_gently
credential: correct order of parameters for credential_match
builtin/receive-pack: avoid generic function name hmac()
t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
t/test_lib: avoid naked bash arrays in file_lineno
credential: update gitcredentials documentation
credential: document protocol updates
compat: remove gmtime
t4216: avoid unnecessary subshell in test_bloom_filters_not_used
t5520: avoid alternation in grep's BRE (not POSIX)
bisect: avoid tailing CR characters from revision in replay
Christian Couder (1):
upload-pack: clear filter_options for each v2 fetch command
Christopher Warrington (1):
bisect: allow CRLF line endings in "git bisect replay" input
Damien Robert (6):
midx.c: fix an integer underflow
doc: list all commands affected by submodule.recurse
doc: document --recurse-submodules for reset and restore
doc: explain how to deactivate submodule.recurse completely
doc: be more precise on (fetch|push).recurseSubmodules
doc: --recurse-submodules mostly applies to active submodules
Denton Liu (45):
Makefile: ASCII-sort += lists
t7600: use test_write_lines()
Lib-ify fmt-merge-msg
Lib-ify prune-packed
t5512: don't use `test_must_fail test_cmp`
t5512: stop losing git exit code in here-docs
t5512: stop losing return codes of git commands
t5550: simplify no matching line check
t5607: reorder `nongit test_must_fail`
t5612: don't use `test_must_fail test_cmp`
t5612: stop losing return codes of git commands
t5801: teach compare_refs() to accept !
wrapper: indent with tabs
sequencer: stop leaking buf
sequencer: make file exists check more efficient
sequencer: make read_oneliner() accept flags
sequencer: configurably warn on non-existent files
sequencer: make read_oneliner() extern
rebase: use read_oneliner()
sequencer: make apply_autostash() accept a path
sequencer: rename stash_sha1 to stash_oid
rebase: use apply_autostash() from sequencer.c
rebase: generify reset_head()
reset: extract reset_head() from rebase
rebase: extract create_autostash()
rebase: generify create_autostash()
sequencer: extract perform_autostash() from rebase
sequencer: unlink autostash in apply_autostash()
sequencer: implement save_autostash()
sequencer: implement apply_autostash_oid()
merge: teach --autostash option
t5520: make test_pull_autostash() accept expect_parent_num
pull: pass --autostash to merge
t6030: use test_path_is_missing()
t7408: replace incorrect uses of test_must_fail
t7508: don't use `test_must_fail test_cmp`
t9141: use test_path_is_missing()
t9160: use test_path_is_missing()
t9164: use test_must_fail only on git commands
t9819: don't use test_must_fail with p4
Use OPT_CALLBACK and OPT_CALLBACK_F
push: unset PARSE_OPT_OPTARG for --recurse-submodules
rebase: save autostash entry into stash reflog on --quit
switch: fix errors and comments related to -c and -C
Doc: reference the "stash list" in autostash docs
Derrick Stolee (27):
connected.c: reprepare packs for corner cases
config: set pack.useSparse=true by default
pack-objects: flip the use of GIT_TEST_PACK_SPARSE
clone: document --filter options
diff: halt tree-diff early after max_changes
dir: refactor treat_directory to clarify control flow
commit-graph: fix buggy --expire-time option
t5319: replace 'touch -m' with 'test-tool chmtime'
bloom: ignore renames when computing changed paths
revision: --show-pulls adds helpful merges
log-tree: make ref_filter_match() a helper method
log: add log.excludeDecoration config option
revision: complicated pathspecs disable filters
tests: write commit-graph with Bloom filters
blame: use changed-path Bloom filters
multi-pack-index: close file descriptor after mmap
bloom: fix whitespace around tab length
test-bloom: fix usage typo
sparse-checkout: stop blocking empty workdirs
unpack-trees: avoid array out-of-bounds error
multi-pack-index: respect repack.packKeptObjects=false
bloom: parse commit before computing filters
Documentation: changed-path Bloom filters use byte words
bloom: de-duplicate directory entries
bloom: use num_changes not nr for limit detection
progress: call trace2_region_leave() only after calling _enter()
fsck: use ERROR_MULTI_PACK_INDEX
Elijah Newren (39):
oidset: remove unnecessary include
unpack-trees: fix minor typo in comment
unpack-trees: remove unused error type
unpack-trees: simplify verify_absent_sparse()
unpack-trees: simplify pattern_list freeing
t1091: make some tests a little more defensive against failures
unpack-trees: allow check_updates() to work on a different index
unpack-trees: do not mark a dirty path with SKIP_WORKTREE
unpack-trees: pull sparse-checkout pattern reading into a new function
unpack-trees: add a new update_sparsity() function
sparse-checkout: use new update_sparsity() function
sparse-checkout: use improved unpack_trees porcelain messages
unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
unpack-trees: split display_error_msgs() into two
unpack-trees: make sparse path messages sound like warnings
unpack-trees: provide warnings on sparse updates for unmerged paths too
unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
sparse-checkout: provide a new reapply subcommand
pull: avoid running both merge and rebase
t7063: more thorough status checking
t3000: add more testcases testing a variety of ls-files issues
dir: fix simple typo in comment
dir: consolidate treat_path() and treat_one_path()
dir: fix broken comment
dir: fix confusion based on variable tense
dir: replace exponential algorithm with a linear one
dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
dir: replace double pathspec matching with single in treat_directory()
Fix error-prone fill_directory() API; make it only return matches
completion: fix 'git add' on paths under an untracked directory
git-rebase.txt: add another hook to the hooks section, and explain more
sequencer: honor GIT_REFLOG_ACTION
rebase -i: mark commits that begin empty in todo editor
rebase: reinstate --no-keep-empty
rebase: fix an incompatible-options error message
rebase: display an error if --root and --fork-point are both provided
merge-recursive: fix rename/rename(1to2) for working tree with a binary
unpack-trees: also allow get_progress() to work on a different index
Emily Shaffer (8):
help: move list_config_help to builtin/help
bugreport: add tool to generate debugging info
bugreport: gather git version and build info
bugreport: add uname info
bugreport: add compiler info
bugreport: drop extraneous includes
bugreport: collect list of populated hooks
trace2: log progress time and throughput
Emma Brooks (3):
format-patch: teach --no-encode-email-headers
Documentation: explain "mboxrd" pretty format
gitweb: Recognize *-to and Closes/Fixes trailers
Eric Sunshine (1):
restore: default to HEAD when combining --staged and --worktree
Garima Singh (13):
commit-graph: define and use MAX_NUM_CHUNKS
bloom.c: add the murmur3 hash implementation
bloom.c: introduce core Bloom filter constructs
bloom.c: core Bloom filter implementation for changed paths.
commit-graph: compute Bloom filters for changed paths
commit-graph: examine commits by generation number
commit-graph: write Bloom filters to commit graph file
commit-graph: reuse existing Bloom filters during write
commit-graph: add --changed-paths option to write subcommand
revision.c: use Bloom filters to speed up path based revision walks
revision.c: add trace2 stats around Bloom filter usage
t4216: add end to end tests for git log with Bloom filters
commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag
Greg Price (1):
tests: skip small-stack tests on hppa architecture
Hans Jerry Illikainen (2):
t: increase test coverage of signature verification output
gpg-interface: prefer check_signature() for GPG verification
Heba Waly (4):
advice: extract vadvise() from advise()
advice: change "setupStreamFailure" to "setUpstreamFailure"
advice: revamp advise API
tag: use new advice API to check visibility
Ismael Luceno (1):
git-gui: Handle Ctrl + BS/Del in the commit msg
Jeff King (51):
credential: avoid writing values with newlines
t/lib-credential: use test_i18ncmp to check stderr
credential: detect unrepresentable values when parsing urls
fsck: detect gitmodules URLs with embedded newlines
t3419: drop EXPENSIVE tests
t/lib-credential.sh: drop shebang line
t/lib-*.sh: drop executable bit
test-lib-functions: make packetize() more efficient
upload-pack: handle unexpected delim packets
p5310: stop timing non-bitmap pack-to-disk
Makefile: avoid running curl-config multiple times
Makefile: use curl-config --cflags
test-lib-functions: simplify packetize() stdin code
commit-graph: examine changed-path objects in pack order
oid_array: use size_t for count and allocation
oid_array: use size_t for iteration
oid_array: rename source file from sha1-array
test-tool: rename sha1-array to oid-array
bisect: stop referring to sha1_array
ref-filter: stop referring to "sha1 array"
oidset: stop referring to sha1-array
clone: use "quick" lookup while following tags
Makefile: avoid running curl-config unnecessarily
fast-import: replace custom hash with hashmap.c
repository: mark the "refs" pointer as private
remote: drop auto-strlen behavior of make_branch() and make_rewrite()
parse_config_key(): return subsection len as size_t
config: drop useless length variable in write_pair()
git_config_parse_key(): return baselen as size_t
config: use size_t to store parsed variable baselen
config: reject parsing of files over INT_MAX
credential: treat "?" and "#" in URLs as end of host
t0300: make "quit" helper more realistic
t0300: use more realistic inputs
credential: parse URL without host as empty host, not unset
credential: refuse to operate when missing host or protocol
credential: die() when parsing invalid urls
Git 2.17.5
blame: drop unused parameter from maybe_changed_path
test-bloom: fix some whitespace issues
test-bloom: check that we have expected arguments
commit-graph: close descriptors after mmap
t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
gitcredentials(7): clarify quoting of helper examples
gitcredentials(7): make shell-snippet example more realistic
CodingGuidelines: drop arithmetic expansion advice to use "$x"
ref-filter: apply --ignore-case to all sorting keys
ref-filter: apply fallback refname sort only after all user sorts
list-objects-filter: treat NULL filter_options as "disabled"
pack-bitmap: pass object filter to fill-in traversal
ci: allow per-branch config for GitHub Actions
Jessica Clarke (1):
config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd
Jiang Xin (5):
send-pack: fix inconsistent porcelain output
t5543: never report what we do not push
send-pack: mark failure of atomic push properly
transport-helper: mark failure for atomic push
transport-helper: new method reject_atomic_push()
Johannes Schindelin (37):
cherry-pick: add test for `--skip` advice in `git commit`
tests(junit-xml): avoid invalid XML
import-tars: ignore the global PAX header
tests(gpg): allow the gpg-agent to start on Windows
t/lib-gpg.sh: stop pretending to be a stand-alone script
tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
tests: increase the verbosity of the GPG-related prereqs
MyFirstObjectWalk: remove unnecessary conditional statement
t0007: fix a typo
ci/lib: if CI type is unknown, show the environment variables
ci/lib: allow running in GitHub Actions
ci: fix the `jobname` of the `GETTEXT_POISON` job
subtree: fix build with AsciiDoctor 2
mingw: do not treat `COM0` as a reserved file name
t3904: fix incorrect demonstration of a bug
stash -p: (partially) fix bug concerning split hunks
mingw: help debugging by optionally executing bash with strace
interactive: refactor code asking the user for interactive input
ci: run gem with sudo to install asciidoctor
README: add a build badge for the GitHub Actions runs
ci: retire the Azure Pipelines definition
tests: when run in Bash, annotate test failures with file name/line number
ci: add a problem matcher for GitHub Actions
ci: let GitHub Actions upload failed tests' directories
t: consolidate the `is_hidden` functions
mingw: make test_path_is_hidden more robust
t: restrict `is_hidden` to be called only on Windows
credential: fix grammar
credential: optionally allow partial URLs in credential_from_url_gently()
credential: optionally allow partial URLs in credential_from_url_gently()
credential: handle `credential.<partial-URL>.<key>` again
macOS/brew: let the build find gettext headers/libraries/msgfmt
push: anonymize URLs in error messages and warnings
credential: handle `credential.<partial-URL>.<key>` again
rebase --autosquash: fix a potential segfault
ci: avoid pounding on the poor ci-artifacts container
Jonathan Nieder (5):
fsck: convert gitmodules url to URL passed to curl
credential: treat URL without scheme as invalid
credential: treat URL with empty scheme as invalid
fsck: reject URL with empty host in .gitmodules
Revert "fetch: default to protocol version 2"
Jonathan Tan (12):
connected: always use partial clone optimization
promisor-remote: accept 0 as oid_nr in function
diff: make diff_populate_filespec_options struct
diff: refactor object read
diff: restrict when prefetching occurs
rebase --merge: optionally skip upstreamed commits
fetch-pack: return enum from process_acks()
fetch-pack: in protocol v2, in_vain only after ACK
fetch-pack: in protocol v2, reset in_vain upon ACK
commit-graph: avoid memory leaks
t5500: count objects through stderr, not trace
t4067: make rename detection test output raw diff
Jorge Lopez Silva (2):
http: add client cert support for HTTPS proxies
http: add environment variable support for HTTPS proxies
Josh Steadmon (1):
trace2: teach Git to log environment variables
Julien Moutinho (1):
gitweb: fix UTF-8 encoding when using CGI::Fast
Junio C Hamano (33):
rebase: --fork-point regression fix
describe: force long format for a name based on a mislocated tag
update how-to-maintain-git
parse-options: teach "git cmd -h" to show alias as alias
clone: reorder --recursive/--recurse-submodules
log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
Git 2.17.4
separate tar.* config to its own source file
The first batch post 2.26 cycle
The second batch post 2.26 cycle
t/README: suggest how to leave test early with failure
CodingGuidelines: allow ${#posix} == strlen($posix)
sha1-name: do not assume that the ref store is initialized
receive-pack: compilation fix
The third batch
The fourth batch
credential-store: document the file format a bit more
Revert "commit-graph.c: introduce '--[no-]check-oids'"
The fifth batch
The sixth batch
The seventh batch
auto-gc: extract a reusable helper from "git fetch"
auto-gc: pass --quiet down from am, commit, merge and rebase
CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
The eighth batch
The ninth batch
Git 2.27-rc0
Revert "t/test_lib: avoid naked bash arrays in file_lineno"
Revert "ci: add a problem matcher for GitHub Actions"
Revert "tests: when run in Bash, annotate test failures with file name/line number"
Git 2.27-rc1
Hopefully final batch before 2.27-rc2
Git 2.27-rc2
Li Xuejiang (1):
git-submodule.sh: setup uninitialized variables
Martin Ågren (14):
Doc: drop support for docbook-xsl before 1.71.1
Doc: drop support for docbook-xsl before 1.72.0
Doc: drop support for docbook-xsl before 1.73.0
manpage-bold-literal.xsl: stop using git.docbook.backslash
manpage-normal.xsl: fold in manpage-base.xsl
INSTALL: drop support for docbook-xsl before 1.74
user-manual.conf: don't specify [listingblock]
config.txt: move closing "----" to cover entire listing
merge: use skip_prefix to parse config key
date-formats.txt: fix list continuation
git-commit-graph.txt: fix grammo
git-commit-graph.txt: fix list rendering
git-credential.txt: use list continuation
git-sparse-checkout.txt: add missing '
Matheus Tavares (3):
test-lib: allow short options to be bundled
grep: follow conventions for printing paths w/ unusual chars
config doc: fix reference to config.worktree info
Matthias Aßhauer (1):
mingw: use modern strftime implementation if possible
Michael F. Schönitzer (1):
docs: fix minor glitch in illustration
Nathan Sanders (1):
mingw: cope with the Isilon network file system
Patrick Steinhardt (9):
refs: fix segfault when aborting empty transaction
git-update-ref.txt: add missing word
strbuf: provide function to append whole lines
update-ref: organize commands in an array
update-ref: drop unused argument for `parse_refname`
update-ref: pass end pointer instead of strbuf
update-ref: move transaction handling into `update_refs_stdin()`
update-ref: read commands in a line-wise fashion
update-ref: implement interactive transaction handling
Philippe Blain (10):
t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
t/lib-submodule-update: remove outdated test description
t/lib-submodule-update: move a test to the right section
unpack-trees: remove outdated description for verify_clean_submodule
unpack-trees: check for missing submodule directory in merged_entry
t/lib-submodule-update: add test removing nested submodules
git-rebase.txt: fix typo
pull doc: refer to a specific section in 'fetch' doc
pull doc: correct outdated description of an example
command-list.txt: add gitfaq to the list of guides
Phillip Wood (6):
t3404: use test_cmp_rev
cherry-pick: check commit error messages
sequencer: write CHERRY_PICK_HEAD for reword and edit
commit: use enum value for multiple cherry-picks
commit: encapsulate determine_whence() for sequencer
commit: give correct advice for empty commit during a rebase
René Scharfe (4):
pull: document more passthru options
pull: remove --update-head-ok from documentation
pull: pass documented fetch options on
fsck: report non-consecutive duplicate names in trees
SZEDER Gábor (4):
ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
commit-slab: clarify slabname##_peek()'s return value
ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
completion: offer '--(no-)patch' among 'git log' options
Shourya Shukla (4):
submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
gitfaq: files in .gitignore are tracked
gitfaq: fetching and pulling a repository
submodule: port subcommand 'set-url' from shell to C
Son Luong Ngoc (1):
midx: teach "git multi-pack-index repack" honor "git repack" configurations
Taylor Blau (24):
t/helper/test-read-graph.c: support commit-graph chains
builtin/commit-graph.c: support for '--split[=<strategy>]'
builtin/commit-graph.c: introduce split strategy 'no-merge'
builtin/commit-graph.c: introduce split strategy 'replace'
oidset: introduce 'oidset_size'
commit-graph.h: replace 'commit_hex' with 'commits'
commit-graph.c: introduce '--[no-]check-oids'
diff-tree.c: load notes machinery when required
commit-graph.c: don't use discarded graph_name in error
t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
commit-graph.c: gracefully handle file descriptor exhaustion
t5537: use test_write_lines and indented heredocs for readability
shallow.c: use '{commit,rollback}_shallow_file'
tempfile.c: introduce 'create_tempfile_mode'
lockfile.c: introduce 'hold_lock_file_for_update_mode'
commit-graph.c: write non-split graphs as read-only
commit-graph.c: ensure graph layers respect core.sharedRepository
commit-graph.c: make 'commit-graph-chain's read-only
commit: make 'commit_graft_pos' non-static
shallow: extract a header file for shallow-related functions
shallow.h: document '{commit,rollback}_shallow_file'
shallow: use struct 'shallow_lock' for additional safety
pack-bitmap.c: make object filtering functions generic
pack-bitmap.c: support 'tree:0' filtering
Terry Moschou (1):
complete: zsh: add missing sub cmd completion candidates
Thomas Gummerer (2):
stash: get git_stash_config at the top level
stash: remove the stash.useBuiltin setting
Todd Zullinger (2):
git-bugreport.txt: adjust reference to strftime(3)
gitfaq: avoid validation error with older asciidoc
Vasil Dimov (2):
range-diff: fix a crash in parsing git-log output
range-diff: avoid negative string precision
Yang Zhao (12):
git-p4: make python2.7 the oldest supported version
git-p4: remove string type aliasing
git-p4: encode/decode communication with p4 for python3
git-p4: encode/decode communication with git for python3
git-p4: convert path to unicode before processing them
git-p4: open .gitp4-usercache.txt in text mode
git-p4: use marshal format version 2 when sending to p4
git-p4: fix freezing while waiting for fast-import progress
git-p4: use functools.reduce instead of reduce
git-p4: use dict.items() iteration for python3 compatibility
git-p4: simplify regex pattern generation for parsing diff-tree
git-p4: use python3's input() everywhere
brian m. carlson (34):
builtin/pack-objects: make hash agnostic
hash: implement and use a context cloning function
hex: introduce parsing variants taking hash algorithms
hex: add functions to parse hex object IDs in any algorithm
repository: require a build flag to use SHA-256
t: use hash-specific lookup tables to define test constants
t6300: abstract away SHA-1-specific constants
t6300: make hash algorithm independent
t/helper/test-dump-split-index: initialize git repository
t/helper: initialize repository if necessary
t/helper: make repository tests hash independent
setup: allow check_repository_format to read repository format
builtin/init-db: allow specifying hash algorithm on command line
builtin/init-db: add environment variable for new repo hash
init-db: move writing repo version into a function
worktree: allow repository version 1
commit: use expected signature header for SHA-256
fast-import: permit reading multiple marks files
fast-import: add helper function for inserting mark object entries
fast-import: make find_marks work on any mark set
fast-import: add a generic function to iterate over marks
fast-import: add options for rewriting submodules
builtin/checkout: pass branch info down to checkout_worktree
convert: permit passing additional metadata to filter processes
convert: provide additional metadata to filters
builtin/checkout: compute checkout metadata for checkouts
builtin/clone: compute checkout metadata for clones
builtin/rebase: compute checkout metadata for rebases
builtin/reset: compute checkout metadata for reset
t0021: test filter metadata for additional cases
docs: add a FAQ
builtin/receive-pack: use constant-time comparison for HMAC value
credential: fix matching URLs with multiple levels in path
docs: document credential.helper allowed values
luciano.rocha@booking.com (1):
freshen_file(): use NULL `times' for implicit current-time
Đoàn Trần Công Danh (36):
t4061: use POSIX compliant regex(7)
test-lib-functions: test_cmp: eval $GIT_TEST_CMP
t5003: drop the subshell in test_lazy_prereq
t5003: skip conversion test if unzip -a is unavailable
t5616: use rev-parse instead to get HEAD's object_id
t7063: drop non-POSIX argument "-ls" from find(1)
t4124: tweak test so that non-compliant diff(1) can also be used
t5703: feed raw data into test-tool unpack-sideband
rebase.c: honour --no-gpg-sign
cherry-pick/revert: honour --no-gpg-sign in all case
Documentation: document am --no-gpg-sign
Documentation: reword commit --no-gpg-sign
Documentation: merge commit-tree --[no-]gpg-sign
Documentation: document merge option --no-gpg-sign
ci/lib-docker: preserve required environment variables
ci/linux32: parameterise command to switch arch
ci: refactor docker runner script
ci/linux32: libify install-dependencies step
travis: build and test on Linux with musl libc and busybox
ci/lib: set TERM environment variable if not exist
ci: explicit install all required packages
ci: configure GitHub Actions for CI/PR
t4254: merge 2 steps of a single test
mailinfo.c: avoid strlen on strings that can contains NUL
mailinfo: disallow NUL character in mail's header
date.c: s/is_date/set_date/
date.c: validate and set time in a helper function
date.c: skip fractional second part of ISO-8601
date.c: allow compact version of ISO-8601 datetime
test-parse-pathspec-file.c: s/0/NULL/ for pointer type
compat/regex: move stdlib.h up in inclusion chain
graph.c: limit linkage of internal variable
progress.c: silence cgcc suggestion about internal linkage
bloom: fix `make sparse` warning
t1509: correct i18n test
t5703: replace "grep -a" usage by perl
마누엘 (1):
interactive: explicitly `fflush` stdout before expecting input
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.27.0-rc1
@ 2020-05-20 19:17 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-20 19:17 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.27.0-rc1 is now available for testing
at the usual places. It is comprised of 491 non-merge commits
since v2.26.0, contributed by 55 people, 16 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.27.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.26.0 are as follows.
Welcome to the Git development community!
Andras Kucsma, Ash Holland, Christopher Warrington, Emma
Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,
Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
Moschou, Vasil Dimov, and Yang Zhao.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Abhishek Kumar, Alban Gruin, Alexandr Miloslavskiy,
Alex Henrie, Andrei Rybak, Andrew Oakley, Ben Keene, brian
m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
Damien Robert, Denton Liu, Derrick Stolee, Đoàn Trần Công
Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Garima Singh,
Hans Jerry Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes
Schindelin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio
C Hamano, Martin Ågren, Matheus Tavares, Patrick Steinhardt,
Philippe Blain, Phillip Wood, René Scharfe, Shourya Shukla,
SZEDER Gábor, Taylor Blau, Thomas Gummerer, and Todd Zullinger.
----------------------------------------------------------------
Git 2.27 Release Notes (draft)
==============================
Updates since v2.26
-------------------
Backward compatibility notes
* When "git describe C" finds that commit C is pointed by a signed or
annotated tag, which records T as its tagname in the object, the
command gives T as its answer. Even if the user renames or moves
such a tag from its natural location in the "refs/tags/" hierarchy,
"git describe C" would still give T as the answer, but in such a
case "git show T^0" would no longer work as expected. There may be
nothing at "refs/tags/T" or even worse there may be a different tag
instead.
Starting from this version, "git describe" will always use the
"long" version, as if the "--long" option were given, when giving
its output based on such a misplaced tag to work around the problem.
* "git pull" issues a warning message until the pull.rebase
configuration variable is explicitly given, which some existing
users may find annoying---those who prefer not to rebase need to
set the variable to false to squelch the warning.
UI, Workflows & Features
* A handful of options to configure SSL when talking to proxies have
been added.
* Smudge/clean conversion filters are now given more information
(e.g. the object of the tree-ish in which the blob being converted
appears, in addition to its path, which has already been given).
* When "git describe C" finds an annotated tag with tagname A to be
the best name to explain commit C, and the tag is stored in a
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
command gave a warning message but used A (not B) to describe C.
If C is exactly at the tag, the describe output would be "A", but
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
behavior of the command has been changed to use the "long" form
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
* "git pull" learned to warn when no pull.rebase configuration
exists, and neither --[no-]rebase nor --ff-only is given (which
would result a merge).
* "git p4" learned four new hooks and also "--no-verify" option to
bypass them (and the existing "p4-pre-submit" hook).
* "git pull" shares many options with underlying "git fetch", but
some of them were not documented and some of those that would make
sense to pass down were not passed down.
* "git rebase" learned the "--no-gpg-sign" option to countermand
commit.gpgSign the user may have.
* The output from "git format-patch" uses RFC 2047 encoding for
non-ASCII letters on From: and Subject: headers, so that it can
directly be fed to e-mail programs. A new option has been added
to produce these headers in raw.
* "git log" learned "--show-pulls" that helps pathspec limited
history views; a merge commit that takes the whole change from a
side branch, which is normally omitted from the output, is shown
in addition to the commits that introduce real changes.
* The interactive input from various codepaths are consolidated and
any prompt possibly issued earlier are fflush()ed before we read.
* Allow "git rebase" to reapply all local commits, even if the may be
already in the upstream, without checking first.
* The 'pack.useSparse' configuration variable now defaults to 'true',
enabling an optimization that has been experimental since Git 2.21.
* "git rebase" happens to call some hooks meant for "checkout" and
"commit" by this was not a designed behaviour than historical
accident. This has been documented.
* "git merge" learns the "--autostash" option.
* "sparse-checkout" UI improvements.
* "git update-ref --stdin" learned a handful of new verbs to let the
user control ref update transactions more explicitly, which helps
as an ingredient to implement two-phase commit-style atomic
ref-updates across multiple repositories.
* "git commit-graph write" learned different ways to write out split
files.
* Introduce an extension to the commit-graph to make it efficient to
check for the paths that were modified at each commit using Bloom
filters.
* The approxidate parser learns to parse seconds with fraction and
ignore fractional part.
* The userdiff patterns for Markdown documents have been added.
* The sparse-checkout patterns have been forbidden from excluding all
paths, leaving an empty working tree, for a long time. This
limitation has been lifted.
* "git restore --staged --worktree" now defaults to take the contents
out of "HEAD", instead of erring out.
* "git p4" learned to recover from a (broken) state where a directory
and a file are recorded at the same path in the Perforce repository
the same way as their clients do.
* "git multi-pack-index repack" has been taught to honor some
repack.* configuration variables.
Performance, Internal Implementation, Development Support etc.
* The advise API has been revamped to allow more systematic enumeration of
advice knobs in the future.
* SHA-256 transition continues.
* The code to interface with GnuPG has been refactored.
* "git stash" has kept an escape hatch to use the scripted version
for a few releases, which got stale. It has been removed.
* Enable tests that require GnuPG on Windows.
* Minor test usability improvement.
* Trace2 enhancement to allow logging of the environment variables.
* Test clean-up continues.
* Perf-test update.
* A Windows-specific test element has been made more robust against
misuse from both user's environment and programmer's errors.
* Various tests have been updated to work around issues found with
shell utilities that come with busybox etc.
* The config API made mixed uses of int and size_t types to represent
length of various pieces of text it parsed, which has been updated
to use the correct type (i.e. size_t) throughout.
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
log" takes have learned a companion configuration variable
log.excludeDecoration that sits at the lowest priority in the
family.
* A new CI job to build and run test suite on linux with musl libc
has been added.
* Update the CI configuration to use GitHub Actions, retiring the one
based on Azure Pipelines.
* The directory traversal code had redundant recursive calls which
made its performance characteristics exponential with respect to
the depth of the tree, which was corrected.
* "git blame" learns to take advantage of the "changed-paths" Bloom
filter stored in the commit-graph file.
* The "bugreport" tool has been added.
* The object walk with object filter "--filter=tree:0" can now take
advantage of the pack bitmap when available.
* Instead of always building all branches at GitHub via Actions,
users can specify which branches to build.
* Codepaths that show progress meter have been taught to also use the
start_progress() and the stop_progress() calls as a "region" to be
traced.
* Instead of downloading Windows SDK for CI jobs for windows builds
from an external site (wingit.blob.core.windows.net), use the one
created in the windows-build job, to work around quota issues at
the external site.
Fixes since v2.26
-----------------
* The real_path() convenience function can easily be misused; with a
bit of code refactoring in the callers' side, its use has been
eliminated.
(merge 49d3c4b481 am/real-path-fix later to maint).
* Update "git p4" to work with Python 3.
(merge 6bb40ed20a yz/p4-py3 later to maint).
* The mechanism to prevent "git commit" from making an empty commit
or amending during an interrupted cherry-pick was broken during the
rewrite of "git rebase" in C, which has been corrected.
(merge 430b75f720 pw/advise-rebase-skip later to maint).
* Fix "git checkout --recurse-submodules" of a nested submodule
hierarchy.
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
* The "--fork-point" mode of "git rebase" regressed when the command
was rewritten in C back in 2.20 era, which has been corrected.
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
* The import-tars importer (in contrib/fast-import/) used to create
phony files at the top-level of the repository when the archive
contains global PAX headers, which made its own logic to detect and
omit the common leading directory ineffective, which has been
corrected.
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
* Simplify the commit ancestry connectedness check in a partial clone
repository in which "promised" objects are assumed to be obtainable
lazily on-demand from promisor remote repositories.
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
* The server-end of the v2 protocol to serve "git clone" and "git
fetch" was not prepared to see a delim packets at unexpected
places, which led to a crash.
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
* When fed a midx that records no objects, some codepaths tried to
loop from 0 through (num_objects-1), which, due to integer
arithmetic wrapping around, made it nonsense operation with out of
bounds array accesses. The code has been corrected to reject such
an midx file.
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
* Utitiles run via the run_command() API were not spawned correctly
on Cygwin, when the paths to them are given as a full path with
backslashes.
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
* "git pull --rebase" tried to run a rebase even after noticing that
the pull results in a fast-forward and no rebase is needed nor
sensible, for the past few years due to a mistake nobody noticed.
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
* "git rebase" with the merge backend did not work well when the
rebase.abbreviateCommands configuration was set.
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
* The logic to auto-follow tags by "git clone --single-branch" was
not careful to avoid lazy-fetching unnecessary tags, which has been
corrected.
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
* "git rebase -i" did not leave the reflog entries correctly.
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
* The more aggressive updates to remote-tracking branches we had for
the past 7 years or so were not reflected in the documentation,
which has been corrected.
(merge a44088435c pb/pull-fetch-doc later to maint).
* We've left the command line parsing of "git log :/a/b/" broken for
about a full year without anybody noticing, which has been
corrected.
(merge 0220461071 jc/missing-ref-store-fix later to maint).
* Misc fixes for Windows.
(merge 3efc128cd5 js/mingw-fixes later to maint).
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
the user to discard commits that are empty from the beginning (as
opposed to the ones that become empty because of rebasing). The
interactive rebase also marks commits that are empty in the todo.
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
* Parsing the host part out of URL for the credential helper has been corrected.
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
* Document the recommended way to abort a failing test early (e.g. by
exiting a loop), which is to say "return 1".
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
* The code that refreshes the last access and modified time of
on-disk packfiles and loose object files have been updated.
(merge 312cd76130 lr/freshen-file-fix later to maint).
* Validation of push certificate has been made more robust against
timing attacks.
(merge 719483e547 bc/constant-memequal later to maint).
* The custom hash function used by "git fast-import" has been
replaced with the one from hashmap.c, which gave us a nice
performance boost.
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
* The "git submodule" command did not initialize a few variables it
internally uses and was affected by variable settings leaked from
the environment.
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
* Raise the minimum required version of docbook-xsl package to 1.74,
as 1.74.0 was from late 2008, which is more than 10 years old, and
drop compatibility cruft from our documentation suite.
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
(merge 88acccda38 jc/log-no-mailmap later to maint).
* "git commit-graph write --expire-time=<timestamp>" did not use the
given timestamp correctly, which has been corrected.
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
* Tests update to use "test-chmtime" instead of "touch -t".
(merge e892a56845 ds/t5319-touch-fix later to maint).
* "git diff" in a partial clone learned to avoid lazy loading blob
objects in more casese when they are not needed.
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
* "git push --atomic" used to show failures for refs that weren't
even pushed, which has been corrected.
(merge dfe1b7f19c jx/atomic-push later to maint).
* Code in builtin/*, i.e. those can only be called from within
built-in subcommands, that implements bulk of a couple of
subcommands have been moved to libgit.a so that they could be used
by others.
(merge 9460fd48b5 dl/libify-a-few later to maint).
* Allowing the user to split a patch hunk while "git stash -p" does
not work well; a band-aid has been added to make this (partially)
work better.
* "git diff-tree --pretty --notes" used to hit an assertion failure,
as it forgot to initialize the notes subsystem.
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
* "git range-diff" fixes.
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
* "git grep" did not quote a path with unusual character like other
commands (like "git diff", "git status") do, but did quote when run
from a subdirectory, both of which has been corrected.
(merge 45115d8490 mt/grep-cquote-path later to maint).
* GNU/Hurd is also among the ones that need the fopen() wrapper.
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
* Those fetching over protocol v2 from linux-next and other kernel
repositories are reporting that v2 often fetches way too much than
needed.
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
* The upload-pack protocol v2 gave up too early before finding a
common ancestor, resulting in a wasteful fetch from a fork of a
project. This has been corrected to match the behaviour of v0
protocol.
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
* The build procedure did not use the libcurl library and its include
files correctly for a custom-built installation.
(merge 0573831950 jk/build-with-right-curl later to maint).
* Tighten "git mailinfo" to notice and error out when decoded result
contains NUL in it.
(merge 3919997447 dd/mailinfo-with-nul later to maint).
* Fix in-core inconsistency after fetching into a shallow repository
that broke the code to write out commit-graph.
(merge 37b9dcabfc tb/reset-shallow later to maint).
* The commit-graph code exhausted file descriptors easily when it
does not have to.
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
* The multi-pack-index left mmapped file descriptors open when it
does not have to.
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
* Recent update to Homebrew used by macOS folks breaks build by
moving gettext library and necessary headers.
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
* Incompatible options "--root" and "--fork-point" of "git rebase"
have been marked and documented as being incompatible.
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
* Error and verbose trace messages from "git push" did not redact
credential material embedded in URLs.
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
* Update the parser used for credential.<URL>.<variable>
configuration, to handle <URL>s with '/' in them correctly.
(merge b44d0118ac bc/wildcard-credential later to maint).
* Recent updates broke parsing of "credential.<url>.<key>" where
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
stopped working, which has been corrected.
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
(merge cd93e6c029 js/partial-urlmatch later to maint).
* Some of the files commit-graph subsystem keeps on disk did not
correctly honor the core.sharedRepository settings and some were
left read-write.
* In error messages that "git switch" mentions its option to create a
new branch, "-b/-B" options were shown, where "-c/-C" options
should be, which has been corrected.
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
* With the recent tightening of the code that is used to parse
various parts of a URL for use in the credential subsystem, a
hand-edited credential-store file causes the credential helper to
die, which is a bit too harsh to the users. Demote the error
behaviour to just ignore and keep using well-formed lines instead.
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
* The samples in the credential documentation has been updated to
make it clear that we depict what would appear in the .git/config
file, by adding appropriate quotes as needed..
(merge 177681a07e jk/credential-sample-update later to maint).
* "git branch" and other "for-each-ref" variants accepted multiple
--sort=<key> options in the increasing order of precedence, but it
had a few breakages around "--ignore-case" handling, and tie-breaking
with the refname, which have been fixed.
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
* The coding guideline for shell scripts instructed to refer to a
variable with dollar-sign inside arithmetic expansion to work
around a bug in old versions of dash, which is a thing of the past.
Now we are not forbidden from writing $((var+1)).
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
* The <stdlib.h> header on NetBSD brings in its own definition of
hmac() function (eek), which conflicts with our own and unrelated
function with the same name. Our function has been renamed to work
around the issue.
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
* The basic test did not honor $TEST_SHELL_PATH setting, which has
been corrected.
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
* Minor in-code comments and documentation updates around credential
API.
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
* Teach "am", "commit", "merge" and "rebase", when they are run with
the "--quiet" option, to pass "--quiet" down to "gc --auto".
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
* The code to skip unmerged paths in the index when sparse checkout
is in use would have made out-of-bound access of the in-core index
when the last path was unmerged, which has been corrected.
* Serving a "git fetch" client over "git://" and "ssh://" protocols
using the on-wire protocol version 2 was buggy on the server end
when the client needs to make a follow-up request to
e.g. auto-follow tags.
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
* "git bisect replay" had trouble with input files when they used
CRLF line ending, which has been corrected.
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
* "rebase -i" segfaulted when rearranging a sequence that has a
fix-up that applies another fix-up (which may or may not be a
fix-up of yet another step).
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
* "git fsck" ensures that the paths recorded in tree objects are
sorted and without duplicates, but it failed to notice a case where
a blob is followed by entries that sort before a tree with the same
name. This has been corrected.
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
* Code clean-up by removing a compatibility implementation of a
function we no longer use.
(merge 84b0115f0d cb/no-more-gmtime later to maint).
* When a binary file gets modified and renamed on both sides of history
to different locations, both files would be written to the working
tree but both would have the contents from "ours". This has been
corrected so that the path from each side gets their original content.
* Other code cleanup, docfix, build fix, etc.
(merge 564956f358 jc/maintain-doc later to maint).
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
(merge 8312aa7d74 jc/config-tar later to maint).
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
(merge 64d1022e14 ar/test-style-fixes later to maint).
(merge 4a465443a6 ds/doc-clone-filter later to maint).
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
(merge 2149b6748f bc/faq later to maint).
(merge 12dc0879f1 jk/test-cleanup later to maint).
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
(merge a1aba0c95c js/t0007-typofix later to maint).
(merge 76ba7fa225 ma/config-doc-fix later to maint).
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
(merge 4153274052 bc/doc-credential-helper-value later to maint).
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
----------------------------------------------------------------
Changes since v2.26.0 are as follows:
Abhishek Kumar (1):
commit-slab-decl.h: update include guard
Alban Gruin (3):
sequencer: mark messages for translation
sequencer: don't abbreviate a command if it doesn't have a short form
t3432: test `--merge' with `rebase.abbreviateCommands = true', too
Alex Henrie (1):
pull: warn if the user didn't say whether to rebase or to merge
Alexandr Miloslavskiy (4):
set_git_dir: fix crash when used with real_path()
real_path: remove unsafe API
real_path_if_valid(): remove unsafe API
get_superproject_working_tree(): return strbuf
Andras Kucsma (1):
run-command: trigger PATH lookup properly on Cygwin
Andrei Rybak (2):
t9500: remove spaces after redirect operators
t: fix whitespace around &&
Andrew Oakley (1):
git-p4: recover from inconsistent perforce history
Ash Holland (1):
userdiff: support Markdown
Ben Keene (8):
git-p4: change the expansion test from basestring to list
git-p4: rewrite prompt to be Windows compatible
git-p4: create new function run_git_hook
git-p4: add p4-pre-submit exit text
git-p4: add --no-verify option
git-p4: restructure code in submit
git-p4: add p4 submit hooks
git-p4: add RCS keyword status message
Carlo Marcelo Arenas Belón (9):
credential-store: ignore bogus lines from store file
credential: update description for credential_from_url_gently
credential: correct order of parameters for credential_match
builtin/receive-pack: avoid generic function name hmac()
t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
t/test_lib: avoid naked bash arrays in file_lineno
credential: update gitcredentials documentation
credential: document protocol updates
compat: remove gmtime
Christian Couder (1):
upload-pack: clear filter_options for each v2 fetch command
Christopher Warrington (1):
bisect: allow CRLF line endings in "git bisect replay" input
Damien Robert (6):
midx.c: fix an integer underflow
doc: list all commands affected by submodule.recurse
doc: document --recurse-submodules for reset and restore
doc: explain how to deactivate submodule.recurse completely
doc: be more precise on (fetch|push).recurseSubmodules
doc: --recurse-submodules mostly applies to active submodules
Denton Liu (45):
Makefile: ASCII-sort += lists
t7600: use test_write_lines()
Lib-ify fmt-merge-msg
Lib-ify prune-packed
t5512: don't use `test_must_fail test_cmp`
t5512: stop losing git exit code in here-docs
t5512: stop losing return codes of git commands
t5550: simplify no matching line check
t5607: reorder `nongit test_must_fail`
t5612: don't use `test_must_fail test_cmp`
t5612: stop losing return codes of git commands
t5801: teach compare_refs() to accept !
wrapper: indent with tabs
sequencer: stop leaking buf
sequencer: make file exists check more efficient
sequencer: make read_oneliner() accept flags
sequencer: configurably warn on non-existent files
sequencer: make read_oneliner() extern
rebase: use read_oneliner()
sequencer: make apply_autostash() accept a path
sequencer: rename stash_sha1 to stash_oid
rebase: use apply_autostash() from sequencer.c
rebase: generify reset_head()
reset: extract reset_head() from rebase
rebase: extract create_autostash()
rebase: generify create_autostash()
sequencer: extract perform_autostash() from rebase
sequencer: unlink autostash in apply_autostash()
sequencer: implement save_autostash()
sequencer: implement apply_autostash_oid()
merge: teach --autostash option
t5520: make test_pull_autostash() accept expect_parent_num
pull: pass --autostash to merge
t6030: use test_path_is_missing()
t7408: replace incorrect uses of test_must_fail
t7508: don't use `test_must_fail test_cmp`
t9141: use test_path_is_missing()
t9160: use test_path_is_missing()
t9164: use test_must_fail only on git commands
t9819: don't use test_must_fail with p4
Use OPT_CALLBACK and OPT_CALLBACK_F
push: unset PARSE_OPT_OPTARG for --recurse-submodules
rebase: save autostash entry into stash reflog on --quit
switch: fix errors and comments related to -c and -C
Doc: reference the "stash list" in autostash docs
Derrick Stolee (26):
connected.c: reprepare packs for corner cases
config: set pack.useSparse=true by default
pack-objects: flip the use of GIT_TEST_PACK_SPARSE
clone: document --filter options
diff: halt tree-diff early after max_changes
dir: refactor treat_directory to clarify control flow
commit-graph: fix buggy --expire-time option
t5319: replace 'touch -m' with 'test-tool chmtime'
bloom: ignore renames when computing changed paths
revision: --show-pulls adds helpful merges
log-tree: make ref_filter_match() a helper method
log: add log.excludeDecoration config option
revision: complicated pathspecs disable filters
tests: write commit-graph with Bloom filters
blame: use changed-path Bloom filters
multi-pack-index: close file descriptor after mmap
bloom: fix whitespace around tab length
test-bloom: fix usage typo
sparse-checkout: stop blocking empty workdirs
unpack-trees: avoid array out-of-bounds error
multi-pack-index: respect repack.packKeptObjects=false
bloom: parse commit before computing filters
Documentation: changed-path Bloom filters use byte words
bloom: de-duplicate directory entries
bloom: use num_changes not nr for limit detection
progress: call trace2_region_leave() only after calling _enter()
Elijah Newren (39):
oidset: remove unnecessary include
unpack-trees: fix minor typo in comment
unpack-trees: remove unused error type
unpack-trees: simplify verify_absent_sparse()
unpack-trees: simplify pattern_list freeing
t1091: make some tests a little more defensive against failures
unpack-trees: allow check_updates() to work on a different index
unpack-trees: do not mark a dirty path with SKIP_WORKTREE
unpack-trees: pull sparse-checkout pattern reading into a new function
unpack-trees: add a new update_sparsity() function
sparse-checkout: use new update_sparsity() function
sparse-checkout: use improved unpack_trees porcelain messages
unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
unpack-trees: split display_error_msgs() into two
unpack-trees: make sparse path messages sound like warnings
unpack-trees: provide warnings on sparse updates for unmerged paths too
unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
sparse-checkout: provide a new reapply subcommand
pull: avoid running both merge and rebase
t7063: more thorough status checking
t3000: add more testcases testing a variety of ls-files issues
dir: fix simple typo in comment
dir: consolidate treat_path() and treat_one_path()
dir: fix broken comment
dir: fix confusion based on variable tense
dir: replace exponential algorithm with a linear one
dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
dir: replace double pathspec matching with single in treat_directory()
Fix error-prone fill_directory() API; make it only return matches
completion: fix 'git add' on paths under an untracked directory
git-rebase.txt: add another hook to the hooks section, and explain more
sequencer: honor GIT_REFLOG_ACTION
rebase -i: mark commits that begin empty in todo editor
rebase: reinstate --no-keep-empty
rebase: fix an incompatible-options error message
rebase: display an error if --root and --fork-point are both provided
merge-recursive: fix rename/rename(1to2) for working tree with a binary
unpack-trees: also allow get_progress() to work on a different index
Emily Shaffer (8):
help: move list_config_help to builtin/help
bugreport: add tool to generate debugging info
bugreport: gather git version and build info
bugreport: add uname info
bugreport: add compiler info
bugreport: drop extraneous includes
bugreport: collect list of populated hooks
trace2: log progress time and throughput
Emma Brooks (3):
format-patch: teach --no-encode-email-headers
Documentation: explain "mboxrd" pretty format
gitweb: Recognize *-to and Closes/Fixes trailers
Eric Sunshine (1):
restore: default to HEAD when combining --staged and --worktree
Garima Singh (13):
commit-graph: define and use MAX_NUM_CHUNKS
bloom.c: add the murmur3 hash implementation
bloom.c: introduce core Bloom filter constructs
bloom.c: core Bloom filter implementation for changed paths.
commit-graph: compute Bloom filters for changed paths
commit-graph: examine commits by generation number
commit-graph: write Bloom filters to commit graph file
commit-graph: reuse existing Bloom filters during write
commit-graph: add --changed-paths option to write subcommand
revision.c: use Bloom filters to speed up path based revision walks
revision.c: add trace2 stats around Bloom filter usage
t4216: add end to end tests for git log with Bloom filters
commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag
Hans Jerry Illikainen (2):
t: increase test coverage of signature verification output
gpg-interface: prefer check_signature() for GPG verification
Heba Waly (4):
advice: extract vadvise() from advise()
advice: change "setupStreamFailure" to "setUpstreamFailure"
advice: revamp advise API
tag: use new advice API to check visibility
Jeff King (51):
credential: avoid writing values with newlines
t/lib-credential: use test_i18ncmp to check stderr
credential: detect unrepresentable values when parsing urls
fsck: detect gitmodules URLs with embedded newlines
t3419: drop EXPENSIVE tests
t/lib-credential.sh: drop shebang line
t/lib-*.sh: drop executable bit
test-lib-functions: make packetize() more efficient
upload-pack: handle unexpected delim packets
p5310: stop timing non-bitmap pack-to-disk
Makefile: avoid running curl-config multiple times
Makefile: use curl-config --cflags
test-lib-functions: simplify packetize() stdin code
commit-graph: examine changed-path objects in pack order
oid_array: use size_t for count and allocation
oid_array: use size_t for iteration
oid_array: rename source file from sha1-array
test-tool: rename sha1-array to oid-array
bisect: stop referring to sha1_array
ref-filter: stop referring to "sha1 array"
oidset: stop referring to sha1-array
clone: use "quick" lookup while following tags
Makefile: avoid running curl-config unnecessarily
fast-import: replace custom hash with hashmap.c
repository: mark the "refs" pointer as private
remote: drop auto-strlen behavior of make_branch() and make_rewrite()
parse_config_key(): return subsection len as size_t
config: drop useless length variable in write_pair()
git_config_parse_key(): return baselen as size_t
config: use size_t to store parsed variable baselen
config: reject parsing of files over INT_MAX
credential: treat "?" and "#" in URLs as end of host
t0300: make "quit" helper more realistic
t0300: use more realistic inputs
credential: parse URL without host as empty host, not unset
credential: refuse to operate when missing host or protocol
credential: die() when parsing invalid urls
Git 2.17.5
blame: drop unused parameter from maybe_changed_path
test-bloom: fix some whitespace issues
test-bloom: check that we have expected arguments
commit-graph: close descriptors after mmap
t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
gitcredentials(7): clarify quoting of helper examples
gitcredentials(7): make shell-snippet example more realistic
CodingGuidelines: drop arithmetic expansion advice to use "$x"
ref-filter: apply --ignore-case to all sorting keys
ref-filter: apply fallback refname sort only after all user sorts
list-objects-filter: treat NULL filter_options as "disabled"
pack-bitmap: pass object filter to fill-in traversal
ci: allow per-branch config for GitHub Actions
Jessica Clarke (1):
config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd
Jiang Xin (5):
send-pack: fix inconsistent porcelain output
t5543: never report what we do not push
send-pack: mark failure of atomic push properly
transport-helper: mark failure for atomic push
transport-helper: new method reject_atomic_push()
Johannes Schindelin (37):
cherry-pick: add test for `--skip` advice in `git commit`
tests(junit-xml): avoid invalid XML
import-tars: ignore the global PAX header
tests(gpg): allow the gpg-agent to start on Windows
t/lib-gpg.sh: stop pretending to be a stand-alone script
tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
tests: increase the verbosity of the GPG-related prereqs
MyFirstObjectWalk: remove unnecessary conditional statement
t0007: fix a typo
ci/lib: if CI type is unknown, show the environment variables
ci/lib: allow running in GitHub Actions
ci: fix the `jobname` of the `GETTEXT_POISON` job
subtree: fix build with AsciiDoctor 2
mingw: do not treat `COM0` as a reserved file name
t3904: fix incorrect demonstration of a bug
stash -p: (partially) fix bug concerning split hunks
mingw: help debugging by optionally executing bash with strace
interactive: refactor code asking the user for interactive input
ci: run gem with sudo to install asciidoctor
README: add a build badge for the GitHub Actions runs
ci: retire the Azure Pipelines definition
tests: when run in Bash, annotate test failures with file name/line number
ci: add a problem matcher for GitHub Actions
ci: let GitHub Actions upload failed tests' directories
t: consolidate the `is_hidden` functions
mingw: make test_path_is_hidden more robust
t: restrict `is_hidden` to be called only on Windows
credential: fix grammar
credential: optionally allow partial URLs in credential_from_url_gently()
credential: optionally allow partial URLs in credential_from_url_gently()
credential: handle `credential.<partial-URL>.<key>` again
macOS/brew: let the build find gettext headers/libraries/msgfmt
push: anonymize URLs in error messages and warnings
credential: handle `credential.<partial-URL>.<key>` again
rebase --autosquash: fix a potential segfault
ci: avoid pounding on the poor ci-artifacts container
Jonathan Nieder (5):
fsck: convert gitmodules url to URL passed to curl
credential: treat URL without scheme as invalid
credential: treat URL with empty scheme as invalid
fsck: reject URL with empty host in .gitmodules
Revert "fetch: default to protocol version 2"
Jonathan Tan (11):
connected: always use partial clone optimization
promisor-remote: accept 0 as oid_nr in function
diff: make diff_populate_filespec_options struct
diff: refactor object read
diff: restrict when prefetching occurs
rebase --merge: optionally skip upstreamed commits
fetch-pack: return enum from process_acks()
fetch-pack: in protocol v2, in_vain only after ACK
fetch-pack: in protocol v2, reset in_vain upon ACK
commit-graph: avoid memory leaks
t5500: count objects through stderr, not trace
Jorge Lopez Silva (2):
http: add client cert support for HTTPS proxies
http: add environment variable support for HTTPS proxies
Josh Steadmon (1):
trace2: teach Git to log environment variables
Julien Moutinho (1):
gitweb: fix UTF-8 encoding when using CGI::Fast
Junio C Hamano (31):
rebase: --fork-point regression fix
describe: force long format for a name based on a mislocated tag
update how-to-maintain-git
parse-options: teach "git cmd -h" to show alias as alias
clone: reorder --recursive/--recurse-submodules
log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
Git 2.17.4
separate tar.* config to its own source file
The first batch post 2.26 cycle
The second batch post 2.26 cycle
t/README: suggest how to leave test early with failure
CodingGuidelines: allow ${#posix} == strlen($posix)
sha1-name: do not assume that the ref store is initialized
receive-pack: compilation fix
The third batch
The fourth batch
credential-store: document the file format a bit more
Revert "commit-graph.c: introduce '--[no-]check-oids'"
The fifth batch
The sixth batch
The seventh batch
auto-gc: extract a reusable helper from "git fetch"
auto-gc: pass --quiet down from am, commit, merge and rebase
CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
The eighth batch
The ninth batch
Git 2.27-rc0
Revert "t/test_lib: avoid naked bash arrays in file_lineno"
Revert "ci: add a problem matcher for GitHub Actions"
Revert "tests: when run in Bash, annotate test failures with file name/line number"
Git 2.27-rc1
Li Xuejiang (1):
git-submodule.sh: setup uninitialized variables
Martin Ågren (9):
Doc: drop support for docbook-xsl before 1.71.1
Doc: drop support for docbook-xsl before 1.72.0
Doc: drop support for docbook-xsl before 1.73.0
manpage-bold-literal.xsl: stop using git.docbook.backslash
manpage-normal.xsl: fold in manpage-base.xsl
INSTALL: drop support for docbook-xsl before 1.74
user-manual.conf: don't specify [listingblock]
config.txt: move closing "----" to cover entire listing
merge: use skip_prefix to parse config key
Matheus Tavares (3):
test-lib: allow short options to be bundled
grep: follow conventions for printing paths w/ unusual chars
config doc: fix reference to config.worktree info
Matthias Aßhauer (1):
mingw: use modern strftime implementation if possible
Michael F. Schönitzer (1):
docs: fix minor glitch in illustration
Nathan Sanders (1):
mingw: cope with the Isilon network file system
Patrick Steinhardt (9):
refs: fix segfault when aborting empty transaction
git-update-ref.txt: add missing word
strbuf: provide function to append whole lines
update-ref: organize commands in an array
update-ref: drop unused argument for `parse_refname`
update-ref: pass end pointer instead of strbuf
update-ref: move transaction handling into `update_refs_stdin()`
update-ref: read commands in a line-wise fashion
update-ref: implement interactive transaction handling
Philippe Blain (9):
t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
t/lib-submodule-update: remove outdated test description
t/lib-submodule-update: move a test to the right section
unpack-trees: remove outdated description for verify_clean_submodule
unpack-trees: check for missing submodule directory in merged_entry
t/lib-submodule-update: add test removing nested submodules
git-rebase.txt: fix typo
pull doc: refer to a specific section in 'fetch' doc
pull doc: correct outdated description of an example
Phillip Wood (6):
t3404: use test_cmp_rev
cherry-pick: check commit error messages
sequencer: write CHERRY_PICK_HEAD for reword and edit
commit: use enum value for multiple cherry-picks
commit: encapsulate determine_whence() for sequencer
commit: give correct advice for empty commit during a rebase
René Scharfe (4):
pull: document more passthru options
pull: remove --update-head-ok from documentation
pull: pass documented fetch options on
fsck: report non-consecutive duplicate names in trees
SZEDER Gábor (4):
ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
commit-slab: clarify slabname##_peek()'s return value
ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
completion: offer '--(no-)patch' among 'git log' options
Shourya Shukla (4):
submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
gitfaq: files in .gitignore are tracked
gitfaq: fetching and pulling a repository
submodule: port subcommand 'set-url' from shell to C
Son Luong Ngoc (1):
midx: teach "git multi-pack-index repack" honor "git repack" configurations
Taylor Blau (24):
t/helper/test-read-graph.c: support commit-graph chains
builtin/commit-graph.c: support for '--split[=<strategy>]'
builtin/commit-graph.c: introduce split strategy 'no-merge'
builtin/commit-graph.c: introduce split strategy 'replace'
oidset: introduce 'oidset_size'
commit-graph.h: replace 'commit_hex' with 'commits'
commit-graph.c: introduce '--[no-]check-oids'
diff-tree.c: load notes machinery when required
commit-graph.c: don't use discarded graph_name in error
t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
commit-graph.c: gracefully handle file descriptor exhaustion
t5537: use test_write_lines and indented heredocs for readability
shallow.c: use '{commit,rollback}_shallow_file'
tempfile.c: introduce 'create_tempfile_mode'
lockfile.c: introduce 'hold_lock_file_for_update_mode'
commit-graph.c: write non-split graphs as read-only
commit-graph.c: ensure graph layers respect core.sharedRepository
commit-graph.c: make 'commit-graph-chain's read-only
commit: make 'commit_graft_pos' non-static
shallow: extract a header file for shallow-related functions
shallow.h: document '{commit,rollback}_shallow_file'
shallow: use struct 'shallow_lock' for additional safety
pack-bitmap.c: make object filtering functions generic
pack-bitmap.c: support 'tree:0' filtering
Terry Moschou (1):
complete: zsh: add missing sub cmd completion candidates
Thomas Gummerer (2):
stash: get git_stash_config at the top level
stash: remove the stash.useBuiltin setting
Todd Zullinger (1):
git-bugreport.txt: adjust reference to strftime(3)
Vasil Dimov (2):
range-diff: fix a crash in parsing git-log output
range-diff: avoid negative string precision
Yang Zhao (12):
git-p4: make python2.7 the oldest supported version
git-p4: remove string type aliasing
git-p4: encode/decode communication with p4 for python3
git-p4: encode/decode communication with git for python3
git-p4: convert path to unicode before processing them
git-p4: open .gitp4-usercache.txt in text mode
git-p4: use marshal format version 2 when sending to p4
git-p4: fix freezing while waiting for fast-import progress
git-p4: use functools.reduce instead of reduce
git-p4: use dict.items() iteration for python3 compatibility
git-p4: simplify regex pattern generation for parsing diff-tree
git-p4: use python3's input() everywhere
brian m. carlson (34):
builtin/pack-objects: make hash agnostic
hash: implement and use a context cloning function
hex: introduce parsing variants taking hash algorithms
hex: add functions to parse hex object IDs in any algorithm
repository: require a build flag to use SHA-256
t: use hash-specific lookup tables to define test constants
t6300: abstract away SHA-1-specific constants
t6300: make hash algorithm independent
t/helper/test-dump-split-index: initialize git repository
t/helper: initialize repository if necessary
t/helper: make repository tests hash independent
setup: allow check_repository_format to read repository format
builtin/init-db: allow specifying hash algorithm on command line
builtin/init-db: add environment variable for new repo hash
init-db: move writing repo version into a function
worktree: allow repository version 1
commit: use expected signature header for SHA-256
fast-import: permit reading multiple marks files
fast-import: add helper function for inserting mark object entries
fast-import: make find_marks work on any mark set
fast-import: add a generic function to iterate over marks
fast-import: add options for rewriting submodules
builtin/checkout: pass branch info down to checkout_worktree
convert: permit passing additional metadata to filter processes
convert: provide additional metadata to filters
builtin/checkout: compute checkout metadata for checkouts
builtin/clone: compute checkout metadata for clones
builtin/rebase: compute checkout metadata for rebases
builtin/reset: compute checkout metadata for reset
t0021: test filter metadata for additional cases
docs: add a FAQ
builtin/receive-pack: use constant-time comparison for HMAC value
credential: fix matching URLs with multiple levels in path
docs: document credential.helper allowed values
luciano.rocha@booking.com (1):
freshen_file(): use NULL `times' for implicit current-time
Đoàn Trần Công Danh (35):
t4061: use POSIX compliant regex(7)
test-lib-functions: test_cmp: eval $GIT_TEST_CMP
t5003: drop the subshell in test_lazy_prereq
t5003: skip conversion test if unzip -a is unavailable
t5616: use rev-parse instead to get HEAD's object_id
t7063: drop non-POSIX argument "-ls" from find(1)
t4124: tweak test so that non-compliant diff(1) can also be used
t5703: feed raw data into test-tool unpack-sideband
rebase.c: honour --no-gpg-sign
cherry-pick/revert: honour --no-gpg-sign in all case
Documentation: document am --no-gpg-sign
Documentation: reword commit --no-gpg-sign
Documentation: merge commit-tree --[no-]gpg-sign
Documentation: document merge option --no-gpg-sign
ci/lib-docker: preserve required environment variables
ci/linux32: parameterise command to switch arch
ci: refactor docker runner script
ci/linux32: libify install-dependencies step
travis: build and test on Linux with musl libc and busybox
ci/lib: set TERM environment variable if not exist
ci: explicit install all required packages
ci: configure GitHub Actions for CI/PR
t4254: merge 2 steps of a single test
mailinfo.c: avoid strlen on strings that can contains NUL
mailinfo: disallow NUL character in mail's header
date.c: s/is_date/set_date/
date.c: validate and set time in a helper function
date.c: skip fractional second part of ISO-8601
date.c: allow compact version of ISO-8601 datetime
test-parse-pathspec-file.c: s/0/NULL/ for pointer type
compat/regex: move stdlib.h up in inclusion chain
graph.c: limit linkage of internal variable
progress.c: silence cgcc suggestion about internal linkage
bloom: fix `make sparse` warning
t1509: correct i18n test
마누엘 (1):
interactive: explicitly `fflush` stdout before expecting input
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.27.0-rc0
@ 2020-05-14 23:28 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-14 23:28 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.27.0-rc0 is now available for
testing at the usual places. It is comprised of 479 non-merge
commits since v2.26.0, contributed by 53 people, 16 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.27.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.26.0 are as follows.
Welcome to the Git development community!
Andras Kucsma, Ash Holland, Christopher Warrington, Emma
Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,
Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
Moschou, Vasil Dimov, and Yang Zhao.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Alban Gruin, Alexandr Miloslavskiy, Alex Henrie,
Andrei Rybak, Andrew Oakley, Ben Keene, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Damien Robert,
Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric Sunshine, Garima Singh, Hans Jerry
Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes Schindelin,
Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Martin Ågren, Matheus Tavares, Patrick Steinhardt, Philippe
Blain, Phillip Wood, René Scharfe, Shourya Shukla, SZEDER
Gábor, Taylor Blau, and Thomas Gummerer.
----------------------------------------------------------------
Git 2.27 Release Notes (draft)
==============================
Updates since v2.26
-------------------
Backward compatibility notes
* When "git describe C" finds that commit C is pointed by a signed or
annotated tag, which records T as its tagname in the object, the
command gives T as its answer. Even if the user renames or moves
such a tag from its natural location in the "refs/tags/" hierarchy,
"git describe C" would still give T as the answer, but in such a
case "git show T^0" would no longer work as expected. There may be
nothing at "refs/tags/T" or even worse there may be a different tag
instead.
Starting from this version, "git describe" will always use the
"long" version, as if the "--long" option were given, when giving
its output based on such a misplaced tag to work around the problem.
* "git pull" issues a warning message until the pull.rebase
configuration variable is explicitly given, which some existing
users may find annoying---those who prefer not to rebase need to
set the variable to false to squelch the warning.
UI, Workflows & Features
* A handful of options to configure SSL when talking to proxies have
been added.
* Smudge/clean conversion filters are now given more information
(e.g. the object of the tree-ish in which the blob being converted
appears, in addition to its path, which has already been given).
* When "git describe C" finds an annotated tag with tagname A to be
the best name to explain commit C, and the tag is stored in a
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
command gave a warning message but used A (not B) to describe C.
If C is exactly at the tag, the describe output would be "A", but
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
behavior of the command has been changed to use the "long" form
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
* "git pull" learned to warn when no pull.rebase configuration
exists, and neither --[no-]rebase nor --ff-only is given (which
would result a merge).
* "git p4" learned four new hooks and also "--no-verify" option to
bypass them (and the existing "p4-pre-submit" hook).
* "git pull" shares many options with underlying "git fetch", but
some of them were not documented and some of those that would make
sense to pass down were not passed down.
* "git rebase" learned the "--no-gpg-sign" option to countermand
commit.gpgSign the user may have.
* The output from "git format-patch" uses RFC 2047 encoding for
non-ASCII letters on From: and Subject: headers, so that it can
directly be fed to e-mail programs. A new option has been added
to produce these headers in raw.
* "git log" learned "--show-pulls" that helps pathspec limited
history views; a merge commit that takes the whole change from a
side branch, which is normally omitted from the output, is shown
in addition to the commits that introduce real changes.
* The interactive input from various codepaths are consolidated and
any prompt possibly issued earlier are fflush()ed before we read.
* Allow "git rebase" to reapply all local commits, even if the may be
already in the upstream, without checking first.
* The 'pack.useSparse' configuration variable now defaults to 'true',
enabling an optimization that has been experimental since Git 2.21.
* "git rebase" happens to call some hooks meant for "checkout" and
"commit" by this was not a designed behaviour than historical
accident. This has been documented.
* "git merge" learns the "--autostash" option.
* "sparse-checkout" UI improvements.
* "git update-ref --stdin" learned a handful of new verbs to let the
user control ref update transactions more explicitly, which helps
as an ingredient to implement two-phase commit-style atomic
ref-updates across multiple repositories.
* "git commit-graph write" learned different ways to write out split
files.
* Introduce an extension to the commit-graph to make it efficient to
check for the paths that were modified at each commit using Bloom
filters.
* The approxidate parser learns to parse seconds with fraction and
ignore fractional part.
* The userdiff patterns for Markdown documents have been added.
* The sparse-checkout patterns have been forbidden from excluding all
paths, leaving an empty working tree, for a long time. This
limitation has been lifted.
* "git restore --staged --worktree" now defaults to take the contents
out of "HEAD", instead of erring out.
* "git p4" learned to recover from a (broken) state where a directory
and a file are recorded at the same path in the Perforce repository
the same way as their clients do.
* "git multi-pack-index repack" has been taught to honor some
repack.* configuration variables.
Performance, Internal Implementation, Development Support etc.
* The advise API has been revamped to allow more systematic enumeration of
advice knobs in the future.
* SHA-256 transition continues.
* The code to interface with GnuPG has been refactored.
* "git stash" has kept an escape hatch to use the scripted version
for a few releases, which got stale. It has been removed.
* Enable tests that require GnuPG on Windows.
* Minor test usability improvement.
* Trace2 enhancement to allow logging of the environment variables.
* Test clean-up continues.
* Perf-test update.
* A Windows-specific test element has been made more robust against
misuse from both user's environment and programmer's errors.
* Various tests have been updated to work around issues found with
shell utilities that come with busybox etc.
* The config API made mixed uses of int and size_t types to represent
length of various pieces of text it parsed, which has been updated
to use the correct type (i.e. size_t) throughout.
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
log" takes have learned a companion configuration variable
log.excludeDecoration that sits at the lowest priority in the
family.
* A new CI job to build and run test suite on linux with musl libc
has been added.
* Update the CI configuration to use GitHub Actions, retiring the one
based on Azure Pipelines.
* The directory traversal code had redundant recursive calls which
made its performance characteristics exponential with respect to
the depth of the tree, which was corrected.
* "git blame" learns to take advantage of the "changed-paths" Bloom
filter stored in the commit-graph file.
* The "bugreport" tool has been added.
* The object walk with object filter "--filter=tree:0" can now take
advantage of the pack bitmap when available.
* Instead of always building all branches at GitHub via Actions,
users can specify which branches to build.
* Codepaths that show progress meter have been taught to also use the
start_progress() and the stop_progress() calls as a "region" to be
traced.
Fixes since v2.26
-----------------
* The real_path() convenience function can easily be misused; with a
bit of code refactoring in the callers' side, its use has been
eliminated.
(merge 49d3c4b481 am/real-path-fix later to maint).
* Update "git p4" to work with Python 3.
(merge 6bb40ed20a yz/p4-py3 later to maint).
* The mechanism to prevent "git commit" from making an empty commit
or amending during an interrupted cherry-pick was broken during the
rewrite of "git rebase" in C, which has been corrected.
(merge 430b75f720 pw/advise-rebase-skip later to maint).
* Fix "git checkout --recurse-submodules" of a nested submodule
hierarchy.
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
* The "--fork-point" mode of "git rebase" regressed when the command
was rewritten in C back in 2.20 era, which has been corrected.
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
* The import-tars importer (in contrib/fast-import/) used to create
phony files at the top-level of the repository when the archive
contains global PAX headers, which made its own logic to detect and
omit the common leading directory ineffective, which has been
corrected.
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
* Simplify the commit ancestry connectedness check in a partial clone
repository in which "promised" objects are assumed to be obtainable
lazily on-demand from promisor remote repositories.
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
* The server-end of the v2 protocol to serve "git clone" and "git
fetch" was not prepared to see a delim packets at unexpected
places, which led to a crash.
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
* When fed a midx that records no objects, some codepaths tried to
loop from 0 through (num_objects-1), which, due to integer
arithmetic wrapping around, made it nonsense operation with out of
bounds array accesses. The code has been corrected to reject such
an midx file.
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
* Utitiles run via the run_command() API were not spawned correctly
on Cygwin, when the paths to them are given as a full path with
backslashes.
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
* "git pull --rebase" tried to run a rebase even after noticing that
the pull results in a fast-forward and no rebase is needed nor
sensible, for the past few years due to a mistake nobody noticed.
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
* "git rebase" with the merge backend did not work well when the
rebase.abbreviateCommands configuration was set.
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
* The logic to auto-follow tags by "git clone --single-branch" was
not careful to avoid lazy-fetching unnecessary tags, which has been
corrected.
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
* "git rebase -i" did not leave the reflog entries correctly.
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
* The more aggressive updates to remote-tracking branches we had for
the past 7 years or so were not reflected in the documentation,
which has been corrected.
(merge a44088435c pb/pull-fetch-doc later to maint).
* We've left the command line parsing of "git log :/a/b/" broken for
about a full year without anybody noticing, which has been
corrected.
(merge 0220461071 jc/missing-ref-store-fix later to maint).
* Misc fixes for Windows.
(merge 3efc128cd5 js/mingw-fixes later to maint).
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
the user to discard commits that are empty from the beginning (as
opposed to the ones that become empty because of rebasing). The
interactive rebase also marks commits that are empty in the todo.
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
* Parsing the host part out of URL for the credential helper has been corrected.
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
* Document the recommended way to abort a failing test early (e.g. by
exiting a loop), which is to say "return 1".
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
* The code that refreshes the last access and modified time of
on-disk packfiles and loose object files have been updated.
(merge 312cd76130 lr/freshen-file-fix later to maint).
* Validation of push certificate has been made more robust against
timing attacks.
(merge 719483e547 bc/constant-memequal later to maint).
* The custom hash function used by "git fast-import" has been
replaced with the one from hashmap.c, which gave us a nice
performance boost.
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
* The "git submodule" command did not initialize a few variables it
internally uses and was affected by variable settings leaked from
the environment.
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
* Raise the minimum required version of docbook-xsl package to 1.74,
as 1.74.0 was from late 2008, which is more than 10 years old, and
drop compatibility cruft from our documentation suite.
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
(merge 88acccda38 jc/log-no-mailmap later to maint).
* "git commit-graph write --expire-time=<timestamp>" did not use the
given timestamp correctly, which has been corrected.
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
* Tests update to use "test-chmtime" instead of "touch -t".
(merge e892a56845 ds/t5319-touch-fix later to maint).
* "git diff" in a partial clone learned to avoid lazy loading blob
objects in more casese when they are not needed.
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
* "git push --atomic" used to show failures for refs that weren't
even pushed, which has been corrected.
(merge dfe1b7f19c jx/atomic-push later to maint).
* Code in builtin/*, i.e. those can only be called from within
built-in subcommands, that implements bulk of a couple of
subcommands have been moved to libgit.a so that they could be used
by others.
(merge 9460fd48b5 dl/libify-a-few later to maint).
* Allowing the user to split a patch hunk while "git stash -p" does
not work well; a band-aid has been added to make this (partially)
work better.
* "git diff-tree --pretty --notes" used to hit an assertion failure,
as it forgot to initialize the notes subsystem.
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
* "git range-diff" fixes.
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
* "git grep" did not quote a path with unusual character like other
commands (like "git diff", "git status") do, but did quote when run
from a subdirectory, both of which has been corrected.
(merge 45115d8490 mt/grep-cquote-path later to maint).
* GNU/Hurd is also among the ones that need the fopen() wrapper.
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
* Those fetching over protocol v2 from linux-next and other kernel
repositories are reporting that v2 often fetches way too much than
needed.
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
* The upload-pack protocol v2 gave up too early before finding a
common ancestor, resulting in a wasteful fetch from a fork of a
project. This has been corrected to match the behaviour of v0
protocol.
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
* The build procedure did not use the libcurl library and its include
files correctly for a custom-built installation.
(merge 0573831950 jk/build-with-right-curl later to maint).
* Tighten "git mailinfo" to notice and error out when decoded result
contains NUL in it.
(merge 3919997447 dd/mailinfo-with-nul later to maint).
* Fix in-core inconsistency after fetching into a shallow repository
that broke the code to write out commit-graph.
(merge 37b9dcabfc tb/reset-shallow later to maint).
* The commit-graph code exhausted file descriptors easily when it
does not have to.
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
* The multi-pack-index left mmapped file descriptors open when it
does not have to.
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
* Recent update to Homebrew used by macOS folks breaks build by
moving gettext library and necessary headers.
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
* Incompatible options "--root" and "--fork-point" of "git rebase"
have been marked and documented as being incompatible.
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
* Error and verbose trace messages from "git push" did not redact
credential material embedded in URLs.
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
* Update the parser used for credential.<URL>.<variable>
configuration, to handle <URL>s with '/' in them correctly.
(merge b44d0118ac bc/wildcard-credential later to maint).
* Recent updates broke parsing of "credential.<url>.<key>" where
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
stopped working, which has been corrected.
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
(merge cd93e6c029 js/partial-urlmatch later to maint).
* Some of the files commit-graph subsystem keeps on disk did not
correctly honor the core.sharedRepository settings and some were
left read-write.
* In error messages that "git switch" mentions its option to create a
new branch, "-b/-B" options were shown, where "-c/-C" options
should be, which has been corrected.
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
* With the recent tightening of the code that is used to parse
various parts of a URL for use in the credential subsystem, a
hand-edited credential-store file causes the credential helper to
die, which is a bit too harsh to the users. Demote the error
behaviour to just ignore and keep using well-formed lines instead.
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
* The samples in the credential documentation has been updated to
make it clear that we depict what would appear in the .git/config
file, by adding appropriate quotes as needed..
(merge 177681a07e jk/credential-sample-update later to maint).
* "git branch" and other "for-each-ref" variants accepted multiple
--sort=<key> options in the increasing order of precedence, but it
had a few breakages around "--ignore-case" handling, and tie-breaking
with the refname, which have been fixed.
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
* The coding guideline for shell scripts instructed to refer to a
variable with dollar-sign inside arithmetic expansion to work
around a bug in old versions of dash, which is a thing of the past.
Now we are not forbidden from writing $((var+1)).
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
* The <stdlib.h> header on NetBSD brings in its own definition of
hmac() function (eek), which conflicts with our own and unrelated
function with the same name. Our function has been renamed to work
around the issue.
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
* The basic test did not honor $TEST_SHELL_PATH setting, which has
been corrected.
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
* Minor in-code comments and documentation updates around credential
API.
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
* Teach "am", "commit", "merge" and "rebase", when they are run with
the "--quiet" option, to pass "--quiet" down to "gc --auto".
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
* The code to skip unmerged paths in the index when sparse checkout
is in use would have made out-of-bound access of the in-core index
when the last path was unmerged, which has been corrected.
* Serving a "git fetch" client over "git://" and "ssh://" protocols
using the on-wire protocol version 2 was buggy on the server end
when the client needs to make a follow-up request to
e.g. auto-follow tags.
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
* "git bisect replay" had trouble with input files when they used
CRLF line ending, which has been corrected.
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
* "rebase -i" segfaulted when rearranging a sequence that has a
fix-up that applies another fix-up (which may or may not be a
fix-up of yet another step).
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
* "git fsck" ensures that the paths recorded in tree objects are
sorted and without duplicates, but it failed to notice a case where
a blob is followed by entries that sort before a tree with the same
name. This has been corrected.
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 564956f358 jc/maintain-doc later to maint).
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
(merge 8312aa7d74 jc/config-tar later to maint).
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
(merge 64d1022e14 ar/test-style-fixes later to maint).
(merge 4a465443a6 ds/doc-clone-filter later to maint).
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
(merge 2149b6748f bc/faq later to maint).
(merge 12dc0879f1 jk/test-cleanup later to maint).
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
(merge a1aba0c95c js/t0007-typofix later to maint).
(merge 76ba7fa225 ma/config-doc-fix later to maint).
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
(merge 4153274052 bc/doc-credential-helper-value later to maint).
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
----------------------------------------------------------------
Changes since v2.26.0 are as follows:
Alban Gruin (3):
sequencer: mark messages for translation
sequencer: don't abbreviate a command if it doesn't have a short form
t3432: test `--merge' with `rebase.abbreviateCommands = true', too
Alex Henrie (1):
pull: warn if the user didn't say whether to rebase or to merge
Alexandr Miloslavskiy (4):
set_git_dir: fix crash when used with real_path()
real_path: remove unsafe API
real_path_if_valid(): remove unsafe API
get_superproject_working_tree(): return strbuf
Andras Kucsma (1):
run-command: trigger PATH lookup properly on Cygwin
Andrei Rybak (2):
t9500: remove spaces after redirect operators
t: fix whitespace around &&
Andrew Oakley (1):
git-p4: recover from inconsistent perforce history
Ash Holland (1):
userdiff: support Markdown
Ben Keene (8):
git-p4: change the expansion test from basestring to list
git-p4: rewrite prompt to be Windows compatible
git-p4: create new function run_git_hook
git-p4: add p4-pre-submit exit text
git-p4: add --no-verify option
git-p4: restructure code in submit
git-p4: add p4 submit hooks
git-p4: add RCS keyword status message
Carlo Marcelo Arenas Belón (8):
credential-store: ignore bogus lines from store file
credential: update description for credential_from_url_gently
credential: correct order of parameters for credential_match
builtin/receive-pack: avoid generic function name hmac()
t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
t/test_lib: avoid naked bash arrays in file_lineno
credential: update gitcredentials documentation
credential: document protocol updates
Christian Couder (1):
upload-pack: clear filter_options for each v2 fetch command
Christopher Warrington (1):
bisect: allow CRLF line endings in "git bisect replay" input
Damien Robert (6):
midx.c: fix an integer underflow
doc: list all commands affected by submodule.recurse
doc: document --recurse-submodules for reset and restore
doc: explain how to deactivate submodule.recurse completely
doc: be more precise on (fetch|push).recurseSubmodules
doc: --recurse-submodules mostly applies to active submodules
Denton Liu (45):
Makefile: ASCII-sort += lists
t7600: use test_write_lines()
Lib-ify fmt-merge-msg
Lib-ify prune-packed
t5512: don't use `test_must_fail test_cmp`
t5512: stop losing git exit code in here-docs
t5512: stop losing return codes of git commands
t5550: simplify no matching line check
t5607: reorder `nongit test_must_fail`
t5612: don't use `test_must_fail test_cmp`
t5612: stop losing return codes of git commands
t5801: teach compare_refs() to accept !
wrapper: indent with tabs
sequencer: stop leaking buf
sequencer: make file exists check more efficient
sequencer: make read_oneliner() accept flags
sequencer: configurably warn on non-existent files
sequencer: make read_oneliner() extern
rebase: use read_oneliner()
sequencer: make apply_autostash() accept a path
sequencer: rename stash_sha1 to stash_oid
rebase: use apply_autostash() from sequencer.c
rebase: generify reset_head()
reset: extract reset_head() from rebase
rebase: extract create_autostash()
rebase: generify create_autostash()
sequencer: extract perform_autostash() from rebase
sequencer: unlink autostash in apply_autostash()
sequencer: implement save_autostash()
sequencer: implement apply_autostash_oid()
merge: teach --autostash option
t5520: make test_pull_autostash() accept expect_parent_num
pull: pass --autostash to merge
t6030: use test_path_is_missing()
t7408: replace incorrect uses of test_must_fail
t7508: don't use `test_must_fail test_cmp`
t9141: use test_path_is_missing()
t9160: use test_path_is_missing()
t9164: use test_must_fail only on git commands
t9819: don't use test_must_fail with p4
Use OPT_CALLBACK and OPT_CALLBACK_F
push: unset PARSE_OPT_OPTARG for --recurse-submodules
rebase: save autostash entry into stash reflog on --quit
switch: fix errors and comments related to -c and -C
Doc: reference the "stash list" in autostash docs
Derrick Stolee (25):
connected.c: reprepare packs for corner cases
config: set pack.useSparse=true by default
pack-objects: flip the use of GIT_TEST_PACK_SPARSE
clone: document --filter options
diff: halt tree-diff early after max_changes
dir: refactor treat_directory to clarify control flow
commit-graph: fix buggy --expire-time option
t5319: replace 'touch -m' with 'test-tool chmtime'
bloom: ignore renames when computing changed paths
revision: --show-pulls adds helpful merges
log-tree: make ref_filter_match() a helper method
log: add log.excludeDecoration config option
revision: complicated pathspecs disable filters
tests: write commit-graph with Bloom filters
blame: use changed-path Bloom filters
multi-pack-index: close file descriptor after mmap
bloom: fix whitespace around tab length
test-bloom: fix usage typo
sparse-checkout: stop blocking empty workdirs
unpack-trees: avoid array out-of-bounds error
multi-pack-index: respect repack.packKeptObjects=false
bloom: parse commit before computing filters
Documentation: changed-path Bloom filters use byte words
bloom: de-duplicate directory entries
bloom: use num_changes not nr for limit detection
Elijah Newren (37):
oidset: remove unnecessary include
unpack-trees: fix minor typo in comment
unpack-trees: remove unused error type
unpack-trees: simplify verify_absent_sparse()
unpack-trees: simplify pattern_list freeing
t1091: make some tests a little more defensive against failures
unpack-trees: allow check_updates() to work on a different index
unpack-trees: do not mark a dirty path with SKIP_WORKTREE
unpack-trees: pull sparse-checkout pattern reading into a new function
unpack-trees: add a new update_sparsity() function
sparse-checkout: use new update_sparsity() function
sparse-checkout: use improved unpack_trees porcelain messages
unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
unpack-trees: split display_error_msgs() into two
unpack-trees: make sparse path messages sound like warnings
unpack-trees: provide warnings on sparse updates for unmerged paths too
unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
sparse-checkout: provide a new reapply subcommand
pull: avoid running both merge and rebase
t7063: more thorough status checking
t3000: add more testcases testing a variety of ls-files issues
dir: fix simple typo in comment
dir: consolidate treat_path() and treat_one_path()
dir: fix broken comment
dir: fix confusion based on variable tense
dir: replace exponential algorithm with a linear one
dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
dir: replace double pathspec matching with single in treat_directory()
Fix error-prone fill_directory() API; make it only return matches
completion: fix 'git add' on paths under an untracked directory
git-rebase.txt: add another hook to the hooks section, and explain more
sequencer: honor GIT_REFLOG_ACTION
rebase -i: mark commits that begin empty in todo editor
rebase: reinstate --no-keep-empty
rebase: fix an incompatible-options error message
rebase: display an error if --root and --fork-point are both provided
Emily Shaffer (8):
help: move list_config_help to builtin/help
bugreport: add tool to generate debugging info
bugreport: gather git version and build info
bugreport: add uname info
bugreport: add compiler info
bugreport: drop extraneous includes
bugreport: collect list of populated hooks
trace2: log progress time and throughput
Emma Brooks (3):
format-patch: teach --no-encode-email-headers
Documentation: explain "mboxrd" pretty format
gitweb: Recognize *-to and Closes/Fixes trailers
Eric Sunshine (1):
restore: default to HEAD when combining --staged and --worktree
Garima Singh (13):
commit-graph: define and use MAX_NUM_CHUNKS
bloom.c: add the murmur3 hash implementation
bloom.c: introduce core Bloom filter constructs
bloom.c: core Bloom filter implementation for changed paths.
commit-graph: compute Bloom filters for changed paths
commit-graph: examine commits by generation number
commit-graph: write Bloom filters to commit graph file
commit-graph: reuse existing Bloom filters during write
commit-graph: add --changed-paths option to write subcommand
revision.c: use Bloom filters to speed up path based revision walks
revision.c: add trace2 stats around Bloom filter usage
t4216: add end to end tests for git log with Bloom filters
commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag
Hans Jerry Illikainen (2):
t: increase test coverage of signature verification output
gpg-interface: prefer check_signature() for GPG verification
Heba Waly (4):
advice: extract vadvise() from advise()
advice: change "setupStreamFailure" to "setUpstreamFailure"
advice: revamp advise API
tag: use new advice API to check visibility
Jeff King (51):
credential: avoid writing values with newlines
t/lib-credential: use test_i18ncmp to check stderr
credential: detect unrepresentable values when parsing urls
fsck: detect gitmodules URLs with embedded newlines
t3419: drop EXPENSIVE tests
t/lib-credential.sh: drop shebang line
t/lib-*.sh: drop executable bit
test-lib-functions: make packetize() more efficient
upload-pack: handle unexpected delim packets
p5310: stop timing non-bitmap pack-to-disk
Makefile: avoid running curl-config multiple times
Makefile: use curl-config --cflags
test-lib-functions: simplify packetize() stdin code
commit-graph: examine changed-path objects in pack order
oid_array: use size_t for count and allocation
oid_array: use size_t for iteration
oid_array: rename source file from sha1-array
test-tool: rename sha1-array to oid-array
bisect: stop referring to sha1_array
ref-filter: stop referring to "sha1 array"
oidset: stop referring to sha1-array
clone: use "quick" lookup while following tags
Makefile: avoid running curl-config unnecessarily
fast-import: replace custom hash with hashmap.c
repository: mark the "refs" pointer as private
remote: drop auto-strlen behavior of make_branch() and make_rewrite()
parse_config_key(): return subsection len as size_t
config: drop useless length variable in write_pair()
git_config_parse_key(): return baselen as size_t
config: use size_t to store parsed variable baselen
config: reject parsing of files over INT_MAX
credential: treat "?" and "#" in URLs as end of host
t0300: make "quit" helper more realistic
t0300: use more realistic inputs
credential: parse URL without host as empty host, not unset
credential: refuse to operate when missing host or protocol
credential: die() when parsing invalid urls
Git 2.17.5
blame: drop unused parameter from maybe_changed_path
test-bloom: fix some whitespace issues
test-bloom: check that we have expected arguments
commit-graph: close descriptors after mmap
t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
gitcredentials(7): clarify quoting of helper examples
gitcredentials(7): make shell-snippet example more realistic
CodingGuidelines: drop arithmetic expansion advice to use "$x"
ref-filter: apply --ignore-case to all sorting keys
ref-filter: apply fallback refname sort only after all user sorts
list-objects-filter: treat NULL filter_options as "disabled"
pack-bitmap: pass object filter to fill-in traversal
ci: allow per-branch config for GitHub Actions
Jessica Clarke (1):
config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd
Jiang Xin (5):
send-pack: fix inconsistent porcelain output
t5543: never report what we do not push
send-pack: mark failure of atomic push properly
transport-helper: mark failure for atomic push
transport-helper: new method reject_atomic_push()
Johannes Schindelin (36):
cherry-pick: add test for `--skip` advice in `git commit`
tests(junit-xml): avoid invalid XML
import-tars: ignore the global PAX header
tests(gpg): allow the gpg-agent to start on Windows
t/lib-gpg.sh: stop pretending to be a stand-alone script
tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
tests: increase the verbosity of the GPG-related prereqs
MyFirstObjectWalk: remove unnecessary conditional statement
t0007: fix a typo
ci/lib: if CI type is unknown, show the environment variables
ci/lib: allow running in GitHub Actions
ci: fix the `jobname` of the `GETTEXT_POISON` job
subtree: fix build with AsciiDoctor 2
mingw: do not treat `COM0` as a reserved file name
t3904: fix incorrect demonstration of a bug
stash -p: (partially) fix bug concerning split hunks
mingw: help debugging by optionally executing bash with strace
interactive: refactor code asking the user for interactive input
ci: run gem with sudo to install asciidoctor
README: add a build badge for the GitHub Actions runs
ci: retire the Azure Pipelines definition
tests: when run in Bash, annotate test failures with file name/line number
ci: add a problem matcher for GitHub Actions
ci: let GitHub Actions upload failed tests' directories
t: consolidate the `is_hidden` functions
mingw: make test_path_is_hidden more robust
t: restrict `is_hidden` to be called only on Windows
credential: fix grammar
credential: optionally allow partial URLs in credential_from_url_gently()
credential: optionally allow partial URLs in credential_from_url_gently()
credential: handle `credential.<partial-URL>.<key>` again
macOS/brew: let the build find gettext headers/libraries/msgfmt
push: anonymize URLs in error messages and warnings
credential: handle `credential.<partial-URL>.<key>` again
rebase --autosquash: fix a potential segfault
Jonathan Nieder (5):
fsck: convert gitmodules url to URL passed to curl
credential: treat URL without scheme as invalid
credential: treat URL with empty scheme as invalid
fsck: reject URL with empty host in .gitmodules
Revert "fetch: default to protocol version 2"
Jonathan Tan (11):
connected: always use partial clone optimization
promisor-remote: accept 0 as oid_nr in function
diff: make diff_populate_filespec_options struct
diff: refactor object read
diff: restrict when prefetching occurs
rebase --merge: optionally skip upstreamed commits
fetch-pack: return enum from process_acks()
fetch-pack: in protocol v2, in_vain only after ACK
fetch-pack: in protocol v2, reset in_vain upon ACK
commit-graph: avoid memory leaks
t5500: count objects through stderr, not trace
Jorge Lopez Silva (2):
http: add client cert support for HTTPS proxies
http: add environment variable support for HTTPS proxies
Josh Steadmon (1):
trace2: teach Git to log environment variables
Julien Moutinho (1):
gitweb: fix UTF-8 encoding when using CGI::Fast
Junio C Hamano (27):
rebase: --fork-point regression fix
describe: force long format for a name based on a mislocated tag
update how-to-maintain-git
parse-options: teach "git cmd -h" to show alias as alias
clone: reorder --recursive/--recurse-submodules
log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
Git 2.17.4
separate tar.* config to its own source file
The first batch post 2.26 cycle
The second batch post 2.26 cycle
t/README: suggest how to leave test early with failure
CodingGuidelines: allow ${#posix} == strlen($posix)
sha1-name: do not assume that the ref store is initialized
receive-pack: compilation fix
The third batch
The fourth batch
credential-store: document the file format a bit more
Revert "commit-graph.c: introduce '--[no-]check-oids'"
The fifth batch
The sixth batch
The seventh batch
auto-gc: extract a reusable helper from "git fetch"
auto-gc: pass --quiet down from am, commit, merge and rebase
CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
The eighth batch
The ninth batch
Git 2.27-rc0
Li Xuejiang (1):
git-submodule.sh: setup uninitialized variables
Martin Ågren (9):
Doc: drop support for docbook-xsl before 1.71.1
Doc: drop support for docbook-xsl before 1.72.0
Doc: drop support for docbook-xsl before 1.73.0
manpage-bold-literal.xsl: stop using git.docbook.backslash
manpage-normal.xsl: fold in manpage-base.xsl
INSTALL: drop support for docbook-xsl before 1.74
user-manual.conf: don't specify [listingblock]
config.txt: move closing "----" to cover entire listing
merge: use skip_prefix to parse config key
Matheus Tavares (3):
test-lib: allow short options to be bundled
grep: follow conventions for printing paths w/ unusual chars
config doc: fix reference to config.worktree info
Matthias Aßhauer (1):
mingw: use modern strftime implementation if possible
Michael F. Schönitzer (1):
docs: fix minor glitch in illustration
Nathan Sanders (1):
mingw: cope with the Isilon network file system
Patrick Steinhardt (9):
refs: fix segfault when aborting empty transaction
git-update-ref.txt: add missing word
strbuf: provide function to append whole lines
update-ref: organize commands in an array
update-ref: drop unused argument for `parse_refname`
update-ref: pass end pointer instead of strbuf
update-ref: move transaction handling into `update_refs_stdin()`
update-ref: read commands in a line-wise fashion
update-ref: implement interactive transaction handling
Philippe Blain (9):
t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
t/lib-submodule-update: remove outdated test description
t/lib-submodule-update: move a test to the right section
unpack-trees: remove outdated description for verify_clean_submodule
unpack-trees: check for missing submodule directory in merged_entry
t/lib-submodule-update: add test removing nested submodules
git-rebase.txt: fix typo
pull doc: refer to a specific section in 'fetch' doc
pull doc: correct outdated description of an example
Phillip Wood (6):
t3404: use test_cmp_rev
cherry-pick: check commit error messages
sequencer: write CHERRY_PICK_HEAD for reword and edit
commit: use enum value for multiple cherry-picks
commit: encapsulate determine_whence() for sequencer
commit: give correct advice for empty commit during a rebase
René Scharfe (4):
pull: document more passthru options
pull: remove --update-head-ok from documentation
pull: pass documented fetch options on
fsck: report non-consecutive duplicate names in trees
SZEDER Gábor (4):
ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
commit-slab: clarify slabname##_peek()'s return value
ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
completion: offer '--(no-)patch' among 'git log' options
Shourya Shukla (4):
submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
gitfaq: files in .gitignore are tracked
gitfaq: fetching and pulling a repository
submodule: port subcommand 'set-url' from shell to C
Son Luong Ngoc (1):
midx: teach "git multi-pack-index repack" honor "git repack" configurations
Taylor Blau (24):
t/helper/test-read-graph.c: support commit-graph chains
builtin/commit-graph.c: support for '--split[=<strategy>]'
builtin/commit-graph.c: introduce split strategy 'no-merge'
builtin/commit-graph.c: introduce split strategy 'replace'
oidset: introduce 'oidset_size'
commit-graph.h: replace 'commit_hex' with 'commits'
commit-graph.c: introduce '--[no-]check-oids'
diff-tree.c: load notes machinery when required
commit-graph.c: don't use discarded graph_name in error
t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
commit-graph.c: gracefully handle file descriptor exhaustion
t5537: use test_write_lines and indented heredocs for readability
shallow.c: use '{commit,rollback}_shallow_file'
tempfile.c: introduce 'create_tempfile_mode'
lockfile.c: introduce 'hold_lock_file_for_update_mode'
commit-graph.c: write non-split graphs as read-only
commit-graph.c: ensure graph layers respect core.sharedRepository
commit-graph.c: make 'commit-graph-chain's read-only
commit: make 'commit_graft_pos' non-static
shallow: extract a header file for shallow-related functions
shallow.h: document '{commit,rollback}_shallow_file'
shallow: use struct 'shallow_lock' for additional safety
pack-bitmap.c: make object filtering functions generic
pack-bitmap.c: support 'tree:0' filtering
Terry Moschou (1):
complete: zsh: add missing sub cmd completion candidates
Thomas Gummerer (2):
stash: get git_stash_config at the top level
stash: remove the stash.useBuiltin setting
Vasil Dimov (2):
range-diff: fix a crash in parsing git-log output
range-diff: avoid negative string precision
Yang Zhao (12):
git-p4: make python2.7 the oldest supported version
git-p4: remove string type aliasing
git-p4: encode/decode communication with p4 for python3
git-p4: encode/decode communication with git for python3
git-p4: convert path to unicode before processing them
git-p4: open .gitp4-usercache.txt in text mode
git-p4: use marshal format version 2 when sending to p4
git-p4: fix freezing while waiting for fast-import progress
git-p4: use functools.reduce instead of reduce
git-p4: use dict.items() iteration for python3 compatibility
git-p4: simplify regex pattern generation for parsing diff-tree
git-p4: use python3's input() everywhere
brian m. carlson (34):
builtin/pack-objects: make hash agnostic
hash: implement and use a context cloning function
hex: introduce parsing variants taking hash algorithms
hex: add functions to parse hex object IDs in any algorithm
repository: require a build flag to use SHA-256
t: use hash-specific lookup tables to define test constants
t6300: abstract away SHA-1-specific constants
t6300: make hash algorithm independent
t/helper/test-dump-split-index: initialize git repository
t/helper: initialize repository if necessary
t/helper: make repository tests hash independent
setup: allow check_repository_format to read repository format
builtin/init-db: allow specifying hash algorithm on command line
builtin/init-db: add environment variable for new repo hash
init-db: move writing repo version into a function
worktree: allow repository version 1
commit: use expected signature header for SHA-256
fast-import: permit reading multiple marks files
fast-import: add helper function for inserting mark object entries
fast-import: make find_marks work on any mark set
fast-import: add a generic function to iterate over marks
fast-import: add options for rewriting submodules
builtin/checkout: pass branch info down to checkout_worktree
convert: permit passing additional metadata to filter processes
convert: provide additional metadata to filters
builtin/checkout: compute checkout metadata for checkouts
builtin/clone: compute checkout metadata for clones
builtin/rebase: compute checkout metadata for rebases
builtin/reset: compute checkout metadata for reset
t0021: test filter metadata for additional cases
docs: add a FAQ
builtin/receive-pack: use constant-time comparison for HMAC value
credential: fix matching URLs with multiple levels in path
docs: document credential.helper allowed values
luciano.rocha@booking.com (1):
freshen_file(): use NULL `times' for implicit current-time
Đoàn Trần Công Danh (34):
t4061: use POSIX compliant regex(7)
test-lib-functions: test_cmp: eval $GIT_TEST_CMP
t5003: drop the subshell in test_lazy_prereq
t5003: skip conversion test if unzip -a is unavailable
t5616: use rev-parse instead to get HEAD's object_id
t7063: drop non-POSIX argument "-ls" from find(1)
t4124: tweak test so that non-compliant diff(1) can also be used
t5703: feed raw data into test-tool unpack-sideband
rebase.c: honour --no-gpg-sign
cherry-pick/revert: honour --no-gpg-sign in all case
Documentation: document am --no-gpg-sign
Documentation: reword commit --no-gpg-sign
Documentation: merge commit-tree --[no-]gpg-sign
Documentation: document merge option --no-gpg-sign
ci/lib-docker: preserve required environment variables
ci/linux32: parameterise command to switch arch
ci: refactor docker runner script
ci/linux32: libify install-dependencies step
travis: build and test on Linux with musl libc and busybox
ci/lib: set TERM environment variable if not exist
ci: explicit install all required packages
ci: configure GitHub Actions for CI/PR
t4254: merge 2 steps of a single test
mailinfo.c: avoid strlen on strings that can contains NUL
mailinfo: disallow NUL character in mail's header
date.c: s/is_date/set_date/
date.c: validate and set time in a helper function
date.c: skip fractional second part of ISO-8601
date.c: allow compact version of ISO-8601 datetime
test-parse-pathspec-file.c: s/0/NULL/ for pointer type
compat/regex: move stdlib.h up in inclusion chain
graph.c: limit linkage of internal variable
progress.c: silence cgcc suggestion about internal linkage
bloom: fix `make sparse` warning
마누엘 (1):
interactive: explicitly `fflush` stdout before expecting input
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.27.0-rc0
@ 2020-05-14 23:27 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-14 23:27 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.27.0-rc0 is now available for
testing at the usual places. It is comprised of 479 non-merge
commits since v2.26.0, contributed by 53 people, 16 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.27.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.26.0 are as follows.
Welcome to the Git development community!
Andras Kucsma, Ash Holland, Christopher Warrington, Emma
Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,
Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
Moschou, Vasil Dimov, and Yang Zhao.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Alban Gruin, Alexandr Miloslavskiy, Alex Henrie,
Andrei Rybak, Andrew Oakley, Ben Keene, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Damien Robert,
Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric Sunshine, Garima Singh, Hans Jerry
Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes Schindelin,
Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Martin Ågren, Matheus Tavares, Patrick Steinhardt, Philippe
Blain, Phillip Wood, René Scharfe, Shourya Shukla, SZEDER
Gábor, Taylor Blau, and Thomas Gummerer.
----------------------------------------------------------------
Git 2.27 Release Notes (draft)
==============================
Updates since v2.26
-------------------
Backward compatibility notes
* When "git describe C" finds that commit C is pointed by a signed or
annotated tag, which records T as its tagname in the object, the
command gives T as its answer. Even if the user renames or moves
such a tag from its natural location in the "refs/tags/" hierarchy,
"git describe C" would still give T as the answer, but in such a
case "git show T^0" would no longer work as expected. There may be
nothing at "refs/tags/T" or even worse there may be a different tag
instead.
Starting from this version, "git describe" will always use the
"long" version, as if the "--long" option were given, when giving
its output based on such a misplaced tag to work around the problem.
* "git pull" issues a warning message until the pull.rebase
configuration variable is explicitly given, which some existing
users may find annoying---those who prefer not to rebase need to
set the variable to false to squelch the warning.
UI, Workflows & Features
* A handful of options to configure SSL when talking to proxies have
been added.
* Smudge/clean conversion filters are now given more information
(e.g. the object of the tree-ish in which the blob being converted
appears, in addition to its path, which has already been given).
* When "git describe C" finds an annotated tag with tagname A to be
the best name to explain commit C, and the tag is stored in a
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
command gave a warning message but used A (not B) to describe C.
If C is exactly at the tag, the describe output would be "A", but
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
behavior of the command has been changed to use the "long" form
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
* "git pull" learned to warn when no pull.rebase configuration
exists, and neither --[no-]rebase nor --ff-only is given (which
would result a merge).
* "git p4" learned four new hooks and also "--no-verify" option to
bypass them (and the existing "p4-pre-submit" hook).
* "git pull" shares many options with underlying "git fetch", but
some of them were not documented and some of those that would make
sense to pass down were not passed down.
* "git rebase" learned the "--no-gpg-sign" option to countermand
commit.gpgSign the user may have.
* The output from "git format-patch" uses RFC 2047 encoding for
non-ASCII letters on From: and Subject: headers, so that it can
directly be fed to e-mail programs. A new option has been added
to produce these headers in raw.
* "git log" learned "--show-pulls" that helps pathspec limited
history views; a merge commit that takes the whole change from a
side branch, which is normally omitted from the output, is shown
in addition to the commits that introduce real changes.
* The interactive input from various codepaths are consolidated and
any prompt possibly issued earlier are fflush()ed before we read.
* Allow "git rebase" to reapply all local commits, even if the may be
already in the upstream, without checking first.
* The 'pack.useSparse' configuration variable now defaults to 'true',
enabling an optimization that has been experimental since Git 2.21.
* "git rebase" happens to call some hooks meant for "checkout" and
"commit" by this was not a designed behaviour than historical
accident. This has been documented.
* "git merge" learns the "--autostash" option.
* "sparse-checkout" UI improvements.
* "git update-ref --stdin" learned a handful of new verbs to let the
user control ref update transactions more explicitly, which helps
as an ingredient to implement two-phase commit-style atomic
ref-updates across multiple repositories.
* "git commit-graph write" learned different ways to write out split
files.
* Introduce an extension to the commit-graph to make it efficient to
check for the paths that were modified at each commit using Bloom
filters.
* The approxidate parser learns to parse seconds with fraction and
ignore fractional part.
* The userdiff patterns for Markdown documents have been added.
* The sparse-checkout patterns have been forbidden from excluding all
paths, leaving an empty working tree, for a long time. This
limitation has been lifted.
* "git restore --staged --worktree" now defaults to take the contents
out of "HEAD", instead of erring out.
* "git p4" learned to recover from a (broken) state where a directory
and a file are recorded at the same path in the Perforce repository
the same way as their clients do.
* "git multi-pack-index repack" has been taught to honor some
repack.* configuration variables.
Performance, Internal Implementation, Development Support etc.
* The advise API has been revamped to allow more systematic enumeration of
advice knobs in the future.
* SHA-256 transition continues.
* The code to interface with GnuPG has been refactored.
* "git stash" has kept an escape hatch to use the scripted version
for a few releases, which got stale. It has been removed.
* Enable tests that require GnuPG on Windows.
* Minor test usability improvement.
* Trace2 enhancement to allow logging of the environment variables.
* Test clean-up continues.
* Perf-test update.
* A Windows-specific test element has been made more robust against
misuse from both user's environment and programmer's errors.
* Various tests have been updated to work around issues found with
shell utilities that come with busybox etc.
* The config API made mixed uses of int and size_t types to represent
length of various pieces of text it parsed, which has been updated
to use the correct type (i.e. size_t) throughout.
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
log" takes have learned a companion configuration variable
log.excludeDecoration that sits at the lowest priority in the
family.
* A new CI job to build and run test suite on linux with musl libc
has been added.
* Update the CI configuration to use GitHub Actions, retiring the one
based on Azure Pipelines.
* The directory traversal code had redundant recursive calls which
made its performance characteristics exponential with respect to
the depth of the tree, which was corrected.
* "git blame" learns to take advantage of the "changed-paths" Bloom
filter stored in the commit-graph file.
* The "bugreport" tool has been added.
* The object walk with object filter "--filter=tree:0" can now take
advantage of the pack bitmap when available.
* Instead of always building all branches at GitHub via Actions,
users can specify which branches to build.
* Codepaths that show progress meter have been taught to also use the
start_progress() and the stop_progress() calls as a "region" to be
traced.
Fixes since v2.26
-----------------
* The real_path() convenience function can easily be misused; with a
bit of code refactoring in the callers' side, its use has been
eliminated.
(merge 49d3c4b481 am/real-path-fix later to maint).
* Update "git p4" to work with Python 3.
(merge 6bb40ed20a yz/p4-py3 later to maint).
* The mechanism to prevent "git commit" from making an empty commit
or amending during an interrupted cherry-pick was broken during the
rewrite of "git rebase" in C, which has been corrected.
(merge 430b75f720 pw/advise-rebase-skip later to maint).
* Fix "git checkout --recurse-submodules" of a nested submodule
hierarchy.
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
* The "--fork-point" mode of "git rebase" regressed when the command
was rewritten in C back in 2.20 era, which has been corrected.
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
* The import-tars importer (in contrib/fast-import/) used to create
phony files at the top-level of the repository when the archive
contains global PAX headers, which made its own logic to detect and
omit the common leading directory ineffective, which has been
corrected.
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
* Simplify the commit ancestry connectedness check in a partial clone
repository in which "promised" objects are assumed to be obtainable
lazily on-demand from promisor remote repositories.
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
* The server-end of the v2 protocol to serve "git clone" and "git
fetch" was not prepared to see a delim packets at unexpected
places, which led to a crash.
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
* When fed a midx that records no objects, some codepaths tried to
loop from 0 through (num_objects-1), which, due to integer
arithmetic wrapping around, made it nonsense operation with out of
bounds array accesses. The code has been corrected to reject such
an midx file.
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
* Utitiles run via the run_command() API were not spawned correctly
on Cygwin, when the paths to them are given as a full path with
backslashes.
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
* "git pull --rebase" tried to run a rebase even after noticing that
the pull results in a fast-forward and no rebase is needed nor
sensible, for the past few years due to a mistake nobody noticed.
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
* "git rebase" with the merge backend did not work well when the
rebase.abbreviateCommands configuration was set.
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
* The logic to auto-follow tags by "git clone --single-branch" was
not careful to avoid lazy-fetching unnecessary tags, which has been
corrected.
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
* "git rebase -i" did not leave the reflog entries correctly.
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
* The more aggressive updates to remote-tracking branches we had for
the past 7 years or so were not reflected in the documentation,
which has been corrected.
(merge a44088435c pb/pull-fetch-doc later to maint).
* We've left the command line parsing of "git log :/a/b/" broken for
about a full year without anybody noticing, which has been
corrected.
(merge 0220461071 jc/missing-ref-store-fix later to maint).
* Misc fixes for Windows.
(merge 3efc128cd5 js/mingw-fixes later to maint).
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
the user to discard commits that are empty from the beginning (as
opposed to the ones that become empty because of rebasing). The
interactive rebase also marks commits that are empty in the todo.
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
* Parsing the host part out of URL for the credential helper has been corrected.
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
* Document the recommended way to abort a failing test early (e.g. by
exiting a loop), which is to say "return 1".
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
* The code that refreshes the last access and modified time of
on-disk packfiles and loose object files have been updated.
(merge 312cd76130 lr/freshen-file-fix later to maint).
* Validation of push certificate has been made more robust against
timing attacks.
(merge 719483e547 bc/constant-memequal later to maint).
* The custom hash function used by "git fast-import" has been
replaced with the one from hashmap.c, which gave us a nice
performance boost.
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
* The "git submodule" command did not initialize a few variables it
internally uses and was affected by variable settings leaked from
the environment.
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
* Raise the minimum required version of docbook-xsl package to 1.74,
as 1.74.0 was from late 2008, which is more than 10 years old, and
drop compatibility cruft from our documentation suite.
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
(merge 88acccda38 jc/log-no-mailmap later to maint).
* "git commit-graph write --expire-time=<timestamp>" did not use the
given timestamp correctly, which has been corrected.
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
* Tests update to use "test-chmtime" instead of "touch -t".
(merge e892a56845 ds/t5319-touch-fix later to maint).
* "git diff" in a partial clone learned to avoid lazy loading blob
objects in more casese when they are not needed.
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
* "git push --atomic" used to show failures for refs that weren't
even pushed, which has been corrected.
(merge dfe1b7f19c jx/atomic-push later to maint).
* Code in builtin/*, i.e. those can only be called from within
built-in subcommands, that implements bulk of a couple of
subcommands have been moved to libgit.a so that they could be used
by others.
(merge 9460fd48b5 dl/libify-a-few later to maint).
* Allowing the user to split a patch hunk while "git stash -p" does
not work well; a band-aid has been added to make this (partially)
work better.
* "git diff-tree --pretty --notes" used to hit an assertion failure,
as it forgot to initialize the notes subsystem.
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
* "git range-diff" fixes.
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
* "git grep" did not quote a path with unusual character like other
commands (like "git diff", "git status") do, but did quote when run
from a subdirectory, both of which has been corrected.
(merge 45115d8490 mt/grep-cquote-path later to maint).
* GNU/Hurd is also among the ones that need the fopen() wrapper.
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
* Those fetching over protocol v2 from linux-next and other kernel
repositories are reporting that v2 often fetches way too much than
needed.
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
* The upload-pack protocol v2 gave up too early before finding a
common ancestor, resulting in a wasteful fetch from a fork of a
project. This has been corrected to match the behaviour of v0
protocol.
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
* The build procedure did not use the libcurl library and its include
files correctly for a custom-built installation.
(merge 0573831950 jk/build-with-right-curl later to maint).
* Tighten "git mailinfo" to notice and error out when decoded result
contains NUL in it.
(merge 3919997447 dd/mailinfo-with-nul later to maint).
* Fix in-core inconsistency after fetching into a shallow repository
that broke the code to write out commit-graph.
(merge 37b9dcabfc tb/reset-shallow later to maint).
* The commit-graph code exhausted file descriptors easily when it
does not have to.
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
* The multi-pack-index left mmapped file descriptors open when it
does not have to.
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
* Recent update to Homebrew used by macOS folks breaks build by
moving gettext library and necessary headers.
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
* Incompatible options "--root" and "--fork-point" of "git rebase"
have been marked and documented as being incompatible.
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
* Error and verbose trace messages from "git push" did not redact
credential material embedded in URLs.
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
* Update the parser used for credential.<URL>.<variable>
configuration, to handle <URL>s with '/' in them correctly.
(merge b44d0118ac bc/wildcard-credential later to maint).
* Recent updates broke parsing of "credential.<url>.<key>" where
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
stopped working, which has been corrected.
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
(merge cd93e6c029 js/partial-urlmatch later to maint).
* Some of the files commit-graph subsystem keeps on disk did not
correctly honor the core.sharedRepository settings and some were
left read-write.
* In error messages that "git switch" mentions its option to create a
new branch, "-b/-B" options were shown, where "-c/-C" options
should be, which has been corrected.
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
* With the recent tightening of the code that is used to parse
various parts of a URL for use in the credential subsystem, a
hand-edited credential-store file causes the credential helper to
die, which is a bit too harsh to the users. Demote the error
behaviour to just ignore and keep using well-formed lines instead.
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
* The samples in the credential documentation has been updated to
make it clear that we depict what would appear in the .git/config
file, by adding appropriate quotes as needed..
(merge 177681a07e jk/credential-sample-update later to maint).
* "git branch" and other "for-each-ref" variants accepted multiple
--sort=<key> options in the increasing order of precedence, but it
had a few breakages around "--ignore-case" handling, and tie-breaking
with the refname, which have been fixed.
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
* The coding guideline for shell scripts instructed to refer to a
variable with dollar-sign inside arithmetic expansion to work
around a bug in old versions of dash, which is a thing of the past.
Now we are not forbidden from writing $((var+1)).
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
* The <stdlib.h> header on NetBSD brings in its own definition of
hmac() function (eek), which conflicts with our own and unrelated
function with the same name. Our function has been renamed to work
around the issue.
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
* The basic test did not honor $TEST_SHELL_PATH setting, which has
been corrected.
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
* Minor in-code comments and documentation updates around credential
API.
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
* Teach "am", "commit", "merge" and "rebase", when they are run with
the "--quiet" option, to pass "--quiet" down to "gc --auto".
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
* The code to skip unmerged paths in the index when sparse checkout
is in use would have made out-of-bound access of the in-core index
when the last path was unmerged, which has been corrected.
* Serving a "git fetch" client over "git://" and "ssh://" protocols
using the on-wire protocol version 2 was buggy on the server end
when the client needs to make a follow-up request to
e.g. auto-follow tags.
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
* "git bisect replay" had trouble with input files when they used
CRLF line ending, which has been corrected.
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
* "rebase -i" segfaulted when rearranging a sequence that has a
fix-up that applies another fix-up (which may or may not be a
fix-up of yet another step).
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
* "git fsck" ensures that the paths recorded in tree objects are
sorted and without duplicates, but it failed to notice a case where
a blob is followed by entries that sort before a tree with the same
name. This has been corrected.
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 564956f358 jc/maintain-doc later to maint).
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
(merge 8312aa7d74 jc/config-tar later to maint).
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
(merge 64d1022e14 ar/test-style-fixes later to maint).
(merge 4a465443a6 ds/doc-clone-filter later to maint).
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
(merge 2149b6748f bc/faq later to maint).
(merge 12dc0879f1 jk/test-cleanup later to maint).
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
(merge a1aba0c95c js/t0007-typofix later to maint).
(merge 76ba7fa225 ma/config-doc-fix later to maint).
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
(merge 4153274052 bc/doc-credential-helper-value later to maint).
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
----------------------------------------------------------------
Changes since v2.26.0 are as follows:
Alban Gruin (3):
sequencer: mark messages for translation
sequencer: don't abbreviate a command if it doesn't have a short form
t3432: test `--merge' with `rebase.abbreviateCommands = true', too
Alex Henrie (1):
pull: warn if the user didn't say whether to rebase or to merge
Alexandr Miloslavskiy (4):
set_git_dir: fix crash when used with real_path()
real_path: remove unsafe API
real_path_if_valid(): remove unsafe API
get_superproject_working_tree(): return strbuf
Andras Kucsma (1):
run-command: trigger PATH lookup properly on Cygwin
Andrei Rybak (2):
t9500: remove spaces after redirect operators
t: fix whitespace around &&
Andrew Oakley (1):
git-p4: recover from inconsistent perforce history
Ash Holland (1):
userdiff: support Markdown
Ben Keene (8):
git-p4: change the expansion test from basestring to list
git-p4: rewrite prompt to be Windows compatible
git-p4: create new function run_git_hook
git-p4: add p4-pre-submit exit text
git-p4: add --no-verify option
git-p4: restructure code in submit
git-p4: add p4 submit hooks
git-p4: add RCS keyword status message
Carlo Marcelo Arenas Belón (8):
credential-store: ignore bogus lines from store file
credential: update description for credential_from_url_gently
credential: correct order of parameters for credential_match
builtin/receive-pack: avoid generic function name hmac()
t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
t/test_lib: avoid naked bash arrays in file_lineno
credential: update gitcredentials documentation
credential: document protocol updates
Christian Couder (1):
upload-pack: clear filter_options for each v2 fetch command
Christopher Warrington (1):
bisect: allow CRLF line endings in "git bisect replay" input
Damien Robert (6):
midx.c: fix an integer underflow
doc: list all commands affected by submodule.recurse
doc: document --recurse-submodules for reset and restore
doc: explain how to deactivate submodule.recurse completely
doc: be more precise on (fetch|push).recurseSubmodules
doc: --recurse-submodules mostly applies to active submodules
Denton Liu (45):
Makefile: ASCII-sort += lists
t7600: use test_write_lines()
Lib-ify fmt-merge-msg
Lib-ify prune-packed
t5512: don't use `test_must_fail test_cmp`
t5512: stop losing git exit code in here-docs
t5512: stop losing return codes of git commands
t5550: simplify no matching line check
t5607: reorder `nongit test_must_fail`
t5612: don't use `test_must_fail test_cmp`
t5612: stop losing return codes of git commands
t5801: teach compare_refs() to accept !
wrapper: indent with tabs
sequencer: stop leaking buf
sequencer: make file exists check more efficient
sequencer: make read_oneliner() accept flags
sequencer: configurably warn on non-existent files
sequencer: make read_oneliner() extern
rebase: use read_oneliner()
sequencer: make apply_autostash() accept a path
sequencer: rename stash_sha1 to stash_oid
rebase: use apply_autostash() from sequencer.c
rebase: generify reset_head()
reset: extract reset_head() from rebase
rebase: extract create_autostash()
rebase: generify create_autostash()
sequencer: extract perform_autostash() from rebase
sequencer: unlink autostash in apply_autostash()
sequencer: implement save_autostash()
sequencer: implement apply_autostash_oid()
merge: teach --autostash option
t5520: make test_pull_autostash() accept expect_parent_num
pull: pass --autostash to merge
t6030: use test_path_is_missing()
t7408: replace incorrect uses of test_must_fail
t7508: don't use `test_must_fail test_cmp`
t9141: use test_path_is_missing()
t9160: use test_path_is_missing()
t9164: use test_must_fail only on git commands
t9819: don't use test_must_fail with p4
Use OPT_CALLBACK and OPT_CALLBACK_F
push: unset PARSE_OPT_OPTARG for --recurse-submodules
rebase: save autostash entry into stash reflog on --quit
switch: fix errors and comments related to -c and -C
Doc: reference the "stash list" in autostash docs
Derrick Stolee (25):
connected.c: reprepare packs for corner cases
config: set pack.useSparse=true by default
pack-objects: flip the use of GIT_TEST_PACK_SPARSE
clone: document --filter options
diff: halt tree-diff early after max_changes
dir: refactor treat_directory to clarify control flow
commit-graph: fix buggy --expire-time option
t5319: replace 'touch -m' with 'test-tool chmtime'
bloom: ignore renames when computing changed paths
revision: --show-pulls adds helpful merges
log-tree: make ref_filter_match() a helper method
log: add log.excludeDecoration config option
revision: complicated pathspecs disable filters
tests: write commit-graph with Bloom filters
blame: use changed-path Bloom filters
multi-pack-index: close file descriptor after mmap
bloom: fix whitespace around tab length
test-bloom: fix usage typo
sparse-checkout: stop blocking empty workdirs
unpack-trees: avoid array out-of-bounds error
multi-pack-index: respect repack.packKeptObjects=false
bloom: parse commit before computing filters
Documentation: changed-path Bloom filters use byte words
bloom: de-duplicate directory entries
bloom: use num_changes not nr for limit detection
Elijah Newren (37):
oidset: remove unnecessary include
unpack-trees: fix minor typo in comment
unpack-trees: remove unused error type
unpack-trees: simplify verify_absent_sparse()
unpack-trees: simplify pattern_list freeing
t1091: make some tests a little more defensive against failures
unpack-trees: allow check_updates() to work on a different index
unpack-trees: do not mark a dirty path with SKIP_WORKTREE
unpack-trees: pull sparse-checkout pattern reading into a new function
unpack-trees: add a new update_sparsity() function
sparse-checkout: use new update_sparsity() function
sparse-checkout: use improved unpack_trees porcelain messages
unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
unpack-trees: split display_error_msgs() into two
unpack-trees: make sparse path messages sound like warnings
unpack-trees: provide warnings on sparse updates for unmerged paths too
unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
sparse-checkout: provide a new reapply subcommand
pull: avoid running both merge and rebase
t7063: more thorough status checking
t3000: add more testcases testing a variety of ls-files issues
dir: fix simple typo in comment
dir: consolidate treat_path() and treat_one_path()
dir: fix broken comment
dir: fix confusion based on variable tense
dir: replace exponential algorithm with a linear one
dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
dir: replace double pathspec matching with single in treat_directory()
Fix error-prone fill_directory() API; make it only return matches
completion: fix 'git add' on paths under an untracked directory
git-rebase.txt: add another hook to the hooks section, and explain more
sequencer: honor GIT_REFLOG_ACTION
rebase -i: mark commits that begin empty in todo editor
rebase: reinstate --no-keep-empty
rebase: fix an incompatible-options error message
rebase: display an error if --root and --fork-point are both provided
Emily Shaffer (8):
help: move list_config_help to builtin/help
bugreport: add tool to generate debugging info
bugreport: gather git version and build info
bugreport: add uname info
bugreport: add compiler info
bugreport: drop extraneous includes
bugreport: collect list of populated hooks
trace2: log progress time and throughput
Emma Brooks (3):
format-patch: teach --no-encode-email-headers
Documentation: explain "mboxrd" pretty format
gitweb: Recognize *-to and Closes/Fixes trailers
Eric Sunshine (1):
restore: default to HEAD when combining --staged and --worktree
Garima Singh (13):
commit-graph: define and use MAX_NUM_CHUNKS
bloom.c: add the murmur3 hash implementation
bloom.c: introduce core Bloom filter constructs
bloom.c: core Bloom filter implementation for changed paths.
commit-graph: compute Bloom filters for changed paths
commit-graph: examine commits by generation number
commit-graph: write Bloom filters to commit graph file
commit-graph: reuse existing Bloom filters during write
commit-graph: add --changed-paths option to write subcommand
revision.c: use Bloom filters to speed up path based revision walks
revision.c: add trace2 stats around Bloom filter usage
t4216: add end to end tests for git log with Bloom filters
commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag
Hans Jerry Illikainen (2):
t: increase test coverage of signature verification output
gpg-interface: prefer check_signature() for GPG verification
Heba Waly (4):
advice: extract vadvise() from advise()
advice: change "setupStreamFailure" to "setUpstreamFailure"
advice: revamp advise API
tag: use new advice API to check visibility
Jeff King (51):
credential: avoid writing values with newlines
t/lib-credential: use test_i18ncmp to check stderr
credential: detect unrepresentable values when parsing urls
fsck: detect gitmodules URLs with embedded newlines
t3419: drop EXPENSIVE tests
t/lib-credential.sh: drop shebang line
t/lib-*.sh: drop executable bit
test-lib-functions: make packetize() more efficient
upload-pack: handle unexpected delim packets
p5310: stop timing non-bitmap pack-to-disk
Makefile: avoid running curl-config multiple times
Makefile: use curl-config --cflags
test-lib-functions: simplify packetize() stdin code
commit-graph: examine changed-path objects in pack order
oid_array: use size_t for count and allocation
oid_array: use size_t for iteration
oid_array: rename source file from sha1-array
test-tool: rename sha1-array to oid-array
bisect: stop referring to sha1_array
ref-filter: stop referring to "sha1 array"
oidset: stop referring to sha1-array
clone: use "quick" lookup while following tags
Makefile: avoid running curl-config unnecessarily
fast-import: replace custom hash with hashmap.c
repository: mark the "refs" pointer as private
remote: drop auto-strlen behavior of make_branch() and make_rewrite()
parse_config_key(): return subsection len as size_t
config: drop useless length variable in write_pair()
git_config_parse_key(): return baselen as size_t
config: use size_t to store parsed variable baselen
config: reject parsing of files over INT_MAX
credential: treat "?" and "#" in URLs as end of host
t0300: make "quit" helper more realistic
t0300: use more realistic inputs
credential: parse URL without host as empty host, not unset
credential: refuse to operate when missing host or protocol
credential: die() when parsing invalid urls
Git 2.17.5
blame: drop unused parameter from maybe_changed_path
test-bloom: fix some whitespace issues
test-bloom: check that we have expected arguments
commit-graph: close descriptors after mmap
t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
gitcredentials(7): clarify quoting of helper examples
gitcredentials(7): make shell-snippet example more realistic
CodingGuidelines: drop arithmetic expansion advice to use "$x"
ref-filter: apply --ignore-case to all sorting keys
ref-filter: apply fallback refname sort only after all user sorts
list-objects-filter: treat NULL filter_options as "disabled"
pack-bitmap: pass object filter to fill-in traversal
ci: allow per-branch config for GitHub Actions
Jessica Clarke (1):
config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd
Jiang Xin (5):
send-pack: fix inconsistent porcelain output
t5543: never report what we do not push
send-pack: mark failure of atomic push properly
transport-helper: mark failure for atomic push
transport-helper: new method reject_atomic_push()
Johannes Schindelin (36):
cherry-pick: add test for `--skip` advice in `git commit`
tests(junit-xml): avoid invalid XML
import-tars: ignore the global PAX header
tests(gpg): allow the gpg-agent to start on Windows
t/lib-gpg.sh: stop pretending to be a stand-alone script
tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
tests: increase the verbosity of the GPG-related prereqs
MyFirstObjectWalk: remove unnecessary conditional statement
t0007: fix a typo
ci/lib: if CI type is unknown, show the environment variables
ci/lib: allow running in GitHub Actions
ci: fix the `jobname` of the `GETTEXT_POISON` job
subtree: fix build with AsciiDoctor 2
mingw: do not treat `COM0` as a reserved file name
t3904: fix incorrect demonstration of a bug
stash -p: (partially) fix bug concerning split hunks
mingw: help debugging by optionally executing bash with strace
interactive: refactor code asking the user for interactive input
ci: run gem with sudo to install asciidoctor
README: add a build badge for the GitHub Actions runs
ci: retire the Azure Pipelines definition
tests: when run in Bash, annotate test failures with file name/line number
ci: add a problem matcher for GitHub Actions
ci: let GitHub Actions upload failed tests' directories
t: consolidate the `is_hidden` functions
mingw: make test_path_is_hidden more robust
t: restrict `is_hidden` to be called only on Windows
credential: fix grammar
credential: optionally allow partial URLs in credential_from_url_gently()
credential: optionally allow partial URLs in credential_from_url_gently()
credential: handle `credential.<partial-URL>.<key>` again
macOS/brew: let the build find gettext headers/libraries/msgfmt
push: anonymize URLs in error messages and warnings
credential: handle `credential.<partial-URL>.<key>` again
rebase --autosquash: fix a potential segfault
Jonathan Nieder (5):
fsck: convert gitmodules url to URL passed to curl
credential: treat URL without scheme as invalid
credential: treat URL with empty scheme as invalid
fsck: reject URL with empty host in .gitmodules
Revert "fetch: default to protocol version 2"
Jonathan Tan (11):
connected: always use partial clone optimization
promisor-remote: accept 0 as oid_nr in function
diff: make diff_populate_filespec_options struct
diff: refactor object read
diff: restrict when prefetching occurs
rebase --merge: optionally skip upstreamed commits
fetch-pack: return enum from process_acks()
fetch-pack: in protocol v2, in_vain only after ACK
fetch-pack: in protocol v2, reset in_vain upon ACK
commit-graph: avoid memory leaks
t5500: count objects through stderr, not trace
Jorge Lopez Silva (2):
http: add client cert support for HTTPS proxies
http: add environment variable support for HTTPS proxies
Josh Steadmon (1):
trace2: teach Git to log environment variables
Julien Moutinho (1):
gitweb: fix UTF-8 encoding when using CGI::Fast
Junio C Hamano (27):
rebase: --fork-point regression fix
describe: force long format for a name based on a mislocated tag
update how-to-maintain-git
parse-options: teach "git cmd -h" to show alias as alias
clone: reorder --recursive/--recurse-submodules
log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
Git 2.17.4
separate tar.* config to its own source file
The first batch post 2.26 cycle
The second batch post 2.26 cycle
t/README: suggest how to leave test early with failure
CodingGuidelines: allow ${#posix} == strlen($posix)
sha1-name: do not assume that the ref store is initialized
receive-pack: compilation fix
The third batch
The fourth batch
credential-store: document the file format a bit more
Revert "commit-graph.c: introduce '--[no-]check-oids'"
The fifth batch
The sixth batch
The seventh batch
auto-gc: extract a reusable helper from "git fetch"
auto-gc: pass --quiet down from am, commit, merge and rebase
CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
The eighth batch
The ninth batch
Git 2.27-rc0
Li Xuejiang (1):
git-submodule.sh: setup uninitialized variables
Martin Ågren (9):
Doc: drop support for docbook-xsl before 1.71.1
Doc: drop support for docbook-xsl before 1.72.0
Doc: drop support for docbook-xsl before 1.73.0
manpage-bold-literal.xsl: stop using git.docbook.backslash
manpage-normal.xsl: fold in manpage-base.xsl
INSTALL: drop support for docbook-xsl before 1.74
user-manual.conf: don't specify [listingblock]
config.txt: move closing "----" to cover entire listing
merge: use skip_prefix to parse config key
Matheus Tavares (3):
test-lib: allow short options to be bundled
grep: follow conventions for printing paths w/ unusual chars
config doc: fix reference to config.worktree info
Matthias Aßhauer (1):
mingw: use modern strftime implementation if possible
Michael F. Schönitzer (1):
docs: fix minor glitch in illustration
Nathan Sanders (1):
mingw: cope with the Isilon network file system
Patrick Steinhardt (9):
refs: fix segfault when aborting empty transaction
git-update-ref.txt: add missing word
strbuf: provide function to append whole lines
update-ref: organize commands in an array
update-ref: drop unused argument for `parse_refname`
update-ref: pass end pointer instead of strbuf
update-ref: move transaction handling into `update_refs_stdin()`
update-ref: read commands in a line-wise fashion
update-ref: implement interactive transaction handling
Philippe Blain (9):
t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
t/lib-submodule-update: remove outdated test description
t/lib-submodule-update: move a test to the right section
unpack-trees: remove outdated description for verify_clean_submodule
unpack-trees: check for missing submodule directory in merged_entry
t/lib-submodule-update: add test removing nested submodules
git-rebase.txt: fix typo
pull doc: refer to a specific section in 'fetch' doc
pull doc: correct outdated description of an example
Phillip Wood (6):
t3404: use test_cmp_rev
cherry-pick: check commit error messages
sequencer: write CHERRY_PICK_HEAD for reword and edit
commit: use enum value for multiple cherry-picks
commit: encapsulate determine_whence() for sequencer
commit: give correct advice for empty commit during a rebase
René Scharfe (4):
pull: document more passthru options
pull: remove --update-head-ok from documentation
pull: pass documented fetch options on
fsck: report non-consecutive duplicate names in trees
SZEDER Gábor (4):
ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
commit-slab: clarify slabname##_peek()'s return value
ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
completion: offer '--(no-)patch' among 'git log' options
Shourya Shukla (4):
submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
gitfaq: files in .gitignore are tracked
gitfaq: fetching and pulling a repository
submodule: port subcommand 'set-url' from shell to C
Son Luong Ngoc (1):
midx: teach "git multi-pack-index repack" honor "git repack" configurations
Taylor Blau (24):
t/helper/test-read-graph.c: support commit-graph chains
builtin/commit-graph.c: support for '--split[=<strategy>]'
builtin/commit-graph.c: introduce split strategy 'no-merge'
builtin/commit-graph.c: introduce split strategy 'replace'
oidset: introduce 'oidset_size'
commit-graph.h: replace 'commit_hex' with 'commits'
commit-graph.c: introduce '--[no-]check-oids'
diff-tree.c: load notes machinery when required
commit-graph.c: don't use discarded graph_name in error
t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
commit-graph.c: gracefully handle file descriptor exhaustion
t5537: use test_write_lines and indented heredocs for readability
shallow.c: use '{commit,rollback}_shallow_file'
tempfile.c: introduce 'create_tempfile_mode'
lockfile.c: introduce 'hold_lock_file_for_update_mode'
commit-graph.c: write non-split graphs as read-only
commit-graph.c: ensure graph layers respect core.sharedRepository
commit-graph.c: make 'commit-graph-chain's read-only
commit: make 'commit_graft_pos' non-static
shallow: extract a header file for shallow-related functions
shallow.h: document '{commit,rollback}_shallow_file'
shallow: use struct 'shallow_lock' for additional safety
pack-bitmap.c: make object filtering functions generic
pack-bitmap.c: support 'tree:0' filtering
Terry Moschou (1):
complete: zsh: add missing sub cmd completion candidates
Thomas Gummerer (2):
stash: get git_stash_config at the top level
stash: remove the stash.useBuiltin setting
Vasil Dimov (2):
range-diff: fix a crash in parsing git-log output
range-diff: avoid negative string precision
Yang Zhao (12):
git-p4: make python2.7 the oldest supported version
git-p4: remove string type aliasing
git-p4: encode/decode communication with p4 for python3
git-p4: encode/decode communication with git for python3
git-p4: convert path to unicode before processing them
git-p4: open .gitp4-usercache.txt in text mode
git-p4: use marshal format version 2 when sending to p4
git-p4: fix freezing while waiting for fast-import progress
git-p4: use functools.reduce instead of reduce
git-p4: use dict.items() iteration for python3 compatibility
git-p4: simplify regex pattern generation for parsing diff-tree
git-p4: use python3's input() everywhere
brian m. carlson (34):
builtin/pack-objects: make hash agnostic
hash: implement and use a context cloning function
hex: introduce parsing variants taking hash algorithms
hex: add functions to parse hex object IDs in any algorithm
repository: require a build flag to use SHA-256
t: use hash-specific lookup tables to define test constants
t6300: abstract away SHA-1-specific constants
t6300: make hash algorithm independent
t/helper/test-dump-split-index: initialize git repository
t/helper: initialize repository if necessary
t/helper: make repository tests hash independent
setup: allow check_repository_format to read repository format
builtin/init-db: allow specifying hash algorithm on command line
builtin/init-db: add environment variable for new repo hash
init-db: move writing repo version into a function
worktree: allow repository version 1
commit: use expected signature header for SHA-256
fast-import: permit reading multiple marks files
fast-import: add helper function for inserting mark object entries
fast-import: make find_marks work on any mark set
fast-import: add a generic function to iterate over marks
fast-import: add options for rewriting submodules
builtin/checkout: pass branch info down to checkout_worktree
convert: permit passing additional metadata to filter processes
convert: provide additional metadata to filters
builtin/checkout: compute checkout metadata for checkouts
builtin/clone: compute checkout metadata for clones
builtin/rebase: compute checkout metadata for rebases
builtin/reset: compute checkout metadata for reset
t0021: test filter metadata for additional cases
docs: add a FAQ
builtin/receive-pack: use constant-time comparison for HMAC value
credential: fix matching URLs with multiple levels in path
docs: document credential.helper allowed values
luciano.rocha@booking.com (1):
freshen_file(): use NULL `times' for implicit current-time
Đoàn Trần Công Danh (34):
t4061: use POSIX compliant regex(7)
test-lib-functions: test_cmp: eval $GIT_TEST_CMP
t5003: drop the subshell in test_lazy_prereq
t5003: skip conversion test if unzip -a is unavailable
t5616: use rev-parse instead to get HEAD's object_id
t7063: drop non-POSIX argument "-ls" from find(1)
t4124: tweak test so that non-compliant diff(1) can also be used
t5703: feed raw data into test-tool unpack-sideband
rebase.c: honour --no-gpg-sign
cherry-pick/revert: honour --no-gpg-sign in all case
Documentation: document am --no-gpg-sign
Documentation: reword commit --no-gpg-sign
Documentation: merge commit-tree --[no-]gpg-sign
Documentation: document merge option --no-gpg-sign
ci/lib-docker: preserve required environment variables
ci/linux32: parameterise command to switch arch
ci: refactor docker runner script
ci/linux32: libify install-dependencies step
travis: build and test on Linux with musl libc and busybox
ci/lib: set TERM environment variable if not exist
ci: explicit install all required packages
ci: configure GitHub Actions for CI/PR
t4254: merge 2 steps of a single test
mailinfo.c: avoid strlen on strings that can contains NUL
mailinfo: disallow NUL character in mail's header
date.c: s/is_date/set_date/
date.c: validate and set time in a helper function
date.c: skip fractional second part of ISO-8601
date.c: allow compact version of ISO-8601 datetime
test-parse-pathspec-file.c: s/0/NULL/ for pointer type
compat/regex: move stdlib.h up in inclusion chain
graph.c: limit linkage of internal variable
progress.c: silence cgcc suggestion about internal linkage
bloom: fix `make sparse` warning
마누엘 (1):
interactive: explicitly `fflush` stdout before expecting input
^ permalink raw reply [relevance 2%]
* [PATCH] Teach git-rev-list --simplify-forks
@ 2020-04-27 5:07 0% Antonio Russo
0 siblings, 0 replies; 162+ results
From: Antonio Russo @ 2020-04-27 5:07 UTC (permalink / raw)
To: git-ml; +Cc: Junio C Hamano, Michael Haggerty, Derrick Stolee
When used with --graph, instead of displaying the full graph, display a
spanning subgraph produced by a depth-first search of the graph visiting
parents from left to right. Edges to already visited commits are
discarded. This process is repeated for every commit to be displayed.
This is valuable to reduce visual clutter when there are many merges
that were not rebased onto each other and the user is primarily
interested in the state of the branch being merged into.
Also adds documentation and tests of the above.
Signed-off-by: Antonio Russo <antonio.e.russo@gmail.com>
---
Documentation/rev-list-options.txt | 8 +++
revision.c | 67 +++++++++++++++++++++-
revision.h | 6 ++
t/t6016-rev-list-graph-simplify-history.sh | 50 ++++++++++++++++
4 files changed, 130 insertions(+), 1 deletion(-)
Hello,
I'm trying to address a long-standing problem I've had visualizing complex
git repositories with git log --graph. I think that a picture is worth a
thousand words, so I'll just show what the patch does for git master:
% git log --graph --abbrev-commit --pretty=oneline --simplify-forks e870325ee8
> * e870325ee8 (HEAD -> master, origin/master, origin/HEAD) The third batch
> * a397e9c236 Merge branch 'jk/credential-parsing-end-of-host-in-URL'
> |\
> | * 4c5971e18a credential: treat "?" and "#" in URLs as end of host
> * d6d561db1c Merge branch 'jt/rebase-allow-duplicate'
> |\
> | * 0fcb4f6b62 rebase --merge: optionally skip upstreamed commits
> * c7d8f69da5 Merge branch 'en/rebase-no-keep-empty'
> |\
> | * 50ed76148a rebase: fix an incompatible-options error message
> | * b9cbd2958f rebase: reinstate --no-keep-empty
> | * 1b5735f75c rebase -i: mark commits that begin empty in todo editor
> * 8b39dfdf47 Merge branch 'js/mingw-is-hidden-test-fix'
> |\
> | * 176a66a748 t: restrict `is_hidden` to be called only on Windows
> | * 9814d0a4ad mingw: make test_path_is_hidden more robust
> | * 7c2dfca7e8 t: consolidate the `is_hidden` functions
> * a41b41ca74 Merge branch 'js/mingw-isilon-nfs'
> |\
> | * 23eafd924a mingw: cope with the Isilon network file system
> * 33feaca6bf Merge branch 'js/flush-prompt-before-interative-input'
> |\
> | * 1f09aed834 interactive: explicitly `fflush` stdout before expecting input
> | * 08d383f23e interactive: refactor code asking the user for interactive input
> * 9af3a7cb4d Merge branch 'ds/revision-show-pulls'
> |\
> | * 8d049e182e revision: --show-pulls adds helpful merges
> * 82fa169d55 Merge branch 'ma/simplify-merge-config-parsing'
> |\
> | * 9881b451f3 merge: use skip_prefix to parse config key
> * b3eb70e0f8 Merge branch 'js/mingw-fixes'
Compare this to before:
% git log --graph --abbrev-commit --pretty=oneline e870325ee8
> * e870325ee8 (HEAD -> master, origin/master, origin/HEAD) The third batch
> * a397e9c236 Merge branch 'jk/credential-parsing-end-of-host-in-URL'
> |\
> | * 4c5971e18a credential: treat "?" and "#" in URLs as end of host
> * | d6d561db1c Merge branch 'jt/rebase-allow-duplicate'
> |\ \
> | * | 0fcb4f6b62 rebase --merge: optionally skip upstreamed commits
> * | | c7d8f69da5 Merge branch 'en/rebase-no-keep-empty'
> |\| |
> | * | 50ed76148a rebase: fix an incompatible-options error message
> | * | b9cbd2958f rebase: reinstate --no-keep-empty
> | * | 1b5735f75c rebase -i: mark commits that begin empty in todo editor
> * | | 8b39dfdf47 Merge branch 'js/mingw-is-hidden-test-fix'
> |\ \ \
> | * | | 176a66a748 t: restrict `is_hidden` to be called only on Windows
> | * | | 9814d0a4ad mingw: make test_path_is_hidden more robust
> | * | | 7c2dfca7e8 t: consolidate the `is_hidden` functions
> * | | | a41b41ca74 Merge branch 'js/mingw-isilon-nfs'
> |\ \ \ \
> | * | | | 23eafd924a mingw: cope with the Isilon network file system
> | |/ / /
> * | | | 33feaca6bf Merge branch 'js/flush-prompt-before-interative-input'
> |\ \ \ \
> | * | | | 1f09aed834 interactive: explicitly `fflush` stdout before expecting input
> | * | | | 08d383f23e interactive: refactor code asking the user for interactive input
> | |/ / /
> * | | | 9af3a7cb4d Merge branch 'ds/revision-show-pulls'
> |\ \ \ \
> | * | | | 8d049e182e revision: --show-pulls adds helpful merges
> | |/ / /
> * | | | 82fa169d55 Merge branch 'ma/simplify-merge-config-parsing'
> |\ \ \ \
> | * | | | 9881b451f3 merge: use skip_prefix to parse config key
> | |/ / /
> * | | | b3eb70e0f8 Merge branch 'js/mingw-fixes'
> |\ \ \ \
Roughly, the tool produces a spanning tree by traversing the commit graph,
leftmost parents first. It forgets information about where forks occurred,
removing the "tails" that connect branches back to their original fork
point. These "tails" can be very long and often do not contain information
that is very important for someone glancing through commits.
=== Details
It's about 40% faster. Tested this on current master (of git):
git log --graph --pretty=oneline --simplify-forks e870325ee8 > /dev/null 0.83s user 0.06s system 99% cpu 0.886 total
git log --graph --pretty=oneline e870325ee8 > /dev/null 1.41s user 0.03s system 99% cpu 1.443 total
This is because the produced graph is much simpler---it is a tree in the
above case (though not in general).
The exact approach uses two flags (reusing bits 27 and 28 that are used
by the topological sort walk). One says whether the commit has been ever
visited, and the other says whether the commit was visited from the current
root. The walk does not continue down any commit that was visited, and
leaves the connection to the parent only if has not been visited from the
current root. Each commit that is to be shown is treated as its own root
(most of these root commits are immediately skipped, because they are
likely visited in an earlier traversal).
=== Problems
Travis CI is showing issues with the tests I've added [1]. I cannot
reproduce them locally, neither with gcc 4.8.5 (RHEL) nor 9.3.0 (Debian).
They're also only failing on one of the runners.
Thank you for taking the time to look at this,
Antonio Russo
[1] https://travis-ci.org/github/aerusso/git
[2] https://github.com/aerusso/git/tree/mrs/simplify-history-forks
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 04ad7dd36e..cbac09028c 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -363,6 +363,14 @@ Default mode::
merges from the resulting history, as there are no selected
commits contributing to this merge.
+--simplify-forks::
+ Convert the commit graph into a spanning subgraph produced by a
+ depth-first-search of the history graph, searching the leftmost
+ parent first, and discarding edges to commits already visited.
+ Useful with `--graph` to visualize repositories with many merges
+ when you are interested in was added to master, and not when the
+ branch was last rebased.
+
--ancestry-path::
When given a range of commits to display (e.g. 'commit1..commit2'
or 'commit2 {caret}commit1'), only display commits that exist
diff --git a/revision.c b/revision.c
index 5bc96444b6..06d9697306 100644
--- a/revision.c
+++ b/revision.c
@@ -2082,6 +2082,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
revs->simplify_by_decoration = 1;
revs->limited = 1;
revs->prune = 1;
+ } else if (!strcmp(arg, "--simplify-forks")) {
+ revs->simplify_forks = 1;
} else if (!strcmp(arg, "--date-order")) {
revs->sort_order = REV_SORT_BY_COMMIT_DATE;
revs->topo_order = 1;
@@ -3095,6 +3097,63 @@ static void simplify_merges(struct rev_info *revs)
}
}
+static void simplify_forks(struct rev_info *revs)
+{
+ struct commit_list *stack, *list_lr, *iter_list;
+ struct commit_list **parents;
+ struct commit *commit, *parent;
+
+ stack = NULL;
+ list_lr = NULL;
+
+ clear_object_flags(SIMP_FORK_VISITED);
+
+ for(iter_list = revs->commits; iter_list; iter_list = iter_list->next) {
+ /* process every commit to be displayed exactly once */
+ if(iter_list->item->object.flags & SIMP_FORK_VISITED)
+ continue;
+ clear_object_flags(SIMP_FORK_VISITING);
+ commit_list_insert(iter_list->item, &stack);
+ iter_list->item->object.flags |= SIMP_FORK_VISITED | SIMP_FORK_VISITING;
+ while(stack) {
+ commit = pop_commit(&stack);
+ /* process the parent nodes: removing links to
+ * commits already visited (creating a spanning tree)
+ */
+ parents = &(commit->parents);
+ while(*parents) {
+ parent = (*parents)->item;
+ if(parent->object.flags & SIMP_FORK_VISITING) {
+ /* We have already visited this commit, from the same root.
+ * We do not explore it at all.
+ */
+ pop_commit(parents);
+ } else if(parent->object.flags & SIMP_FORK_VISITED) {
+ /* We visited this commit before, but from a different root.
+ * Leave it attached, but do not explore it further.
+ */
+ parents = &((*parents)->next);
+ } else {
+ /* We have not visited this commit yet. Explore it, as usual.
+ */
+ parent->object.flags |= SIMP_FORK_VISITED | SIMP_FORK_VISITING;
+ commit_list_insert(parent, &list_lr);
+ parents = &((*parents)->next);
+ }
+ }
+
+ /* feed the parents, right to left (reversed) onto the
+ * stack to do a depth-first traversal of the commit graph
+ */
+ while(list_lr) {
+ commit_list_insert(pop_commit(&list_lr), &stack);
+ }
+ }
+ }
+
+ clear_object_flags(SIMP_FORK_VISITED | SIMP_FORK_VISITING);
+}
+
static void set_children(struct rev_info *revs)
{
struct commit_list *l;
@@ -3392,10 +3451,16 @@ int prepare_revision_walk(struct rev_info *revs)
if (revs->limited) {
if (limit_list(revs) < 0)
return -1;
+ if (revs->simplify_forks)
+ simplify_forks(revs);
if (revs->topo_order)
sort_in_topological_order(&revs->commits, revs->sort_order);
- } else if (revs->topo_order)
+ } else if (revs->topo_order) {
+ if (revs->simplify_forks)
+ simplify_forks(revs);
init_topo_walk(revs);
+ } else if (revs->simplify_forks)
+ simplify_forks(revs);
if (revs->line_level_traverse)
line_log_filter(revs);
if (revs->simplify_merges)
diff --git a/revision.h b/revision.h
index c1af164b30..f1abdb26b0 100644
--- a/revision.h
+++ b/revision.h
@@ -51,6 +51,11 @@
#define TOPO_WALK_EXPLORED (1u<<27)
#define TOPO_WALK_INDEGREE (1u<<28)
+/* Re-use the TOPO_WALK flagspace for simplify_forks
+ */
+#define SIMP_FORK_VISITED (1u<<27)
+#define SIMP_FORK_VISITING (1u<<28)
+
#define DECORATE_SHORT_REFS 1
#define DECORATE_FULL_REFS 2
@@ -132,6 +137,7 @@ struct rev_info {
no_walk:2,
remove_empty_trees:1,
simplify_history:1,
+ simplify_forks:1,
show_pulls:1,
topo_order:1,
simplify_merges:1,
diff --git a/t/t6016-rev-list-graph-simplify-history.sh b/t/t6016-rev-list-graph-simplify-history.sh
index f5e6e92f5b..d99214b6df 100755
--- a/t/t6016-rev-list-graph-simplify-history.sh
+++ b/t/t6016-rev-list-graph-simplify-history.sh
@@ -85,6 +85,28 @@ test_expect_success '--graph --all' '
test_cmp expected actual
'
+# Make sure that simplify_histpry_forks produces a spanning tree
+test_expect_success '--graph --simplify-forks --all' '
+ rm -f expected &&
+ echo "* $A7" >> expected &&
+ echo "* $A6" >> expected &&
+ echo "|\ " >> expected &&
+ echo "| * $C4" >> expected &&
+ echo "| * $C3" >> expected &&
+ echo "* $A5" >> expected &&
+ echo "*-. $A4" >> expected &&
+ echo "|\ \ " >> expected &&
+ echo "| | * $C2" >> expected &&
+ echo "| | * $C1" >> expected &&
+ echo "| * $B2" >> expected &&
+ echo "| * $B1" >> expected &&
+ echo "* $A3" >> expected &&
+ echo "* $A2" >> expected &&
+ echo "* $A1" >> expected &&
+ git rev-list --graph --simplify-forks --all > actual &&
+ test_cmp expected actual
+ '
+
# Make sure the graph_is_interesting() code still realizes
# that undecorated merges are interesting, even with --simplify-by-decoration
test_expect_success '--graph --simplify-by-decoration' '
@@ -157,6 +179,20 @@ test_expect_success '--graph --full-history -- bar.txt' '
test_cmp expected actual
'
+test_expect_success '--graph --simplify-forks --full-history -- bar.txt' '
+ rm -f expected &&
+ echo "* $A7" >> expected &&
+ echo "* $A6" >> expected &&
+ echo "|\\ " >> expected &&
+ echo "| * $C4" >> expected &&
+ echo "* $A5" >> expected &&
+ echo "* $A4" >> expected &&
+ echo "* $A3" >> expected &&
+ echo "* $A2" >> expected &&
+ git rev-list --graph --simplify-forks --full-history --all -- bar.txt > actual &&
+ test_cmp expected actual
+ '
+
test_expect_success '--graph --full-history --simplify-merges -- bar.txt' '
rm -f expected &&
echo "* $A7" >> expected &&
@@ -172,6 +208,20 @@ test_expect_success '--graph --full-history --simplify-merges -- bar.txt' '
test_cmp expected actual
'
+test_expect_success '--graph --simplify-forks --full-history --simplify-merges -- bar.txt' '
+ rm -f expected &&
+ echo "* $A7" >> expected &&
+ echo "* $A6" >> expected &&
+ echo "|\\ " >> expected &&
+ echo "| * $C4" >> expected &&
+ echo "* $A5" >> expected &&
+ echo "* $A3" >> expected &&
+ echo "* $A2" >> expected &&
+ git rev-list --graph --simplify-forks --full-history --simplify-merges --all \
+ -- bar.txt > actual &&
+ test_cmp expected actual
+ '
+
test_expect_success '--graph -- bar.txt' '
rm -f expected &&
echo "* $A7" >> expected &&
--
2.26.2
^ permalink raw reply related [relevance 0%]
* [ANNOUNCE] Git v2.26.0
@ 2020-03-23 1:10 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-23 1:10 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.26.0 is now available at the
usual places. It is comprised of 504 non-merge commits since
v2.25.0, contributed by 64 people, 12 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.26.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.25.0 are as follows.
Welcome to the Git development community!
Abhishek Kumar, Benno Evers, Emir Sarı, Eyal Soha, Harald
van Dijk, Jacques Bodin-Hullin, Kir Kolyshkin, Lucius Hu,
Luke Bonanomi, Peter Kaestle, Rasmus Jonsson, and Shourya Shukla.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alessandro Menti, Alexander Shopov, Alexandr
Miloslavskiy, Beat Bolli, Bert Wesarg, brian m. carlson,
Christian Stimming, Christopher Diaz Riveros, David Turner,
Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric Sunshine, Fangyi Zhou, Hans
Jerry Illikainen, Hariom Verma, Heba Waly, Jean-Noël Avila,
Jeff King, Jiang Xin, Johan Herland, Johannes Berg, Johannes
Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi
Mas, Junio C Hamano, Kevin Willford, Kyle Meyer, Luke Diamand,
Martin Ågren, Masaya Suzuki, Matheus Tavares, Matthew Rogers,
Matthias Rüster, Miriam Rubio, Paolo Bonzini, Peter Krefting,
Philippe Blain, Pranit Bauva, Pratyush Yadav, Ralf Thielow,
René Scharfe, SZEDER Gábor, Tanushree Tumane, Taylor Blau,
Trần Ngọc Quân, and Yi-Jyun Pan.
----------------------------------------------------------------
Git 2.26 Release Notes
======================
Updates since v2.25
-------------------
Backward compatibility notes
* "git rebase" uses a different backend that is based on the 'merge'
machinery by default. There are a few known differences in the
behaviour from the traditional machinery based on patch+apply.
If your workflow is negatively affected by this change, please
report it to git@vger.kernel.org so that we can take a look into
it. After doing so, you can set the 'rebase.backend' configuration
variable to 'apply', in order to use the old default behaviour in
the meantime.
UI, Workflows & Features
* Sample credential helper for using .netrc has been updated to work
out of the box.
* gpg.minTrustLevel configuration variable has been introduced to
tell various signature verification codepaths the required minimum
trust level.
* The command line completion (in contrib/) learned to complete
subcommands and arguments to "git worktree".
* Disambiguation logic to tell revisions and pathspec apart has been
tweaked so that backslash-escaped glob special characters do not
count in the "wildcards are pathspec" rule.
* One effect of specifying where the GIT_DIR is (either with the
environment variable, or with the "git --git-dir=<where> cmd"
option) is to disable the repository discovery. This has been
placed a bit more stress in the documentation, as new users often
get confused.
* Two help messages given when "git add" notices the user gave it
nothing to add have been updated to use advise() API.
* A new version of fsmonitor-watchman hook has been introduced, to
avoid races.
* "git config" learned to show in which "scope", in addition to in
which file, each config setting comes from.
* The basic 7 colors learned the brighter counterparts
(e.g. "brightred").
* "git sparse-checkout" learned a new "add" subcommand.
* A configuration element used for credential subsystem can now use
wildcard pattern to specify for which set of URLs the entry
applies.
* "git clone --recurse-submodules --single-branch" now uses the same
single-branch option when cloning the submodules.
* "git rm" and "git stash" learns the new "--pathspec-from-file"
option.
* "git am --show-current-patch" is a way to show the piece of e-mail
for the stopped step, which is not suitable to directly feed "git
apply" (it is designed to be a good "git am" input). It learned a
new option to show only the patch part.
* Handling of conflicting renames in merge-recursive have further
been made consistent with how existing codepaths try to mimic what
is done to add/add conflicts.
Performance, Internal Implementation, Development Support etc.
* Tell .editorconfig that in this project, *.txt files are indented
with tabs.
* The test-lint machinery knew to check "VAR=VAL shell_function"
construct, but did not check "VAR= shell_function", which has been
corrected.
* Replace "git config --bool" calls with "git config --type=bool" in
sample templates.
* The effort to move "git-add--interactive" to C continues.
* Improve error message generation for "git submodule add".
* Preparation of test scripts for the day when the object names will
use SHA-256 continues.
* Warn programmers about pretend_object_file() that allows the code
to tentatively use in-core objects.
* The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.
* The transport protocol version 2 becomes the default one.
* Traditionally, we avoided threaded grep while searching in objects
(as opposed to files in the working tree) as accesses to the object
layer is not thread-safe. This limitation is getting lifted.
* "git rebase -i" (and friends) used to unnecessarily check out the
tip of the branch to be rebased, which has been corrected.
* A low-level API function get_oid(), that accepts various ways to
name an object, used to issue end-user facing error messages
without l10n, which has been updated to be translatable.
* Unneeded connectivity check is now disabled in a partial clone when
fetching into it.
* Some rough edges in the sparse-checkout feature, especially around
the cone mode, have been cleaned up.
* The diff-* plumbing family of subcommands now pay attention to the
diff.wsErrorHighlight configuration, which has been ignored before;
this allows "git add -p" to also show the whitespace problems to
the end user.
* Some codepaths were given a repository instance as a parameter to
work in the repository, but passed the_repository instance to its
callees, which has been cleaned up (somewhat).
* Memory footprint and performance of "git name-rev" has been
improved.
* The object reachability bitmap machinery and the partial cloning
machinery were not prepared to work well together, because some
object-filtering criteria that partial clones use inherently rely
on object traversal, but the bitmap machinery is an optimization
to bypass that object traversal. There however are some cases
where they can work together, and they were taught about them.
* "git rebase" has learned to use the merge backend (i.e. the
machinery that drives "rebase -i") by default, while allowing
"--apply" option to use the "apply" backend (e.g. the moral
equivalent of "format-patch piped to am"). The rebase.backend
configuration variable can be set to customize.
* Underlying machinery of "git bisect--helper" is being refactored
into pieces that are more easily reused.
Fixes since v2.25
-----------------
* "git commit" gives output similar to "git status" when there is
nothing to commit, but without honoring the advise.statusHints
configuration variable, which has been corrected.
* has_object_file() said "no" given an object registered to the
system via pretend_object_file(), making it inconsistent with
read_object_file(), causing lazy fetch to attempt fetching an
empty tree from promisor remotes.
* Complete an update to tutorial that encourages "git switch" over
"git checkout" that was done only half-way.
* C pedantry ;-) fix.
* The code that tries to skip over the entries for the paths in a
single directory using the cache-tree was not careful enough
against corrupt index file.
* Reduce unnecessary round-trip when running "ls-remote" over the
stateless RPC mechanism.
* "git restore --staged" did not correctly update the cache-tree
structure, resulting in bogus trees to be written afterwards, which
has been corrected.
* The code recently added to move to the entry beyond the ones in the
same directory in the index in the sparse-cone mode did not count
the number of entries to skip over incorrectly, which has been
corrected.
* Rendering by "git log --graph" of ancestry lines leading to a merge
commit were made suboptimal to waste vertical space a bit with a
recent update, which has been corrected.
* Work around test breakages caused by custom regex engine used in
libasan, when address sanitizer is used with more recent versions
of gcc and clang.
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
* "git fetch --refmap=" option has got a better documentation.
* "git checkout X" did not correctly fail when X is not a local
branch but could name more than one remote-tracking branches
(i.e. to be dwimmed as the starting point to create a corresponding
local branch), which has been corrected.
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
* Corner case bugs in "git clean" that stems from a (necessarily for
performance reasons) awkward calling convention in the directory
enumeration API has been corrected.
* A fetch that is told to recursively fetch updates in submodules
inevitably produces reams of output, and it becomes hard to spot
error messages. The command has been taught to enumerate
submodules that had errors at the end of the operation.
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
* The "--recurse-submodules" option of various subcommands did not
work well when run in an alternate worktree, which has been
corrected.
* Futureproofing a test not to depend on the current implementation
detail.
* Running "git rm" on a submodule failed unnecessarily when
.gitmodules is only cache-dirty, which has been corrected.
* C pedantry ;-) fix.
* "git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did. Now these
settings are ignored in the "--no-index" mode.
* Technical details of the bundle format has been documented.
* Unhelpful warning messages during documentation build have been squelched.
* "git rebase -i" identifies existing commits in its todo file with
their abbreviated object name, which could become ambiguous as it
goes to create new commits, and has a mechanism to avoid ambiguity
in the main part of its execution. A few other cases however were
not covered by the protection against ambiguity, which has been
corrected.
* Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
(merge 5a5445d878 ag/edit-todo-drop-check later to maint).
* The way "git submodule status" reports an initialized but not yet
populated submodule has not been reimplemented correctly when a
part of the "git submodule" command was rewritten in C, which has
been corrected.
(merge f38c92452d pk/status-of-uncloned-submodule later to maint).
* The code to automatically shrink the fan-out in the notes tree had
an off-by-one bug, which has been killed.
* The index-pack code now diagnoses a bad input packstream that
records the same object twice when it is used as delta base; the
code used to declare a software bug when encountering such an
input, but it is an input error.
* The code to compute the commit-graph has been taught to use a more
robust way to tell if two object directories refer to the same
thing.
(merge a7df60cac8 tb/commit-graph-object-dir later to maint).
* "git remote rename X Y" needs to adjust configuration variables
(e.g. branch.<name>.remote) whose value used to be X to Y.
branch.<name>.pushRemote is now also updated.
* Update to doc-diff.
* Doc markup fix.
* "git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.
* The merge-recursive machinery failed to refresh the cache entry for
a merge result in a couple of places, resulting in an unnecessary
merge failure, which has been fixed.
* Fix for a bug revealed by a recent change to make the protocol v2
the default.
* In rare cases "git worktree add <path>" could think that <path>
was already a registered worktree even when it wasn't and refuse
to add the new worktree. This has been corrected.
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).
* "git push" should stop from updating a branch that is checked out
when receive.denyCurrentBranch configuration is set, but it failed
to pay attention to checkouts in secondary worktrees. This has
been corrected.
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
checked it out, even when the BRANCH is checked out in a different
worktree. This has been corrected.
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).
* "git describe" in a repository with multiple root commits sometimes
gave up looking for the best tag to describe a given commit with
too early, which has been adjusted.
* "git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.
* MinGW's poll() emulation has been improved.
* "git show" and others gave an object name in raw format in its
error output, which has been corrected to give it in hex.
* "git fetch" over HTTP walker protocol did not show any progress
output. We inherently do not know how much work remains, but still
we can show something not to bore users.
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).
* Both "git ls-remote -h" and "git grep -h" give short usage help,
like any other Git subcommand, but it is not unreasonable to expect
that the former would behave the same as "git ls-remote --head"
(there is no other sensible behaviour for the latter). The
documentation has been updated in an attempt to clarify this.
* Other code cleanup, docfix, build fix, etc.
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
(merge c513a958b6 ss/t6025-modernize later to maint).
(merge b441717256 dl/test-must-fail-fixes later to maint).
(merge d031049da3 mt/sparse-checkout-doc-update later to maint).
(merge 145136a95a jc/skip-prefix later to maint).
(merge 5290d45134 jk/alloc-cleanups later to maint).
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
(merge 517b60564e rs/strbuf-insertstr later to maint).
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
(merge de26f02db1 js/test-avoid-pipe later to maint).
(merge a2dc43414c es/doc-mentoring later to maint).
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
(merge 2ce6d075fa rs/micro-cleanups later to maint).
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
(merge 3c29e21eb0 ma/test-cleanup later to maint).
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
(merge fd0bc17557 kk/complete-diff-color-moved later to maint).
(merge 65bf820d0e en/test-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.25.0 are as follows:
Abhishek Kumar (2):
lib-log-graph: consolidate test_cmp_graph logic
lib-log-graph: consolidate colored graph cmp logic
Alban Gruin (4):
rebase -i: stop checking out the tip of the branch to rebase
sequencer: move check_todo_list_from_file() to rebase-interactive.c
rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
builtin/rebase: remove a call to get_oid() on `options.switch_to'
Alessandro Menti (2):
l10n: it.po: update the Italian translation for Git 2.26.0 round 1
l10n: it.po: update the Italian translation for Git 2.26.0 round 2
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (4835t)
l10n: bg.po: Updated Bulgarian translation (4839t)
Alexandr Miloslavskiy (14):
parse_branchname_arg(): extract part as new function
checkout: don't revert file on ambiguous tracking branches
t: add tests for error conditions with --pathspec-from-file
t: fix quotes tests for --pathspec-from-file
t: directly test parse_pathspec_file()
doc: rm: synchronize <pathspec> description
rm: support the --pathspec-from-file option
doc: stash: split options from description (1)
doc: stash: split options from description (2)
doc: stash: document more options
doc: stash: synchronize <pathspec> description
stash: eliminate crude option parsing
stash push: support the --pathspec-from-file option
mingw: workaround for hangs when sending STDIN
Beat Bolli (1):
unicode: update the width tables to Unicode 13.0
Benno Evers (1):
describe: don't abort too early when searching tags
Bert Wesarg (6):
pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
remote: clean-up by returning early to avoid one indentation
remote: clean-up config callback
remote rename/remove: handle branch.<name>.pushRemote config values
config: provide access to the current line number
remote rename/remove: gently handle remote.pushDefault config
Christian Stimming (3):
git-gui: update pot template and German translation to current source code
git-gui: extend translation glossary template with more terms
git-gui: update German translation
Christopher Diaz Riveros (1):
l10n: es: 2.26.0 round#2
David Turner (1):
git rm submodule: succeed if .gitmodules index stat info is zero
Denton Liu (34):
t/lib-git-p4: use test_path_is_missing()
t0000: replace test_must_fail with run_sub_test_lib_test_err()
t0003: use named parameters in attr_check()
t0003: use test_must_be_empty()
t0003: don't use `test_must_fail attr_check`
t0020: don't use `test_must_fail has_cr`
t0020: use ! check_packed_refs_marked
t1306: convert `test_might_fail rm` to `rm -f`
t1307: reorder `nongit test_must_fail`
t1409: let sed open its own input file
t1409: use test_path_is_missing()
t1501: remove use of `test_might_fail cp`
t1507: stop losing return codes of git commands
t1507: run commands within test_expect_success
t1507: inline full_name()
contrib/credential/netrc: make PERL_PATH configurable
contrib/credential/netrc: work outside a repo
t2018: remove trailing space from test description
t2018: add space between function name and ()
t2018: improve style of if-statement
.mailmap: fix erroneous authorship for Johannes Schindelin
t2018: be more discerning when checking for expected exit codes
t2018: teach do_checkout() to accept `!` arg
t2018: don't lose return code of git commands
t2018: replace "sha" with "oid"
t3030: use test_path_is_missing()
t3310: extract common notes_merge_files_gone()
t3415: stop losing return codes of git commands
t3415: increase granularity of test_auto_{fixup,squash}()
t3419: stop losing return code of git command
t3507: fix indentation
t3507: use test_path_is_missing()
t4124: only mark git command with test_must_fail
.mailmap: map Yi-Jyun Pan's email
Derrick Stolee (26):
unpack-trees: correctly compute result count
graph: add test to demonstrate horizontal line bug
graph: fix collapse of multiple edges
clean: demonstrate a bug with pathspecs
fetch: document and test --refmap=""
t1091: use check_files to reduce boilerplate
t1091: improve here-docs
sparse-checkout: create leading directories
clone: fix --sparse option with URLs
sparse-checkout: cone mode does not recognize "**"
sparse-checkout: detect short patterns
sparse-checkout: warn on globs in cone patterns
sparse-checkout: properly match escaped characters
sparse-checkout: write escaped patterns in cone mode
sparse-checkout: unquote C-style strings over --stdin
sparse-checkout: use C-style quotes in 'list' subcommand
sparse-checkout: escape all glob characters on write
sparse-checkout: improve docs around 'set' in cone mode
sparse-checkout: fix cone mode behavior mismatch
sparse-checkout: extract add_patterns_from_input()
sparse-checkout: extract pattern update from 'set' subcommand
sparse-checkout: create 'add' subcommand
sparse-checkout: work with Windows paths
sparse-checkout: allow one-character directories in cone mode
partial-clone: demonstrate bugs in partial fetch
partial-clone: avoid fetching when looking for objects
Elijah Newren (36):
unpack-trees: exit check_updates() early if updates are not wanted
string-list: note in docs that callers can specify sorting function
dir: treat_leading_path() and read_directory_recursive(), round 2
git-rebase.txt: update description of --allow-empty-message
t3404: directly test the behavior of interest
rebase (interactive-backend): make --keep-empty the default
rebase (interactive-backend): fix handling of commits that become empty
t3406: simplify an already simple test
rebase, sequencer: remove the broken GIT_QUIET handling
rebase: make sure to pass along the quiet flag to the sequencer
rebase: fix handling of restrict_revision
t3432: make these tests work with either am or merge backends
rebase: allow more types of rebases to fast-forward
git-rebase.txt: add more details about behavioral differences of backends
rebase: move incompatibility checks between backend options a bit earlier
rebase: add an --am option
git-prompt: change the prompt for interactive-based rebases
rebase: drop '-i' from the reflog for interactive-based rebases
rebase tests: mark tests specific to the am-backend with --am
rebase tests: repeat some tests using the merge backend instead of am
rebase: make the backend configurable via config setting
rebase: change the default backend from "am" to "merge"
rebase: rename the two primary rebase backends
check-ignore: fix documentation and implementation to match
t3433: new rebase testcase documenting a stat-dirty-like failure
merge-recursive: fix the refresh logic in update_file_flags
merge-recursive: apply collision handling unification to recursive case
t602[1236], t6034: modernize test formatting
t6020, t6022, t6035: update merge tests to use test helper functions
t3035: prefer test_must_fail to bash negation for git commands
t6022, t6046: test expected behavior instead of testing a proxy for it
t6020: new test with interleaved lexicographic ordering of directories
sequencer: clear state upon dropping a become-empty commit
git-rebase.txt: highlight backend differences with commit rewording
t6022, t6046: fix flaky files-are-updated checks
RelNotes/2.26.0: fix various typos
Emily Shaffer (9):
unpack-trees: watch for out-of-range index position
fetch: emphasize failure during submodule fetch
MyFirstContribution: add avenues for getting help
submodule: add newline on invalid submodule error
MyFirstContribution: rephrase contact info
prefix_path: show gitdir when arg is outside repo
submodule--helper: use C99 named initializer
clone: pass --single-branch during --recurse-submodules
prefix_path: show gitdir if worktree unavailable
Emir Sarı (5):
l10n: tr: Add Turkish translation team info
l10n: tr: Add Turkish translations
l10n: tr: Add glossary for Turkish translations
l10n: tr: v2.26.0 round 2
l10n: tr: Fix a couple of ambiguities
Eric Sunshine (6):
t3400: make test clean up after itself
rebase: refuse to switch to branch already checked out elsewhere
worktree: drop unused code from get_main_worktree()
worktree: improve find_worktree() documentation
worktree: add utility to find worktree by pathname
worktree: don't allow "add" validation to be fooled by suffix matching
Eyal Soha (3):
color.c: refactor color_output arguments
color.c: support bright aixterm colors
color.c: alias RGB colors 8-15 to aixterm colors
Fangyi Zhou (1):
l10n: zh_CN: Revise v2.26.0 translation
Hans Jerry Illikainen (2):
editorconfig: indent text files with tabs
gpg-interface: add minTrustLevel as a configuration option
Harald van Dijk (1):
show_one_mergetag: print non-parent in hex form.
Hariom Verma (4):
get_main_worktree(): allow it to be called in the Git directory
t5509: use a bare repository for test push target
receive.denyCurrentBranch: respect all worktrees
t2402: test worktree path when called in .git directory
Heba Waly (5):
commit: honor advice.statusHints when rejecting an empty commit
doc/gitcore-tutorial: fix prose to match example command
add: use advise function to display hints
git: update documentation for --git-dir
add: change advice config variables used by the add API
Jacques Bodin-Hullin (1):
parse-options: lose an unnecessary space in an error message
Jean-Noël Avila (2):
l10n: fr v2.26.0 rnd1
l10n: fr : v2.26.0 rnd 2
Jeff King (70):
builtin/pack-objects: report reused packfile objects
packfile: expose get_delta_base()
restore: invalidate cache-tree when removing entries with --staged
transport: don't flush when disconnecting stateless-rpc helper
dir: restructure in a way to avoid passing around a struct dirent
dir: point treat_leading_path() warning to the right place
Makefile: use compat regex with SANITIZE=address
t4018: drop "debugging" cat from hunk-header tests
t7800: don't rely on reuse_worktree_file()
ewah/bitmap: introduce bitmap_word_alloc()
pack-bitmap: introduce bitmap_walk_contains()
pack-bitmap: uninteresting oid can be outside bitmapped packfile
pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
csum-file: introduce hashfile_total()
pack-objects: introduce pack.allowPackReuse
builtin/pack-objects: introduce obj_is_packed()
pack-objects: improve partial packfile reuse
pack-objects: add checks for duplicate objects
pack-bitmap: don't rely on bitmap_git->reuse_objects
sparse-checkout: fix documentation typo for core.sparseCheckoutCone
verify_filename(): handle backslashes in "wildcards are pathspecs" rule
merge-recursive: silence -Wxor-used-as-pow warning
t1400: avoid "test" string comparisons
t1506: drop space after redirection operator
avoid computing zero offsets from NULL pointer
xdiff: avoid computing non-zero offset from NULL pointer
obstack: avoid computing offsets from NULL pointer
doc: drop "explicitly given" from push.default description
sha1-name: mark get_oid() error messages for translation
normalize_path_copy(): document "dst" size expectations
walker_fetch(): avoid raw array length computation
traverse_trees(): use stack array for name entries
diff: move diff.wsErrorHighlight to "basic" config
tree-walk.c: break circular dependency with unpack-trees
index-pack: downgrade twice-resolved REF_DELTA to die()
mailinfo: treat header values as C strings
mailinfo: simplify parsing of header values
mailinfo: be more liberal with header whitespace
mailinfo: factor out some repeated header handling
pack-bitmap: factor out type iterator initialization
pack-bitmap: fix leak of haves/wants object lists
rev-list: fallback to non-bitmap traversal when filtering
pack-bitmap: refuse to do a bitmap traversal with pathspecs
rev-list: factor out bitmap-optimized routines
rev-list: make --count work with --objects
rev-list: allow bitmaps when counting objects
t5310: factor out bitmap traversal comparison
rev-list: allow commit-only bitmap traversals
pack-bitmap: basic noop bitmap filter infrastructure
rev-list: use bitmap filters for traversal
bitmap: add bitmap_unset() function
pack-bitmap: implement BLOB_NONE filtering
pack-bitmap: implement BLOB_LIMIT filtering
pack-objects: support filters with bitmaps
doc: move credential helper info into gitcredentials(7)
doc/config/push: use longer "--" line for preformatted example
doc-diff: use single-colon rule in rendering Makefile
run-command.h: fix mis-indented struct member
nth_packed_object_oid(): use customary integer return
pack-objects: read delta base oid into object_id struct
pack-objects: convert oe_set_delta_ext() to use object_id
pack-objects: use object_id struct in pack-reuse code
pack-bitmap: use object_id when loading on-disk bitmaps
pack-check: convert "internal error" die to a BUG()
pack-check: push oid lookup into loop
packed_object_info(): use object_id for returning delta base
packed_object_info(): use object_id internally for delta base
packfile: drop nth_packed_object_sha1()
config.mak.dev: re-enable -Wformat-zero-length
remote: drop "explicit" parameter from remote_ref_for_branch()
Jiang Xin (5):
l10n: git.pot: v2.26.0 round 1 (73 new, 38 removed)
l10n: git.pot: v2.26.0 round 2 (7 new, 2 removed)
i18n: unmark a message in rebase.c
l10n: zh_CN: for git v2.26.0 l10n round 1 and 2
l10n: tr.po: change file mode to 644
Johan Herland (2):
t3305: check notes fanout more carefully and robustly
notes.c: fix off-by-one error when decreasing notes fanout
Johannes Berg (1):
pack-format: correct multi-pack-index description
Johannes Schindelin (33):
built-in add -p: prepare for patch modes other than "stage"
built-in add -p: implement the "stash" and "reset" patch modes
legacy stash -p: respect the add.interactive.usebuiltin setting
built-in stash: use the built-in `git add -p` if so configured
built-in add -p: implement the "checkout" patch modes
built-in add -p: implement the "worktree" patch modes
commit --interactive: make it work with the built-in `add -i`
t3701: adjust difffilter test
built-in add -p: support interactive.diffFilter
built-in add -p: handle diff.algorithm
terminal: make the code of disable_echo() reusable
terminal: accommodate Git for Windows' default terminal
terminal: add a new function to read a single keystroke
built-in add -p: respect the `interactive.singlekey` config setting
built-in add -p: handle Escape sequences in interactive.singlekey mode
built-in add -p: handle Escape sequences more efficiently
ci: include the built-in `git add -i` in the `linux-gcc` job
msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
built-in add -i: do not try to `patch`/`diff` an empty list of files
built-in add -i: accept open-ended ranges again
parse_insn_line(): improve error message when parsing failed
rebase -i: re-fix short SHA-1 collision
rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
ci: ignore rubygems warning in the "Documentation" job
convert: fix typo
tests: fix --write-junit-xml with subshells
t9001, t9116: avoid pipes
t5580: test cloning without file://, test fetching via UNC paths
mingw: add a helper function to attach GDB to the current process
t/lib-httpd: avoid using macOS' sed
ci: prevent `perforce` from being quarantined
Azure Pipeline: switch to the latest agent pools
t5537: adjust test_oid label
Johannes Sixt (1):
t3504: do check for conflict marker after failed cherry-pick
Jonathan Nieder (9):
sha1-file: document how to use pretend_object_file
fetch test: avoid use of "VAR= cmd" with a shell function
t/check-non-portable-shell: detect "FOO= shell_func", too
fetch test: mark test of "skipping" haves as v0-only
fetch test: use more robust test for filtered objects
config doc: protocol.version is not experimental
test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
fetch: default to protocol version 2
Jonathan Tan (4):
sha1-file: remove OBJECT_INFO_SKIP_CACHED
t5616: make robust to delta base change
connected: verify promisor-ness of partial clone
fetch: forgo full connectivity check if --filter
Jordi Mas (3):
l10n: Update Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Junio C Hamano (21):
The first batch post 2.25 cycle
merge-recursive: use subtraction to flip stage
.mailmap: fix GGG authoship screwup
The second batch
C: use skip_prefix() to avoid hardcoded string length
The third batch for 2.26
The fourth batch for 2.26
The fifth batch for 2.26
Git 2.25.1
The sixth batch for 2.26
rev-list --count: comment on the use of count_right++
The seventh batch for 2.26
Documentation: clarify that `-h` alone stands for `help`
Revert "gpg-interface: prefer check_signature() for GPG verification"
The eighth batch for 2.26
Git 2.26-rc0
Git 2.26-rc1
Hopefully the final batch before -rc2
Git 2.26-rc2
Git 2.25.2
Git 2.26
Kevin Willford (4):
fsmonitor: change last update timestamp on the index_state to opaque token
fsmonitor: handle version 2 of the hooks that will use opaque token
fsmonitor: add fsmonitor hook scripts for version 2
fsmonitor: update documentation for hook version and watchman hooks
Kir Kolyshkin (1):
completion: add diff --color-moved[-ws]
Kyle Meyer (2):
submodule add: show 'add --dry-run' stderr when aborting
submodule foreach: replace $path with $sm_path in example
Lucius Hu (1):
templates: fix deprecated type option `--bool`
Luke Bonanomi (1):
git-gui--askpass: coerce answers to UTF-8 on Windows
Luke Diamand (7):
git-p4: make closeStreams() idempotent
git-p4: add P4CommandException to report errors talking to Perforce
git-p4: disable some pylint warnings, to get pylint output to something manageable
git-p4: create helper function importRevisions()
git-p4: cleanup better on error exit
git-p4: check for access to remote host earlier
git-p4: avoid leak of file handle when cloning
Martin Ågren (7):
git-filter-branch.txt: wrap "maths" notation in backticks
name-rev: rewrite create_or_update_name()
diff-options.txt: avoid "regex" overload in example
t4117: check for files using `test_path_is_file`
t9810: drop debug `cat` call
t: drop debug `cat` calls
t1091: don't grep for `strerror()` string
Masaya Suzuki (1):
doc: describe Git bundle format
Matheus Tavares (21):
grep: fix race conditions on userdiff calls
grep: fix race conditions at grep_submodule()
grep: fix racy calls in grep_objects()
replace-object: make replace operations thread-safe
object-store: allow threaded access to object reading
grep: replace grep_read_mutex by internal obj read lock
submodule-config: add skip_if_read option to repo_read_gitmodules()
grep: allow submodule functions to run in parallel
grep: protect packed_git [re-]initialization
grep: re-enable threads in non-worktree case
grep: move driver pre-load out of critical section
grep: use no. of cores as the default no. of threads
doc: sparse-checkout: mention --cone option
completion: add support for sparse-checkout
diff: make diff_populate_filespec() honor its repo argument
cache-tree: use given repo's hash_algo at verify_one()
pack-check: use given repo's hash_algo at verify_packfile()
streaming: allow open_istream() to handle any repo
sha1-file: pass git_hash_algo to write_object_file_prepare()
sha1-file: pass git_hash_algo to hash_object_file()
sha1-file: allow check_object_signature() to handle any repo
Matthew Rogers (10):
config: fix typo in variable name
t1300: fix over-indented HERE-DOCs
t1300: create custom config file without special characters
config: make scope_name non-static and rename it
config: split repo scope to local and worktree
config: clarify meaning of command line scoping
config: preserve scope in do_git_config_sequence
config: teach git_config_source to remember its scope
submodule-config: add subomdule config scope
config: add '--show-scope' to print the scope of a config value
Matthias Rüster (1):
l10n: de.po: Update German translation for Git 2.26.0
Miriam Rubio (3):
bisect--helper: convert `vocab_*` char pointers to char arrays
bisect: use the standard 'if (!var)' way to check for 0
bisect: add enum to represent bisect returning codes
Paolo Bonzini (5):
parse-options: add testcases for OPT_CMDMODE()
parse-options: convert "command mode" to a flag
am: convert "resume" variable to a struct
am: support --show-current-patch=raw as a synonym for--show-current-patch
am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
Peter Kaestle (3):
t7400: add a testcase for submodule status on empty dirs
submodule: fix status of initialized but not cloned submodules
t7400: testcase for submodule status on unregistered inner git repos
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (4835t0f0u)
l10n: sv.po: Update Swedish translation (4839t0f0u)
Philippe Blain (5):
t7410: rename to t2405-worktree-submodule.sh
t2405: use git -C and test_commit -C instead of subshells
t2405: clarify test descriptions and simplify test
submodule.c: use get_git_dir() instead of get_git_common_dir()
grep: ignore --recurse-submodules if --no-index is given
Pranit Bauva (7):
bisect--helper: return error codes from `cmd_bisect__helper()`
bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
bisect: libify `bisect_checkout`
bisect: libify `check_merge_bases` and its dependents
bisect: libify `check_good_are_ancestors_of_bad` and its dependents
bisect: libify `handle_bad_merge_base` and its dependents
bisect: libify `bisect_next_all`
Pratyush Yadav (4):
git-gui: add missing close bracket
git-gui: fix error popup when doing blame -> "Show History Context"
git-gui: reduce Tcl version requirement from 8.6 to 8.5
git-gui: create a new namespace for chord script evaluation
Ralf Thielow (3):
submodule.c: mark more strings for translation
rebase-interactive.c: silence format-zero-length warnings
l10n: de.po: add missing space
Rasmus Jonsson (1):
t1050: replace test -f with test_path_is_file
René Scharfe (21):
name-rev: remove unused typedef
name-rev: respect const qualifier
name-rev: don't leak path copy in name_ref()
name-rev: don't _peek() in create_or_update_name()
name-rev: put struct rev_name into commit slab
name-rev: factor out get_parent_name()
name-rev: pre-size buffer in get_parent_name()
name-rev: generate name strings only if they are better
name-rev: release unused name strings
name-rev: sort tip names before applying
strbuf: add and use strbuf_insertstr()
mailinfo: don't insert header prefix for handle_content_type()
parse-options: use COPY_ARRAY in parse_options_concat()
parse-options: factor out parse_options_count()
parse-options: const parse_options_concat() parameters
parse-options: simplify parse_options_dup()
quote: use isalnum() to check for alphanumeric characters
use strpbrk(3) to search for characters from a given set
blame: provide type of fingerprints pointer
commit-graph: use progress title directly
remote-curl: show progress for fetches over dumb HTTP
SZEDER Gábor (6):
t9902-completion: add tests for the __git_find_on_cmdline() helper
completion: clean up the __git_find_on_cmdline() helper function
completion: return the index of found word from __git_find_on_cmdline()
completion: simplify completing 'git worktree' subcommands and options
completion: list existing working trees for 'git worktree' subcommands
completion: list paths and refs for 'git worktree add'
Shourya Shukla (2):
t6025: modernize style
t6025: use helpers to replace test -f <path>
Tanushree Tumane (2):
bisect--helper: change `retval` to `res`
bisect--helper: introduce new `decide_next()` function
Taylor Blau (5):
t5318: don't pass non-object directory to '--object-dir'
commit-graph.h: store an odb in 'struct write_commit_graph_context'
commit-graph.h: store object directory in 'struct commit_graph'
commit-graph.c: remove path normalization, comparison
commit-graph.h: use odb in 'load_commit_graph_one_fd_st'
Trần Ngọc Quân (1):
l10n: vi(4839t): Updated Vietnamese translation for v2.26.0
Yi-Jyun Pan (2):
l10n: zh_TW.po: v2.26.0 round 1 (11 untranslated)
l10n: zh_TW.po: v2.26.0 round 2 (0 untranslated)
brian m. carlson (54):
run-command: avoid undefined behavior in exists_in_PATH
t4054: make hash-size independent
t4066: compute index line in diffs
t4134: compute appropriate length constant
t4200: make hash size independent
t4202: abstract away SHA-1-specific constants
t4204: make hash size independent
t4300: abstract away SHA-1-specific constants
t5318: update for SHA-256
t5319: change invalid offset for SHA-256 compatibility
t5319: make test work with SHA-256
t5324: make hash size independent
t5504: make hash algorithm independent
t5510: make hash size independent
t5512: abstract away SHA-1-specific constants
t5530: compute results based on object length
t5537: make hash size independent
t5540: make hash size independent
t5562: use $ZERO_OID
t5601: switch into repository to hash object
t5604: make hash independent
docs: use "currently" for the present time
doc: move author and committer information to git-commit(1)
docs: expand on possible and recommended user config options
doc: provide guidance on user.name format
doc: dissuade users from trying to ignore tracked files
docs: mention when increasing http.postBuffer is valuable
t/lib-pack: support SHA-256
t3206: make hash size independent
t3308: make test work with SHA-256
t3309: make test work with SHA-256
t3310: make test work with SHA-256
t3311: make test work with SHA-256
t4013: make test hash independent
t4211: move SHA-1-specific test cases into a directory
t4211: add test cases for SHA-256
t4060: make test work with SHA-256
t5302: make hash size independent
t5309: make test hash independent
t5313: make test hash independent
t5321: make test hash independent
t5515: make test hash independent
t5318: update for SHA-256
t5607: make hash size independent
t5703: make test work with SHA-256
t6000: abstract away SHA-1-specific constants
t6006: make hash size independent
t6024: update for SHA-256
mailmap: add an additional email address for brian m. carlson
t1300: add test for urlmatch with multiple wildcards
t0300: add tests for some additional cases
credential: use the last matching username in the config
credential: allow wildcard patterns when matching config
t3419: prevent failure when run with EXPENSIVE
Đoàn Trần Công Danh (1):
l10n: vi: fix translation + grammar
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.26.0-rc2
@ 2020-03-16 23:25 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-16 23:25 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.26.0-rc2 is now available for testing
at the usual places. It is comprised of 463 non-merge commits
since v2.25.0, contributed by 48 people, 10 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.26.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.25.0 are as follows.
Welcome to the Git development community!
Abhishek Kumar, Benno Evers, Eyal Soha, Harald van Dijk,
Jacques Bodin-Hullin, Kir Kolyshkin, Lucius Hu, Peter Kaestle,
Rasmus Jonsson, and Shourya Shukla.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Bert Wesarg, brian
m. carlson, David Turner, Denton Liu, Derrick Stolee, Elijah
Newren, Emily Shaffer, Eric Sunshine, Hans Jerry Illikainen,
Hariom Verma, Heba Waly, Jeff King, Jiang Xin, Johan Herland,
Johannes Berg, Johannes Schindelin, Johannes Sixt, Jonathan
Nieder, Jonathan Tan, Junio C Hamano, Kevin Willford, Kyle Meyer,
Luke Diamand, Martin Ågren, Masaya Suzuki, Matheus Tavares,
Matthew Rogers, Miriam Rubio, Paolo Bonzini, Philippe Blain,
Pranit Bauva, Ralf Thielow, René Scharfe, SZEDER Gábor,
Tanushree Tumane, and Taylor Blau.
----------------------------------------------------------------
Git 2.26 Release Notes (draft)
==============================
Updates since v2.25
-------------------
Backward compatibility notes
* "git rebase" uses a different backend that is based on the 'merge'
machinery by default. There are a few known differences in the
behaviour from the traditional machniery based on patch+apply.
If your workflow is negatively affected by this change, please
report it to git@vger.kernel.org so that we can take a look into
it. After doing so, you can set the 'rebase.backend' configuration
variable to 'apply', in order to use the old default behaviour in
the meantime.
UI, Workflows & Features
* Sample credential helper for using .netrc has been updated to work
out of the box.
* gpg.minTrustLevel configuration variable has been introduced to
tell various signature verification codepaths the required minimum
trust level.
* The command line completion (in contrib/) learned to complete
subcommands and arguments to "git worktree".
* Disambiguation logic to tell revisions and pathspec apart has been
tweaked so that backslash-escaped glob special characters do not
count in the "wildcards are pathspec" rule.
* One effect of specifying where the GIT_DIR is (either with the
environment variable, or with the "git --git-dir=<where> cmd"
option) is to disable the repository discovery. This has been
placed a bit more stress in the documentation, as new users often
get confused.
* Two help messages given when "git add" notices the user gave it
nothing to add have been updated to use advise() API.
* A new version of fsmonitor-watchman hook has been introduced, to
avoid races.
* "git config" learned to show in which "scope", in addition to in
which file, each config setting comes from.
* The basic 7 colors learned the brighter counterparts
(e.g. "brightred").
* "git sparse-checkout" learned a new "add" subcommand.
* A configuration element used for credential subsystem can now use
wildcard pattern to specify for which set of URLs the entry
applies.
* "git clone --recurse-submodules --single-branch" now uses the same
single-branch option when cloning the submodules.
* "git rm" and "git stash" learns the new "--pathspec-from-file"
option.
* "git am --short-current-patch" is a way to show the piece of e-mail
for the stopped step, which is not suitable to directly feed "git
apply" (it is designed to be a good "git am" input). It learned a
new option to show only the patch part.
* Handling of conflicting renames in merge-recursive have further
been made consistent with how existing codepaths try to mimic what
is done to add/add conflicts.
Performance, Internal Implementation, Development Support etc.
* Tell .editorconfig that in this project, *.txt files are indented
with tabs.
* The test-lint machinery knew to check "VAR=VAL shell_function"
construct, but did not check "VAR= shell_funciton", which has been
corrected.
* Replace "git config --bool" calls with "git config --type=bool" in
sample templates.
* The effort to move "git-add--interactive" to C continues.
* Improve error message generation for "git submodule add".
* Preparation of test scripts for the day when the object names will
use SHA-256 continues.
* Warn programmers about pretend_object_file() that allows the code
to tentatively use in-core objects.
* The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.
* The transport protocol version 2 becomes the default one.
* Traditionally, we avoided threaded grep while searching in objects
(as opposed to files in the working tree) as accesses to the object
layer is not thread-safe. This limitation is getting lifted.
* "git rebase -i" (and friends) used to unnecessarily check out the
tip of the branch to be rebased, which has been corrected.
* A low-level API function get_oid(), that accepts various ways to
name an object, used to issue end-user facing error messages
without l10n, which has been updated to be translatable.
* Unneeded connectivity check is now disabled in a partial clone when
fetching into it.
* Some rough edges in the sparse-checkout feature, especially around
the cone mode, have been cleaned up.
* The diff-* plumbing family of subcommands now pay attention to the
diff.wsErrorHighlight configuration, which has been ignored before;
this allows "git add -p" to also show the whitespace problems to
the end user.
* Some codepaths were given a repository instance as a parameter to
work in the repository, but passed the_repository instance to its
callees, which has been cleaned up (somewhat).
* Memory footprint and performance of "git name-rev" has been
improved.
* The object reachability bitmap machinery and the partial cloning
machinery were not prepared to work well together, because some
object-filtering criteria that partial clones use inherently rely
on object traversal, but the bitmap machinery is an optimization
to bypass that object traversal. There however are some cases
where they can work together, and they were taught about them.
* "git rebase" has learned to use the merge backend (i.e. the
machinery that drives "rebase -i") by default, while allowing
"--apply" option to use the "apply" backend (e.g. the moral
equivalent of "format-patch piped to am"). The rebase.backend
configuration variable can be set to customize.
* Underlying machinery of "git bisect--helper" is being refactored
into pieces that are more easily reused.
Fixes since v2.25
-----------------
* "git commit" gives output similar to "git status" when there is
nothing to commit, but without honoring the advise.statusHints
configuration variable, which has been corrected.
* has_object_file() said "no" given an object registered to the
system via pretend_object_file(), making it inconsistent with
read_object_file(), causing lazy fetch to attempt fetching an
empty tree from promisor remotes.
* Complete an update to tutorial that encourages "git switch" over
"git checkout" that was done only half-way.
* C pedantry ;-) fix.
* The code that tries to skip over the entries for the paths in a
single directory using the cache-tree was not careful enough
against corrupt index file.
* Reduce unnecessary round-trip when running "ls-remote" over the
stateless RPC mechanism.
* "git restore --staged" did not correctly update the cache-tree
structure, resulting in bogus trees to be written afterwards, which
has been corrected.
* The code recently added to move to the entry beyond the ones in the
same directory in the index in the sparse-cone mode did not count
the number of entries to skip over incorrectly, which has been
corrected.
* Rendering by "git log --graph" of ancestry lines leading to a merge
commit were made suboptimal to waste vertical space a bit with a
recent update, which has been corrected.
* Work around test breakages caused by custom regex engine used in
libasan, when address sanitizer is used with more recent versions
of gcc and clang.
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
(merge 849e43cc18 js/builtin-add-i-cmds later to maint).
* "git fetch --refmap=" option has got a better documentation.
* "git checkout X" did not correctly fail when X is not a local
branch but could name more than one remote-tracking branches
(i.e. to be dwimmed as the starting point to create a corresponding
local branch), which has been corrected.
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
* Corner case bugs in "git clean" that stems from a (necessarily for
performance reasons) awkward calling convention in the directory
enumeration API has been corrected.
* A fetch that is told to recursively fetch updates in submodules
inevitably produces reams of output, and it becomes hard to spot
error messages. The command has been taught to enumerate
submodules that had errors at the end of the operation.
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
* The "--recurse-submodules" option of various subcommands did not
work well when run in an alternate worktree, which has been
corrected.
(merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).
* Futureproofing a test not to depend on the current implementation
detail.
* Running "git rm" on a submodule failed unnecessarily when
.gitmodules is only cache-dirty, which has been corrected.
(merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).
* C pedantry ;-) fix.
(merge cf82bff73f jk/clang-sanitizer-fixes later to maint).
* "git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did. Now these
settings are ignored in the "--no-index" mode.
* Technical details of the bundle format has been documented.
* Unhelpful warning messages during documentation build have been squelched.
* "git rebase -i" identifies existing commits in its todo file with
their abbreviated object name, which could become ambigous as it
goes to create new commits, and has a mechanism to avoid ambiguity
in the main part of its execution. A few other cases however were
not covered by the protection against ambiguity, which has been
corrected.
(merge 26027625dd js/rebase-i-with-colliding-hash later to maint).
* Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
(merge 5a5445d878 ag/edit-todo-drop-check later to maint).
* The way "git submodule status" reports an initialized but not yet
populated submodule has not been reimplemented correctly when a
part of the "git submodule" command was rewritten in C, which has
been corrected.
(merge f38c92452d pk/status-of-uncloned-submodule later to maint).
* The code to automatically shrink the fan-out in the notes tree had
an off-by-one bug, which has been killed.
(merge dbc27477ff jh/notes-fanout-fix later to maint).
* The index-pack code now diagnoses a bad input packstream that
records the same object twice when it is used as delta base; the
code used to declare a software bug when encountering such an
input, but it is an input error.
(merge a21781011f jk/index-pack-dupfix later to maint).
* The code to compute the commit-graph has been taught to use a more
robust way to tell if two object directories refer to the same
thing.
(merge a7df60cac8 tb/commit-graph-object-dir later to maint).
* "git remote rename X Y" needs to adjust configuration variables
(e.g. branch.<name>.remote) whose value used to be X to Y.
branch.<name>.pushRemote is now also updated.
* Update to doc-diff.
(merge 2607d39da3 jk/doc-diff-parallel later to maint).
* Doc markup fix.
(merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).
* "git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.
(merge 7ec8125fba en/check-ignore later to maint).
* The merge-recursive machinery failed to refresh the cache entry for
a merge result in a couple of places, resulting in an unnecessary
merge failure, which has been fixed.
(merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).
* Fix for a bug revealed by a recent change to make the protocol v2
the default.
(merge 3e96c66805 ds/partial-clone-fixes later to maint).
* In rare cases "git worktree add <path>" could think that <path>
was already a registered worktree even when it wasn't and refuse
to add the new worktree. This has been corrected.
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).
* "git push" should stop from updating a branch that is checked out
when receive.denyCurrentBranch configuration is set, but it failed
to pay attention to checkouts in secondary worktrees. This has
been corrected.
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
checked it out, even when the BRANCH is checked out in a different
worktree. This has been corrected.
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).
* "git describe" in a repository with multiple root commits sometimes
gave up looking for the best tag to describe a given commit with
too early, which has been adjusted.
* "git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.
(merge 0106b1d4be hi/gpg-use-check-signature later to maint).
* MinGW's poll() emulation has been improved.
(merge 94f4d01932 am/mingw-poll-fix later to maint).
* "git show" and others gave an object name in raw format in its
error output, which has been corrected to give it in hex.
(merge 237a28173f hd/show-one-mergetag-fix later to maint).
* "git fetch" over HTTP walker protocol did not show any progress
output. We inherently do not know how much work remains, but still
we can show something not to bore users.
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).
* Both "git ls-remote -h" and "git grep -h" give short usage help,
like any other Git subcommand, but it is not unreasonable to expect
that the former would behave the same as "git ls-remote --head"
(there is no other sensible behaviour for the latter). The
documentation has been updated in an attempt to clarify this.
(merge 1ff466c018 jc/doc-single-h-is-for-help later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
(merge c513a958b6 ss/t6025-modernize later to maint).
(merge b441717256 dl/test-must-fail-fixes later to maint).
(merge d031049da3 mt/sparse-checkout-doc-update later to maint).
(merge 145136a95a jc/skip-prefix later to maint).
(merge 5290d45134 jk/alloc-cleanups later to maint).
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
(merge 517b60564e rs/strbuf-insertstr later to maint).
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
(merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
(merge de26f02db1 js/test-avoid-pipe later to maint).
(merge bfe2bbb47f js/test-unc-fetch later to maint).
(merge 08809c09aa js/mingw-open-in-gdb later to maint).
(merge cc4f2eb828 jk/doc-credential-helper later to maint).
(merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
(merge a2dc43414c es/doc-mentoring later to maint).
(merge 539052f42f jk/run-command-formatfix later to maint).
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
(merge 2ce6d075fa rs/micro-cleanups later to maint).
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
(merge 3c29e21eb0 ma/test-cleanup later to maint).
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
(merge 7f487ce062 js/ci-windows-update later to maint).
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
(merge fd0bc17557 kk/complete-diff-color-moved later to maint).
(merge 65bf820d0e en/test-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.25.0 are as follows:
Abhishek Kumar (2):
lib-log-graph: consolidate test_cmp_graph logic
lib-log-graph: consolidate colored graph cmp logic
Alban Gruin (4):
rebase -i: stop checking out the tip of the branch to rebase
sequencer: move check_todo_list_from_file() to rebase-interactive.c
rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
builtin/rebase: remove a call to get_oid() on `options.switch_to'
Alexandr Miloslavskiy (14):
parse_branchname_arg(): extract part as new function
checkout: don't revert file on ambiguous tracking branches
t: add tests for error conditions with --pathspec-from-file
t: fix quotes tests for --pathspec-from-file
t: directly test parse_pathspec_file()
doc: rm: synchronize <pathspec> description
rm: support the --pathspec-from-file option
doc: stash: split options from description (1)
doc: stash: split options from description (2)
doc: stash: document more options
doc: stash: synchronize <pathspec> description
stash: eliminate crude option parsing
stash push: support the --pathspec-from-file option
mingw: workaround for hangs when sending STDIN
Benno Evers (1):
describe: don't abort too early when searching tags
Bert Wesarg (6):
pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
remote: clean-up by returning early to avoid one indentation
remote: clean-up config callback
remote rename/remove: handle branch.<name>.pushRemote config values
config: provide access to the current line number
remote rename/remove: gently handle remote.pushDefault config
David Turner (1):
git rm submodule: succeed if .gitmodules index stat info is zero
Denton Liu (34):
t/lib-git-p4: use test_path_is_missing()
t0000: replace test_must_fail with run_sub_test_lib_test_err()
t0003: use named parameters in attr_check()
t0003: use test_must_be_empty()
t0003: don't use `test_must_fail attr_check`
t0020: don't use `test_must_fail has_cr`
t0020: use ! check_packed_refs_marked
t1306: convert `test_might_fail rm` to `rm -f`
t1307: reorder `nongit test_must_fail`
t1409: let sed open its own input file
t1409: use test_path_is_missing()
t1501: remove use of `test_might_fail cp`
t1507: stop losing return codes of git commands
t1507: run commands within test_expect_success
t1507: inline full_name()
contrib/credential/netrc: make PERL_PATH configurable
contrib/credential/netrc: work outside a repo
t2018: remove trailing space from test description
t2018: add space between function name and ()
t2018: improve style of if-statement
.mailmap: fix erroneous authorship for Johannes Schindelin
t2018: be more discerning when checking for expected exit codes
t2018: teach do_checkout() to accept `!` arg
t2018: don't lose return code of git commands
t2018: replace "sha" with "oid"
t3030: use test_path_is_missing()
t3310: extract common notes_merge_files_gone()
t3415: stop losing return codes of git commands
t3415: increase granularity of test_auto_{fixup,squash}()
t3419: stop losing return code of git command
t3507: fix indentation
t3507: use test_path_is_missing()
t4124: only mark git command with test_must_fail
.mailmap: map Yi-Jyun Pan's email
Derrick Stolee (26):
unpack-trees: correctly compute result count
graph: add test to demonstrate horizontal line bug
graph: fix collapse of multiple edges
clean: demonstrate a bug with pathspecs
fetch: document and test --refmap=""
t1091: use check_files to reduce boilerplate
t1091: improve here-docs
sparse-checkout: create leading directories
clone: fix --sparse option with URLs
sparse-checkout: cone mode does not recognize "**"
sparse-checkout: detect short patterns
sparse-checkout: warn on globs in cone patterns
sparse-checkout: properly match escaped characters
sparse-checkout: write escaped patterns in cone mode
sparse-checkout: unquote C-style strings over --stdin
sparse-checkout: use C-style quotes in 'list' subcommand
sparse-checkout: escape all glob characters on write
sparse-checkout: improve docs around 'set' in cone mode
sparse-checkout: fix cone mode behavior mismatch
sparse-checkout: extract add_patterns_from_input()
sparse-checkout: extract pattern update from 'set' subcommand
sparse-checkout: create 'add' subcommand
sparse-checkout: work with Windows paths
sparse-checkout: allow one-character directories in cone mode
partial-clone: demonstrate bugs in partial fetch
partial-clone: avoid fetching when looking for objects
Elijah Newren (35):
unpack-trees: exit check_updates() early if updates are not wanted
string-list: note in docs that callers can specify sorting function
dir: treat_leading_path() and read_directory_recursive(), round 2
git-rebase.txt: update description of --allow-empty-message
t3404: directly test the behavior of interest
rebase (interactive-backend): make --keep-empty the default
rebase (interactive-backend): fix handling of commits that become empty
t3406: simplify an already simple test
rebase, sequencer: remove the broken GIT_QUIET handling
rebase: make sure to pass along the quiet flag to the sequencer
rebase: fix handling of restrict_revision
t3432: make these tests work with either am or merge backends
rebase: allow more types of rebases to fast-forward
git-rebase.txt: add more details about behavioral differences of backends
rebase: move incompatibility checks between backend options a bit earlier
rebase: add an --am option
git-prompt: change the prompt for interactive-based rebases
rebase: drop '-i' from the reflog for interactive-based rebases
rebase tests: mark tests specific to the am-backend with --am
rebase tests: repeat some tests using the merge backend instead of am
rebase: make the backend configurable via config setting
rebase: change the default backend from "am" to "merge"
rebase: rename the two primary rebase backends
check-ignore: fix documentation and implementation to match
t3433: new rebase testcase documenting a stat-dirty-like failure
merge-recursive: fix the refresh logic in update_file_flags
merge-recursive: apply collision handling unification to recursive case
t602[1236], t6034: modernize test formatting
t6020, t6022, t6035: update merge tests to use test helper functions
t3035: prefer test_must_fail to bash negation for git commands
t6022, t6046: test expected behavior instead of testing a proxy for it
t6020: new test with interleaved lexicographic ordering of directories
sequencer: clear state upon dropping a become-empty commit
git-rebase.txt: highlight backend differences with commit rewording
t6022, t6046: fix flaky files-are-updated checks
Emily Shaffer (9):
unpack-trees: watch for out-of-range index position
fetch: emphasize failure during submodule fetch
MyFirstContribution: add avenues for getting help
submodule: add newline on invalid submodule error
MyFirstContribution: rephrase contact info
prefix_path: show gitdir when arg is outside repo
submodule--helper: use C99 named initializer
clone: pass --single-branch during --recurse-submodules
prefix_path: show gitdir if worktree unavailable
Eric Sunshine (6):
t3400: make test clean up after itself
rebase: refuse to switch to branch already checked out elsewhere
worktree: drop unused code from get_main_worktree()
worktree: improve find_worktree() documentation
worktree: add utility to find worktree by pathname
worktree: don't allow "add" validation to be fooled by suffix matching
Eyal Soha (3):
color.c: refactor color_output arguments
color.c: support bright aixterm colors
color.c: alias RGB colors 8-15 to aixterm colors
Hans Jerry Illikainen (2):
editorconfig: indent text files with tabs
gpg-interface: add minTrustLevel as a configuration option
Harald van Dijk (1):
show_one_mergetag: print non-parent in hex form.
Hariom Verma (4):
get_main_worktree(): allow it to be called in the Git directory
t5509: use a bare repository for test push target
receive.denyCurrentBranch: respect all worktrees
t2402: test worktree path when called in .git directory
Heba Waly (5):
commit: honor advice.statusHints when rejecting an empty commit
doc/gitcore-tutorial: fix prose to match example command
add: use advise function to display hints
git: update documentation for --git-dir
add: change advice config variables used by the add API
Jacques Bodin-Hullin (1):
parse-options: lose an unnecessary space in an error message
Jeff King (70):
builtin/pack-objects: report reused packfile objects
packfile: expose get_delta_base()
restore: invalidate cache-tree when removing entries with --staged
transport: don't flush when disconnecting stateless-rpc helper
dir: restructure in a way to avoid passing around a struct dirent
dir: point treat_leading_path() warning to the right place
Makefile: use compat regex with SANITIZE=address
t4018: drop "debugging" cat from hunk-header tests
t7800: don't rely on reuse_worktree_file()
ewah/bitmap: introduce bitmap_word_alloc()
pack-bitmap: introduce bitmap_walk_contains()
pack-bitmap: uninteresting oid can be outside bitmapped packfile
pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
csum-file: introduce hashfile_total()
pack-objects: introduce pack.allowPackReuse
builtin/pack-objects: introduce obj_is_packed()
pack-objects: improve partial packfile reuse
pack-objects: add checks for duplicate objects
pack-bitmap: don't rely on bitmap_git->reuse_objects
sparse-checkout: fix documentation typo for core.sparseCheckoutCone
verify_filename(): handle backslashes in "wildcards are pathspecs" rule
merge-recursive: silence -Wxor-used-as-pow warning
t1400: avoid "test" string comparisons
t1506: drop space after redirection operator
avoid computing zero offsets from NULL pointer
xdiff: avoid computing non-zero offset from NULL pointer
obstack: avoid computing offsets from NULL pointer
doc: drop "explicitly given" from push.default description
sha1-name: mark get_oid() error messages for translation
normalize_path_copy(): document "dst" size expectations
walker_fetch(): avoid raw array length computation
traverse_trees(): use stack array for name entries
diff: move diff.wsErrorHighlight to "basic" config
tree-walk.c: break circular dependency with unpack-trees
index-pack: downgrade twice-resolved REF_DELTA to die()
mailinfo: treat header values as C strings
mailinfo: simplify parsing of header values
mailinfo: be more liberal with header whitespace
mailinfo: factor out some repeated header handling
pack-bitmap: factor out type iterator initialization
pack-bitmap: fix leak of haves/wants object lists
rev-list: fallback to non-bitmap traversal when filtering
pack-bitmap: refuse to do a bitmap traversal with pathspecs
rev-list: factor out bitmap-optimized routines
rev-list: make --count work with --objects
rev-list: allow bitmaps when counting objects
t5310: factor out bitmap traversal comparison
rev-list: allow commit-only bitmap traversals
pack-bitmap: basic noop bitmap filter infrastructure
rev-list: use bitmap filters for traversal
bitmap: add bitmap_unset() function
pack-bitmap: implement BLOB_NONE filtering
pack-bitmap: implement BLOB_LIMIT filtering
pack-objects: support filters with bitmaps
doc: move credential helper info into gitcredentials(7)
doc/config/push: use longer "--" line for preformatted example
doc-diff: use single-colon rule in rendering Makefile
run-command.h: fix mis-indented struct member
nth_packed_object_oid(): use customary integer return
pack-objects: read delta base oid into object_id struct
pack-objects: convert oe_set_delta_ext() to use object_id
pack-objects: use object_id struct in pack-reuse code
pack-bitmap: use object_id when loading on-disk bitmaps
pack-check: convert "internal error" die to a BUG()
pack-check: push oid lookup into loop
packed_object_info(): use object_id for returning delta base
packed_object_info(): use object_id internally for delta base
packfile: drop nth_packed_object_sha1()
config.mak.dev: re-enable -Wformat-zero-length
remote: drop "explicit" parameter from remote_ref_for_branch()
Jiang Xin (1):
i18n: unmark a message in rebase.c
Johan Herland (2):
t3305: check notes fanout more carefully and robustly
notes.c: fix off-by-one error when decreasing notes fanout
Johannes Berg (1):
pack-format: correct multi-pack-index description
Johannes Schindelin (33):
built-in add -p: prepare for patch modes other than "stage"
built-in add -p: implement the "stash" and "reset" patch modes
legacy stash -p: respect the add.interactive.usebuiltin setting
built-in stash: use the built-in `git add -p` if so configured
built-in add -p: implement the "checkout" patch modes
built-in add -p: implement the "worktree" patch modes
commit --interactive: make it work with the built-in `add -i`
t3701: adjust difffilter test
built-in add -p: support interactive.diffFilter
built-in add -p: handle diff.algorithm
terminal: make the code of disable_echo() reusable
terminal: accommodate Git for Windows' default terminal
terminal: add a new function to read a single keystroke
built-in add -p: respect the `interactive.singlekey` config setting
built-in add -p: handle Escape sequences in interactive.singlekey mode
built-in add -p: handle Escape sequences more efficiently
ci: include the built-in `git add -i` in the `linux-gcc` job
msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
built-in add -i: do not try to `patch`/`diff` an empty list of files
built-in add -i: accept open-ended ranges again
parse_insn_line(): improve error message when parsing failed
rebase -i: re-fix short SHA-1 collision
rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
ci: ignore rubygems warning in the "Documentation" job
convert: fix typo
tests: fix --write-junit-xml with subshells
t9001, t9116: avoid pipes
t5580: test cloning without file://, test fetching via UNC paths
mingw: add a helper function to attach GDB to the current process
t/lib-httpd: avoid using macOS' sed
ci: prevent `perforce` from being quarantined
Azure Pipeline: switch to the latest agent pools
t5537: adjust test_oid label
Johannes Sixt (1):
t3504: do check for conflict marker after failed cherry-pick
Jonathan Nieder (9):
sha1-file: document how to use pretend_object_file
fetch test: avoid use of "VAR= cmd" with a shell function
t/check-non-portable-shell: detect "FOO= shell_func", too
fetch test: mark test of "skipping" haves as v0-only
fetch test: use more robust test for filtered objects
config doc: protocol.version is not experimental
test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
fetch: default to protocol version 2
Jonathan Tan (4):
sha1-file: remove OBJECT_INFO_SKIP_CACHED
t5616: make robust to delta base change
connected: verify promisor-ness of partial clone
fetch: forgo full connectivity check if --filter
Junio C Hamano (19):
The first batch post 2.25 cycle
merge-recursive: use subtraction to flip stage
.mailmap: fix GGG authoship screwup
The second batch
C: use skip_prefix() to avoid hardcoded string length
The third batch for 2.26
The fourth batch for 2.26
The fifth batch for 2.26
Git 2.25.1
The sixth batch for 2.26
rev-list --count: comment on the use of count_right++
The seventh batch for 2.26
Documentation: clarify that `-h` alone stands for `help`
Revert "gpg-interface: prefer check_signature() for GPG verification"
The eighth batch for 2.26
Git 2.26-rc0
Git 2.26-rc1
Hopefully the final batch before -rc2
Git 2.26-rc2
Kevin Willford (4):
fsmonitor: change last update timestamp on the index_state to opaque token
fsmonitor: handle version 2 of the hooks that will use opaque token
fsmonitor: add fsmonitor hook scripts for version 2
fsmonitor: update documentation for hook version and watchman hooks
Kir Kolyshkin (1):
completion: add diff --color-moved[-ws]
Kyle Meyer (2):
submodule add: show 'add --dry-run' stderr when aborting
submodule foreach: replace $path with $sm_path in example
Lucius Hu (1):
templates: fix deprecated type option `--bool`
Luke Diamand (7):
git-p4: make closeStreams() idempotent
git-p4: add P4CommandException to report errors talking to Perforce
git-p4: disable some pylint warnings, to get pylint output to something manageable
git-p4: create helper function importRevisions()
git-p4: cleanup better on error exit
git-p4: check for access to remote host earlier
git-p4: avoid leak of file handle when cloning
Martin Ågren (7):
git-filter-branch.txt: wrap "maths" notation in backticks
name-rev: rewrite create_or_update_name()
diff-options.txt: avoid "regex" overload in example
t4117: check for files using `test_path_is_file`
t9810: drop debug `cat` call
t: drop debug `cat` calls
t1091: don't grep for `strerror()` string
Masaya Suzuki (1):
doc: describe Git bundle format
Matheus Tavares (21):
grep: fix race conditions on userdiff calls
grep: fix race conditions at grep_submodule()
grep: fix racy calls in grep_objects()
replace-object: make replace operations thread-safe
object-store: allow threaded access to object reading
grep: replace grep_read_mutex by internal obj read lock
submodule-config: add skip_if_read option to repo_read_gitmodules()
grep: allow submodule functions to run in parallel
grep: protect packed_git [re-]initialization
grep: re-enable threads in non-worktree case
grep: move driver pre-load out of critical section
grep: use no. of cores as the default no. of threads
doc: sparse-checkout: mention --cone option
completion: add support for sparse-checkout
diff: make diff_populate_filespec() honor its repo argument
cache-tree: use given repo's hash_algo at verify_one()
pack-check: use given repo's hash_algo at verify_packfile()
streaming: allow open_istream() to handle any repo
sha1-file: pass git_hash_algo to write_object_file_prepare()
sha1-file: pass git_hash_algo to hash_object_file()
sha1-file: allow check_object_signature() to handle any repo
Matthew Rogers (10):
config: fix typo in variable name
t1300: fix over-indented HERE-DOCs
t1300: create custom config file without special characters
config: make scope_name non-static and rename it
config: split repo scope to local and worktree
config: clarify meaning of command line scoping
config: preserve scope in do_git_config_sequence
config: teach git_config_source to remember its scope
submodule-config: add subomdule config scope
config: add '--show-scope' to print the scope of a config value
Miriam Rubio (3):
bisect--helper: convert `vocab_*` char pointers to char arrays
bisect: use the standard 'if (!var)' way to check for 0
bisect: add enum to represent bisect returning codes
Paolo Bonzini (5):
parse-options: add testcases for OPT_CMDMODE()
parse-options: convert "command mode" to a flag
am: convert "resume" variable to a struct
am: support --show-current-patch=raw as a synonym for--show-current-patch
am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
Peter Kaestle (3):
t7400: add a testcase for submodule status on empty dirs
submodule: fix status of initialized but not cloned submodules
t7400: testcase for submodule status on unregistered inner git repos
Philippe Blain (5):
t7410: rename to t2405-worktree-submodule.sh
t2405: use git -C and test_commit -C instead of subshells
t2405: clarify test descriptions and simplify test
submodule.c: use get_git_dir() instead of get_git_common_dir()
grep: ignore --recurse-submodules if --no-index is given
Pranit Bauva (7):
bisect--helper: return error codes from `cmd_bisect__helper()`
bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
bisect: libify `bisect_checkout`
bisect: libify `check_merge_bases` and its dependents
bisect: libify `check_good_are_ancestors_of_bad` and its dependents
bisect: libify `handle_bad_merge_base` and its dependents
bisect: libify `bisect_next_all`
Ralf Thielow (2):
submodule.c: mark more strings for translation
rebase-interactive.c: silence format-zero-length warnings
Rasmus Jonsson (1):
t1050: replace test -f with test_path_is_file
René Scharfe (21):
name-rev: remove unused typedef
name-rev: respect const qualifier
name-rev: don't leak path copy in name_ref()
name-rev: don't _peek() in create_or_update_name()
name-rev: put struct rev_name into commit slab
name-rev: factor out get_parent_name()
name-rev: pre-size buffer in get_parent_name()
name-rev: generate name strings only if they are better
name-rev: release unused name strings
name-rev: sort tip names before applying
strbuf: add and use strbuf_insertstr()
mailinfo: don't insert header prefix for handle_content_type()
parse-options: use COPY_ARRAY in parse_options_concat()
parse-options: factor out parse_options_count()
parse-options: const parse_options_concat() parameters
parse-options: simplify parse_options_dup()
quote: use isalnum() to check for alphanumeric characters
use strpbrk(3) to search for characters from a given set
blame: provide type of fingerprints pointer
commit-graph: use progress title directly
remote-curl: show progress for fetches over dumb HTTP
SZEDER Gábor (6):
t9902-completion: add tests for the __git_find_on_cmdline() helper
completion: clean up the __git_find_on_cmdline() helper function
completion: return the index of found word from __git_find_on_cmdline()
completion: simplify completing 'git worktree' subcommands and options
completion: list existing working trees for 'git worktree' subcommands
completion: list paths and refs for 'git worktree add'
Shourya Shukla (2):
t6025: modernize style
t6025: use helpers to replace test -f <path>
Tanushree Tumane (2):
bisect--helper: change `retval` to `res`
bisect--helper: introduce new `decide_next()` function
Taylor Blau (5):
t5318: don't pass non-object directory to '--object-dir'
commit-graph.h: store an odb in 'struct write_commit_graph_context'
commit-graph.h: store object directory in 'struct commit_graph'
commit-graph.c: remove path normalization, comparison
commit-graph.h: use odb in 'load_commit_graph_one_fd_st'
brian m. carlson (53):
run-command: avoid undefined behavior in exists_in_PATH
t4054: make hash-size independent
t4066: compute index line in diffs
t4134: compute appropriate length constant
t4200: make hash size independent
t4202: abstract away SHA-1-specific constants
t4204: make hash size independent
t4300: abstract away SHA-1-specific constants
t5318: update for SHA-256
t5319: change invalid offset for SHA-256 compatibility
t5319: make test work with SHA-256
t5324: make hash size independent
t5504: make hash algorithm independent
t5510: make hash size independent
t5512: abstract away SHA-1-specific constants
t5530: compute results based on object length
t5537: make hash size independent
t5540: make hash size independent
t5562: use $ZERO_OID
t5601: switch into repository to hash object
t5604: make hash independent
docs: use "currently" for the present time
doc: move author and committer information to git-commit(1)
docs: expand on possible and recommended user config options
doc: provide guidance on user.name format
doc: dissuade users from trying to ignore tracked files
docs: mention when increasing http.postBuffer is valuable
t/lib-pack: support SHA-256
t3206: make hash size independent
t3308: make test work with SHA-256
t3309: make test work with SHA-256
t3310: make test work with SHA-256
t3311: make test work with SHA-256
t4013: make test hash independent
t4211: move SHA-1-specific test cases into a directory
t4211: add test cases for SHA-256
t4060: make test work with SHA-256
t5302: make hash size independent
t5309: make test hash independent
t5313: make test hash independent
t5321: make test hash independent
t5515: make test hash independent
t5318: update for SHA-256
t5607: make hash size independent
t5703: make test work with SHA-256
t6000: abstract away SHA-1-specific constants
t6006: make hash size independent
t6024: update for SHA-256
mailmap: add an additional email address for brian m. carlson
t1300: add test for urlmatch with multiple wildcards
t0300: add tests for some additional cases
credential: use the last matching username in the config
credential: allow wildcard patterns when matching config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.26.0-rc1
@ 2020-03-10 14:57 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-10 14:57 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.26.0-rc1 is now available for testing
at the usual places. It is comprised of 453 non-merge commits
since v2.25.0, contributed by 47 people, 10 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.26.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.25.0 are as follows.
Welcome to the Git development community!
Abhishek Kumar, Benno Evers, Eyal Soha, Harald van Dijk,
Jacques Bodin-Hullin, Kir Kolyshkin, Lucius Hu, Peter Kaestle,
Rasmus Jonsson, and Shourya Shukla.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Bert Wesarg, brian
m. carlson, David Turner, Denton Liu, Derrick Stolee, Elijah
Newren, Emily Shaffer, Eric Sunshine, Hans Jerry Illikainen,
Hariom Verma, Heba Waly, Jeff King, Johan Herland, Johannes Berg,
Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
Tan, Junio C Hamano, Kevin Willford, Kyle Meyer, Luke Diamand,
Martin Ågren, Masaya Suzuki, Matheus Tavares, Matthew Rogers,
Miriam Rubio, Paolo Bonzini, Philippe Blain, Pranit Bauva,
Ralf Thielow, René Scharfe, SZEDER Gábor, Tanushree Tumane,
and Taylor Blau.
----------------------------------------------------------------
Git 2.26 Release Notes (draft)
==============================
Updates since v2.25
-------------------
UI, Workflows & Features
* Sample credential helper for using .netrc has been updated to work
out of the box.
* gpg.minTrustLevel configuration variable has been introduced to
tell various signature verification codepaths the required minimum
trust level.
* The command line completion (in contrib/) learned to complete
subcommands and arguments to "git worktree".
* Disambiguation logic to tell revisions and pathspec apart has been
tweaked so that backslash-escaped glob special characters do not
count in the "wildcards are pathspec" rule.
* One effect of specifying where the GIT_DIR is (either with the
environment variable, or with the "git --git-dir=<where> cmd"
option) is to disable the repository discovery. This has been
placed a bit more stress in the documentation, as new users often
get confused.
* Two help messages given when "git add" notices the user gave it
nothing to add have been updated to use advise() API.
* A new version of fsmonitor-watchman hook has been introduced, to
avoid races.
* "git config" learned to show in which "scope", in addition to in
which file, each config setting comes from.
* The basic 7 colors learned the brighter counterparts
(e.g. "brightred").
* "git sparse-checkout" learned a new "add" subcommand.
* A configuration element used for credential subsystem can now use
wildcard pattern to specify for which set of URLs the entry
applies.
* "git clone --recurse-submodules --single-branch" now uses the same
single-branch option when cloning the submodules.
* "git rm" and "git stash" learns the new "--pathspec-from-file"
option.
* "git am --short-current-patch" is a way to show the piece of e-mail
for the stopped step, which is not suitable to directly feed "git
apply" (it is designed to be a good "git am" input). It learned a
new option to show only the patch part.
* Handling of conflicting renames in merge-recursive have further
been made consistent with how existing codepaths try to mimic what
is done to add/add conflicts.
Performance, Internal Implementation, Development Support etc.
* Tell .editorconfig that in this project, *.txt files are indented
with tabs.
* The test-lint machinery knew to check "VAR=VAL shell_function"
construct, but did not check "VAR= shell_funciton", which has been
corrected.
* Replace "git config --bool" calls with "git config --type=bool" in
sample templates.
* The effort to move "git-add--interactive" to C continues.
* Improve error message generation for "git submodule add".
* Preparation of test scripts for the day when the object names will
use SHA-256 continues.
* Warn programmers about pretend_object_file() that allows the code
to tentatively use in-core objects.
* The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.
* The transport protocol version 2 becomes the default one.
* Traditionally, we avoided threaded grep while searching in objects
(as opposed to files in the working tree) as accesses to the object
layer is not thread-safe. This limitation is getting lifted.
* "git rebase -i" (and friends) used to unnecessarily check out the
tip of the branch to be rebased, which has been corrected.
* A low-level API function get_oid(), that accepts various ways to
name an object, used to issue end-user facing error messages
without l10n, which has been updated to be translatable.
* Unneeded connectivity check is now disabled in a partial clone when
fetching into it.
* Some rough edges in the sparse-checkout feature, especially around
the cone mode, have been cleaned up.
* The diff-* plumbing family of subcommands now pay attention to the
diff.wsErrorHighlight configuration, which has been ignored before;
this allows "git add -p" to also show the whitespace problems to
the end user.
* Some codepaths were given a repository instance as a parameter to
work in the repository, but passed the_repository instance to its
callees, which has been cleaned up (somewhat).
* Memory footprint and performance of "git name-rev" has been
improved.
* The object reachability bitmap machinery and the partial cloning
machinery were not prepared to work well together, because some
object-filtering criteria that partial clones use inherently rely
on object traversal, but the bitmap machinery is an optimization
to bypass that object traversal. There however are some cases
where they can work together, and they were taught about them.
* "git rebase" has learned to use the merge backend (i.e. the
machinery that drives "rebase -i") by default, while allowing
"--apply" option to use the "apply" backend (e.g. the moral
equivalent of "format-patch piped to am"). The rebase.backend
configuration variable can be set to customize.
* Underlying machinery of "git bisect--helper" is being refactored
into pieces that are more easily reused.
Fixes since v2.25
-----------------
* "git commit" gives output similar to "git status" when there is
nothing to commit, but without honoring the advise.statusHints
configuration variable, which has been corrected.
* has_object_file() said "no" given an object registered to the
system via pretend_object_file(), making it inconsistent with
read_object_file(), causing lazy fetch to attempt fetching an
empty tree from promisor remotes.
* Complete an update to tutorial that encourages "git switch" over
"git checkout" that was done only half-way.
* C pedantry ;-) fix.
* The code that tries to skip over the entries for the paths in a
single directory using the cache-tree was not careful enough
against corrupt index file.
* Reduce unnecessary round-trip when running "ls-remote" over the
stateless RPC mechanism.
* "git restore --staged" did not correctly update the cache-tree
structure, resulting in bogus trees to be written afterwards, which
has been corrected.
* The code recently added to move to the entry beyond the ones in the
same directory in the index in the sparse-cone mode did not count
the number of entries to skip over incorrectly, which has been
corrected.
* Rendering by "git log --graph" of ancestry lines leading to a merge
commit were made suboptimal to waste vertical space a bit with a
recent update, which has been corrected.
* Work around test breakages caused by custom regex engine used in
libasan, when address sanitizer is used with more recent versions
of gcc and clang.
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
(merge 849e43cc18 js/builtin-add-i-cmds later to maint).
* "git fetch --refmap=" option has got a better documentation.
* "git checkout X" did not correctly fail when X is not a local
branch but could name more than one remote-tracking branches
(i.e. to be dwimmed as the starting point to create a corresponding
local branch), which has been corrected.
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
* Corner case bugs in "git clean" that stems from a (necessarily for
performance reasons) awkward calling convention in the directory
enumeration API has been corrected.
* A fetch that is told to recursively fetch updates in submodules
inevitably produces reams of output, and it becomes hard to spot
error messages. The command has been taught to enumerate
submodules that had errors at the end of the operation.
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
* The "--recurse-submodules" option of various subcommands did not
work well when run in an alternate worktree, which has been
corrected.
(merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).
* Futureproofing a test not to depend on the current implementation
detail.
* Running "git rm" on a submodule failed unnecessarily when
.gitmodules is only cache-dirty, which has been corrected.
(merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).
* C pedantry ;-) fix.
(merge cf82bff73f jk/clang-sanitizer-fixes later to maint).
* "git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did. Now these
settings are ignored in the "--no-index" mode.
* Technical details of the bundle format has been documented.
* Unhelpful warning messages during documentation build have been squelched.
* "git rebase -i" identifies existing commits in its todo file with
their abbreviated object name, which could become ambigous as it
goes to create new commits, and has a mechanism to avoid ambiguity
in the main part of its execution. A few other cases however were
not covered by the protection against ambiguity, which has been
corrected.
(merge 26027625dd js/rebase-i-with-colliding-hash later to maint).
* Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
(merge 5a5445d878 ag/edit-todo-drop-check later to maint).
* The way "git submodule status" reports an initialized but not yet
populated submodule has not been reimplemented correctly when a
part of the "git submodule" command was rewritten in C, which has
been corrected.
(merge f38c92452d pk/status-of-uncloned-submodule later to maint).
* The code to automatically shrink the fan-out in the notes tree had
an off-by-one bug, which has been killed.
(merge dbc27477ff jh/notes-fanout-fix later to maint).
* The index-pack code now diagnoses a bad input packstream that
records the same object twice when it is used as delta base; the
code used to declare a software bug when encountering such an
input, but it is an input error.
(merge a21781011f jk/index-pack-dupfix later to maint).
* The code to compute the commit-graph has been taught to use a more
robust way to tell if two object directories refer to the same
thing.
(merge a7df60cac8 tb/commit-graph-object-dir later to maint).
* "git remote rename X Y" needs to adjust configuration variables
(e.g. branch.<name>.remote) whose value used to be X to Y.
branch.<name>.pushRemote is now also updated.
* Update to doc-diff.
(merge 2607d39da3 jk/doc-diff-parallel later to maint).
* Doc markup fix.
(merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).
* "git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.
(merge 7ec8125fba en/check-ignore later to maint).
* The merge-recursive machinery failed to refresh the cache entry for
a merge result in a couple of places, resulting in an unnecessary
merge failure, which has been fixed.
(merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).
* Fix for a bug revealed by a recent change to make the protocol v2
the default.
(merge 3e96c66805 ds/partial-clone-fixes later to maint).
* In rare cases "git worktree add <path>" could think that <path>
was already a registered worktree even when it wasn't and refuse
to add the new worktree. This has been corrected.
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).
* "git push" should stop from updating a branch that is checked out
when receive.denyCurrentBranch configuration is set, but it failed
to pay attention to checkouts in secondary worktrees. This has
been corrected.
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
checked it out, even when the BRANCH is checked out in a different
worktree. This has been corrected.
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).
* "git describe" in a repository with multiple root commits sometimes
gave up looking for the best tag to describe a given commit with
too early, which has been adjusted.
* "git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.
(merge 0106b1d4be hi/gpg-use-check-signature later to maint).
* MinGW's poll() emulation has been improved.
(merge 94f4d01932 am/mingw-poll-fix later to maint).
* "git show" and others gave an object name in raw format in its
error output, which has been corrected to give it in hex.
(merge 237a28173f hd/show-one-mergetag-fix later to maint).
* "git fetch" over HTTP walker protocol did not show any progress
output. We inherently do not know how much work remains, but still
we can show something not to bore users.
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
(merge c513a958b6 ss/t6025-modernize later to maint).
(merge b441717256 dl/test-must-fail-fixes later to maint).
(merge d031049da3 mt/sparse-checkout-doc-update later to maint).
(merge 145136a95a jc/skip-prefix later to maint).
(merge 5290d45134 jk/alloc-cleanups later to maint).
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
(merge 517b60564e rs/strbuf-insertstr later to maint).
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
(merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
(merge de26f02db1 js/test-avoid-pipe later to maint).
(merge bfe2bbb47f js/test-unc-fetch later to maint).
(merge 08809c09aa js/mingw-open-in-gdb later to maint).
(merge cc4f2eb828 jk/doc-credential-helper later to maint).
(merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
(merge a2dc43414c es/doc-mentoring later to maint).
(merge 539052f42f jk/run-command-formatfix later to maint).
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
(merge 2ce6d075fa rs/micro-cleanups later to maint).
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
(merge 3c29e21eb0 ma/test-cleanup later to maint).
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
(merge 7f487ce062 js/ci-windows-update later to maint).
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
(merge fd0bc17557 kk/complete-diff-color-moved later to maint).
(merge 65bf820d0e en/test-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.25.0 are as follows:
Abhishek Kumar (2):
lib-log-graph: consolidate test_cmp_graph logic
lib-log-graph: consolidate colored graph cmp logic
Alban Gruin (4):
rebase -i: stop checking out the tip of the branch to rebase
sequencer: move check_todo_list_from_file() to rebase-interactive.c
rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
builtin/rebase: remove a call to get_oid() on `options.switch_to'
Alexandr Miloslavskiy (14):
parse_branchname_arg(): extract part as new function
checkout: don't revert file on ambiguous tracking branches
t: add tests for error conditions with --pathspec-from-file
t: fix quotes tests for --pathspec-from-file
t: directly test parse_pathspec_file()
doc: rm: synchronize <pathspec> description
rm: support the --pathspec-from-file option
doc: stash: split options from description (1)
doc: stash: split options from description (2)
doc: stash: document more options
doc: stash: synchronize <pathspec> description
stash: eliminate crude option parsing
stash push: support the --pathspec-from-file option
mingw: workaround for hangs when sending STDIN
Benno Evers (1):
describe: don't abort too early when searching tags
Bert Wesarg (6):
pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
remote: clean-up by returning early to avoid one indentation
remote: clean-up config callback
remote rename/remove: handle branch.<name>.pushRemote config values
config: provide access to the current line number
remote rename/remove: gently handle remote.pushDefault config
David Turner (1):
git rm submodule: succeed if .gitmodules index stat info is zero
Denton Liu (34):
t/lib-git-p4: use test_path_is_missing()
t0000: replace test_must_fail with run_sub_test_lib_test_err()
t0003: use named parameters in attr_check()
t0003: use test_must_be_empty()
t0003: don't use `test_must_fail attr_check`
t0020: don't use `test_must_fail has_cr`
t0020: use ! check_packed_refs_marked
t1306: convert `test_might_fail rm` to `rm -f`
t1307: reorder `nongit test_must_fail`
t1409: let sed open its own input file
t1409: use test_path_is_missing()
t1501: remove use of `test_might_fail cp`
t1507: stop losing return codes of git commands
t1507: run commands within test_expect_success
t1507: inline full_name()
contrib/credential/netrc: make PERL_PATH configurable
contrib/credential/netrc: work outside a repo
t2018: remove trailing space from test description
t2018: add space between function name and ()
t2018: improve style of if-statement
.mailmap: fix erroneous authorship for Johannes Schindelin
t2018: be more discerning when checking for expected exit codes
t2018: teach do_checkout() to accept `!` arg
t2018: don't lose return code of git commands
t2018: replace "sha" with "oid"
t3030: use test_path_is_missing()
t3310: extract common notes_merge_files_gone()
t3415: stop losing return codes of git commands
t3415: increase granularity of test_auto_{fixup,squash}()
t3419: stop losing return code of git command
t3507: fix indentation
t3507: use test_path_is_missing()
t4124: only mark git command with test_must_fail
.mailmap: map Yi-Jyun Pan's email
Derrick Stolee (26):
unpack-trees: correctly compute result count
graph: add test to demonstrate horizontal line bug
graph: fix collapse of multiple edges
clean: demonstrate a bug with pathspecs
fetch: document and test --refmap=""
t1091: use check_files to reduce boilerplate
t1091: improve here-docs
sparse-checkout: create leading directories
clone: fix --sparse option with URLs
sparse-checkout: cone mode does not recognize "**"
sparse-checkout: detect short patterns
sparse-checkout: warn on globs in cone patterns
sparse-checkout: properly match escaped characters
sparse-checkout: write escaped patterns in cone mode
sparse-checkout: unquote C-style strings over --stdin
sparse-checkout: use C-style quotes in 'list' subcommand
sparse-checkout: escape all glob characters on write
sparse-checkout: improve docs around 'set' in cone mode
sparse-checkout: fix cone mode behavior mismatch
sparse-checkout: extract add_patterns_from_input()
sparse-checkout: extract pattern update from 'set' subcommand
sparse-checkout: create 'add' subcommand
sparse-checkout: work with Windows paths
sparse-checkout: allow one-character directories in cone mode
partial-clone: demonstrate bugs in partial fetch
partial-clone: avoid fetching when looking for objects
Elijah Newren (32):
unpack-trees: exit check_updates() early if updates are not wanted
string-list: note in docs that callers can specify sorting function
dir: treat_leading_path() and read_directory_recursive(), round 2
git-rebase.txt: update description of --allow-empty-message
t3404: directly test the behavior of interest
rebase (interactive-backend): make --keep-empty the default
rebase (interactive-backend): fix handling of commits that become empty
t3406: simplify an already simple test
rebase, sequencer: remove the broken GIT_QUIET handling
rebase: make sure to pass along the quiet flag to the sequencer
rebase: fix handling of restrict_revision
t3432: make these tests work with either am or merge backends
rebase: allow more types of rebases to fast-forward
git-rebase.txt: add more details about behavioral differences of backends
rebase: move incompatibility checks between backend options a bit earlier
rebase: add an --am option
git-prompt: change the prompt for interactive-based rebases
rebase: drop '-i' from the reflog for interactive-based rebases
rebase tests: mark tests specific to the am-backend with --am
rebase tests: repeat some tests using the merge backend instead of am
rebase: make the backend configurable via config setting
rebase: change the default backend from "am" to "merge"
rebase: rename the two primary rebase backends
check-ignore: fix documentation and implementation to match
t3433: new rebase testcase documenting a stat-dirty-like failure
merge-recursive: fix the refresh logic in update_file_flags
merge-recursive: apply collision handling unification to recursive case
t602[1236], t6034: modernize test formatting
t6020, t6022, t6035: update merge tests to use test helper functions
t3035: prefer test_must_fail to bash negation for git commands
t6022, t6046: test expected behavior instead of testing a proxy for it
t6020: new test with interleaved lexicographic ordering of directories
Emily Shaffer (8):
unpack-trees: watch for out-of-range index position
fetch: emphasize failure during submodule fetch
MyFirstContribution: add avenues for getting help
submodule: add newline on invalid submodule error
MyFirstContribution: rephrase contact info
prefix_path: show gitdir when arg is outside repo
submodule--helper: use C99 named initializer
clone: pass --single-branch during --recurse-submodules
Eric Sunshine (6):
t3400: make test clean up after itself
rebase: refuse to switch to branch already checked out elsewhere
worktree: drop unused code from get_main_worktree()
worktree: improve find_worktree() documentation
worktree: add utility to find worktree by pathname
worktree: don't allow "add" validation to be fooled by suffix matching
Eyal Soha (3):
color.c: refactor color_output arguments
color.c: support bright aixterm colors
color.c: alias RGB colors 8-15 to aixterm colors
Hans Jerry Illikainen (2):
editorconfig: indent text files with tabs
gpg-interface: add minTrustLevel as a configuration option
Harald van Dijk (1):
show_one_mergetag: print non-parent in hex form.
Hariom Verma (4):
get_main_worktree(): allow it to be called in the Git directory
t5509: use a bare repository for test push target
receive.denyCurrentBranch: respect all worktrees
t2402: test worktree path when called in .git directory
Heba Waly (5):
commit: honor advice.statusHints when rejecting an empty commit
doc/gitcore-tutorial: fix prose to match example command
add: use advise function to display hints
git: update documentation for --git-dir
add: change advice config variables used by the add API
Jacques Bodin-Hullin (1):
parse-options: lose an unnecessary space in an error message
Jeff King (69):
builtin/pack-objects: report reused packfile objects
packfile: expose get_delta_base()
restore: invalidate cache-tree when removing entries with --staged
transport: don't flush when disconnecting stateless-rpc helper
dir: restructure in a way to avoid passing around a struct dirent
dir: point treat_leading_path() warning to the right place
Makefile: use compat regex with SANITIZE=address
t4018: drop "debugging" cat from hunk-header tests
t7800: don't rely on reuse_worktree_file()
ewah/bitmap: introduce bitmap_word_alloc()
pack-bitmap: introduce bitmap_walk_contains()
pack-bitmap: uninteresting oid can be outside bitmapped packfile
pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
csum-file: introduce hashfile_total()
pack-objects: introduce pack.allowPackReuse
builtin/pack-objects: introduce obj_is_packed()
pack-objects: improve partial packfile reuse
pack-objects: add checks for duplicate objects
pack-bitmap: don't rely on bitmap_git->reuse_objects
sparse-checkout: fix documentation typo for core.sparseCheckoutCone
verify_filename(): handle backslashes in "wildcards are pathspecs" rule
merge-recursive: silence -Wxor-used-as-pow warning
t1400: avoid "test" string comparisons
t1506: drop space after redirection operator
avoid computing zero offsets from NULL pointer
xdiff: avoid computing non-zero offset from NULL pointer
obstack: avoid computing offsets from NULL pointer
doc: drop "explicitly given" from push.default description
sha1-name: mark get_oid() error messages for translation
normalize_path_copy(): document "dst" size expectations
walker_fetch(): avoid raw array length computation
traverse_trees(): use stack array for name entries
diff: move diff.wsErrorHighlight to "basic" config
tree-walk.c: break circular dependency with unpack-trees
index-pack: downgrade twice-resolved REF_DELTA to die()
mailinfo: treat header values as C strings
mailinfo: simplify parsing of header values
mailinfo: be more liberal with header whitespace
mailinfo: factor out some repeated header handling
pack-bitmap: factor out type iterator initialization
pack-bitmap: fix leak of haves/wants object lists
rev-list: fallback to non-bitmap traversal when filtering
pack-bitmap: refuse to do a bitmap traversal with pathspecs
rev-list: factor out bitmap-optimized routines
rev-list: make --count work with --objects
rev-list: allow bitmaps when counting objects
t5310: factor out bitmap traversal comparison
rev-list: allow commit-only bitmap traversals
pack-bitmap: basic noop bitmap filter infrastructure
rev-list: use bitmap filters for traversal
bitmap: add bitmap_unset() function
pack-bitmap: implement BLOB_NONE filtering
pack-bitmap: implement BLOB_LIMIT filtering
pack-objects: support filters with bitmaps
doc: move credential helper info into gitcredentials(7)
doc/config/push: use longer "--" line for preformatted example
doc-diff: use single-colon rule in rendering Makefile
run-command.h: fix mis-indented struct member
nth_packed_object_oid(): use customary integer return
pack-objects: read delta base oid into object_id struct
pack-objects: convert oe_set_delta_ext() to use object_id
pack-objects: use object_id struct in pack-reuse code
pack-bitmap: use object_id when loading on-disk bitmaps
pack-check: convert "internal error" die to a BUG()
pack-check: push oid lookup into loop
packed_object_info(): use object_id for returning delta base
packed_object_info(): use object_id internally for delta base
packfile: drop nth_packed_object_sha1()
config.mak.dev: re-enable -Wformat-zero-length
Johan Herland (2):
t3305: check notes fanout more carefully and robustly
notes.c: fix off-by-one error when decreasing notes fanout
Johannes Berg (1):
pack-format: correct multi-pack-index description
Johannes Schindelin (33):
built-in add -p: prepare for patch modes other than "stage"
built-in add -p: implement the "stash" and "reset" patch modes
legacy stash -p: respect the add.interactive.usebuiltin setting
built-in stash: use the built-in `git add -p` if so configured
built-in add -p: implement the "checkout" patch modes
built-in add -p: implement the "worktree" patch modes
commit --interactive: make it work with the built-in `add -i`
t3701: adjust difffilter test
built-in add -p: support interactive.diffFilter
built-in add -p: handle diff.algorithm
terminal: make the code of disable_echo() reusable
terminal: accommodate Git for Windows' default terminal
terminal: add a new function to read a single keystroke
built-in add -p: respect the `interactive.singlekey` config setting
built-in add -p: handle Escape sequences in interactive.singlekey mode
built-in add -p: handle Escape sequences more efficiently
ci: include the built-in `git add -i` in the `linux-gcc` job
msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
built-in add -i: do not try to `patch`/`diff` an empty list of files
built-in add -i: accept open-ended ranges again
parse_insn_line(): improve error message when parsing failed
rebase -i: re-fix short SHA-1 collision
rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
ci: ignore rubygems warning in the "Documentation" job
convert: fix typo
tests: fix --write-junit-xml with subshells
t9001, t9116: avoid pipes
t5580: test cloning without file://, test fetching via UNC paths
mingw: add a helper function to attach GDB to the current process
t/lib-httpd: avoid using macOS' sed
ci: prevent `perforce` from being quarantined
Azure Pipeline: switch to the latest agent pools
t5537: adjust test_oid label
Johannes Sixt (1):
t3504: do check for conflict marker after failed cherry-pick
Jonathan Nieder (9):
sha1-file: document how to use pretend_object_file
fetch test: avoid use of "VAR= cmd" with a shell function
t/check-non-portable-shell: detect "FOO= shell_func", too
fetch test: mark test of "skipping" haves as v0-only
fetch test: use more robust test for filtered objects
config doc: protocol.version is not experimental
test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
fetch: default to protocol version 2
Jonathan Tan (4):
sha1-file: remove OBJECT_INFO_SKIP_CACHED
t5616: make robust to delta base change
connected: verify promisor-ness of partial clone
fetch: forgo full connectivity check if --filter
Junio C Hamano (16):
The first batch post 2.25 cycle
merge-recursive: use subtraction to flip stage
.mailmap: fix GGG authoship screwup
The second batch
C: use skip_prefix() to avoid hardcoded string length
The third batch for 2.26
The fourth batch for 2.26
The fifth batch for 2.26
Git 2.25.1
The sixth batch for 2.26
rev-list --count: comment on the use of count_right++
The seventh batch for 2.26
Revert "gpg-interface: prefer check_signature() for GPG verification"
The eighth batch for 2.26
Git 2.26-rc0
Git 2.26-rc1
Kevin Willford (4):
fsmonitor: change last update timestamp on the index_state to opaque token
fsmonitor: handle version 2 of the hooks that will use opaque token
fsmonitor: add fsmonitor hook scripts for version 2
fsmonitor: update documentation for hook version and watchman hooks
Kir Kolyshkin (1):
completion: add diff --color-moved[-ws]
Kyle Meyer (2):
submodule add: show 'add --dry-run' stderr when aborting
submodule foreach: replace $path with $sm_path in example
Lucius Hu (1):
templates: fix deprecated type option `--bool`
Luke Diamand (7):
git-p4: make closeStreams() idempotent
git-p4: add P4CommandException to report errors talking to Perforce
git-p4: disable some pylint warnings, to get pylint output to something manageable
git-p4: create helper function importRevisions()
git-p4: cleanup better on error exit
git-p4: check for access to remote host earlier
git-p4: avoid leak of file handle when cloning
Martin Ågren (6):
git-filter-branch.txt: wrap "maths" notation in backticks
name-rev: rewrite create_or_update_name()
diff-options.txt: avoid "regex" overload in example
t4117: check for files using `test_path_is_file`
t9810: drop debug `cat` call
t: drop debug `cat` calls
Masaya Suzuki (1):
doc: describe Git bundle format
Matheus Tavares (21):
grep: fix race conditions on userdiff calls
grep: fix race conditions at grep_submodule()
grep: fix racy calls in grep_objects()
replace-object: make replace operations thread-safe
object-store: allow threaded access to object reading
grep: replace grep_read_mutex by internal obj read lock
submodule-config: add skip_if_read option to repo_read_gitmodules()
grep: allow submodule functions to run in parallel
grep: protect packed_git [re-]initialization
grep: re-enable threads in non-worktree case
grep: move driver pre-load out of critical section
grep: use no. of cores as the default no. of threads
doc: sparse-checkout: mention --cone option
completion: add support for sparse-checkout
diff: make diff_populate_filespec() honor its repo argument
cache-tree: use given repo's hash_algo at verify_one()
pack-check: use given repo's hash_algo at verify_packfile()
streaming: allow open_istream() to handle any repo
sha1-file: pass git_hash_algo to write_object_file_prepare()
sha1-file: pass git_hash_algo to hash_object_file()
sha1-file: allow check_object_signature() to handle any repo
Matthew Rogers (10):
config: fix typo in variable name
t1300: fix over-indented HERE-DOCs
t1300: create custom config file without special characters
config: make scope_name non-static and rename it
config: split repo scope to local and worktree
config: clarify meaning of command line scoping
config: preserve scope in do_git_config_sequence
config: teach git_config_source to remember its scope
submodule-config: add subomdule config scope
config: add '--show-scope' to print the scope of a config value
Miriam Rubio (3):
bisect--helper: convert `vocab_*` char pointers to char arrays
bisect: use the standard 'if (!var)' way to check for 0
bisect: add enum to represent bisect returning codes
Paolo Bonzini (5):
parse-options: add testcases for OPT_CMDMODE()
parse-options: convert "command mode" to a flag
am: convert "resume" variable to a struct
am: support --show-current-patch=raw as a synonym for--show-current-patch
am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
Peter Kaestle (3):
t7400: add a testcase for submodule status on empty dirs
submodule: fix status of initialized but not cloned submodules
t7400: testcase for submodule status on unregistered inner git repos
Philippe Blain (5):
t7410: rename to t2405-worktree-submodule.sh
t2405: use git -C and test_commit -C instead of subshells
t2405: clarify test descriptions and simplify test
submodule.c: use get_git_dir() instead of get_git_common_dir()
grep: ignore --recurse-submodules if --no-index is given
Pranit Bauva (7):
bisect--helper: return error codes from `cmd_bisect__helper()`
bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
bisect: libify `bisect_checkout`
bisect: libify `check_merge_bases` and its dependents
bisect: libify `check_good_are_ancestors_of_bad` and its dependents
bisect: libify `handle_bad_merge_base` and its dependents
bisect: libify `bisect_next_all`
Ralf Thielow (2):
submodule.c: mark more strings for translation
rebase-interactive.c: silence format-zero-length warnings
Rasmus Jonsson (1):
t1050: replace test -f with test_path_is_file
René Scharfe (21):
name-rev: remove unused typedef
name-rev: respect const qualifier
name-rev: don't leak path copy in name_ref()
name-rev: don't _peek() in create_or_update_name()
name-rev: put struct rev_name into commit slab
name-rev: factor out get_parent_name()
name-rev: pre-size buffer in get_parent_name()
name-rev: generate name strings only if they are better
name-rev: release unused name strings
name-rev: sort tip names before applying
strbuf: add and use strbuf_insertstr()
mailinfo: don't insert header prefix for handle_content_type()
parse-options: use COPY_ARRAY in parse_options_concat()
parse-options: factor out parse_options_count()
parse-options: const parse_options_concat() parameters
parse-options: simplify parse_options_dup()
quote: use isalnum() to check for alphanumeric characters
use strpbrk(3) to search for characters from a given set
blame: provide type of fingerprints pointer
commit-graph: use progress title directly
remote-curl: show progress for fetches over dumb HTTP
SZEDER Gábor (6):
t9902-completion: add tests for the __git_find_on_cmdline() helper
completion: clean up the __git_find_on_cmdline() helper function
completion: return the index of found word from __git_find_on_cmdline()
completion: simplify completing 'git worktree' subcommands and options
completion: list existing working trees for 'git worktree' subcommands
completion: list paths and refs for 'git worktree add'
Shourya Shukla (2):
t6025: modernize style
t6025: use helpers to replace test -f <path>
Tanushree Tumane (2):
bisect--helper: change `retval` to `res`
bisect--helper: introduce new `decide_next()` function
Taylor Blau (5):
t5318: don't pass non-object directory to '--object-dir'
commit-graph.h: store an odb in 'struct write_commit_graph_context'
commit-graph.h: store object directory in 'struct commit_graph'
commit-graph.c: remove path normalization, comparison
commit-graph.h: use odb in 'load_commit_graph_one_fd_st'
brian m. carlson (53):
run-command: avoid undefined behavior in exists_in_PATH
t4054: make hash-size independent
t4066: compute index line in diffs
t4134: compute appropriate length constant
t4200: make hash size independent
t4202: abstract away SHA-1-specific constants
t4204: make hash size independent
t4300: abstract away SHA-1-specific constants
t5318: update for SHA-256
t5319: change invalid offset for SHA-256 compatibility
t5319: make test work with SHA-256
t5324: make hash size independent
t5504: make hash algorithm independent
t5510: make hash size independent
t5512: abstract away SHA-1-specific constants
t5530: compute results based on object length
t5537: make hash size independent
t5540: make hash size independent
t5562: use $ZERO_OID
t5601: switch into repository to hash object
t5604: make hash independent
docs: use "currently" for the present time
doc: move author and committer information to git-commit(1)
docs: expand on possible and recommended user config options
doc: provide guidance on user.name format
doc: dissuade users from trying to ignore tracked files
docs: mention when increasing http.postBuffer is valuable
t/lib-pack: support SHA-256
t3206: make hash size independent
t3308: make test work with SHA-256
t3309: make test work with SHA-256
t3310: make test work with SHA-256
t3311: make test work with SHA-256
t4013: make test hash independent
t4211: move SHA-1-specific test cases into a directory
t4211: add test cases for SHA-256
t4060: make test work with SHA-256
t5302: make hash size independent
t5309: make test hash independent
t5313: make test hash independent
t5321: make test hash independent
t5515: make test hash independent
t5318: update for SHA-256
t5607: make hash size independent
t5703: make test work with SHA-256
t6000: abstract away SHA-1-specific constants
t6006: make hash size independent
t6024: update for SHA-256
mailmap: add an additional email address for brian m. carlson
t1300: add test for urlmatch with multiple wildcards
t0300: add tests for some additional cases
credential: use the last matching username in the config
credential: allow wildcard patterns when matching config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.26.0-rc0
@ 2020-03-05 22:02 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-05 22:02 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.26.0-rc0 is now available for
testing at the usual places. It is comprised of 426 non-merge
commits since v2.25.0, contributed by 43 people, 7 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.26.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.25.0 are as follows.
Welcome to the Git development community!
Abhishek Kumar, Benno Evers, Eyal Soha, Jacques Bodin-Hullin,
Lucius Hu, Peter Kaestle, and Shourya Shukla.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Bert Wesarg, brian
m. carlson, David Turner, Denton Liu, Derrick Stolee, Elijah
Newren, Emily Shaffer, Eric Sunshine, Hans Jerry Illikainen,
Hariom Verma, Heba Waly, Jeff King, Johan Herland, Johannes Berg,
Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
Tan, Junio C Hamano, Kevin Willford, Kyle Meyer, Luke Diamand,
Martin Ågren, Masaya Suzuki, Matheus Tavares, Matthew Rogers,
Miriam Rubio, Philippe Blain, Pranit Bauva, Ralf Thielow,
René Scharfe, SZEDER Gábor, Tanushree Tumane, and Taylor Blau.
----------------------------------------------------------------
Git 2.26 Release Notes (draft)
==============================
Updates since v2.25
-------------------
UI, Workflows & Features
* Sample credential helper for using .netrc has been updated to work
out of the box.
* gpg.minTrustLevel configuration variable has been introduced to
tell various signature verification codepaths the required minimum
trust level.
* The command line completion (in contrib/) learned to complete
subcommands and arguments to "git worktree".
* Disambiguation logic to tell revisions and pathspec apart has been
tweaked so that backslash-escaped glob special characters do not
count in the "wildcards are pathspec" rule.
* One effect of specifying where the GIT_DIR is (either with the
environment variable, or with the "git --git-dir=<where> cmd"
option) is to disable the repository discovery. This has been
placed a bit more stress in the documentation, as new users often
get confused.
* Two help messages given when "git add" notices the user gave it
nothing to add have been updated to use advise() API.
* A new version of fsmonitor-watchman hook has been introduced, to
avoid races.
* "git config" learned to show in which "scope", in addition to in
which file, each config setting comes from.
* The basic 7 colors learned the brighter counterparts
(e.g. "brightred").
* "git sparse-checkout" learned a new "add" subcommand.
* A configuration element used for credential subsystem can now use
wildcard pattern to specify for which set of URLs the entry
applies.
* "git clone --recurse-submodules --single-branch" now uses the same
single-branch option when cloning the submodules.
Performance, Internal Implementation, Development Support etc.
* Tell .editorconfig that in this project, *.txt files are indented
with tabs.
* The test-lint machinery knew to check "VAR=VAL shell_function"
construct, but did not check "VAR= shell_funciton", which has been
corrected.
* Replace "git config --bool" calls with "git config --type=bool" in
sample templates.
* The effort to move "git-add--interactive" to C continues.
* Improve error message generation for "git submodule add".
* Preparation of test scripts for the day when the object names will
use SHA-256 continues.
* Warn programmers about pretend_object_file() that allows the code
to tentatively use in-core objects.
* The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.
* The transport protocol version 2 becomes the default one.
* Traditionally, we avoided threaded grep while searching in objects
(as opposed to files in the working tree) as accesses to the object
layer is not thread-safe. This limitation is getting lifted.
* "git rebase -i" (and friends) used to unnecessarily check out the
tip of the branch to be rebased, which has been corrected.
* A low-level API function get_oid(), that accepts various ways to
name an object, used to issue end-user facing error messages
without l10n, which has been updated to be translatable.
* Unneeded connectivity check is now disabled in a partial clone when
fetching into it.
* Some rough edges in the sparse-checkout feature, especially around
the cone mode, have been cleaned up.
* The diff-* plumbing family of subcommands now pay attention to the
diff.wsErrorHighlight configuration, which has been ignored before;
this allows "git add -p" to also show the whitespace problems to
the end user.
* Some codepaths were given a repository instance as a parameter to
work in the repository, but passed the_repository instance to its
callees, which has been cleaned up (somewhat).
* Memory footprint and performance of "git name-rev" has been
improved.
* The object reachability bitmap machinery and the partial cloning
machinery were not prepared to work well together, because some
object-filtering criteria that partial clones use inherently rely
on object traversal, but the bitmap machinery is an optimization
to bypass that object traversal. There however are some cases
where they can work together, and they were taught about them.
* "git rebase" has learned to use the merge backend (i.e. the
machinery that drives "rebase -i") by default, while allowing
"--apply" option to use the "apply" backend (e.g. the moral
equivalent of "format-patch piped to am"). The rebase.backend
configuration variable can be set to customize.
* Underlying machinery of "git bisect--helper" is being refactored
into pieces that are more easily reused.
Fixes since v2.25
-----------------
* "git commit" gives output similar to "git status" when there is
nothing to commit, but without honoring the advise.statusHints
configuration variable, which has been corrected.
* has_object_file() said "no" given an object registered to the
system via pretend_object_file(), making it inconsistent with
read_object_file(), causing lazy fetch to attempt fetching an
empty tree from promisor remotes.
* Complete an update to tutorial that encourages "git switch" over
"git checkout" that was done only half-way.
* C pedantry ;-) fix.
* The code that tries to skip over the entries for the paths in a
single directory using the cache-tree was not careful enough
against corrupt index file.
* Reduce unnecessary round-trip when running "ls-remote" over the
stateless RPC mechanism.
* "git restore --staged" did not correctly update the cache-tree
structure, resulting in bogus trees to be written afterwards, which
has been corrected.
* The code recently added to move to the entry beyond the ones in the
same directory in the index in the sparse-cone mode did not count
the number of entries to skip over incorrectly, which has been
corrected.
* Rendering by "git log --graph" of ancestry lines leading to a merge
commit were made suboptimal to waste vertical space a bit with a
recent update, which has been corrected.
* Work around test breakages caused by custom regex engine used in
libasan, when address sanitizer is used with more recent versions
of gcc and clang.
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
(merge 849e43cc18 js/builtin-add-i-cmds later to maint).
* "git fetch --refmap=" option has got a better documentation.
* "git checkout X" did not correctly fail when X is not a local
branch but could name more than one remote-tracking branches
(i.e. to be dwimmed as the starting point to create a corresponding
local branch), which has been corrected.
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
* Corner case bugs in "git clean" that stems from a (necessarily for
performance reasons) awkward calling convention in the directory
enumeration API has been corrected.
* A fetch that is told to recursively fetch updates in submodules
inevitably produces reams of output, and it becomes hard to spot
error messages. The command has been taught to enumerate
submodules that had errors at the end of the operation.
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
* The "--recurse-submodules" option of various subcommands did not
work well when run in an alternate worktree, which has been
corrected.
(merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).
* Futureproofing a test not to depend on the current implementation
detail.
* Running "git rm" on a submodule failed unnecessarily when
.gitmodules is only cache-dirty, which has been corrected.
(merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).
* C pedantry ;-) fix.
(merge cf82bff73f jk/clang-sanitizer-fixes later to maint).
* "git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did. Now these
settings are ignored in the "--no-index" mode.
* Technical details of the bundle format has been documented.
* Unhelpful warning messages during documentation build have been squelched.
* "git rebase -i" identifies existing commits in its todo file with
their abbreviated object name, which could become ambigous as it
goes to create new commits, and has a mechanism to avoid ambiguity
in the main part of its execution. A few other cases however were
not covered by the protection against ambiguity, which has been
corrected.
(merge 26027625dd js/rebase-i-with-colliding-hash later to maint).
* Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
(merge 5a5445d878 ag/edit-todo-drop-check later to maint).
* The way "git submodule status" reports an initialized but not yet
populated submodule has not been reimplemented correctly when a
part of the "git submodule" command was rewritten in C, which has
been corrected.
(merge f38c92452d pk/status-of-uncloned-submodule later to maint).
* The code to automatically shrink the fan-out in the notes tree had
an off-by-one bug, which has been killed.
(merge dbc27477ff jh/notes-fanout-fix later to maint).
* The index-pack code now diagnoses a bad input packstream that
records the same object twice when it is used as delta base; the
code used to declare a software bug when encountering such an
input, but it is an input error.
(merge a21781011f jk/index-pack-dupfix later to maint).
* The code to compute the commit-graph has been taught to use a more
robust way to tell if two object directories refer to the same
thing.
(merge a7df60cac8 tb/commit-graph-object-dir later to maint).
* "git remote rename X Y" needs to adjust configuration variables
(e.g. branch.<name>.remote) whose value used to be X to Y.
branch.<name>.pushRemote is now also updated.
* Update to doc-diff.
(merge 2607d39da3 jk/doc-diff-parallel later to maint).
* Doc markup fix.
(merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).
* "git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.
(merge 7ec8125fba en/check-ignore later to maint).
* The merge-recursive machinery failed to refresh the cache entry for
a merge result in a couple of places, resulting in an unnecessary
merge failure, which has been fixed.
(merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).
* Fix for a bug revealed by a recent change to make the protocol v2
the default.
(merge 3e96c66805 ds/partial-clone-fixes later to maint).
* In rare cases "git worktree add <path>" could think that <path>
was already a registered worktree even when it wasn't and refuse
to add the new worktree. This has been corrected.
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).
* "git push" should stop from updating a branch that is checked out
when receive.denyCurrentBranch configuration is set, but it failed
to pay attention to checkouts in secondary worktrees. This has
been corrected.
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
checked it out, even when the BRANCH is checked out in a different
worktree. This has been corrected.
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).
* "git describe" in a repository with multiple root commits sometimes
gave up looking for the best tag to describe a given commit with
too early, which has been adjusted.
* "git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.
(merge 0106b1d4be hi/gpg-use-check-signature later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
(merge c513a958b6 ss/t6025-modernize later to maint).
(merge b441717256 dl/test-must-fail-fixes later to maint).
(merge d031049da3 mt/sparse-checkout-doc-update later to maint).
(merge 145136a95a jc/skip-prefix later to maint).
(merge 5290d45134 jk/alloc-cleanups later to maint).
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
(merge 517b60564e rs/strbuf-insertstr later to maint).
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
(merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
(merge de26f02db1 js/test-avoid-pipe later to maint).
(merge bfe2bbb47f js/test-unc-fetch later to maint).
(merge 08809c09aa js/mingw-open-in-gdb later to maint).
(merge cc4f2eb828 jk/doc-credential-helper later to maint).
(merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
(merge a2dc43414c es/doc-mentoring later to maint).
(merge 539052f42f jk/run-command-formatfix later to maint).
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
(merge 2ce6d075fa rs/micro-cleanups later to maint).
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
(merge 3c29e21eb0 ma/test-cleanup later to maint).
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
(merge 7f487ce062 js/ci-windows-update later to maint).
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
----------------------------------------------------------------
Changes since v2.25.0 are as follows:
Abhishek Kumar (2):
lib-log-graph: consolidate test_cmp_graph logic
lib-log-graph: consolidate colored graph cmp logic
Alban Gruin (4):
rebase -i: stop checking out the tip of the branch to rebase
sequencer: move check_todo_list_from_file() to rebase-interactive.c
rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
builtin/rebase: remove a call to get_oid() on `options.switch_to'
Alexandr Miloslavskiy (5):
parse_branchname_arg(): extract part as new function
checkout: don't revert file on ambiguous tracking branches
t: add tests for error conditions with --pathspec-from-file
t: fix quotes tests for --pathspec-from-file
t: directly test parse_pathspec_file()
Benno Evers (1):
describe: don't abort too early when searching tags
Bert Wesarg (6):
pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
remote: clean-up by returning early to avoid one indentation
remote: clean-up config callback
remote rename/remove: handle branch.<name>.pushRemote config values
config: provide access to the current line number
remote rename/remove: gently handle remote.pushDefault config
David Turner (1):
git rm submodule: succeed if .gitmodules index stat info is zero
Denton Liu (34):
t/lib-git-p4: use test_path_is_missing()
t0000: replace test_must_fail with run_sub_test_lib_test_err()
t0003: use named parameters in attr_check()
t0003: use test_must_be_empty()
t0003: don't use `test_must_fail attr_check`
t0020: don't use `test_must_fail has_cr`
t0020: use ! check_packed_refs_marked
t1306: convert `test_might_fail rm` to `rm -f`
t1307: reorder `nongit test_must_fail`
t1409: let sed open its own input file
t1409: use test_path_is_missing()
t1501: remove use of `test_might_fail cp`
t1507: stop losing return codes of git commands
t1507: run commands within test_expect_success
t1507: inline full_name()
contrib/credential/netrc: make PERL_PATH configurable
contrib/credential/netrc: work outside a repo
t2018: remove trailing space from test description
t2018: add space between function name and ()
t2018: improve style of if-statement
.mailmap: fix erroneous authorship for Johannes Schindelin
t2018: be more discerning when checking for expected exit codes
t2018: teach do_checkout() to accept `!` arg
t2018: don't lose return code of git commands
t2018: replace "sha" with "oid"
t3030: use test_path_is_missing()
t3310: extract common notes_merge_files_gone()
t3415: stop losing return codes of git commands
t3415: increase granularity of test_auto_{fixup,squash}()
t3419: stop losing return code of git command
t3507: fix indentation
t3507: use test_path_is_missing()
t4124: only mark git command with test_must_fail
.mailmap: map Yi-Jyun Pan's email
Derrick Stolee (26):
unpack-trees: correctly compute result count
graph: add test to demonstrate horizontal line bug
graph: fix collapse of multiple edges
clean: demonstrate a bug with pathspecs
fetch: document and test --refmap=""
t1091: use check_files to reduce boilerplate
t1091: improve here-docs
sparse-checkout: create leading directories
clone: fix --sparse option with URLs
sparse-checkout: cone mode does not recognize "**"
sparse-checkout: detect short patterns
sparse-checkout: warn on globs in cone patterns
sparse-checkout: properly match escaped characters
sparse-checkout: write escaped patterns in cone mode
sparse-checkout: unquote C-style strings over --stdin
sparse-checkout: use C-style quotes in 'list' subcommand
sparse-checkout: escape all glob characters on write
sparse-checkout: improve docs around 'set' in cone mode
sparse-checkout: fix cone mode behavior mismatch
sparse-checkout: extract add_patterns_from_input()
sparse-checkout: extract pattern update from 'set' subcommand
sparse-checkout: create 'add' subcommand
sparse-checkout: work with Windows paths
sparse-checkout: allow one-character directories in cone mode
partial-clone: demonstrate bugs in partial fetch
partial-clone: avoid fetching when looking for objects
Elijah Newren (26):
unpack-trees: exit check_updates() early if updates are not wanted
string-list: note in docs that callers can specify sorting function
dir: treat_leading_path() and read_directory_recursive(), round 2
git-rebase.txt: update description of --allow-empty-message
t3404: directly test the behavior of interest
rebase (interactive-backend): make --keep-empty the default
rebase (interactive-backend): fix handling of commits that become empty
t3406: simplify an already simple test
rebase, sequencer: remove the broken GIT_QUIET handling
rebase: make sure to pass along the quiet flag to the sequencer
rebase: fix handling of restrict_revision
t3432: make these tests work with either am or merge backends
rebase: allow more types of rebases to fast-forward
git-rebase.txt: add more details about behavioral differences of backends
rebase: move incompatibility checks between backend options a bit earlier
rebase: add an --am option
git-prompt: change the prompt for interactive-based rebases
rebase: drop '-i' from the reflog for interactive-based rebases
rebase tests: mark tests specific to the am-backend with --am
rebase tests: repeat some tests using the merge backend instead of am
rebase: make the backend configurable via config setting
rebase: change the default backend from "am" to "merge"
rebase: rename the two primary rebase backends
check-ignore: fix documentation and implementation to match
t3433: new rebase testcase documenting a stat-dirty-like failure
merge-recursive: fix the refresh logic in update_file_flags
Emily Shaffer (8):
unpack-trees: watch for out-of-range index position
fetch: emphasize failure during submodule fetch
MyFirstContribution: add avenues for getting help
submodule: add newline on invalid submodule error
MyFirstContribution: rephrase contact info
prefix_path: show gitdir when arg is outside repo
submodule--helper: use C99 named initializer
clone: pass --single-branch during --recurse-submodules
Eric Sunshine (6):
t3400: make test clean up after itself
rebase: refuse to switch to branch already checked out elsewhere
worktree: drop unused code from get_main_worktree()
worktree: improve find_worktree() documentation
worktree: add utility to find worktree by pathname
worktree: don't allow "add" validation to be fooled by suffix matching
Eyal Soha (3):
color.c: refactor color_output arguments
color.c: support bright aixterm colors
color.c: alias RGB colors 8-15 to aixterm colors
Hans Jerry Illikainen (2):
editorconfig: indent text files with tabs
gpg-interface: add minTrustLevel as a configuration option
Hariom Verma (4):
get_main_worktree(): allow it to be called in the Git directory
t5509: use a bare repository for test push target
receive.denyCurrentBranch: respect all worktrees
t2402: test worktree path when called in .git directory
Heba Waly (5):
commit: honor advice.statusHints when rejecting an empty commit
doc/gitcore-tutorial: fix prose to match example command
add: use advise function to display hints
git: update documentation for --git-dir
add: change advice config variables used by the add API
Jacques Bodin-Hullin (1):
parse-options: lose an unnecessary space in an error message
Jeff King (68):
builtin/pack-objects: report reused packfile objects
packfile: expose get_delta_base()
restore: invalidate cache-tree when removing entries with --staged
transport: don't flush when disconnecting stateless-rpc helper
dir: restructure in a way to avoid passing around a struct dirent
dir: point treat_leading_path() warning to the right place
Makefile: use compat regex with SANITIZE=address
t4018: drop "debugging" cat from hunk-header tests
t7800: don't rely on reuse_worktree_file()
ewah/bitmap: introduce bitmap_word_alloc()
pack-bitmap: introduce bitmap_walk_contains()
pack-bitmap: uninteresting oid can be outside bitmapped packfile
pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
csum-file: introduce hashfile_total()
pack-objects: introduce pack.allowPackReuse
builtin/pack-objects: introduce obj_is_packed()
pack-objects: improve partial packfile reuse
pack-objects: add checks for duplicate objects
pack-bitmap: don't rely on bitmap_git->reuse_objects
sparse-checkout: fix documentation typo for core.sparseCheckoutCone
verify_filename(): handle backslashes in "wildcards are pathspecs" rule
merge-recursive: silence -Wxor-used-as-pow warning
t1400: avoid "test" string comparisons
t1506: drop space after redirection operator
avoid computing zero offsets from NULL pointer
xdiff: avoid computing non-zero offset from NULL pointer
obstack: avoid computing offsets from NULL pointer
doc: drop "explicitly given" from push.default description
sha1-name: mark get_oid() error messages for translation
normalize_path_copy(): document "dst" size expectations
walker_fetch(): avoid raw array length computation
traverse_trees(): use stack array for name entries
diff: move diff.wsErrorHighlight to "basic" config
tree-walk.c: break circular dependency with unpack-trees
index-pack: downgrade twice-resolved REF_DELTA to die()
mailinfo: treat header values as C strings
mailinfo: simplify parsing of header values
mailinfo: be more liberal with header whitespace
mailinfo: factor out some repeated header handling
pack-bitmap: factor out type iterator initialization
pack-bitmap: fix leak of haves/wants object lists
rev-list: fallback to non-bitmap traversal when filtering
pack-bitmap: refuse to do a bitmap traversal with pathspecs
rev-list: factor out bitmap-optimized routines
rev-list: make --count work with --objects
rev-list: allow bitmaps when counting objects
t5310: factor out bitmap traversal comparison
rev-list: allow commit-only bitmap traversals
pack-bitmap: basic noop bitmap filter infrastructure
rev-list: use bitmap filters for traversal
bitmap: add bitmap_unset() function
pack-bitmap: implement BLOB_NONE filtering
pack-bitmap: implement BLOB_LIMIT filtering
pack-objects: support filters with bitmaps
doc: move credential helper info into gitcredentials(7)
doc/config/push: use longer "--" line for preformatted example
doc-diff: use single-colon rule in rendering Makefile
run-command.h: fix mis-indented struct member
nth_packed_object_oid(): use customary integer return
pack-objects: read delta base oid into object_id struct
pack-objects: convert oe_set_delta_ext() to use object_id
pack-objects: use object_id struct in pack-reuse code
pack-bitmap: use object_id when loading on-disk bitmaps
pack-check: convert "internal error" die to a BUG()
pack-check: push oid lookup into loop
packed_object_info(): use object_id for returning delta base
packed_object_info(): use object_id internally for delta base
packfile: drop nth_packed_object_sha1()
Johan Herland (2):
t3305: check notes fanout more carefully and robustly
notes.c: fix off-by-one error when decreasing notes fanout
Johannes Berg (1):
pack-format: correct multi-pack-index description
Johannes Schindelin (33):
built-in add -p: prepare for patch modes other than "stage"
built-in add -p: implement the "stash" and "reset" patch modes
legacy stash -p: respect the add.interactive.usebuiltin setting
built-in stash: use the built-in `git add -p` if so configured
built-in add -p: implement the "checkout" patch modes
built-in add -p: implement the "worktree" patch modes
commit --interactive: make it work with the built-in `add -i`
t3701: adjust difffilter test
built-in add -p: support interactive.diffFilter
built-in add -p: handle diff.algorithm
terminal: make the code of disable_echo() reusable
terminal: accommodate Git for Windows' default terminal
terminal: add a new function to read a single keystroke
built-in add -p: respect the `interactive.singlekey` config setting
built-in add -p: handle Escape sequences in interactive.singlekey mode
built-in add -p: handle Escape sequences more efficiently
ci: include the built-in `git add -i` in the `linux-gcc` job
msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
built-in add -i: do not try to `patch`/`diff` an empty list of files
built-in add -i: accept open-ended ranges again
parse_insn_line(): improve error message when parsing failed
rebase -i: re-fix short SHA-1 collision
rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
ci: ignore rubygems warning in the "Documentation" job
convert: fix typo
tests: fix --write-junit-xml with subshells
t9001, t9116: avoid pipes
t5580: test cloning without file://, test fetching via UNC paths
mingw: add a helper function to attach GDB to the current process
t/lib-httpd: avoid using macOS' sed
ci: prevent `perforce` from being quarantined
Azure Pipeline: switch to the latest agent pools
t5537: adjust test_oid label
Johannes Sixt (1):
t3504: do check for conflict marker after failed cherry-pick
Jonathan Nieder (9):
sha1-file: document how to use pretend_object_file
fetch test: avoid use of "VAR= cmd" with a shell function
t/check-non-portable-shell: detect "FOO= shell_func", too
fetch test: mark test of "skipping" haves as v0-only
fetch test: use more robust test for filtered objects
config doc: protocol.version is not experimental
test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
fetch: default to protocol version 2
Jonathan Tan (4):
sha1-file: remove OBJECT_INFO_SKIP_CACHED
t5616: make robust to delta base change
connected: verify promisor-ness of partial clone
fetch: forgo full connectivity check if --filter
Junio C Hamano (15):
The first batch post 2.25 cycle
merge-recursive: use subtraction to flip stage
.mailmap: fix GGG authoship screwup
The second batch
C: use skip_prefix() to avoid hardcoded string length
The third batch for 2.26
The fourth batch for 2.26
The fifth batch for 2.26
Git 2.25.1
The sixth batch for 2.26
rev-list --count: comment on the use of count_right++
The seventh batch for 2.26
Revert "gpg-interface: prefer check_signature() for GPG verification"
The eighth batch for 2.26
Git 2.26-rc0
Kevin Willford (4):
fsmonitor: change last update timestamp on the index_state to opaque token
fsmonitor: handle version 2 of the hooks that will use opaque token
fsmonitor: add fsmonitor hook scripts for version 2
fsmonitor: update documentation for hook version and watchman hooks
Kyle Meyer (2):
submodule add: show 'add --dry-run' stderr when aborting
submodule foreach: replace $path with $sm_path in example
Lucius Hu (1):
templates: fix deprecated type option `--bool`
Luke Diamand (7):
git-p4: make closeStreams() idempotent
git-p4: add P4CommandException to report errors talking to Perforce
git-p4: disable some pylint warnings, to get pylint output to something manageable
git-p4: create helper function importRevisions()
git-p4: cleanup better on error exit
git-p4: check for access to remote host earlier
git-p4: avoid leak of file handle when cloning
Martin Ågren (6):
git-filter-branch.txt: wrap "maths" notation in backticks
name-rev: rewrite create_or_update_name()
diff-options.txt: avoid "regex" overload in example
t4117: check for files using `test_path_is_file`
t9810: drop debug `cat` call
t: drop debug `cat` calls
Masaya Suzuki (1):
doc: describe Git bundle format
Matheus Tavares (21):
grep: fix race conditions on userdiff calls
grep: fix race conditions at grep_submodule()
grep: fix racy calls in grep_objects()
replace-object: make replace operations thread-safe
object-store: allow threaded access to object reading
grep: replace grep_read_mutex by internal obj read lock
submodule-config: add skip_if_read option to repo_read_gitmodules()
grep: allow submodule functions to run in parallel
grep: protect packed_git [re-]initialization
grep: re-enable threads in non-worktree case
grep: move driver pre-load out of critical section
grep: use no. of cores as the default no. of threads
doc: sparse-checkout: mention --cone option
completion: add support for sparse-checkout
diff: make diff_populate_filespec() honor its repo argument
cache-tree: use given repo's hash_algo at verify_one()
pack-check: use given repo's hash_algo at verify_packfile()
streaming: allow open_istream() to handle any repo
sha1-file: pass git_hash_algo to write_object_file_prepare()
sha1-file: pass git_hash_algo to hash_object_file()
sha1-file: allow check_object_signature() to handle any repo
Matthew Rogers (10):
config: fix typo in variable name
t1300: fix over-indented HERE-DOCs
t1300: create custom config file without special characters
config: make scope_name non-static and rename it
config: split repo scope to local and worktree
config: clarify meaning of command line scoping
config: preserve scope in do_git_config_sequence
config: teach git_config_source to remember its scope
submodule-config: add subomdule config scope
config: add '--show-scope' to print the scope of a config value
Miriam Rubio (3):
bisect--helper: convert `vocab_*` char pointers to char arrays
bisect: use the standard 'if (!var)' way to check for 0
bisect: add enum to represent bisect returning codes
Peter Kaestle (3):
t7400: add a testcase for submodule status on empty dirs
submodule: fix status of initialized but not cloned submodules
t7400: testcase for submodule status on unregistered inner git repos
Philippe Blain (5):
t7410: rename to t2405-worktree-submodule.sh
t2405: use git -C and test_commit -C instead of subshells
t2405: clarify test descriptions and simplify test
submodule.c: use get_git_dir() instead of get_git_common_dir()
grep: ignore --recurse-submodules if --no-index is given
Pranit Bauva (7):
bisect--helper: return error codes from `cmd_bisect__helper()`
bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
bisect: libify `bisect_checkout`
bisect: libify `check_merge_bases` and its dependents
bisect: libify `check_good_are_ancestors_of_bad` and its dependents
bisect: libify `handle_bad_merge_base` and its dependents
bisect: libify `bisect_next_all`
Ralf Thielow (1):
submodule.c: mark more strings for translation
René Scharfe (20):
name-rev: remove unused typedef
name-rev: respect const qualifier
name-rev: don't leak path copy in name_ref()
name-rev: don't _peek() in create_or_update_name()
name-rev: put struct rev_name into commit slab
name-rev: factor out get_parent_name()
name-rev: pre-size buffer in get_parent_name()
name-rev: generate name strings only if they are better
name-rev: release unused name strings
name-rev: sort tip names before applying
strbuf: add and use strbuf_insertstr()
mailinfo: don't insert header prefix for handle_content_type()
parse-options: use COPY_ARRAY in parse_options_concat()
parse-options: factor out parse_options_count()
parse-options: const parse_options_concat() parameters
parse-options: simplify parse_options_dup()
quote: use isalnum() to check for alphanumeric characters
use strpbrk(3) to search for characters from a given set
blame: provide type of fingerprints pointer
commit-graph: use progress title directly
SZEDER Gábor (6):
t9902-completion: add tests for the __git_find_on_cmdline() helper
completion: clean up the __git_find_on_cmdline() helper function
completion: return the index of found word from __git_find_on_cmdline()
completion: simplify completing 'git worktree' subcommands and options
completion: list existing working trees for 'git worktree' subcommands
completion: list paths and refs for 'git worktree add'
Shourya Shukla (2):
t6025: modernize style
t6025: use helpers to replace test -f <path>
Tanushree Tumane (2):
bisect--helper: change `retval` to `res`
bisect--helper: introduce new `decide_next()` function
Taylor Blau (5):
t5318: don't pass non-object directory to '--object-dir'
commit-graph.h: store an odb in 'struct write_commit_graph_context'
commit-graph.h: store object directory in 'struct commit_graph'
commit-graph.c: remove path normalization, comparison
commit-graph.h: use odb in 'load_commit_graph_one_fd_st'
brian m. carlson (53):
run-command: avoid undefined behavior in exists_in_PATH
t4054: make hash-size independent
t4066: compute index line in diffs
t4134: compute appropriate length constant
t4200: make hash size independent
t4202: abstract away SHA-1-specific constants
t4204: make hash size independent
t4300: abstract away SHA-1-specific constants
t5318: update for SHA-256
t5319: change invalid offset for SHA-256 compatibility
t5319: make test work with SHA-256
t5324: make hash size independent
t5504: make hash algorithm independent
t5510: make hash size independent
t5512: abstract away SHA-1-specific constants
t5530: compute results based on object length
t5537: make hash size independent
t5540: make hash size independent
t5562: use $ZERO_OID
t5601: switch into repository to hash object
t5604: make hash independent
docs: use "currently" for the present time
doc: move author and committer information to git-commit(1)
docs: expand on possible and recommended user config options
doc: provide guidance on user.name format
doc: dissuade users from trying to ignore tracked files
docs: mention when increasing http.postBuffer is valuable
t/lib-pack: support SHA-256
t3206: make hash size independent
t3308: make test work with SHA-256
t3309: make test work with SHA-256
t3310: make test work with SHA-256
t3311: make test work with SHA-256
t4013: make test hash independent
t4211: move SHA-1-specific test cases into a directory
t4211: add test cases for SHA-256
t4060: make test work with SHA-256
t5302: make hash size independent
t5309: make test hash independent
t5313: make test hash independent
t5321: make test hash independent
t5515: make test hash independent
t5318: update for SHA-256
t5607: make hash size independent
t5703: make test work with SHA-256
t6000: abstract away SHA-1-specific constants
t6006: make hash size independent
t6024: update for SHA-256
mailmap: add an additional email address for brian m. carlson
t1300: add test for urlmatch with multiple wildcards
t0300: add tests for some additional cases
credential: use the last matching username in the config
credential: allow wildcard patterns when matching config
^ permalink raw reply [relevance 2%]
* [Outreachy] [PATCH v3 00/13] Finish converting git bisect to C part 1
@ 2020-02-08 9:06 4% Miriam Rubio
0 siblings, 0 replies; 162+ results
From: Miriam Rubio @ 2020-02-08 9:06 UTC (permalink / raw)
To: git; +Cc: Miriam Rubio
These patches correspond to a first part of patch series
of Outreachy project "Finish converting `git bisect` from shell to C"
started by Pranit Bauva and Tanushree Tumane
(https://public-inbox.org/git/pull.117.git.gitgitgadget@gmail.com) and
continued by me.
This first part is formed of preparatory/clean-up patches and all
`bisect.c` libification work.
I would like to thank Johannes Schindelin and Junio Hamano for reviewing
the patch series.
These patch series emails were generated from:
https://gitlab.com/mirucam/git/commits/git-bisect-work-part1-v3
--- Changes since v2 Finish converting git bisect to C part 1 patch series ---
General changes
---------------
* Rebase on master branch: de93cc14ab (The third batch for 2.26, 2020-02-05).
* Amend commit messages.
* Add an enum to represent bisecting error codes.
Specific changes
----------------
[5/13] bisect--helper: introduce new `decide_next()` function
* Change const char* types to char* and fix `free()` calls.
--
[6/13] bisect: add enum to represent bisect returning codes
* New patch that adds an enum to represent bisecting error codes.
--
[7/13] bisect--helper: return error codes from `cmd_bisect__helper()`
* New patch split from `libify `check_good_are_ancestors_of_bad` and its
dependents`.
* Change code in return for readability.
--
[8/13] bisect: libify `exit_if_skipped_commits` to `error_if_skipped*`
and its dependents
* Remove comments.
--
[9/13] bisect: libify `bisect_checkout`
* Fix declaration block.
* Change code in return for readability.
* Add comments.
--
[11/13] bisect: libify `check_good_are_ancestors_of_bad` and its
dependents
* Fix brace location.
--
Miriam Rubio (3):
bisect--helper: convert `vocab_*` char pointers to char arrays
bisect: use the standard 'if (!var)' way to check for 0
bisect: add enum to represent bisect returning codes
Pranit Bauva (8):
run-command: make `exists_in_PATH()` non-static
bisect--helper: return error codes from `cmd_bisect__helper()`
bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and
its dependents
bisect: libify `bisect_checkout`
bisect: libify `check_merge_bases` and its dependents
bisect: libify `check_good_are_ancestors_of_bad` and its dependents
bisect: libify `handle_bad_merge_base` and its dependents
bisect: libify `bisect_next_all`
Tanushree Tumane (2):
bisect--helper: change `retval` to `res`
bisect--helper: introduce new `decide_next()` function
bisect.c | 135 +++++++++++++++++++++++++++------------
bisect.h | 29 ++++++++-
builtin/bisect--helper.c | 123 +++++++++++++++++++----------------
run-command.c | 2 +-
run-command.h | 11 ++++
5 files changed, 201 insertions(+), 99 deletions(-)
--
2.25.0
^ permalink raw reply [relevance 4%]
* [ANNOUNCE] Git v2.25.0
@ 2020-01-13 19:28 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-01-13 19:28 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.25.0 is now available at the
usual places. It is comprised of 583 non-merge commits since
v2.24.0, contributed by 84 people, 32 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.25.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.24.0 are as follows.
Welcome to the Git development community!
Ben Keene, Colin Stolley, Dominic Jäger, Erik Chen, Hariom
Verma, Heba Waly, James Coglan, James Shubin, Johannes Schindelin
via GitGitGadget, Jonathan Gilbert, Josh Holland, Kazuhiro
Kato, Łukasz Niemier, Manish Goregaokar, Matthew Rogers,
Mihail Atanassov, Miriam Rubio, Nathan Stocks, Naveen Nathan,
Nika Layzell, pan93412, Paul Menzel, Philippe Blain, Prarit
Bhargava, r.burenkov, Ruud van Asseldonk, ryenus, Slavica
Đukić, Thomas Menzel, Utsav Shah, Yi-Jyun Pan, and Zoli Szabó.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alessandro Menti, Alexander Shopov, Alexandr
Miloslavskiy, Andreas Schwab, Andrei Rybak, brian m. carlson,
Christopher Diaz Riveros, Daniel Ferreira, Denis Ovsienko,
Denton Liu, Derrick Stolee, Dimitriy Ryazantcev, Đoàn Trần
Công Danh, Ed Maste, Elia Pinto, Elijah Newren, Emily Shaffer,
Eric Wong, Garima Singh, Hans Jerry Illikainen, Jean-Noël
Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes Berg,
Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
Tan, Jordi Mas, Junio C Hamano, Kevin Willford, Martin Ågren,
Matthias Rüster, Mike Hommey, Peter Krefting, Philip Oakley,
Phillip Wood, Pratyush Yadav, Ralf Thielow, René Scharfe, Robin
H. Johnson, Rohit Ashiwal, SZEDER Gábor, Tanushree Tumane,
Taylor Blau, Thomas Braun, Thomas Gummerer, Todd Zullinger,
Trần Ngọc Quân, and William Baker.
----------------------------------------------------------------
Git 2.25 Release Notes
======================
Updates since v2.24
-------------------
Backward compatibility notes
UI, Workflows & Features
* A tutorial on object enumeration has been added.
* The branch description ("git branch --edit-description") has been
used to fill the body of the cover letters by the format-patch
command; this has been enhanced so that the subject can also be
filled.
* "git rebase --preserve-merges" has been marked as deprecated; this
release stops advertising it in the "git rebase -h" output.
* The code to generate multi-pack index learned to show (or not to
show) progress indicators.
* "git apply --3way" learned to honor merge.conflictStyle
configuration variable, like merges would.
* The custom format for "git log --format=<format>" learned the l/L
placeholder that is similar to e/E that fills in the e-mail
address, but only the local part on the left side of '@'.
* Documentation pages for "git shortlog" now list commit limiting
options explicitly.
* The patterns to detect function boundary for Elixir language has
been added.
* The completion script (in contrib/) learned that the "--onto"
option of "git rebase" can take its argument as the value of the
option.
* The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.
* "git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.
* "git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.
* A few commands learned to take the pathspec from the standard input
or a named file, instead of taking it as the command line
arguments, with the "--pathspec-from-file" option.
* "git submodule" learned a subcommand "set-url".
* "git log" family learned "--pretty=reference" that gives the name
of a commit in the format that is often used to refer to it in log
messages.
* The interaction between "git clone --recurse-submodules" and
alternate object store was ill-designed. The documentation and
code have been taught to make more clear recommendations when the
users see failures.
* Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.
* Miscellaneous small UX improvements on "git-p4".
* "git sparse-checkout list" subcommand learned to give its output in
a more concise form when the "cone" mode is in effect.
Performance, Internal Implementation, Development Support etc.
* Debugging support for lazy cloning has been a bit improved.
* Move the definition of a set of bitmask constants from 0ctal
literal to (1U<<count) notation.
* Test updates to prepare for SHA-2 transition continues.
* Crufty code and logic accumulated over time around the object
parsing and low-level object access used in "git fsck" have been
cleaned up.
* The implementation of "git log --graph" got refactored and then its
output got simplified.
* Follow recent push to move API docs from Documentation/ to header
files and update config.h
* "git bundle" has been taught to use the parse options API. "git
bundle verify" learned "--quiet" and "git bundle create" learned
options to control the progress output.
* Handling of commit objects that use non UTF-8 encoding during
"rebase -i" has been improved.
* The beginning of rewriting "git add -i" in C.
* A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
* The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
* We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently. The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.
* Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.
* Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.
* Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.
* PerfTest fix to avoid stale result mixed up with the latest round
of test results.
* Hide lower-level verify_signed-buffer() API as a pure helper to
implement the public check_signature() function, in order to
encourage new callers to use the correct and more strict
validation.
* Unnecessary reading of state variables back from the disk during
sequencer operation has been reduced.
* The code has been made to avoid gmtime() and localtime() and prefer
their reentrant counterparts.
* In a repository with many packfiles, the cost of the procedure that
avoids registering the same packfile twice was unnecessarily high
by using an inefficient search algorithm, which has been corrected.
* Redo "git name-rev" to avoid recursive calls.
* FreeBSD CI support via Cirrus-CI has been added.
Fixes since v2.24
-----------------
* "rebase -i" ceased to run post-commit hook by mistake in an earlier
update, which has been corrected.
* "git notes copy $original" ought to copy the notes attached to the
original object to HEAD, but a mistaken tightening to command line
parameter validation made earlier disabled that feature by mistake.
* When all files from some subdirectory were renamed to the root
directory, the directory rename heuristics would fail to detect that
as a rename/merge of the subdirectory to the root directory, which has
been corrected.
* Code clean-up and a bugfix in the logic used to tell worktree local
and repository global refs apart.
(merge f45f88b2e4 sg/dir-trie-fixes later to maint).
* "git stash save" in a working tree that is sparsely checked out
mistakenly removed paths that are outside the area of interest.
(merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
* "git rev-parse --git-path HEAD.lock" did not give the right path
when run in a secondary worktree.
(merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
* "git merge --no-commit" needs "--no-ff" if you do not want to move
HEAD, which has been corrected in the manual page for "git bisect".
(merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
* "git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected. This has been corrected.
(merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
* Messages from die() etc. can be mixed up from multiple processes
without even line buffering on Windows, which has been worked
around.
(merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
* HTTP transport had possible allocator/deallocator mismatch, which
has been corrected.
* The watchman integration for fsmonitor was racy, which has been
corrected to be more conservative.
(merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
* Fetching from multiple remotes into the same repository in parallel
had a bad interaction with the recent change to (optionally) update
the commit-graph after a fetch job finishes, as these parallel
fetches compete with each other. Which has been corrected.
* Recent update to "git stash pop" made the command empty the index
when run with the "--quiet" option, which has been corrected.
* "git fetch" codepath had a big "do not lazily fetch missing objects
when I ask if something exists" switch. This has been corrected by
marking the "does this thing exist?" calls with "if not please do not
lazily fetch it" flag.
* Test update to avoid wasted cycles.
(merge e0316695ec sg/skip-skipped-prereq later to maint).
* Error handling after "git push" finishes sending the packdata and
waits for the response to the remote side has been improved.
(merge ad7a403268 jk/send-pack-remote-failure later to maint).
* Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.
(merge a376e37b2c jk/gitweb-anti-xss later to maint).
* CI jobs for macOS has been made less chatty when updating perforce
package used during testing.
(merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
* "git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object. It now shows the throughput as
well.
(merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
* The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.
* The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.
(merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
* "git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.
(merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
* "git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.
* "git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.
(merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
* The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.
(merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
* TravisCI update.
(merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
* While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.
(merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
* Work around a issue where a FD that is left open when spawning a
child process and is kept open in the child can interfere with the
operation in the parent process on Windows.
* One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.
* "git rebase" did not work well when format.useAutoBase
configuration variable is set, which has been corrected.
* The "diff" machinery learned not to lose added/removed blank lines
in the context when --ignore-blank-lines and --function-context are
used at the same time.
(merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
* The test on "fast-import" used to get stuck when "fast-import" died
in the middle.
(merge 0d9b0d7885 sg/t9300-robustify later to maint).
* "git format-patch" can take a set of configured format.notes values
to specify which notes refs to use in the log message part of the
output. The behaviour of this was not consistent with multiple
--notes command line options, which has been corrected.
(merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
* "git p4" used to ignore lfs.storage configuration variable, which
has been corrected.
(merge ea94b16fb8 rb/p4-lfs later to maint).
* Assorted fixes to the directory traversal API.
(merge 6836d2fe06 en/fill-directory-fixes later to maint).
* Forbid pathnames that the platform's filesystem cannot represent on
MinGW.
(merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).
* "git rebase --signoff" stopped working when the command was written
in C, which has been corrected.
(merge 4fe7e43c53 en/rebase-signoff-fix later to maint).
* An earlier update to Git for Windows declared that a tree object is
invalid if it has a path component with backslash in it, which was
overly strict, which has been corrected. The only protection the
Windows users need is to prevent such path (or any path that their
filesystem cannot check out) from entering the index.
(merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint).
* The code to write split commit-graph file(s) upon fetching computed
bogus value for the parameter used in splitting the resulting
files, which has been corrected.
(merge 63020f175f ds/commit-graph-set-size-mult later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
(merge 8b656572ca sg/commit-graph-usage-fix later to maint).
(merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
(merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
(merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
(merge 270de6acbe en/t6024-style later to maint).
(merge 14c4776d75 ns/test-desc-typofix later to maint).
(merge 68d40f30c4 dj/typofix-merge-strat later to maint).
(merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
(merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
(merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
(merge b018719927 ma/t7004 later to maint).
(merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
(merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
(merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
(merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
(merge 2a02262078 dl/t5520-cleanup later to maint).
(merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
(merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
(merge 3eae30e464 jk/lore-is-the-archive later to maint).
(merge 14b7664df8 dl/lore-is-the-archive later to maint).
(merge 0e40a73a4c po/bundle-doc-clonable later to maint).
(merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
(merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
(merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
(merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
(merge 11de8dd7ef dr/branch-usage-casefix later to maint).
(merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
(merge 147ee35558 rs/commit-export-env-simplify later to maint).
(merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
(merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
(merge cc2bd5c45d pb/submodule-doc-xref later to maint).
(merge df5be01669 ja/doc-markup-cleanup later to maint).
(merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
(merge 20a67e8ce9 js/use-test-tool-on-path later to maint).
(merge 4e61b2214d ew/packfile-syscall-optim later to maint).
(merge ace0f86c7f pb/clarify-line-log-doc later to maint).
(merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint).
(merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint).
(merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint).
(merge f8740c586b pm/am-in-body-header-doc-update later to maint).
(merge 5814d44d9b tm/doc-submodule-absorb-fix later to maint).
----------------------------------------------------------------
Changes since v2.24.0 are as follows:
Alban Gruin (6):
sequencer: update `total_nr' when adding an item to a todo list
sequencer: update `done_nr' when skipping commands in a todo list
sequencer: move the code writing total_nr on the disk to a new function
rebase: fill `squash_onto' in get_replay_opts()
sequencer: directly call pick_commits() from complete_action()
sequencer: fix a memory leak in sequencer_continue()
Alessandro Menti (1):
l10n: it.po: update the Italian translation for Git 2.25.0
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (4800t)
Alexandr Miloslavskiy (14):
parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
pathspec: add new function to parse file
doc: reset: synchronize <pathspec> description
reset: support the `--pathspec-from-file` option
doc: commit: synchronize <pathspec> description
commit: support the --pathspec-from-file option
cmd_add: prepare for next patch
add: support the --pathspec-from-file option
doc: checkout: remove duplicate synopsis
doc: checkout: fix broken text reference
doc: checkout: synchronize <pathspec> description
doc: restore: synchronize <pathspec> description
checkout, restore: support the --pathspec-from-file option
commit: forbid --pathspec-from-file --all
Andreas Schwab (1):
t7812: add missing redirects
Andrei Rybak (1):
INSTALL: use existing shell scripts as example
Ben Keene (2):
git-p4: yes/no prompts should sanitize user text
git-p4: show detailed help when parsing options fail
Christopher Diaz Riveros (1):
l10n: es: 2.25.0 round #1
Colin Stolley (1):
packfile.c: speed up loading lots of packfiles
Daniel Ferreira (2):
diff: export diffstat interface
built-in add -i: implement the `status` command
Denis Ovsienko (1):
gitweb: fix a couple spelling errors in comments
Denton Liu (93):
format-patch: replace erroneous and condition
format-patch: use enum variables
format-patch: teach --cover-from-description option
rebase: hide --preserve-merges option
t4108: replace create_file with test_write_lines
t4108: remove git command upstream of pipe
t4108: use `test_config` instead of `git config`
t4108: demonstrate bug in apply
apply: respect merge.conflictStyle in --3way
submodule: teach set-url subcommand
git-diff.txt: document return code of `--no-index`
completion: learn to complete `git rebase --onto=`
t4215: use helper function to check output
argv-array: add space after `while`
rev-list-options.txt: remove reference to --show-notes
SubmittingPatches: use generic terms for hash
pretty-formats.txt: use generic terms for hash
SubmittingPatches: remove dq from commit reference
completion: complete `tformat:` pretty format
revision: make get_revision_mark() return const pointer
pretty.c: inline initalize format_context
t4205: cover `git log --reflog -z` blindspot
pretty: add struct cmt_fmt_map::default_date_mode_type
pretty: implement 'reference' format
SubmittingPatches: use `--pretty=reference`
pretty-options.txt: --notes accepts a ref instead of treeish
t3206: remove spaces after redirect operators
t3206: disable parameter substitution in heredoc
t3206: s/expected/expect/
t3206: range-diff compares logs with commit notes
range-diff: output `## Notes ##` header
range-diff: pass through --notes to `git log`
format-patch: pass notes configuration to range-diff
t0000: test multiple local assignment
t: teach test_cmp_rev to accept ! for not-equals
t5520: improve test style
t5520: use sq for test case names
t5520: let sed open its own input
t5520: replace test -f with test-lib functions
t5520: remove spaces after redirect operator
t5520: use test_line_count where possible
t5520: replace test -{n,z} with test-lib functions
t5520: use test_cmp_rev where possible
t5520: test single-line files by git with test_cmp
t5520: don't put git in upstream of pipe
t5520: replace $(cat ...) comparison with test_cmp
t5520: remove redundant lines in test cases
t5520: replace `! git` with `test_must_fail git`
lib-bash.sh: move `then` onto its own line
apply-one-time-sed.sh: modernize style
t0014: remove git command upstream of pipe
t0090: stop losing return codes of git commands
t3301: stop losing return codes of git commands
t3600: use test_line_count() where possible
t3600: stop losing return codes of git commands
t3600: comment on inducing SIGPIPE in `git rm`
t4015: stop losing return codes of git commands
t4015: use test_write_lines()
t4138: stop losing return codes of git commands
t5317: stop losing return codes of git commands
t5317: use ! grep to check for no matching lines
t5703: simplify one-time-sed generation logic
t5703: stop losing return codes of git commands
t7501: remove spaces after redirect operators
t7501: stop losing return codes of git commands
t7700: drop redirections to /dev/null
t7700: remove spaces after redirect operators
t7700: move keywords onto their own line
t7700: s/test -f/test_path_is_file/
doc: replace MARC links with lore.kernel.org
RelNotes: replace Gmane with real Message-IDs
doc: replace LKML link with lore.kernel.org
t7700: consolidate code into test_no_missing_in_packs()
t7700: consolidate code into test_has_duplicate_object()
t7700: replace egrep with grep
t7700: make references to SHA-1 generic
t7700: stop losing return codes of git commands
t3400: demonstrate failure with format.useAutoBase
format-patch: fix indentation
t4014: use test_config()
format-patch: teach --no-base
rebase: fix format.useAutoBase breakage
t3206: fix incorrect test name
range-diff: mark pointers as const
range-diff: clear `other_arg` at end of function
notes: rename to load_display_notes()
notes: create init_display_notes() helper
notes: extract logic into set_display_notes()
format-patch: use --notes behavior for format.notes
format-patch: move git_config() before repo_init_revisions()
config/format.txt: clarify behavior of multiple format.notes
notes: break set_display_notes() into smaller functions
notes.h: fix typos in comment
Derrick Stolee (28):
test-tool: use 'read-graph' helper
sparse-checkout: create builtin with 'list' subcommand
sparse-checkout: create 'init' subcommand
clone: add --sparse mode
sparse-checkout: 'set' subcommand
sparse-checkout: add '--stdin' option to set subcommand
sparse-checkout: create 'disable' subcommand
sparse-checkout: add 'cone' mode
sparse-checkout: use hashmaps for cone patterns
sparse-checkout: init and set in cone mode
unpack-trees: hash less in cone mode
unpack-trees: add progress to clear_ce_flags()
sparse-checkout: sanitize for nested folders
sparse-checkout: update working directory in-process
sparse-checkout: use in-process update for disable subcommand
sparse-checkout: write using lockfile
sparse-checkout: cone mode should not interact with .gitignore
sparse-checkout: update working directory in-process for 'init'
sparse-checkout: check for dirty status
progress: create GIT_PROGRESS_DELAY
commit-graph: use start_delayed_progress()
sparse-checkout: respect core.ignoreCase in cone mode
sparse-checkout: list directories in cone mode
sparse-checkout: document interactions with submodules
sparse-checkout: use extern for global variables
commit-graph: prefer default size_mult when given zero
graph: drop assert() for merge with two collapsing parents
graph: fix lack of color in horizontal lines
Dimitriy Ryazantcev (1):
l10n: minor case fix in 'git branch' '--unset-upstream' description
Dominic Jäger (1):
merge-strategies: fix typo "reflected to" to "reflected in"
Ed Maste (4):
t4210: skip i18n tests that don't work on FreeBSD
userdiff: remove empty subexpression from elixir regex
CI: add FreeBSD CI support via Cirrus-CI
sparse-checkout: improve OS ls compatibility
Elia Pinto (1):
kset.h, tar.h: add missing header guard to prevent multiple inclusion
Elijah Newren (28):
merge-recursive: clean up get_renamed_dir_portion()
merge-recursive: fix merging a subdirectory into the root directory
t604[236]: do not run setup in separate tests
Documentation: fix a bunch of typos, both old and new
Fix spelling errors in documentation outside of Documentation/
git-filter-branch.txt: correct argument name typo
hashmap: fix documentation misuses of -> versus .
name-hash.c: remove duplicate word in comment
t6024: modernize style
Fix spelling errors in code comments
Fix spelling errors in comments of testcases
Fix spelling errors in names of tests
Fix spelling errors in messages shown to users
Fix spelling errors in test commands
sha1dc: fix trivial comment spelling error
multimail: fix a few simple spelling errors
Fix spelling errors in no-longer-updated-from-upstream modules
t3011: demonstrate directory traversal failures
Revert "dir.c: make 'git-status --ignored' work within leading directories"
dir: remove stray quote character in comment
dir: exit before wildcard fall-through if there is no wildcard
dir: break part of read_directory_recursive() out for reuse
t3434: mark successful test as such
dir: fix checks on common prefix directory
dir: synchronize treat_leading_path() and read_directory_recursive()
dir: consolidate similar code in treat_directory()
rebase: fix saving of --signoff state for am-based rebases
merge-recursive: remove unnecessary oid_eq function
Emily Shaffer (4):
documentation: add tutorial for object walking
myfirstcontrib: add 'psuh' to command-list.txt
myfirstcontrib: add dependency installation step
myfirstcontrib: hint to find gitgitgadget allower
Eric Wong (2):
packfile: remove redundant fcntl F_GETFD/F_SETFD
packfile: replace lseek+read with pread
Erik Chen (1):
fetch: add trace2 instrumentation
Garima Singh (2):
test-path-utils: offer to run a protectNTFS/protectHFS benchmark
tests: add a helper to stress test argument quoting
Hans Jerry Illikainen (4):
gpg-interface: refactor the free-and-xmemdupz pattern
gpg-interface: limit search for primary key fingerprint
gpg-interface: prefer check_signature() for GPG verification
grep: don't return an expression from pcre2_free()
Hariom Verma (2):
builtin/blame.c: constants into bit shift format
git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
Heba Waly (22):
config: move documentation to config.h
documentation: remove empty doc files
diff: move doc to diff.h and diffcore.h
dir: move doc to dir.h
graph: move doc to graph.h and graph.c
merge: move doc to ll-merge.h
sha1-array: move doc to sha1-array.h
remote: move doc to remote.h and refspec.h
refs: move doc to refs.h
attr: move doc to attr.h
revision: move doc to revision.h
pathspec: move doc to pathspec.h
sigchain: move doc to sigchain.h
cache: move doc to cache.h
argv-array: move doc to argv-array.h
credential: move doc to credential.h
parse-options: add link to doc file in parse-options.h
run-command: move doc to run-command.h
trace: move doc to trace.h
tree-walk: move doc to tree-walk.h
submodule-config: move doc to submodule-config.h
trace2: move doc to trace2.h
James Coglan (13):
graph: automatically track display width of graph lines
graph: handle line padding in `graph_next_line()`
graph: reuse `find_new_column_by_commit()`
graph: reduce duplication in `graph_insert_into_new_columns()`
graph: remove `mapping_idx` and `graph_update_width()`
graph: extract logic for moving to GRAPH_PRE_COMMIT state
graph: example of graph output that can be simplified
graph: tidy up display of left-skewed merges
graph: commit and post-merge lines for left-skewed merges
graph: rename `new_mapping` to `old_mapping`
graph: smooth appearance of collapsing edges on commit lines
graph: flatten edges that fuse with their right neighbor
graph: fix coloring of octopus dashes
James Shubin (1):
completion: tab-complete "git svn --recursive"
Jean-Noël Avila (3):
doc: remove non pure ASCII characters
doc: indent multi-line items in list
l10n: fr.po v2.25.0 rnd 1
Jeff Hostetler (1):
trace2: add region in clear_ce_flags
Jeff King (44):
parse_commit_buffer(): treat lookup_commit() failure as parse error
parse_commit_buffer(): treat lookup_tree() failure as parse error
parse_tag_buffer(): treat NULL tag pointer as parse error
commit, tag: don't set parsed bit for parse failures
fsck: stop checking commit->tree value
fsck: stop checking commit->parent counts
fsck: stop checking tag->tagged
fsck: require an actual buffer for non-blobs
fsck: unify object-name code
fsck_describe_object(): build on our get_object_name() primitive
fsck: use oids rather than objects for object_name API
fsck: don't require object structs for display functions
fsck: only provide oid/type in fsck_error callback
fsck: only require an oid for skiplist functions
fsck: don't require an object struct for report()
fsck: accept an oid instead of a "struct blob" for fsck_blob()
fsck: drop blob struct from fsck_finish()
fsck: don't require an object struct for fsck_ident()
fsck: don't require an object struct in verify_headers()
fsck: rename vague "oid" local variables
fsck: accept an oid instead of a "struct tag" for fsck_tag()
fsck: accept an oid instead of a "struct commit" for fsck_commit()
fsck: accept an oid instead of a "struct tree" for fsck_tree()
hex: drop sha1_to_hex_r()
pack-objects: avoid pointless oe_map_new_pack() calls
hex: drop sha1_to_hex()
send-pack: check remote ref status on pack-objects failure
t9502: pass along all arguments in xss helper
t/gitweb-lib.sh: drop confusing quotes
t/gitweb-lib.sh: set $REQUEST_URI
gitweb: escape URLs generated by href()
rev-parse: make --show-toplevel without a worktree an error
perf-lib: use a single filename for all measurement types
t/perf: don't depend on Git.pm
send-pack: use OBJECT_INFO_QUICK to check negative objects
doc: recommend lore.kernel.org over public-inbox.org
doc: replace public-inbox links with lore.kernel.org
t9300: drop some useless uses of cat
t9300: create marks files for double-import-marks test
fast-import: tighten parsing of boolean command line options
fast-import: stop creating leading directories for import-marks
fast-import: delay creating leading directories for export-marks
fast-import: disallow "feature export-marks" by default
fast-import: disallow "feature import-marks" by default
Jiang Xin (2):
l10n: git.pot: v2.25.0 round 1 (119 new, 13 removed)
l10n: zh_CN: for git v2.25.0 l10n round 1
Johannes Berg (1):
multi-pack-index: correct configuration in documentation
Johannes Schindelin (96):
t1400: wrap setup code in test case
git_path(): handle `.lock` files correctly
vreportf(): avoid relying on stdio buffering
update-index: optionally leave skip-worktree entries alone
stash: handle staged changes in skip-worktree files correctly
fetch: add the command-line option `--write-commit-graph`
fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
remote-curl: unbreak http.extraHeader with custom allocators
Start to implement a built-in version of `git add --interactive`
built-in add -i: implement the main loop
built-in add -i: show unique prefixes of the commands
built-in add -i: support `?` (prompt help)
rebase-merges: move labels' whitespace mangling into `label_oid()`
git svn: stop using `rebase --preserve-merges`
mingw: demonstrate that all file handles are inherited by child processes
mingw: work around incorrect standard handles
mingw: spawned processes need to inherit only standard handles
mingw: restrict file handle inheritance only on Windows 7 and later
mingw: do set `errno` correctly when trying to restrict handle inheritance
add-interactive: make sure to release `rev.prune_data`
built-in add -i: allow filtering the modified files list
built-in add -i: prepare for multi-selection commands
built-in add -i: implement the `update` command
built-in add -i: re-implement `revert` in C
built-in add -i: re-implement `add-untracked` in C
built-in add -i: implement the `patch` command
built-in add -i: re-implement the `diff` command
built-in add -i: offer the `quit` command
pkt-line: fix a typo
mingw: forbid translating ERROR_SUCCESS to an errno value
clone --recurse-submodules: prevent name squatting on Windows
mingw: disallow backslash characters in tree objects' file names
path.c: document the purpose of `is_ntfs_dotgit()`
is_ntfs_dotgit(): only verify the leading segment
path: safeguard `.git` against NTFS Alternate Streams Accesses
is_ntfs_dotgit(): speed it up
mingw: fix quoting of arguments
path: also guard `.gitmodules` against NTFS Alternate Data Streams
protect_ntfs: turn on NTFS protection by default
Disallow dubiously-nested submodule git directories
quote-stress-test: accept arguments to test via the command-line
t6130/t9350: prepare for stringent Win32 path validation
quote-stress-test: allow skipping some trials
unpack-trees: let merged_entry() pass through do_add_entry()'s errors
mingw: refuse to access paths with illegal characters
quote-stress-test: offer to test quoting arguments for MSYS2 sh
mingw: refuse to access paths with trailing spaces or periods
mingw: handle `subst`-ed "DOS drives"
Git 2.14.6
Git 2.15.4
test-drop-caches: use `has_dos_drive_prefix()`
Git 2.16.6
Git 2.17.3
Git 2.18.2
Git 2.19.3
t7415: adjust test for dubiously-nested submodule gitdirs for v2.20.x
Git 2.20.2
mingw: detect when MSYS2's sh is to be spawned more robustly
mingw: use MSYS2 quoting even when spawning shell scripts
mingw: fix quoting of empty arguments for `sh`
t7415: drop v2.20.x-specific work-around
mingw: sh arguments need quoting in more circumstances
Git 2.21.1
Git 2.22.2
Git 2.23.1
Git 2.24.1
t3701: add a test for advanced split-hunk editing
t3701: avoid depending on the TTY prerequisite
t3701: add a test for the different `add -p` prompts
t3701: verify the shown messages when nothing can be added
t3701: verify that the diff.algorithm config setting is handled
git add -p: use non-zero exit code when the diff generation failed
apply --allow-overlap: fix a corner case
t3404: fix indentation
built-in add -i: start implementing the `patch` functionality in C
built-in add -i: wire up the new C code for the `patch` command
built-in add -p: show colored hunks by default
built-in add -p: adjust hunk headers as needed
built-in add -p: color the prompt and the help text
built-in add -p: offer a helpful error message when hunk navigation failed
built-in add -p: support multi-file diffs
built-in add -p: handle deleted empty files
built-in app -p: allow selecting a mode change as a "hunk"
built-in add -p: show different prompts for mode changes and deletions
built-in add -p: implement the hunk splitting feature
built-in add -p: coalesce hunks after splitting them
strbuf: add a helper function to call the editor "on an strbuf"
built-in add -p: implement hunk editing
built-in add -p: implement the 'g' ("goto") command
built-in add -p: implement the '/' ("search regex") command
built-in add -p: implement the 'q' ("quit") command
built-in add -p: only show the applicable parts of the help text
built-in add -p: show helpful hint when nothing can be staged
mingw: short-circuit the conversion of `/dev/null` to UTF-16
mingw: refuse paths containing reserved names
mingw: only test index entries for backslashes, not tree entries
Johannes Schindelin via GitGitGadget (1):
mingw: safeguard better against backslashes in file names
Johannes Sixt (1):
t3008: find test-tool through path lookup
Jonathan Gilbert (3):
git-gui: consolidate naming conventions
git-gui: update status bar to track operations
git-gui: revert untracked files by deleting them
Jonathan Nieder (3):
submodule: reject submodule.update = !command in .gitmodules
fsck: reject submodule.update = !command in .gitmodules
submodule: defend against submodule.update = !command in .gitmodules
Jonathan Tan (6):
fetch-pack: write fetched refs to .promisor
fetch: remove fetch_if_missing=0
clone: remove fetch_if_missing=0
promisor-remote: remove fetch_if_missing=0
Doc: explain submodule.alternateErrorStrategy
submodule--helper: advise on fatal alternate error
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Holland (1):
userdiff: support Python async functions
Junio C Hamano (19):
doc: am --show-current-patch gives an entire e-mail message
The first batch post 2.24 cycle
fsmonitor: do not compare bitmap size with size of split index
ci(osx): update homebrew-cask repository with less noise
rebase -i: finishing touches to --reset-author-date
The second batch
The third batch
The fourth batch
The fifth batch
Makefile: drop GEN_HDRS
The sixth batch
dir.c: use st_add3() for allocation size
Git 2.25-rc0
mailmap: mask accentless variant for Công Danh
Git 2.25-rc1
The final batch before -rc2
Git 2.25-rc2
Revert "Merge branch 'ra/rebase-i-more-options'"
Git 2.25
Kazuhiro Kato (1):
git gui: fix branch name encoding error
Kevin Willford (1):
fsmonitor: fix watchman integration
Manish Goregaokar (2):
doc: document 'git submodule status --cached'
submodule: fix 'submodule status' when called from a subdirectory
Martin Ågren (2):
t7004: check existence of correct tag
config/advice.txt: fix description list separator
Matthew Rogers (1):
rebase -r: let `label` generate safer labels
Matthias Rüster (1):
l10n: de.po: Update German translation v2.25.0 round 1
Mihail Atanassov (1):
Documentation/git-bisect.txt: add --no-ff to merge command
Mike Hommey (2):
revision: clear the topo-walk flags in reset_revision_walk
revision: free topo_walk_info before creating a new one in init_topo_walk
Miriam Rubio (1):
clone: rename static function `dir_exists()`.
Nathan Stocks (1):
t: fix typo in test descriptions
Naveen Nathan (1):
doc: improve readability of --rebase-merges in git-rebase
Nika Layzell (1):
reset: parse rev as tree-ish in patch mode
Paul Menzel (1):
am: document that Date: can appear as an in-body header
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (4800t0f0u)
Philip Oakley (1):
Doc: Bundle file usage
Philippe Blain (6):
help: add gitsubmodules to the list of guides
worktree: teach "add" to ignore submodule.recurse config
doc: mention that 'git submodule update' fetches missing commits
gitmodules: link to gitsubmodules guide
doc: log, gitk: document accepted line-log diff formats
doc: log, gitk: line-log arguments must exist in starting revision
Phillip Wood (7):
t3404: remove unnecessary subshell
t3404: set $EDITOR in subshell
t3404: remove uneeded calls to set_fake_editor
sequencer.h fix placement of #endif
move run_commit_hook() to libgit and use it there
sequencer: run post-commit hook
sequencer: fix empty commit check when amending
Prarit Bhargava (3):
t6006: use test-lib.sh definitions
t4203: use test-lib.sh definitions
pretty: add "%aL" etc. to show local-part of email addresses
Pratyush Yadav (2):
git-shortlog.txt: include commit limiting options
git-gui: allow closing console window with Escape
Ralf Thielow (1):
fetch.c: fix typo in a warning message
René Scharfe (32):
trace2: add dots directly to strbuf in perf_fmt_prepare()
utf8: use skip_iprefix() in same_utf_encoding()
convert: use skip_iprefix() in validate_encoding()
mingw: use COPY_ARRAY for copying array
parse-options: avoid arithmetic on pointer that's potentially NULL
pretty: provide short date format
fetch: use skip_prefix() instead of starts_with()
fmt-merge-msg: use skip_prefix() instead of starts_with()
shell: use skip_prefix() instead of starts_with()
push: use skip_prefix() instead of starts_with()
name-rev: use skip_prefix() instead of starts_with()
run-command: use prepare_git_cmd() in prepare_cmd()
t1512: use test_line_count
t1410: use test_line_count
t1400: use test_must_be_empty
test: use test_must_be_empty F instead of test -z $(cat F)
test: use test_must_be_empty F instead of test_cmp empty F
t9300: don't create unused file
t7811: don't create unused file
xdiff: unignore changes in function context
name-rev: use strbuf_strip_suffix() in get_rev_name()
commit: use strbuf_add() to add a length-limited string
patch-id: use oid_to_hex() to print multiple object IDs
archive-zip: use enum for compression method
t4256: don't create unused file
t7004: don't create unused file
refs: pass NULL to refs_read_ref_full() because object ID is not needed
remote: pass NULL to read_ref_full() because object ID is not needed
t3501: don't create unused file
t5580: don't create unused file
t6030: don't create unused file
t4015: improve coverage of function context test
Robin H. Johnson (3):
bundle: framework for options before bundle file
bundle-create: progress output control
bundle-verify: add --quiet
Rohit Ashiwal (6):
rebase -i: add --ignore-whitespace flag
sequencer: allow callers of read_author_script() to ignore fields
rebase -i: support --committer-date-is-author-date
sequencer: rename amend_author to author_to_rename
rebase -i: support --ignore-date
rebase: add --reset-author-date
Ruud van Asseldonk (1):
t5150: skip request-pull test if Perl is disabled
SZEDER Gábor (29):
Documentation: mention more worktree-specific exceptions
path.c: clarify trie_find()'s in-code comment
path.c: mark 'logs/HEAD' in 'common_list' as file
path.c: clarify two field names in 'struct common_dir'
path.c: don't call the match function without value in trie_find()
builtin/commit-graph.c: remove subcommand-less usage string
builtin/blame.c: remove '--indent-heuristic' from usage string
test-lib: don't check prereqs of test cases that won't be run anyway
t6120-describe: correct test repo history graph in comment
builtin/unpack-objects.c: show throughput progress
tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
sequencer: don't re-read todo for revert and cherry-pick
test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
ci: build Git with GCC 9 in the 'osx-gcc' build job
t9300-fast-import: store the PID in a variable instead of pidfile
t9300-fast-import: don't hang if background fast-import exits too early
t6120-describe: modernize the 'check_describe' helper
name-rev: avoid unnecessary cast in name_ref()
name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
name-rev: extract creating/updating a 'struct name_rev' into a helper
name-rev: pull out deref handling from the recursion
name-rev: restructure parsing commits and applying date cutoff
name-rev: restructure creating/updating 'struct rev_name' instances
name-rev: drop name_rev()'s 'generation' and 'distance' parameters
name-rev: use 'name->tip_name' instead of 'tip_name'
name-rev: eliminate recursion in name_rev()
name-rev: cleanup name_ref()
Slavica Đukić (3):
built-in add -i: color the header in the `status` command
built-in add -i: use color in the main loop
built-in add -i: implement the `help` command
Tanushree Tumane (2):
bisect--helper: avoid use-after-free
bisect--helper: convert `*_warning` char pointers to char arrays.
Taylor Blau (1):
Documentation/git-sparse-checkout.txt: fix a typo
Thomas Braun (1):
l10n: de.po: Reword generation numbers
Thomas Gummerer (1):
stash: make sure we have a valid index before writing it
Thomas Menzel (1):
doc: submodule: fix typo for command absorbgitdirs
Todd Zullinger (1):
t7812: expect failure for grep -i with invalid UTF-8 data
Trần Ngọc Quân (1):
l10n: vi(4800t): Updated Vietnamese translation v2.25.0
Utsav Shah (1):
unpack-trees: skip stat on fsmonitor-valid files
William Baker (6):
midx: add MIDX_PROGRESS flag
midx: add progress to write_midx_file
midx: add progress to expire_midx_packs
midx: honor the MIDX_PROGRESS flag in verify_midx_file
midx: honor the MIDX_PROGRESS flag in midx_repack
multi-pack-index: add [--[no-]progress] option.
Yi-Jyun Pan (1):
l10n: zh_TW: add translation for v2.24.0
Zoli Szabó (1):
git-gui: allow opening currently selected file in default app
brian m. carlson (16):
t/oid-info: allow looking up hash algorithm name
t/oid-info: add empty tree and empty blob values
rev-parse: add a --show-object-format option
t1305: avoid comparing extensions
t3429: remove SHA1 annotation
t4010: abstract away SHA-1-specific constants
t4011: abstract away SHA-1-specific constants
t4015: abstract away SHA-1-specific constants
t4027: make hash-size independent
t4034: abstract away SHA-1-specific constants
t4038: abstract away SHA-1 specific constants
t4039: abstract away SHA-1-specific constants
t4044: update test to work with SHA-256
t4045: make hash-size independent
t4048: abstract away SHA-1-specific constants
t9001: avoid including non-trailing NUL bytes in variables
pan93412 (1):
l10n: zh_TW.po: update translation for v2.25.0 round 1
r.burenkov (1):
git-p4: honor lfs.storage configuration variable
ryenus (1):
fix-typo: consecutive-word duplications
Đoàn Trần Công Danh (14):
t3301: test diagnose messages for too few/many paramters
notes: fix minimum number of parameters to "copy" subcommand
t0028: eliminate non-standard usage of printf
configure.ac: define ICONV_OMITS_BOM if necessary
t3900: demonstrate git-rebase problem with multi encoding
sequencer: reencode to utf-8 before arrange rebase's todo list
sequencer: reencode revert/cherry-pick's todo list
sequencer: reencode squashing commit's message
sequencer: reencode old merge-commit message
sequencer: reencode commit message for am/rebase --show-current-patch
sequencer: handle rebase-merges for "onto" message
date.c: switch to reentrant {gm,local}time_r
archive-zip.c: switch to reentrant localtime_r
mingw: use {gm,local}time_s as backend for {gm,local}time_r
Łukasz Niemier (1):
userdiff: add Elixir to supported userdiff languages
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.25.0-rc2
@ 2020-01-08 22:27 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-01-08 22:27 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.25.0-rc2 is now available for testing
at the usual places. It is comprised of 517 non-merge commits
since v2.24.1, contributed by 70 people, 29 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.25.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.24.1 are as follows.
Welcome to the Git development community!
Ben Keene, Colin Stolley, Dominic Jäger, Erik Chen, Hariom
Verma, Heba Waly, James Coglan, James Shubin, Jonathan Gilbert,
Josh Holland, Kazuhiro Kato, Łukasz Niemier, Manish Goregaokar,
Matthew Rogers, Mihail Atanassov, Miriam Rubio, Nathan Stocks,
Naveen Nathan, Nika Layzell, Paul Menzel, Philippe Blain,
Prarit Bhargava, r.burenkov, Ruud van Asseldonk, ryenus,
Slavica Đukić, Thomas Menzel, Utsav Shah, and Zoli Szabó.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Andreas Schwab, Andrei Rybak,
brian m. carlson, Daniel Ferreira, Denis Ovsienko, Denton Liu,
Derrick Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh,
Ed Maste, Elia Pinto, Elijah Newren, Emily Shaffer, Eric Wong,
Hans Jerry Illikainen, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Johannes Berg, Johannes Schindelin, Johannes Sixt,
Jonathan Tan, Junio C Hamano, Kevin Willford, Martin Ågren,
Mike Hommey, Philip Oakley, Phillip Wood, Pratyush Yadav,
Ralf Thielow, René Scharfe, Robin H. Johnson, Rohit Ashiwal,
SZEDER Gábor, Tanushree Tumane, Taylor Blau, Thomas Gummerer,
Todd Zullinger, and William Baker.
----------------------------------------------------------------
Git 2.25 Release Notes (draft)
==============================
Updates since v2.24
-------------------
Backward compatibility notes
UI, Workflows & Features
* A tutorial on object enumeration has been added.
* The branch description ("git branch --edit-description") has been
used to fill the body of the cover letters by the format-patch
command; this has been enhanced so that the subject can also be
filled.
* "git rebase --preserve-merges" has been marked as deprecated; this
release stops advertising it in the "git rebase -h" output.
* The code to generate multi-pack index learned to show (or not to
show) progress indicators.
* "git apply --3way" learned to honor merge.conflictStyle
configuration variable, like merges would.
* The custom format for "git log --format=<format>" learned the l/L
placeholder that is similar to e/E that fills in the e-mail
address, but only the local part on the left side of '@'.
* Documentation pages for "git shortlog" now list commit limiting
options explicitly.
* The patterns to detect function boundary for Elixir language has
been added.
* The completion script (in contrib/) learned that the "--onto"
option of "git rebase" can take its argument as the value of the
option.
* The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.
* "git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.
* "git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.
* A few commands learned to take the pathspec from the standard input
or a named file, instead of taking it as the command line
arguments, with the "--pathspec-from-file" option.
* "git rebase -i" learned a few options that are known by "git
rebase" proper.
* "git submodule" learned a subcommand "set-url".
* "git log" family learned "--pretty=reference" that gives the name
of a commit in the format that is often used to refer to it in log
messages.
* The interaction between "git clone --recurse-submodules" and
alternate object store was ill-designed. The documentation and
code have been taught to make more clear recommendations when the
users see failures.
* Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.
* Miscellaneous small UX improvements on "git-p4".
* "git sparse-checkout list" subcommand learned to give its output in
a more concise form when the "cone" mode is in effect.
Performance, Internal Implementation, Development Support etc.
* Debugging support for lazy cloning has been a bit improved.
* Move the definition of a set of bitmask constants from 0ctal
literal to (1U<<count) notation.
* Test updates to prepare for SHA-2 transition continues.
* Crufty code and logic accumulated over time around the object
parsing and low-level object access used in "git fsck" have been
cleaned up.
* The implementation of "git log --graph" got refactored and then its
output got simplified.
* Follow recent push to move API docs from Documentation/ to header
files and update config.h
* "git bundle" has been taught to use the parse options API. "git
bundle verify" learned "--quiet" and "git bundle create" learned
options to control the progress output.
* Handling of commit objects that use non UTF-8 encoding during
"rebase -i" has been improved.
* The beginning of rewriting "git add -i" in C.
* A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
* The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
* We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently. The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.
* Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.
* Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.
* Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.
* PerfTest fix to avoid stale result mixed up with the latest round
of test results.
* Hide lower-level verify_signed-buffer() API as a pure helper to
implement the public check_signature() function, in order to
encourage new callers to use the correct and more strict
validation.
* Unnecessary reading of state variables back from the disk during
sequencer operation has been reduced.
* The code has been made to avoid gmtime() and localtime() and prefer
their reentrant counterparts.
* In a repository with many packfiles, the cost of the procedure that
avoids registering the same packfile twice was unnecessarily high
by using an inefficient search algorithm, which has been corrected.
* Redo "git name-rev" to avoid recursive calls.
* FreeBSD CI support via Cirrus-CI has been added.
Fixes since v2.24
-----------------
* "rebase -i" ceased to run post-commit hook by mistake in an earlier
update, which has been corrected.
* "git notes copy $original" ought to copy the notes attached to the
original object to HEAD, but a mistaken tightening to command line
parameter validation made earlier disabled that feature by mistake.
* When all files from some subdirectory were renamed to the root
directory, the directory rename heuristics would fail to detect that
as a rename/merge of the subdirectory to the root directory, which has
been corrected.
* Code clean-up and a bugfix in the logic used to tell worktree local
and repository global refs apart.
(merge f45f88b2e4 sg/dir-trie-fixes later to maint).
* "git stash save" in a working tree that is sparsely checked out
mistakenly removed paths that are outside the area of interest.
(merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
* "git rev-parse --git-path HEAD.lock" did not give the right path
when run in a secondary worktree.
(merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
* "git merge --no-commit" needs "--no-ff" if you do not want to move
HEAD, which has been corrected in the manual page for "git bisect".
(merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
* "git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected. This has been corrected.
(merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
* Messages from die() etc. can be mixed up from multiple processes
without even line buffering on Windows, which has been worked
around.
(merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
* HTTP transport had possible allocator/deallocator mismatch, which
has been corrected.
* The watchman integration for fsmonitor was racy, which has been
corrected to be more conservative.
(merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
* Fetching from multiple remotes into the same repository in parallel
had a bad interaction with the recent change to (optionally) update
the commit-graph after a fetch job finishes, as these parallel
fetches compete with each other. Which has been corrected.
* Recent update to "git stash pop" made the command empty the index
when run with the "--quiet" option, which has been corrected.
* "git fetch" codepath had a big "do not lazily fetch missing objects
when I ask if something exists" switch. This has been corrected by
marking the "does this thing exist?" calls with "if not please do not
lazily fetch it" flag.
* Test update to avoid wasted cycles.
(merge e0316695ec sg/skip-skipped-prereq later to maint).
* Error handling after "git push" finishes sending the packdata and
waits for the response to the remote side has been improved.
(merge ad7a403268 jk/send-pack-remote-failure later to maint).
* Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.
(merge a376e37b2c jk/gitweb-anti-xss later to maint).
* CI jobs for macOS has been made less chatty when updating perforce
package used during testing.
(merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
* "git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object. It now shows the throughput as
well.
(merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
* The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.
* The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.
(merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
* "git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.
(merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
* "git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.
* "git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.
(merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
* The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.
(merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
* TravisCI update.
(merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
* While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.
(merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
* Work around a issue where a FD that is left open when spawning a
child process and is kept open in the child can interfere with the
operation in the parent process on Windows.
* One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.
* "git rebase" did not work well when format.useAutoBase
configuration variable is set, which has been corrected.
* The "diff" machinery learned not to lose added/removed blank lines
in the context when --ignore-blank-lines and --function-context are
used at the same time.
(merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
* The test on "fast-import" used to get stuck when "fast-import" died
in the middle.
(merge 0d9b0d7885 sg/t9300-robustify later to maint).
* "git format-patch" can take a set of configured format.notes values
to specify which notes refs to use in the log message part of the
output. The behaviour of this was not consistent with multiple
--notes command line options, which has been corrected.
(merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
* "git p4" used to ignore lfs.storage configuration variable, which
has been corrected.
(merge ea94b16fb8 rb/p4-lfs later to maint).
* Assorted fixes to the directory traversal API.
(merge 6836d2fe06 en/fill-directory-fixes later to maint).
* Forbid pathnames that the platform's filesystem cannot represent on
MinGW.
(merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).
* "git rebase --signoff" stopped working when the command was written
in C, which has been corrected.
(merge 4fe7e43c53 en/rebase-signoff-fix later to maint).
* An earlier update to Git for Windows declared that a tree object is
invalid if it has a path component with backslash in it, which was
overly strict, which has been corrected. The only protection the
Windows users need is to prevent such path (or any path that their
filesystem cannot check out) from entering the index.
(merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint).
* The code to write split commit-graph file(s) upon fetching computed
bogus value for the parameter used in splitting the resulting
files, which has been corrected.
(merge 63020f175f ds/commit-graph-set-size-mult later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
(merge 8b656572ca sg/commit-graph-usage-fix later to maint).
(merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
(merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
(merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
(merge 270de6acbe en/t6024-style later to maint).
(merge 14c4776d75 ns/test-desc-typofix later to maint).
(merge 68d40f30c4 dj/typofix-merge-strat later to maint).
(merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
(merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
(merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
(merge b018719927 ma/t7004 later to maint).
(merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
(merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
(merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
(merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
(merge 2a02262078 dl/t5520-cleanup later to maint).
(merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
(merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
(merge 3eae30e464 jk/lore-is-the-archive later to maint).
(merge 14b7664df8 dl/lore-is-the-archive later to maint).
(merge 0e40a73a4c po/bundle-doc-clonable later to maint).
(merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
(merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
(merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
(merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
(merge 11de8dd7ef dr/branch-usage-casefix later to maint).
(merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
(merge 147ee35558 rs/commit-export-env-simplify later to maint).
(merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
(merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
(merge cc2bd5c45d pb/submodule-doc-xref later to maint).
(merge df5be01669 ja/doc-markup-cleanup later to maint).
(merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
(merge 20a67e8ce9 js/use-test-tool-on-path later to maint).
(merge 4e61b2214d ew/packfile-syscall-optim later to maint).
(merge ace0f86c7f pb/clarify-line-log-doc later to maint).
(merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint).
(merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint).
(merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint).
(merge f8740c586b pm/am-in-body-header-doc-update later to maint).
(merge 5814d44d9b tm/doc-submodule-absorb-fix later to maint).
----------------------------------------------------------------
Changes since v2.24.1 are as follows:
Alban Gruin (6):
sequencer: update `total_nr' when adding an item to a todo list
sequencer: update `done_nr' when skipping commands in a todo list
sequencer: move the code writing total_nr on the disk to a new function
rebase: fill `squash_onto' in get_replay_opts()
sequencer: directly call pick_commits() from complete_action()
sequencer: fix a memory leak in sequencer_continue()
Alexandr Miloslavskiy (14):
parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
pathspec: add new function to parse file
doc: reset: synchronize <pathspec> description
reset: support the `--pathspec-from-file` option
doc: commit: synchronize <pathspec> description
commit: support the --pathspec-from-file option
cmd_add: prepare for next patch
add: support the --pathspec-from-file option
doc: checkout: remove duplicate synopsis
doc: checkout: fix broken text reference
doc: checkout: synchronize <pathspec> description
doc: restore: synchronize <pathspec> description
checkout, restore: support the --pathspec-from-file option
commit: forbid --pathspec-from-file --all
Andreas Schwab (1):
t7812: add missing redirects
Andrei Rybak (1):
INSTALL: use existing shell scripts as example
Ben Keene (2):
git-p4: yes/no prompts should sanitize user text
git-p4: show detailed help when parsing options fail
Colin Stolley (1):
packfile.c: speed up loading lots of packfiles
Daniel Ferreira (2):
diff: export diffstat interface
built-in add -i: implement the `status` command
Denis Ovsienko (1):
gitweb: fix a couple spelling errors in comments
Denton Liu (93):
format-patch: replace erroneous and condition
format-patch: use enum variables
format-patch: teach --cover-from-description option
rebase: hide --preserve-merges option
t4108: replace create_file with test_write_lines
t4108: remove git command upstream of pipe
t4108: use `test_config` instead of `git config`
t4108: demonstrate bug in apply
apply: respect merge.conflictStyle in --3way
submodule: teach set-url subcommand
git-diff.txt: document return code of `--no-index`
completion: learn to complete `git rebase --onto=`
t4215: use helper function to check output
argv-array: add space after `while`
rev-list-options.txt: remove reference to --show-notes
SubmittingPatches: use generic terms for hash
pretty-formats.txt: use generic terms for hash
SubmittingPatches: remove dq from commit reference
completion: complete `tformat:` pretty format
revision: make get_revision_mark() return const pointer
pretty.c: inline initalize format_context
t4205: cover `git log --reflog -z` blindspot
pretty: add struct cmt_fmt_map::default_date_mode_type
pretty: implement 'reference' format
SubmittingPatches: use `--pretty=reference`
pretty-options.txt: --notes accepts a ref instead of treeish
t3206: remove spaces after redirect operators
t3206: disable parameter substitution in heredoc
t3206: s/expected/expect/
t3206: range-diff compares logs with commit notes
range-diff: output `## Notes ##` header
range-diff: pass through --notes to `git log`
format-patch: pass notes configuration to range-diff
t0000: test multiple local assignment
t: teach test_cmp_rev to accept ! for not-equals
t5520: improve test style
t5520: use sq for test case names
t5520: let sed open its own input
t5520: replace test -f with test-lib functions
t5520: remove spaces after redirect operator
t5520: use test_line_count where possible
t5520: replace test -{n,z} with test-lib functions
t5520: use test_cmp_rev where possible
t5520: test single-line files by git with test_cmp
t5520: don't put git in upstream of pipe
t5520: replace $(cat ...) comparison with test_cmp
t5520: remove redundant lines in test cases
t5520: replace `! git` with `test_must_fail git`
lib-bash.sh: move `then` onto its own line
apply-one-time-sed.sh: modernize style
t0014: remove git command upstream of pipe
t0090: stop losing return codes of git commands
t3301: stop losing return codes of git commands
t3600: use test_line_count() where possible
t3600: stop losing return codes of git commands
t3600: comment on inducing SIGPIPE in `git rm`
t4015: stop losing return codes of git commands
t4015: use test_write_lines()
t4138: stop losing return codes of git commands
t5317: stop losing return codes of git commands
t5317: use ! grep to check for no matching lines
t5703: simplify one-time-sed generation logic
t5703: stop losing return codes of git commands
t7501: remove spaces after redirect operators
t7501: stop losing return codes of git commands
t7700: drop redirections to /dev/null
t7700: remove spaces after redirect operators
t7700: move keywords onto their own line
t7700: s/test -f/test_path_is_file/
doc: replace MARC links with lore.kernel.org
RelNotes: replace Gmane with real Message-IDs
doc: replace LKML link with lore.kernel.org
t7700: consolidate code into test_no_missing_in_packs()
t7700: consolidate code into test_has_duplicate_object()
t7700: replace egrep with grep
t7700: make references to SHA-1 generic
t7700: stop losing return codes of git commands
t3400: demonstrate failure with format.useAutoBase
format-patch: fix indentation
t4014: use test_config()
format-patch: teach --no-base
rebase: fix format.useAutoBase breakage
t3206: fix incorrect test name
range-diff: mark pointers as const
range-diff: clear `other_arg` at end of function
notes: rename to load_display_notes()
notes: create init_display_notes() helper
notes: extract logic into set_display_notes()
format-patch: use --notes behavior for format.notes
format-patch: move git_config() before repo_init_revisions()
config/format.txt: clarify behavior of multiple format.notes
notes: break set_display_notes() into smaller functions
notes.h: fix typos in comment
Derrick Stolee (28):
test-tool: use 'read-graph' helper
sparse-checkout: create builtin with 'list' subcommand
sparse-checkout: create 'init' subcommand
clone: add --sparse mode
sparse-checkout: 'set' subcommand
sparse-checkout: add '--stdin' option to set subcommand
sparse-checkout: create 'disable' subcommand
sparse-checkout: add 'cone' mode
sparse-checkout: use hashmaps for cone patterns
sparse-checkout: init and set in cone mode
unpack-trees: hash less in cone mode
unpack-trees: add progress to clear_ce_flags()
sparse-checkout: sanitize for nested folders
sparse-checkout: update working directory in-process
sparse-checkout: use in-process update for disable subcommand
sparse-checkout: write using lockfile
sparse-checkout: cone mode should not interact with .gitignore
sparse-checkout: update working directory in-process for 'init'
sparse-checkout: check for dirty status
progress: create GIT_PROGRESS_DELAY
commit-graph: use start_delayed_progress()
sparse-checkout: respect core.ignoreCase in cone mode
sparse-checkout: list directories in cone mode
sparse-checkout: document interactions with submodules
sparse-checkout: use extern for global variables
commit-graph: prefer default size_mult when given zero
graph: drop assert() for merge with two collapsing parents
graph: fix lack of color in horizontal lines
Dimitriy Ryazantcev (1):
l10n: minor case fix in 'git branch' '--unset-upstream' description
Dominic Jäger (1):
merge-strategies: fix typo "reflected to" to "reflected in"
Ed Maste (4):
t4210: skip i18n tests that don't work on FreeBSD
userdiff: remove empty subexpression from elixir regex
CI: add FreeBSD CI support via Cirrus-CI
sparse-checkout: improve OS ls compatibility
Elia Pinto (1):
kset.h, tar.h: add missing header guard to prevent multiple inclusion
Elijah Newren (28):
merge-recursive: clean up get_renamed_dir_portion()
merge-recursive: fix merging a subdirectory into the root directory
t604[236]: do not run setup in separate tests
Documentation: fix a bunch of typos, both old and new
Fix spelling errors in documentation outside of Documentation/
git-filter-branch.txt: correct argument name typo
hashmap: fix documentation misuses of -> versus .
name-hash.c: remove duplicate word in comment
t6024: modernize style
Fix spelling errors in code comments
Fix spelling errors in comments of testcases
Fix spelling errors in names of tests
Fix spelling errors in messages shown to users
Fix spelling errors in test commands
sha1dc: fix trivial comment spelling error
multimail: fix a few simple spelling errors
Fix spelling errors in no-longer-updated-from-upstream modules
t3011: demonstrate directory traversal failures
Revert "dir.c: make 'git-status --ignored' work within leading directories"
dir: remove stray quote character in comment
dir: exit before wildcard fall-through if there is no wildcard
dir: break part of read_directory_recursive() out for reuse
t3434: mark successful test as such
dir: fix checks on common prefix directory
dir: synchronize treat_leading_path() and read_directory_recursive()
dir: consolidate similar code in treat_directory()
rebase: fix saving of --signoff state for am-based rebases
merge-recursive: remove unnecessary oid_eq function
Emily Shaffer (4):
documentation: add tutorial for object walking
myfirstcontrib: add 'psuh' to command-list.txt
myfirstcontrib: add dependency installation step
myfirstcontrib: hint to find gitgitgadget allower
Eric Wong (2):
packfile: remove redundant fcntl F_GETFD/F_SETFD
packfile: replace lseek+read with pread
Erik Chen (1):
fetch: add trace2 instrumentation
Hans Jerry Illikainen (4):
gpg-interface: refactor the free-and-xmemdupz pattern
gpg-interface: limit search for primary key fingerprint
gpg-interface: prefer check_signature() for GPG verification
grep: don't return an expression from pcre2_free()
Hariom Verma (2):
builtin/blame.c: constants into bit shift format
git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
Heba Waly (22):
config: move documentation to config.h
documentation: remove empty doc files
diff: move doc to diff.h and diffcore.h
dir: move doc to dir.h
graph: move doc to graph.h and graph.c
merge: move doc to ll-merge.h
sha1-array: move doc to sha1-array.h
remote: move doc to remote.h and refspec.h
refs: move doc to refs.h
attr: move doc to attr.h
revision: move doc to revision.h
pathspec: move doc to pathspec.h
sigchain: move doc to sigchain.h
cache: move doc to cache.h
argv-array: move doc to argv-array.h
credential: move doc to credential.h
parse-options: add link to doc file in parse-options.h
run-command: move doc to run-command.h
trace: move doc to trace.h
tree-walk: move doc to tree-walk.h
submodule-config: move doc to submodule-config.h
trace2: move doc to trace2.h
James Coglan (13):
graph: automatically track display width of graph lines
graph: handle line padding in `graph_next_line()`
graph: reuse `find_new_column_by_commit()`
graph: reduce duplication in `graph_insert_into_new_columns()`
graph: remove `mapping_idx` and `graph_update_width()`
graph: extract logic for moving to GRAPH_PRE_COMMIT state
graph: example of graph output that can be simplified
graph: tidy up display of left-skewed merges
graph: commit and post-merge lines for left-skewed merges
graph: rename `new_mapping` to `old_mapping`
graph: smooth appearance of collapsing edges on commit lines
graph: flatten edges that fuse with their right neighbor
graph: fix coloring of octopus dashes
James Shubin (1):
completion: tab-complete "git svn --recursive"
Jean-Noël Avila (2):
doc: remove non pure ASCII characters
doc: indent multi-line items in list
Jeff Hostetler (1):
trace2: add region in clear_ce_flags
Jeff King (37):
parse_commit_buffer(): treat lookup_commit() failure as parse error
parse_commit_buffer(): treat lookup_tree() failure as parse error
parse_tag_buffer(): treat NULL tag pointer as parse error
commit, tag: don't set parsed bit for parse failures
fsck: stop checking commit->tree value
fsck: stop checking commit->parent counts
fsck: stop checking tag->tagged
fsck: require an actual buffer for non-blobs
fsck: unify object-name code
fsck_describe_object(): build on our get_object_name() primitive
fsck: use oids rather than objects for object_name API
fsck: don't require object structs for display functions
fsck: only provide oid/type in fsck_error callback
fsck: only require an oid for skiplist functions
fsck: don't require an object struct for report()
fsck: accept an oid instead of a "struct blob" for fsck_blob()
fsck: drop blob struct from fsck_finish()
fsck: don't require an object struct for fsck_ident()
fsck: don't require an object struct in verify_headers()
fsck: rename vague "oid" local variables
fsck: accept an oid instead of a "struct tag" for fsck_tag()
fsck: accept an oid instead of a "struct commit" for fsck_commit()
fsck: accept an oid instead of a "struct tree" for fsck_tree()
hex: drop sha1_to_hex_r()
pack-objects: avoid pointless oe_map_new_pack() calls
hex: drop sha1_to_hex()
send-pack: check remote ref status on pack-objects failure
t9502: pass along all arguments in xss helper
t/gitweb-lib.sh: drop confusing quotes
t/gitweb-lib.sh: set $REQUEST_URI
gitweb: escape URLs generated by href()
rev-parse: make --show-toplevel without a worktree an error
perf-lib: use a single filename for all measurement types
t/perf: don't depend on Git.pm
send-pack: use OBJECT_INFO_QUICK to check negative objects
doc: recommend lore.kernel.org over public-inbox.org
doc: replace public-inbox links with lore.kernel.org
Johannes Berg (1):
multi-pack-index: correct configuration in documentation
Johannes Schindelin (60):
t1400: wrap setup code in test case
git_path(): handle `.lock` files correctly
vreportf(): avoid relying on stdio buffering
update-index: optionally leave skip-worktree entries alone
stash: handle staged changes in skip-worktree files correctly
fetch: add the command-line option `--write-commit-graph`
fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
remote-curl: unbreak http.extraHeader with custom allocators
Start to implement a built-in version of `git add --interactive`
built-in add -i: implement the main loop
built-in add -i: show unique prefixes of the commands
built-in add -i: support `?` (prompt help)
rebase-merges: move labels' whitespace mangling into `label_oid()`
git svn: stop using `rebase --preserve-merges`
mingw: demonstrate that all file handles are inherited by child processes
mingw: work around incorrect standard handles
mingw: spawned processes need to inherit only standard handles
mingw: restrict file handle inheritance only on Windows 7 and later
mingw: do set `errno` correctly when trying to restrict handle inheritance
add-interactive: make sure to release `rev.prune_data`
built-in add -i: allow filtering the modified files list
built-in add -i: prepare for multi-selection commands
built-in add -i: implement the `update` command
built-in add -i: re-implement `revert` in C
built-in add -i: re-implement `add-untracked` in C
built-in add -i: implement the `patch` command
built-in add -i: re-implement the `diff` command
built-in add -i: offer the `quit` command
pkt-line: fix a typo
mingw: forbid translating ERROR_SUCCESS to an errno value
t3701: add a test for advanced split-hunk editing
t3701: avoid depending on the TTY prerequisite
t3701: add a test for the different `add -p` prompts
t3701: verify the shown messages when nothing can be added
t3701: verify that the diff.algorithm config setting is handled
git add -p: use non-zero exit code when the diff generation failed
apply --allow-overlap: fix a corner case
t3404: fix indentation
built-in add -i: start implementing the `patch` functionality in C
built-in add -i: wire up the new C code for the `patch` command
built-in add -p: show colored hunks by default
built-in add -p: adjust hunk headers as needed
built-in add -p: color the prompt and the help text
built-in add -p: offer a helpful error message when hunk navigation failed
built-in add -p: support multi-file diffs
built-in add -p: handle deleted empty files
built-in app -p: allow selecting a mode change as a "hunk"
built-in add -p: show different prompts for mode changes and deletions
built-in add -p: implement the hunk splitting feature
built-in add -p: coalesce hunks after splitting them
strbuf: add a helper function to call the editor "on an strbuf"
built-in add -p: implement hunk editing
built-in add -p: implement the 'g' ("goto") command
built-in add -p: implement the '/' ("search regex") command
built-in add -p: implement the 'q' ("quit") command
built-in add -p: only show the applicable parts of the help text
built-in add -p: show helpful hint when nothing can be staged
mingw: short-circuit the conversion of `/dev/null` to UTF-16
mingw: refuse paths containing reserved names
mingw: only test index entries for backslashes, not tree entries
Johannes Sixt (1):
t3008: find test-tool through path lookup
Jonathan Gilbert (3):
git-gui: consolidate naming conventions
git-gui: update status bar to track operations
git-gui: revert untracked files by deleting them
Jonathan Tan (6):
fetch-pack: write fetched refs to .promisor
fetch: remove fetch_if_missing=0
clone: remove fetch_if_missing=0
promisor-remote: remove fetch_if_missing=0
Doc: explain submodule.alternateErrorStrategy
submodule--helper: advise on fatal alternate error
Josh Holland (1):
userdiff: support Python async functions
Junio C Hamano (17):
doc: am --show-current-patch gives an entire e-mail message
The first batch post 2.24 cycle
fsmonitor: do not compare bitmap size with size of split index
ci(osx): update homebrew-cask repository with less noise
rebase -i: finishing touches to --reset-author-date
The second batch
The third batch
The fourth batch
The fifth batch
Makefile: drop GEN_HDRS
The sixth batch
dir.c: use st_add3() for allocation size
Git 2.25-rc0
mailmap: mask accentless variant for Công Danh
Git 2.25-rc1
The final batch before -rc2
Git 2.25-rc2
Kazuhiro Kato (1):
git gui: fix branch name encoding error
Kevin Willford (1):
fsmonitor: fix watchman integration
Manish Goregaokar (2):
doc: document 'git submodule status --cached'
submodule: fix 'submodule status' when called from a subdirectory
Martin Ågren (1):
t7004: check existence of correct tag
Matthew Rogers (1):
rebase -r: let `label` generate safer labels
Mihail Atanassov (1):
Documentation/git-bisect.txt: add --no-ff to merge command
Mike Hommey (2):
revision: clear the topo-walk flags in reset_revision_walk
revision: free topo_walk_info before creating a new one in init_topo_walk
Miriam Rubio (1):
clone: rename static function `dir_exists()`.
Nathan Stocks (1):
t: fix typo in test descriptions
Naveen Nathan (1):
doc: improve readability of --rebase-merges in git-rebase
Nika Layzell (1):
reset: parse rev as tree-ish in patch mode
Paul Menzel (1):
am: document that Date: can appear as an in-body header
Philip Oakley (1):
Doc: Bundle file usage
Philippe Blain (6):
help: add gitsubmodules to the list of guides
worktree: teach "add" to ignore submodule.recurse config
doc: mention that 'git submodule update' fetches missing commits
gitmodules: link to gitsubmodules guide
doc: log, gitk: document accepted line-log diff formats
doc: log, gitk: line-log arguments must exist in starting revision
Phillip Wood (7):
t3404: remove unnecessary subshell
t3404: set $EDITOR in subshell
t3404: remove uneeded calls to set_fake_editor
sequencer.h fix placement of #endif
move run_commit_hook() to libgit and use it there
sequencer: run post-commit hook
sequencer: fix empty commit check when amending
Prarit Bhargava (3):
t6006: use test-lib.sh definitions
t4203: use test-lib.sh definitions
pretty: add "%aL" etc. to show local-part of email addresses
Pratyush Yadav (2):
git-shortlog.txt: include commit limiting options
git-gui: allow closing console window with Escape
Ralf Thielow (1):
fetch.c: fix typo in a warning message
René Scharfe (32):
trace2: add dots directly to strbuf in perf_fmt_prepare()
utf8: use skip_iprefix() in same_utf_encoding()
convert: use skip_iprefix() in validate_encoding()
mingw: use COPY_ARRAY for copying array
parse-options: avoid arithmetic on pointer that's potentially NULL
pretty: provide short date format
fetch: use skip_prefix() instead of starts_with()
fmt-merge-msg: use skip_prefix() instead of starts_with()
shell: use skip_prefix() instead of starts_with()
push: use skip_prefix() instead of starts_with()
name-rev: use skip_prefix() instead of starts_with()
run-command: use prepare_git_cmd() in prepare_cmd()
t1512: use test_line_count
t1410: use test_line_count
t1400: use test_must_be_empty
test: use test_must_be_empty F instead of test -z $(cat F)
test: use test_must_be_empty F instead of test_cmp empty F
t9300: don't create unused file
t7811: don't create unused file
xdiff: unignore changes in function context
name-rev: use strbuf_strip_suffix() in get_rev_name()
commit: use strbuf_add() to add a length-limited string
patch-id: use oid_to_hex() to print multiple object IDs
archive-zip: use enum for compression method
t4256: don't create unused file
t7004: don't create unused file
refs: pass NULL to refs_read_ref_full() because object ID is not needed
remote: pass NULL to read_ref_full() because object ID is not needed
t3501: don't create unused file
t5580: don't create unused file
t6030: don't create unused file
t4015: improve coverage of function context test
Robin H. Johnson (3):
bundle: framework for options before bundle file
bundle-create: progress output control
bundle-verify: add --quiet
Rohit Ashiwal (6):
rebase -i: add --ignore-whitespace flag
sequencer: allow callers of read_author_script() to ignore fields
rebase -i: support --committer-date-is-author-date
sequencer: rename amend_author to author_to_rename
rebase -i: support --ignore-date
rebase: add --reset-author-date
Ruud van Asseldonk (1):
t5150: skip request-pull test if Perl is disabled
SZEDER Gábor (29):
Documentation: mention more worktree-specific exceptions
path.c: clarify trie_find()'s in-code comment
path.c: mark 'logs/HEAD' in 'common_list' as file
path.c: clarify two field names in 'struct common_dir'
path.c: don't call the match function without value in trie_find()
builtin/commit-graph.c: remove subcommand-less usage string
builtin/blame.c: remove '--indent-heuristic' from usage string
test-lib: don't check prereqs of test cases that won't be run anyway
t6120-describe: correct test repo history graph in comment
builtin/unpack-objects.c: show throughput progress
tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
sequencer: don't re-read todo for revert and cherry-pick
test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
ci: build Git with GCC 9 in the 'osx-gcc' build job
t9300-fast-import: store the PID in a variable instead of pidfile
t9300-fast-import: don't hang if background fast-import exits too early
t6120-describe: modernize the 'check_describe' helper
name-rev: avoid unnecessary cast in name_ref()
name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
name-rev: extract creating/updating a 'struct name_rev' into a helper
name-rev: pull out deref handling from the recursion
name-rev: restructure parsing commits and applying date cutoff
name-rev: restructure creating/updating 'struct rev_name' instances
name-rev: drop name_rev()'s 'generation' and 'distance' parameters
name-rev: use 'name->tip_name' instead of 'tip_name'
name-rev: eliminate recursion in name_rev()
name-rev: cleanup name_ref()
Slavica Đukić (3):
built-in add -i: color the header in the `status` command
built-in add -i: use color in the main loop
built-in add -i: implement the `help` command
Tanushree Tumane (2):
bisect--helper: avoid use-after-free
bisect--helper: convert `*_warning` char pointers to char arrays.
Taylor Blau (1):
Documentation/git-sparse-checkout.txt: fix a typo
Thomas Gummerer (1):
stash: make sure we have a valid index before writing it
Thomas Menzel (1):
doc: submodule: fix typo for command absorbgitdirs
Todd Zullinger (1):
t7812: expect failure for grep -i with invalid UTF-8 data
Utsav Shah (1):
unpack-trees: skip stat on fsmonitor-valid files
William Baker (6):
midx: add MIDX_PROGRESS flag
midx: add progress to write_midx_file
midx: add progress to expire_midx_packs
midx: honor the MIDX_PROGRESS flag in verify_midx_file
midx: honor the MIDX_PROGRESS flag in midx_repack
multi-pack-index: add [--[no-]progress] option.
Zoli Szabó (1):
git-gui: allow opening currently selected file in default app
brian m. carlson (16):
t/oid-info: allow looking up hash algorithm name
t/oid-info: add empty tree and empty blob values
rev-parse: add a --show-object-format option
t1305: avoid comparing extensions
t3429: remove SHA1 annotation
t4010: abstract away SHA-1-specific constants
t4011: abstract away SHA-1-specific constants
t4015: abstract away SHA-1-specific constants
t4027: make hash-size independent
t4034: abstract away SHA-1-specific constants
t4038: abstract away SHA-1 specific constants
t4039: abstract away SHA-1-specific constants
t4044: update test to work with SHA-256
t4045: make hash-size independent
t4048: abstract away SHA-1-specific constants
t9001: avoid including non-trailing NUL bytes in variables
r.burenkov (1):
git-p4: honor lfs.storage configuration variable
ryenus (1):
fix-typo: consecutive-word duplications
Đoàn Trần Công Danh (14):
t3301: test diagnose messages for too few/many paramters
notes: fix minimum number of parameters to "copy" subcommand
t0028: eliminate non-standard usage of printf
configure.ac: define ICONV_OMITS_BOM if necessary
t3900: demonstrate git-rebase problem with multi encoding
sequencer: reencode to utf-8 before arrange rebase's todo list
sequencer: reencode revert/cherry-pick's todo list
sequencer: reencode squashing commit's message
sequencer: reencode old merge-commit message
sequencer: reencode commit message for am/rebase --show-current-patch
sequencer: handle rebase-merges for "onto" message
date.c: switch to reentrant {gm,local}time_r
archive-zip.c: switch to reentrant localtime_r
mingw: use {gm,local}time_s as backend for {gm,local}time_r
Łukasz Niemier (1):
userdiff: add Elixir to supported userdiff languages
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.25.0-rc1
@ 2020-01-02 23:33 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-01-02 23:33 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.25.0-rc1 is now available for testing
at the usual places. It is comprised of 540 non-merge commits
since v2.24.0, contributed by 63 people, 24 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.25.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.24.0 are as follows.
Welcome to the Git development community!
Ben Keene, Colin Stolley, Dominic Jäger, Erik Chen, Hariom
Verma, Heba Waly, James Coglan, James Shubin, Josh Holland,
Łukasz Niemier, Manish Goregaokar, Matthew Rogers, Mihail
Atanassov, Miriam Rubio, Nathan Stocks, Naveen Nathan, Nika
Layzell, Philippe Blain, Prarit Bhargava, r.burenkov, Ruud van
Asseldonk, ryenus, Slavica Đukić, and Utsav Shah.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Andreas Schwab, Andrei
Rybak, brian m. carlson, Daniel Ferreira, Denton Liu, Derrick
Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh, Ed
Maste, Elia Pinto, Elijah Newren, Emily Shaffer, Garima Singh,
Hans Jerry Illikainen, Jean-Noël Avila, Jeff Hostetler, Jeff
King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Kevin Willford, Martin Ågren,
Mike Hommey, Philip Oakley, Phillip Wood, Pratyush Yadav,
Ralf Thielow, René Scharfe, Robin H. Johnson, Rohit Ashiwal,
SZEDER Gábor, Tanushree Tumane, Thomas Gummerer, Todd Zullinger,
and William Baker.
----------------------------------------------------------------
Git 2.25 Release Notes (draft)
==============================
Updates since v2.24
-------------------
Backward compatibility notes
UI, Workflows & Features
* A tutorial on object enumeration has been added.
* The branch description ("git branch --edit-description") has been
used to fill the body of the cover letters by the format-patch
command; this has been enhanced so that the subject can also be
filled.
* "git rebase --preserve-merges" has been marked as deprecated; this
release stops advertising it in the "git rebase -h" output.
* The code to generate multi-pack index learned to show (or not to
show) progress indicators.
* "git apply --3way" learned to honor merge.conflictStyle
configuration variable, like merges would.
* The custom format for "git log --format=<format>" learned the l/L
placeholder that is similar to e/E that fills in the e-mail
address, but only the local part on the left side of '@'.
* Documentation pages for "git shortlog" now list commit limiting
options explicitly.
* The patterns to detect function boundary for Elixir language has
been added.
* The completion script (in contrib/) learned that the "--onto"
option of "git rebase" can take its argument as the value of the
option.
* The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.
* "git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.
* "git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.
* A few commands learned to take the pathspec from the standard input
or a named file, instead of taking it as the command line
arguments, with the "--pathspec-from-file" option.
* "git rebase -i" learned a few options that are known by "git
rebase" proper.
* "git submodule" learned a subcommand "set-url".
* "git log" family learned "--pretty=reference" that gives the name
of a commit in the format that is often used to refer to it in log
messages.
* The interaction between "git clone --recurse-submodules" and
alternate object store was ill-designed. The documentation and
code have been taught to make more clear recommendations when the
users see failures.
* Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.
* Miscellaneous small UX improvements on "git-p4".
Performance, Internal Implementation, Development Support etc.
* Debugging support for lazy cloning has been a bit improved.
* Move the definition of a set of bitmask constants from 0ctal
literal to (1U<<count) notation.
* Test updates to prepare for SHA-2 transition continues.
* Crufty code and logic accumulated over time around the object
parsing and low-level object access used in "git fsck" have been
cleaned up.
* The implementation of "git log --graph" got refactored and then its
output got simplified.
* Follow recent push to move API docs from Documentation/ to header
files and update config.h
* "git bundle" has been taught to use the parse options API. "git
bundle verify" learned "--quiet" and "git bundle create" learned
options to control the progress output.
* Handling of commit objects that use non UTF-8 encoding during
"rebase -i" has been improved.
* The beginning of rewriting "git add -i" in C.
* A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
* The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
* We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently. The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.
* Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.
* Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.
* Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.
* PerfTest fix to avoid stale result mixed up with the latest round
of test results.
* Hide lower-level verify_signed-buffer() API as a pure helper to
implement the public check_signature() function, in order to
encourage new callers to use the correct and more strict
validation.
* Unnecessary reading of state variables back from the disk during
sequencer operation has been reduced.
* The code has been made to avoid gmtime() and localtime() and prefer
their reentrant counterparts.
* The effort to reimplement "git add -i" in C continues.
* In a repository with many packfiles, the cost of the procedure that
avoids registering the same packfile twice was unnecessarily high
by using an inefficient search algorithm, which has been corrected.
* Redo "git name-rev" to avoid recursive calls.
* FreeBSD CI support via Cirrus-CI has been added.
Fixes since v2.24
-----------------
* "rebase -i" ceased to run post-commit hook by mistake in an earlier
update, which has been corrected.
* "git notes copy $original" ought to copy the notes attached to the
original object to HEAD, but a mistaken tightening to command line
parameter validation made earlier disabled that feature by mistake.
* When all files from some subdirectory were renamed to the root
directory, the directory rename heuristics would fail to detect that
as a rename/merge of the subdirectory to the root directory, which has
been corrected.
* Code clean-up and a bugfix in the logic used to tell worktree local
and repository global refs apart.
(merge f45f88b2e4 sg/dir-trie-fixes later to maint).
* "git stash save" in a working tree that is sparsely checked out
mistakenly removed paths that are outside the area of interest.
(merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
* "git rev-parse --git-path HEAD.lock" did not give the right path
when run in a secondary worktree.
(merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
* "git merge --no-commit" needs "--no-ff" if you do not want to move
HEAD, which has been corrected in the manual page for "git bisect".
(merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
* "git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected. This has been corrected.
(merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
* Messages from die() etc. can be mixed up from multiple processes
without even line buffering on Windows, which has been worked
around.
(merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
* HTTP transport had possible allocator/deallocator mismatch, which
has been corrected.
* The watchman integration for fsmonitor was racy, which has been
corrected to be more conservative.
(merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
* Fetching from multiple remotes into the same repository in parallel
had a bad interaction with the recent change to (optionally) update
the commit-graph after a fetch job finishes, as these parallel
fetches compete with each other. Which has been corrected.
* Recent update to "git stash pop" made the command empty the index
when run with the "--quiet" option, which has been corrected.
* "git fetch" codepath had a big "do not lazily fetch missing objects
when I ask if something exists" switch. This has been corrected by
marking the "does this thing exist?" calls with "if not please do not
lazily fetch it" flag.
* Test update to avoid wasted cycles.
(merge e0316695ec sg/skip-skipped-prereq later to maint).
* Error handling after "git push" finishes sending the packdata and
waits for the response to the remote side has been improved.
(merge ad7a403268 jk/send-pack-remote-failure later to maint).
* Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.
(merge a376e37b2c jk/gitweb-anti-xss later to maint).
* CI jobs for macOS has been made less chatty when updating perforce
package used during testing.
(merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
* "git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object. It now shows the throughput as
well.
(merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
* The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.
* The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.
(merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
* "git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.
(merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
* "git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.
* "git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.
(merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
* The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.
(merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
* TravisCI update.
(merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
* While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.
(merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
* Work around a issue where a FD that is left open when spawning a
child process and is kept open in the child can interfere with the
operation in the parent process on Windows.
* One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.
* "git rebase" did not work well when format.useAutoBase
configuration variable is set, which has been corrected.
* The "diff" machinery learned not to lose added/removed blank lines
in the context when --ignore-blank-lines and --function-context are
used at the same time.
(merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
* The test on "fast-import" used to get stuck when "fast-import" died
in the middle.
(merge 0d9b0d7885 sg/t9300-robustify later to maint).
* "git format-patch" can take a set of configured format.notes values
to specify which notes refs to use in the log message part of the
output. The behaviour of this was not consistent with multiple
--notes command line options, which has been corrected.
(merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
* "git p4" used to ignore lfs.storage configuration variable, which
has been corrected.
(merge ea94b16fb8 rb/p4-lfs later to maint).
* Assorted fixes to the directory traversal API.
(merge 6836d2fe06 en/fill-directory-fixes later to maint).
* Forbid pathnames that the platform's filesystem cannot represent on
MinGW.
(merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).
* "git rebase --signoff" stopped working when the command was written
in C, which has been corrected.
(merge 4fe7e43c53 en/rebase-signoff-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
(merge 8b656572ca sg/commit-graph-usage-fix later to maint).
(merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
(merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
(merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
(merge 270de6acbe en/t6024-style later to maint).
(merge 14c4776d75 ns/test-desc-typofix later to maint).
(merge 68d40f30c4 dj/typofix-merge-strat later to maint).
(merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
(merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
(merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
(merge b018719927 ma/t7004 later to maint).
(merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
(merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
(merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
(merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
(merge 2a02262078 dl/t5520-cleanup later to maint).
(merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
(merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
(merge 3eae30e464 jk/lore-is-the-archive later to maint).
(merge 14b7664df8 dl/lore-is-the-archive later to maint).
(merge 0e40a73a4c po/bundle-doc-clonable later to maint).
(merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
(merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
(merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
(merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
(merge 11de8dd7ef dr/branch-usage-casefix later to maint).
(merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
(merge 147ee35558 rs/commit-export-env-simplify later to maint).
(merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
(merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
(merge cc2bd5c45d pb/submodule-doc-xref later to maint).
(merge df5be01669 ja/doc-markup-cleanup later to maint).
(merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
(merge 20a67e8ce9 js/use-test-tool-on-path later to maint).
----------------------------------------------------------------
Changes since v2.24.0 are as follows:
Alban Gruin (6):
sequencer: update `total_nr' when adding an item to a todo list
sequencer: update `done_nr' when skipping commands in a todo list
sequencer: move the code writing total_nr on the disk to a new function
rebase: fill `squash_onto' in get_replay_opts()
sequencer: directly call pick_commits() from complete_action()
sequencer: fix a memory leak in sequencer_continue()
Alexandr Miloslavskiy (14):
parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
pathspec: add new function to parse file
doc: reset: synchronize <pathspec> description
reset: support the `--pathspec-from-file` option
doc: commit: synchronize <pathspec> description
commit: support the --pathspec-from-file option
cmd_add: prepare for next patch
add: support the --pathspec-from-file option
doc: checkout: remove duplicate synopsis
doc: checkout: fix broken text reference
doc: checkout: synchronize <pathspec> description
doc: restore: synchronize <pathspec> description
checkout, restore: support the --pathspec-from-file option
commit: forbid --pathspec-from-file --all
Andreas Schwab (1):
t7812: add missing redirects
Andrei Rybak (1):
INSTALL: use existing shell scripts as example
Ben Keene (2):
git-p4: yes/no prompts should sanitize user text
git-p4: show detailed help when parsing options fail
Colin Stolley (1):
packfile.c: speed up loading lots of packfiles
Daniel Ferreira (2):
diff: export diffstat interface
built-in add -i: implement the `status` command
Denton Liu (93):
format-patch: replace erroneous and condition
format-patch: use enum variables
format-patch: teach --cover-from-description option
rebase: hide --preserve-merges option
t4108: replace create_file with test_write_lines
t4108: remove git command upstream of pipe
t4108: use `test_config` instead of `git config`
t4108: demonstrate bug in apply
apply: respect merge.conflictStyle in --3way
submodule: teach set-url subcommand
git-diff.txt: document return code of `--no-index`
completion: learn to complete `git rebase --onto=`
t4215: use helper function to check output
argv-array: add space after `while`
rev-list-options.txt: remove reference to --show-notes
SubmittingPatches: use generic terms for hash
pretty-formats.txt: use generic terms for hash
SubmittingPatches: remove dq from commit reference
completion: complete `tformat:` pretty format
revision: make get_revision_mark() return const pointer
pretty.c: inline initalize format_context
t4205: cover `git log --reflog -z` blindspot
pretty: add struct cmt_fmt_map::default_date_mode_type
pretty: implement 'reference' format
SubmittingPatches: use `--pretty=reference`
pretty-options.txt: --notes accepts a ref instead of treeish
t3206: remove spaces after redirect operators
t3206: disable parameter substitution in heredoc
t3206: s/expected/expect/
t3206: range-diff compares logs with commit notes
range-diff: output `## Notes ##` header
range-diff: pass through --notes to `git log`
format-patch: pass notes configuration to range-diff
t0000: test multiple local assignment
t: teach test_cmp_rev to accept ! for not-equals
t5520: improve test style
t5520: use sq for test case names
t5520: let sed open its own input
t5520: replace test -f with test-lib functions
t5520: remove spaces after redirect operator
t5520: use test_line_count where possible
t5520: replace test -{n,z} with test-lib functions
t5520: use test_cmp_rev where possible
t5520: test single-line files by git with test_cmp
t5520: don't put git in upstream of pipe
t5520: replace $(cat ...) comparison with test_cmp
t5520: remove redundant lines in test cases
t5520: replace `! git` with `test_must_fail git`
lib-bash.sh: move `then` onto its own line
apply-one-time-sed.sh: modernize style
t0014: remove git command upstream of pipe
t0090: stop losing return codes of git commands
t3301: stop losing return codes of git commands
t3600: use test_line_count() where possible
t3600: stop losing return codes of git commands
t3600: comment on inducing SIGPIPE in `git rm`
t4015: stop losing return codes of git commands
t4015: use test_write_lines()
t4138: stop losing return codes of git commands
t5317: stop losing return codes of git commands
t5317: use ! grep to check for no matching lines
t5703: simplify one-time-sed generation logic
t5703: stop losing return codes of git commands
t7501: remove spaces after redirect operators
t7501: stop losing return codes of git commands
t7700: drop redirections to /dev/null
t7700: remove spaces after redirect operators
t7700: move keywords onto their own line
t7700: s/test -f/test_path_is_file/
doc: replace MARC links with lore.kernel.org
RelNotes: replace Gmane with real Message-IDs
doc: replace LKML link with lore.kernel.org
t7700: consolidate code into test_no_missing_in_packs()
t7700: consolidate code into test_has_duplicate_object()
t7700: replace egrep with grep
t7700: make references to SHA-1 generic
t7700: stop losing return codes of git commands
t3400: demonstrate failure with format.useAutoBase
format-patch: fix indentation
t4014: use test_config()
format-patch: teach --no-base
rebase: fix format.useAutoBase breakage
t3206: fix incorrect test name
range-diff: mark pointers as const
range-diff: clear `other_arg` at end of function
notes: rename to load_display_notes()
notes: create init_display_notes() helper
notes: extract logic into set_display_notes()
format-patch: use --notes behavior for format.notes
format-patch: move git_config() before repo_init_revisions()
config/format.txt: clarify behavior of multiple format.notes
notes: break set_display_notes() into smaller functions
notes.h: fix typos in comment
Derrick Stolee (22):
test-tool: use 'read-graph' helper
sparse-checkout: create builtin with 'list' subcommand
sparse-checkout: create 'init' subcommand
clone: add --sparse mode
sparse-checkout: 'set' subcommand
sparse-checkout: add '--stdin' option to set subcommand
sparse-checkout: create 'disable' subcommand
sparse-checkout: add 'cone' mode
sparse-checkout: use hashmaps for cone patterns
sparse-checkout: init and set in cone mode
unpack-trees: hash less in cone mode
unpack-trees: add progress to clear_ce_flags()
sparse-checkout: sanitize for nested folders
sparse-checkout: update working directory in-process
sparse-checkout: use in-process update for disable subcommand
sparse-checkout: write using lockfile
sparse-checkout: cone mode should not interact with .gitignore
sparse-checkout: update working directory in-process for 'init'
sparse-checkout: check for dirty status
progress: create GIT_PROGRESS_DELAY
commit-graph: use start_delayed_progress()
sparse-checkout: respect core.ignoreCase in cone mode
Dimitriy Ryazantcev (1):
l10n: minor case fix in 'git branch' '--unset-upstream' description
Dominic Jäger (1):
merge-strategies: fix typo "reflected to" to "reflected in"
Ed Maste (4):
t4210: skip i18n tests that don't work on FreeBSD
userdiff: remove empty subexpression from elixir regex
CI: add FreeBSD CI support via Cirrus-CI
sparse-checkout: improve OS ls compatibility
Elia Pinto (1):
kset.h, tar.h: add missing header guard to prevent multiple inclusion
Elijah Newren (27):
merge-recursive: clean up get_renamed_dir_portion()
merge-recursive: fix merging a subdirectory into the root directory
t604[236]: do not run setup in separate tests
Documentation: fix a bunch of typos, both old and new
Fix spelling errors in documentation outside of Documentation/
git-filter-branch.txt: correct argument name typo
hashmap: fix documentation misuses of -> versus .
name-hash.c: remove duplicate word in comment
t6024: modernize style
Fix spelling errors in code comments
Fix spelling errors in comments of testcases
Fix spelling errors in names of tests
Fix spelling errors in messages shown to users
Fix spelling errors in test commands
sha1dc: fix trivial comment spelling error
multimail: fix a few simple spelling errors
Fix spelling errors in no-longer-updated-from-upstream modules
t3011: demonstrate directory traversal failures
Revert "dir.c: make 'git-status --ignored' work within leading directories"
dir: remove stray quote character in comment
dir: exit before wildcard fall-through if there is no wildcard
dir: break part of read_directory_recursive() out for reuse
t3434: mark successful test as such
dir: fix checks on common prefix directory
dir: synchronize treat_leading_path() and read_directory_recursive()
dir: consolidate similar code in treat_directory()
rebase: fix saving of --signoff state for am-based rebases
Emily Shaffer (4):
documentation: add tutorial for object walking
myfirstcontrib: add 'psuh' to command-list.txt
myfirstcontrib: add dependency installation step
myfirstcontrib: hint to find gitgitgadget allower
Erik Chen (1):
fetch: add trace2 instrumentation
Garima Singh (2):
test-path-utils: offer to run a protectNTFS/protectHFS benchmark
tests: add a helper to stress test argument quoting
Hans Jerry Illikainen (4):
gpg-interface: refactor the free-and-xmemdupz pattern
gpg-interface: limit search for primary key fingerprint
gpg-interface: prefer check_signature() for GPG verification
grep: don't return an expression from pcre2_free()
Hariom Verma (2):
builtin/blame.c: constants into bit shift format
git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
Heba Waly (22):
config: move documentation to config.h
documentation: remove empty doc files
diff: move doc to diff.h and diffcore.h
dir: move doc to dir.h
graph: move doc to graph.h and graph.c
merge: move doc to ll-merge.h
sha1-array: move doc to sha1-array.h
remote: move doc to remote.h and refspec.h
refs: move doc to refs.h
attr: move doc to attr.h
revision: move doc to revision.h
pathspec: move doc to pathspec.h
sigchain: move doc to sigchain.h
cache: move doc to cache.h
argv-array: move doc to argv-array.h
credential: move doc to credential.h
parse-options: add link to doc file in parse-options.h
run-command: move doc to run-command.h
trace: move doc to trace.h
tree-walk: move doc to tree-walk.h
submodule-config: move doc to submodule-config.h
trace2: move doc to trace2.h
James Coglan (13):
graph: automatically track display width of graph lines
graph: handle line padding in `graph_next_line()`
graph: reuse `find_new_column_by_commit()`
graph: reduce duplication in `graph_insert_into_new_columns()`
graph: remove `mapping_idx` and `graph_update_width()`
graph: extract logic for moving to GRAPH_PRE_COMMIT state
graph: example of graph output that can be simplified
graph: tidy up display of left-skewed merges
graph: commit and post-merge lines for left-skewed merges
graph: rename `new_mapping` to `old_mapping`
graph: smooth appearance of collapsing edges on commit lines
graph: flatten edges that fuse with their right neighbor
graph: fix coloring of octopus dashes
James Shubin (1):
completion: tab-complete "git svn --recursive"
Jean-Noël Avila (2):
doc: remove non pure ASCII characters
doc: indent multi-line items in list
Jeff Hostetler (1):
trace2: add region in clear_ce_flags
Jeff King (44):
parse_commit_buffer(): treat lookup_commit() failure as parse error
parse_commit_buffer(): treat lookup_tree() failure as parse error
parse_tag_buffer(): treat NULL tag pointer as parse error
commit, tag: don't set parsed bit for parse failures
fsck: stop checking commit->tree value
fsck: stop checking commit->parent counts
fsck: stop checking tag->tagged
fsck: require an actual buffer for non-blobs
fsck: unify object-name code
fsck_describe_object(): build on our get_object_name() primitive
fsck: use oids rather than objects for object_name API
fsck: don't require object structs for display functions
fsck: only provide oid/type in fsck_error callback
fsck: only require an oid for skiplist functions
fsck: don't require an object struct for report()
fsck: accept an oid instead of a "struct blob" for fsck_blob()
fsck: drop blob struct from fsck_finish()
fsck: don't require an object struct for fsck_ident()
fsck: don't require an object struct in verify_headers()
fsck: rename vague "oid" local variables
fsck: accept an oid instead of a "struct tag" for fsck_tag()
fsck: accept an oid instead of a "struct commit" for fsck_commit()
fsck: accept an oid instead of a "struct tree" for fsck_tree()
hex: drop sha1_to_hex_r()
pack-objects: avoid pointless oe_map_new_pack() calls
hex: drop sha1_to_hex()
send-pack: check remote ref status on pack-objects failure
t9502: pass along all arguments in xss helper
t/gitweb-lib.sh: drop confusing quotes
t/gitweb-lib.sh: set $REQUEST_URI
gitweb: escape URLs generated by href()
rev-parse: make --show-toplevel without a worktree an error
perf-lib: use a single filename for all measurement types
t/perf: don't depend on Git.pm
send-pack: use OBJECT_INFO_QUICK to check negative objects
doc: recommend lore.kernel.org over public-inbox.org
doc: replace public-inbox links with lore.kernel.org
t9300: drop some useless uses of cat
t9300: create marks files for double-import-marks test
fast-import: tighten parsing of boolean command line options
fast-import: stop creating leading directories for import-marks
fast-import: delay creating leading directories for export-marks
fast-import: disallow "feature export-marks" by default
fast-import: disallow "feature import-marks" by default
Johannes Schindelin (95):
t1400: wrap setup code in test case
git_path(): handle `.lock` files correctly
vreportf(): avoid relying on stdio buffering
update-index: optionally leave skip-worktree entries alone
stash: handle staged changes in skip-worktree files correctly
fetch: add the command-line option `--write-commit-graph`
fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
remote-curl: unbreak http.extraHeader with custom allocators
Start to implement a built-in version of `git add --interactive`
built-in add -i: implement the main loop
built-in add -i: show unique prefixes of the commands
built-in add -i: support `?` (prompt help)
rebase-merges: move labels' whitespace mangling into `label_oid()`
git svn: stop using `rebase --preserve-merges`
mingw: demonstrate that all file handles are inherited by child processes
mingw: work around incorrect standard handles
mingw: spawned processes need to inherit only standard handles
mingw: restrict file handle inheritance only on Windows 7 and later
mingw: do set `errno` correctly when trying to restrict handle inheritance
add-interactive: make sure to release `rev.prune_data`
built-in add -i: allow filtering the modified files list
built-in add -i: prepare for multi-selection commands
built-in add -i: implement the `update` command
built-in add -i: re-implement `revert` in C
built-in add -i: re-implement `add-untracked` in C
built-in add -i: implement the `patch` command
built-in add -i: re-implement the `diff` command
built-in add -i: offer the `quit` command
pkt-line: fix a typo
mingw: forbid translating ERROR_SUCCESS to an errno value
clone --recurse-submodules: prevent name squatting on Windows
mingw: disallow backslash characters in tree objects' file names
path.c: document the purpose of `is_ntfs_dotgit()`
is_ntfs_dotgit(): only verify the leading segment
path: safeguard `.git` against NTFS Alternate Streams Accesses
is_ntfs_dotgit(): speed it up
mingw: fix quoting of arguments
path: also guard `.gitmodules` against NTFS Alternate Data Streams
protect_ntfs: turn on NTFS protection by default
Disallow dubiously-nested submodule git directories
quote-stress-test: accept arguments to test via the command-line
t6130/t9350: prepare for stringent Win32 path validation
quote-stress-test: allow skipping some trials
unpack-trees: let merged_entry() pass through do_add_entry()'s errors
mingw: refuse to access paths with illegal characters
quote-stress-test: offer to test quoting arguments for MSYS2 sh
mingw: refuse to access paths with trailing spaces or periods
mingw: handle `subst`-ed "DOS drives"
Git 2.14.6
Git 2.15.4
test-drop-caches: use `has_dos_drive_prefix()`
Git 2.16.6
Git 2.17.3
Git 2.18.2
Git 2.19.3
t7415: adjust test for dubiously-nested submodule gitdirs for v2.20.x
Git 2.20.2
mingw: detect when MSYS2's sh is to be spawned more robustly
mingw: use MSYS2 quoting even when spawning shell scripts
mingw: fix quoting of empty arguments for `sh`
t7415: drop v2.20.x-specific work-around
mingw: sh arguments need quoting in more circumstances
Git 2.21.1
Git 2.22.2
Git 2.23.1
Git 2.24.1
t3701: add a test for advanced split-hunk editing
t3701: avoid depending on the TTY prerequisite
t3701: add a test for the different `add -p` prompts
t3701: verify the shown messages when nothing can be added
t3701: verify that the diff.algorithm config setting is handled
git add -p: use non-zero exit code when the diff generation failed
apply --allow-overlap: fix a corner case
t3404: fix indentation
built-in add -i: start implementing the `patch` functionality in C
built-in add -i: wire up the new C code for the `patch` command
built-in add -p: show colored hunks by default
built-in add -p: adjust hunk headers as needed
built-in add -p: color the prompt and the help text
built-in add -p: offer a helpful error message when hunk navigation failed
built-in add -p: support multi-file diffs
built-in add -p: handle deleted empty files
built-in app -p: allow selecting a mode change as a "hunk"
built-in add -p: show different prompts for mode changes and deletions
built-in add -p: implement the hunk splitting feature
built-in add -p: coalesce hunks after splitting them
strbuf: add a helper function to call the editor "on an strbuf"
built-in add -p: implement hunk editing
built-in add -p: implement the 'g' ("goto") command
built-in add -p: implement the '/' ("search regex") command
built-in add -p: implement the 'q' ("quit") command
built-in add -p: only show the applicable parts of the help text
built-in add -p: show helpful hint when nothing can be staged
mingw: short-circuit the conversion of `/dev/null` to UTF-16
mingw: refuse paths containing reserved names
Johannes Sixt (1):
t3008: find test-tool through path lookup
Jonathan Nieder (3):
submodule: reject submodule.update = !command in .gitmodules
fsck: reject submodule.update = !command in .gitmodules
submodule: defend against submodule.update = !command in .gitmodules
Jonathan Tan (6):
fetch-pack: write fetched refs to .promisor
fetch: remove fetch_if_missing=0
clone: remove fetch_if_missing=0
promisor-remote: remove fetch_if_missing=0
Doc: explain submodule.alternateErrorStrategy
submodule--helper: advise on fatal alternate error
Josh Holland (1):
userdiff: support Python async functions
Junio C Hamano (15):
doc: am --show-current-patch gives an entire e-mail message
The first batch post 2.24 cycle
fsmonitor: do not compare bitmap size with size of split index
ci(osx): update homebrew-cask repository with less noise
rebase -i: finishing touches to --reset-author-date
The second batch
The third batch
The fourth batch
The fifth batch
Makefile: drop GEN_HDRS
The sixth batch
dir.c: use st_add3() for allocation size
Git 2.25-rc0
mailmap: mask accentless variant for Công Danh
Git 2.25-rc1
Kevin Willford (1):
fsmonitor: fix watchman integration
Manish Goregaokar (2):
doc: document 'git submodule status --cached'
submodule: fix 'submodule status' when called from a subdirectory
Martin Ågren (1):
t7004: check existence of correct tag
Matthew Rogers (1):
rebase -r: let `label` generate safer labels
Mihail Atanassov (1):
Documentation/git-bisect.txt: add --no-ff to merge command
Mike Hommey (2):
revision: clear the topo-walk flags in reset_revision_walk
revision: free topo_walk_info before creating a new one in init_topo_walk
Miriam Rubio (1):
clone: rename static function `dir_exists()`.
Nathan Stocks (1):
t: fix typo in test descriptions
Naveen Nathan (1):
doc: improve readability of --rebase-merges in git-rebase
Nika Layzell (1):
reset: parse rev as tree-ish in patch mode
Philip Oakley (1):
Doc: Bundle file usage
Philippe Blain (4):
help: add gitsubmodules to the list of guides
worktree: teach "add" to ignore submodule.recurse config
doc: mention that 'git submodule update' fetches missing commits
gitmodules: link to gitsubmodules guide
Phillip Wood (7):
t3404: remove unnecessary subshell
t3404: set $EDITOR in subshell
t3404: remove uneeded calls to set_fake_editor
sequencer.h fix placement of #endif
move run_commit_hook() to libgit and use it there
sequencer: run post-commit hook
sequencer: fix empty commit check when amending
Prarit Bhargava (3):
t6006: use test-lib.sh definitions
t4203: use test-lib.sh definitions
pretty: add "%aL" etc. to show local-part of email addresses
Pratyush Yadav (1):
git-shortlog.txt: include commit limiting options
Ralf Thielow (1):
fetch.c: fix typo in a warning message
René Scharfe (32):
trace2: add dots directly to strbuf in perf_fmt_prepare()
utf8: use skip_iprefix() in same_utf_encoding()
convert: use skip_iprefix() in validate_encoding()
mingw: use COPY_ARRAY for copying array
parse-options: avoid arithmetic on pointer that's potentially NULL
pretty: provide short date format
fetch: use skip_prefix() instead of starts_with()
fmt-merge-msg: use skip_prefix() instead of starts_with()
shell: use skip_prefix() instead of starts_with()
push: use skip_prefix() instead of starts_with()
name-rev: use skip_prefix() instead of starts_with()
run-command: use prepare_git_cmd() in prepare_cmd()
t1512: use test_line_count
t1410: use test_line_count
t1400: use test_must_be_empty
test: use test_must_be_empty F instead of test -z $(cat F)
test: use test_must_be_empty F instead of test_cmp empty F
t9300: don't create unused file
t7811: don't create unused file
xdiff: unignore changes in function context
name-rev: use strbuf_strip_suffix() in get_rev_name()
commit: use strbuf_add() to add a length-limited string
patch-id: use oid_to_hex() to print multiple object IDs
archive-zip: use enum for compression method
t4256: don't create unused file
t7004: don't create unused file
refs: pass NULL to refs_read_ref_full() because object ID is not needed
remote: pass NULL to read_ref_full() because object ID is not needed
t3501: don't create unused file
t5580: don't create unused file
t6030: don't create unused file
t4015: improve coverage of function context test
Robin H. Johnson (3):
bundle: framework for options before bundle file
bundle-create: progress output control
bundle-verify: add --quiet
Rohit Ashiwal (6):
rebase -i: add --ignore-whitespace flag
sequencer: allow callers of read_author_script() to ignore fields
rebase -i: support --committer-date-is-author-date
sequencer: rename amend_author to author_to_rename
rebase -i: support --ignore-date
rebase: add --reset-author-date
Ruud van Asseldonk (1):
t5150: skip request-pull test if Perl is disabled
SZEDER Gábor (29):
Documentation: mention more worktree-specific exceptions
path.c: clarify trie_find()'s in-code comment
path.c: mark 'logs/HEAD' in 'common_list' as file
path.c: clarify two field names in 'struct common_dir'
path.c: don't call the match function without value in trie_find()
builtin/commit-graph.c: remove subcommand-less usage string
builtin/blame.c: remove '--indent-heuristic' from usage string
test-lib: don't check prereqs of test cases that won't be run anyway
t6120-describe: correct test repo history graph in comment
builtin/unpack-objects.c: show throughput progress
tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
sequencer: don't re-read todo for revert and cherry-pick
test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
ci: build Git with GCC 9 in the 'osx-gcc' build job
t9300-fast-import: store the PID in a variable instead of pidfile
t9300-fast-import: don't hang if background fast-import exits too early
t6120-describe: modernize the 'check_describe' helper
name-rev: avoid unnecessary cast in name_ref()
name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
name-rev: extract creating/updating a 'struct name_rev' into a helper
name-rev: pull out deref handling from the recursion
name-rev: restructure parsing commits and applying date cutoff
name-rev: restructure creating/updating 'struct rev_name' instances
name-rev: drop name_rev()'s 'generation' and 'distance' parameters
name-rev: use 'name->tip_name' instead of 'tip_name'
name-rev: eliminate recursion in name_rev()
name-rev: cleanup name_ref()
Slavica Đukić (3):
built-in add -i: color the header in the `status` command
built-in add -i: use color in the main loop
built-in add -i: implement the `help` command
Tanushree Tumane (2):
bisect--helper: avoid use-after-free
bisect--helper: convert `*_warning` char pointers to char arrays.
Thomas Gummerer (1):
stash: make sure we have a valid index before writing it
Todd Zullinger (1):
t7812: expect failure for grep -i with invalid UTF-8 data
Utsav Shah (1):
unpack-trees: skip stat on fsmonitor-valid files
William Baker (6):
midx: add MIDX_PROGRESS flag
midx: add progress to write_midx_file
midx: add progress to expire_midx_packs
midx: honor the MIDX_PROGRESS flag in verify_midx_file
midx: honor the MIDX_PROGRESS flag in midx_repack
multi-pack-index: add [--[no-]progress] option.
brian m. carlson (16):
t/oid-info: allow looking up hash algorithm name
t/oid-info: add empty tree and empty blob values
rev-parse: add a --show-object-format option
t1305: avoid comparing extensions
t3429: remove SHA1 annotation
t4010: abstract away SHA-1-specific constants
t4011: abstract away SHA-1-specific constants
t4015: abstract away SHA-1-specific constants
t4027: make hash-size independent
t4034: abstract away SHA-1-specific constants
t4038: abstract away SHA-1 specific constants
t4039: abstract away SHA-1-specific constants
t4044: update test to work with SHA-256
t4045: make hash-size independent
t4048: abstract away SHA-1-specific constants
t9001: avoid including non-trailing NUL bytes in variables
r.burenkov (1):
git-p4: honor lfs.storage configuration variable
ryenus (1):
fix-typo: consecutive-word duplications
Đoàn Trần Công Danh (14):
t3301: test diagnose messages for too few/many paramters
notes: fix minimum number of parameters to "copy" subcommand
t0028: eliminate non-standard usage of printf
configure.ac: define ICONV_OMITS_BOM if necessary
t3900: demonstrate git-rebase problem with multi encoding
sequencer: reencode to utf-8 before arrange rebase's todo list
sequencer: reencode revert/cherry-pick's todo list
sequencer: reencode squashing commit's message
sequencer: reencode old merge-commit message
sequencer: reencode commit message for am/rebase --show-current-patch
sequencer: handle rebase-merges for "onto" message
date.c: switch to reentrant {gm,local}time_r
archive-zip.c: switch to reentrant localtime_r
mingw: use {gm,local}time_s as backend for {gm,local}time_r
Łukasz Niemier (1):
userdiff: add Elixir to supported userdiff languages
^ permalink raw reply [relevance 2%]
* Re: [ANNOUNCE] Git v2.25.0-rc0
2019-12-25 21:44 2% [ANNOUNCE] Git v2.25.0-rc0 Junio C Hamano
@ 2019-12-26 0:33 0% ` Denton Liu
0 siblings, 0 replies; 162+ results
From: Denton Liu @ 2019-12-26 0:33 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
Thanks for your hard work, Junio. Merry Christmas!
On Wed, Dec 25, 2019 at 01:44:54PM -0800, Junio C Hamano wrote:
>
> An early preview release Git v2.25.0-rc0 is now available for
> testing at the usual places. It is comprised of 531 non-merge
> commits since v2.24.0, contributed by 61 people, 24 of which are
> new faces.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
> The following public repositories all have a copy of the
> 'v2.25.0-rc0' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
> New contributors whose contributions weren't in v2.24.0 are as follows.
> Welcome to the Git development community!
>
> Colin Stolley, Doan Tran Cong Danh, Dominic Jäger, Erik Chen,
> Hariom Verma, Heba Waly, James Coglan, James Shubin, Josh
> Holland, Łukasz Niemier, Manish Goregaokar, Matthew Rogers,
> Mihail Atanassov, Miriam Rubio, Nathan Stocks, Naveen Nathan,
> Nika Layzell, Philippe Blain, Prarit Bhargava, r.burenkov,
> Ruud van Asseldonk, ryenus, Slavica Đukić, and Utsav Shah.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Alban Gruin, Alexandr Miloslavskiy, Andreas Schwab, Andrei Rybak,
> brian m. carlson, Daniel Ferreira, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Ed Maste, Elia Pinto, Elijah Newren, Emily
> Shaffer, Garima Singh, Hans Jerry Illikainen, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Jonathan Nieder,
> Jonathan Tan, Junio C Hamano, Kevin Willford, Martin Ågren,
> Mike Hommey, Philip Oakley, Phillip Wood, Pratyush Yadav,
> Ralf Thielow, René Scharfe, Robin H. Johnson, Rohit Ashiwal,
> SZEDER Gábor, Tanushree Tumane, Thomas Gummerer, Todd Zullinger,
> and William Baker.
>
> ----------------------------------------------------------------
>
> Git 2.25 Release Notes (draft)
> ==============================
>
> Updates since v2.24
> -------------------
>
> Backward compatibility notes
>
>
> UI, Workflows & Features
>
> * A tutorial on object enumeration has been added.
>
> * The branch description ("git branch --edit-description") has been
> used to fill the body of the cover letters by the format-patch
> command; this has been enhanced so that the subject can also be
> filled.
>
> * "git rebase --preserve-merges" has been marked as deprecated; this
> release stops advertising it in the "git rebase -h" output.
>
> * The code to generate multi-pack index learned to show (or not to
> show) progress indicators.
>
> * "git apply --3way" learned to honor merge.conflictStyle
> configuration variable, like merges would.
>
> * The custom format for "git log --format=<format>" learned the l/L
> placeholder that is similar to e/E that fills in the e-mail
> address, but only the local part on the left side of '@'.
>
> * Documentation pages for "git shortlog" now list commit limiting
> options explicitly.
>
> * The patterns to detect function boundary for Elixir language has
> been added.
>
> * The completion script (in contrib/) learned that the "--onto"
> option of "git rebase" can take its argument as the value of the
> option.
>
> * The userdiff machinery has been taught that "async def" is another
> way to begin a "function" in Python.
>
> * "git range-diff" learned to take the "--notes=<ref>" and the
> "--no-notes" options to control the commit notes included in the
> log message that gets compared.
>
> * "git rev-parse --show-toplevel" run outside of any working tree did
> not error out, which has been corrected.
>
> * A few commands learned to take the pathspec from the standard input
> or a named file, instead of taking it as the command line
> arguments, with the "--pathspec-from-file" option.
>
> * "git rebase -i" learned a few options that are known by "git
> rebase" proper.
>
> * "git submodule" learned a subcommand "set-url".
>
> * "git log" family learned "--pretty=reference" that gives the name
> of a commit in the format that is often used to refer to it in log
> messages.
>
> * The interaction between "git clone --recurse-submodules" and
> alternate object store was ill-designed. The documentation and
> code have been taught to make more clear recommendations when the
> users see failures.
>
> * Management of sparsely checked-out working tree has gained a
> dedicated "sparse-checkout" command.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * Debugging support for lazy cloning has been a bit improved.
>
> * Move the definition of a set of bitmask constants from 0ctal
> literal to (1U<<count) notation.
>
> * Test updates to prepare for SHA-2 transition continues.
>
> * Crufty code and logic accumulated over time around the object
> parsing and low-level object access used in "git fsck" have been
> cleaned up.
>
> * The implementation of "git log --graph" got refactored and then its
> output got simplified.
>
> * Follow recent push to move API docs from Documentation/ to header
> files and update config.h
>
> * "git bundle" has been taught to use the parse options API. "git
> bundle verify" learned "--quiet" and "git bundle create" learned
> options to control the progress output.
>
> * Handling of commit objects that use non UTF-8 encoding during
> "rebase -i" has been improved.
>
> * The beginning of rewriting "git add -i" in C.
>
> * A label used in the todo list that are generated by "git rebase
> --rebase-merges" is used as a part of a refname; the logic to come
> up with the label has been tightened to avoid names that cannot be
> used as such.
>
> * The logic to avoid duplicate label names generated by "git rebase
> --rebase-merges" forgot that the machinery itself uses "onto" as a
> label name, which must be avoided by auto-generated labels, which
> has been corrected.
>
> * We have had compatibility fallback macro definitions for "PRIuMAX",
> "PRIu32", etc. but did not for "PRIdMAX", while the code used the
> last one apparently without any hiccup reported recently. The
> fallback macro definitions for these <inttypes.h> macros that must
> appear in C99 systems have been removed.
>
> * Recently we have declared that GIT_TEST_* variables take the
> usual boolean values (it used to be that some used "non-empty
> means true" and taking GIT_TEST_VAR=YesPlease as true); make
> sure we notice and fail when non-bool strings are given to
> these variables.
>
> * Users of oneway_merge() (like "reset --hard") learned to take
> advantage of fsmonitor to avoid unnecessary lstat(2) calls.
>
> * Performance tweak on "git push" into a repository with many refs
> that point at objects we have never heard of.
>
> * PerfTest fix to avoid stale result mixed up with the latest round
> of test results.
>
> * Hide lower-level verify_signed-buffer() API as a pure helper to
> implement the public check_signature() function, in order to
> encourage new callers to use the correct and more strict
> validation.
>
> * Unnecessary reading of state variables back from the disk during
> sequencer operation has been reduced.
>
> * The code has been made to avoid gmtime() and localtime() and prefer
> their reentrant counterparts.
>
> * The effort to reimplement "git add -i" in C continues.
>
> * In a repository with many packfiles, the cost of the procedure that
> avoids registering the same packfile twice was unnecessarily high
> by using an inefficient search algorithm, which has been corrected.
>
> * Redo "git name-rev" to avoid recursive calls.
>
>
> Fixes since v2.24
> -----------------
>
> * "rebase -i" ceased to run post-commit hook by mistake in an earlier
> update, which has been corrected.
>
> * "git notes copy $original" ought to copy the notes attached to the
> original object to HEAD, but a mistaken tightening to command line
> parameter validation made earlier disabled that feature by mistake.
>
> * When all files from some subdirectory were renamed to the root
> directory, the directory rename heuristics would fail to detect that
> as a rename/merge of the subdirectory to the root directory, which has
> been corrected.
>
> * Code clean-up and a bugfix in the logic used to tell worktree local
> and repository global refs apart.
> (merge f45f88b2e4 sg/dir-trie-fixes later to maint).
>
> * "git stash save" in a working tree that is sparsely checked out
> mistakenly removed paths that are outside the area of interest.
> (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
>
> * "git rev-parse --git-path HEAD.lock" did not give the right path
> when run in a secondary worktree.
> (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
>
> * "git merge --no-commit" needs "--no-ff" if you do not want to move
> HEAD, which has been corrected in the manual page for "git bisect".
> (merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
>
> * "git worktree add" internally calls "reset --hard" that should not
> descend into submodules, even when submodule.recurse configuration
> is set, but it was affected. This has been corrected.
> (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
>
> * Messages from die() etc. can be mixed up from multiple processes
> without even line buffering on Windows, which has been worked
> around.
> (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
>
> * HTTP transport had possible allocator/deallocator mismatch, which
> has been corrected.
>
> * The watchman integration for fsmonitor was racy, which has been
> corrected to be more conservative.
> (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
>
> * Fetching from multiple remotes into the same repository in parallel
> had a bad interaction with the recent change to (optionally) update
> the commit-graph after a fetch job finishes, as these parallel
> fetches compete with each other. Which has been corrected.
>
> * Recent update to "git stash pop" made the command empty the index
> when run with the "--quiet" option, which has been corrected.
>
> * "git fetch" codepath had a big "do not lazily fetch missing objects
> when I ask if something exists" switch. This has been corrected by
> marking the "does this thing exist?" calls with "if not please do not
> lazily fetch it" flag.
>
> * Test update to avoid wasted cycles.
> (merge e0316695ec sg/skip-skipped-prereq later to maint).
>
> * Error handling after "git push" finishes sending the packdata and
> waits for the response to the remote side has been improved.
> (merge ad7a403268 jk/send-pack-remote-failure later to maint).
>
> * Some codepaths in "gitweb" that forgot to escape URLs generated
> based on end-user input have been corrected.
> (merge a376e37b2c jk/gitweb-anti-xss later to maint).
>
> * CI jobs for macOS has been made less chatty when updating perforce
> package used during testing.
> (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
>
> * "git unpack-objects" used to show progress based only on the number
> of received and unpacked objects, which stalled when it has to
> handle an unusually large object. It now shows the throughput as
> well.
> (merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
>
> * The sequencer machinery compared the HEAD and the state it is
> attempting to commit to decide if the result would be a no-op
> commit, even when amending a commit, which was incorrect, and
> has been corrected.
>
> * The code to parse GPG output used to assume incorrectly that the
> finterprint for the primary key would always be present for a valid
> signature, which has been corrected.
> (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
>
> * "git submodule status" and "git submodule status --cached" show
> different things, but the documentation did not cover them
> correctly, which has been corrected.
> (merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
>
> * "git reset --patch $object" without any pathspec should allow a
> tree object to be given, but incorrectly required a committish,
> which has been corrected.
>
> * "git submodule status" that is run from a subdirectory of the
> superproject did not work well, which has been corrected.
> (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
>
> * The revision walking machinery uses resources like per-object flag
> bits that need to be reset before a new iteration of walking
> begins, but the resources related to topological walk were not
> cleared correctly, which has been corrected.
> (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
>
> * TravisCI update.
> (merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
>
> * While running "revert" or "cherry-pick --edit" for multiple
> commits, a recent regression incorrectly detected "nothing to
> commit, working tree clean", instead of replaying the commits,
> which has been corrected.
> (merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
>
> * Work around a issue where a FD that is left open when spawning a
> child process and is kept open in the child can interfere with the
> operation in the parent process on Windows.
>
> * One kind of progress messages were always given during commit-graph
> generation, instead of following the "if it takes more than two
> seconds, show progress" pattern, which has been corrected.
>
> * "git rebase" did not work well when format.useAutoBase
> configuration variable is set, which has been corrected.
>
> * The "diff" machinery learned not to lose added/removed blank lines
> in the context when --ignore-blank-lines and --function-context are
> used at the same time.
> (merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
>
> * The test on "fast-import" used to get stuck when "fast-import" died
> in the middle.
> (merge 0d9b0d7885 sg/t9300-robustify later to maint).
>
> * "git format-patch" can take a set of configured format.notes values
> to specify which notes refs to use in the log message part of the
> output. The behaviour of this was not consistent with multiple
> --notes command line options, which has been corrected.
> (merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
>
> * "git p4" used to ignore lfs.storage configuration variable, which
> has been corrected.
> (merge ea94b16fb8 rb/p4-lfs later to maint).
>
> * Assorted fixes to the directory traversal API.
> (merge 6836d2fe06 en/fill-directory-fixes later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
> (merge 8b656572ca sg/commit-graph-usage-fix later to maint).
> (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
> (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
> (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
> (merge 270de6acbe en/t6024-style later to maint).
> (merge 14c4776d75 ns/test-desc-typofix later to maint).
> (merge 68d40f30c4 dj/typofix-merge-strat later to maint).
> (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
> (merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
> (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
> (merge b018719927 ma/t7004 later to maint).
> (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
> (merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
> (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
> (merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
> (merge 2a02262078 dl/t5520-cleanup later to maint).
> (merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
> (merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
> (merge 3eae30e464 jk/lore-is-the-archive later to maint).
> (merge 14b7664df8 dl/lore-is-the-archive later to maint).
> (merge 0e40a73a4c po/bundle-doc-clonable later to maint).
> (merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
> (merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
> (merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
> (merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
> (merge 11de8dd7ef dr/branch-usage-casefix later to maint).
> (merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
> (merge 147ee35558 rs/commit-export-env-simplify later to maint).
> (merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
> (merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
> (merge cc2bd5c45d pb/submodule-doc-xref later to maint).
> (merge df5be01669 ja/doc-markup-cleanup later to maint).
> (merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.24.0 are as follows:
>
> Alban Gruin (6):
> sequencer: update `total_nr' when adding an item to a todo list
> sequencer: update `done_nr' when skipping commands in a todo list
> sequencer: move the code writing total_nr on the disk to a new function
> rebase: fill `squash_onto' in get_replay_opts()
> sequencer: directly call pick_commits() from complete_action()
> sequencer: fix a memory leak in sequencer_continue()
>
> Alexandr Miloslavskiy (14):
> parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
> pathspec: add new function to parse file
> doc: reset: synchronize <pathspec> description
> reset: support the `--pathspec-from-file` option
> doc: commit: synchronize <pathspec> description
> commit: support the --pathspec-from-file option
> cmd_add: prepare for next patch
> add: support the --pathspec-from-file option
> doc: checkout: remove duplicate synopsis
> doc: checkout: fix broken text reference
> doc: checkout: synchronize <pathspec> description
> doc: restore: synchronize <pathspec> description
> checkout, restore: support the --pathspec-from-file option
> commit: forbid --pathspec-from-file --all
>
> Andreas Schwab (1):
> t7812: add missing redirects
>
> Andrei Rybak (1):
> INSTALL: use existing shell scripts as example
>
> Colin Stolley (1):
> packfile.c: speed up loading lots of packfiles
>
> Daniel Ferreira (2):
> diff: export diffstat interface
> built-in add -i: implement the `status` command
>
> Denton Liu (93):
> format-patch: replace erroneous and condition
> format-patch: use enum variables
> format-patch: teach --cover-from-description option
> rebase: hide --preserve-merges option
> t4108: replace create_file with test_write_lines
> t4108: remove git command upstream of pipe
> t4108: use `test_config` instead of `git config`
> t4108: demonstrate bug in apply
> apply: respect merge.conflictStyle in --3way
> submodule: teach set-url subcommand
> git-diff.txt: document return code of `--no-index`
> completion: learn to complete `git rebase --onto=`
> t4215: use helper function to check output
> argv-array: add space after `while`
> rev-list-options.txt: remove reference to --show-notes
> SubmittingPatches: use generic terms for hash
> pretty-formats.txt: use generic terms for hash
> SubmittingPatches: remove dq from commit reference
> completion: complete `tformat:` pretty format
> revision: make get_revision_mark() return const pointer
> pretty.c: inline initalize format_context
> t4205: cover `git log --reflog -z` blindspot
> pretty: add struct cmt_fmt_map::default_date_mode_type
> pretty: implement 'reference' format
> SubmittingPatches: use `--pretty=reference`
> pretty-options.txt: --notes accepts a ref instead of treeish
> t3206: remove spaces after redirect operators
> t3206: disable parameter substitution in heredoc
> t3206: s/expected/expect/
> t3206: range-diff compares logs with commit notes
> range-diff: output `## Notes ##` header
> range-diff: pass through --notes to `git log`
> format-patch: pass notes configuration to range-diff
> t0000: test multiple local assignment
> t: teach test_cmp_rev to accept ! for not-equals
> t5520: improve test style
> t5520: use sq for test case names
> t5520: let sed open its own input
> t5520: replace test -f with test-lib functions
> t5520: remove spaces after redirect operator
> t5520: use test_line_count where possible
> t5520: replace test -{n,z} with test-lib functions
> t5520: use test_cmp_rev where possible
> t5520: test single-line files by git with test_cmp
> t5520: don't put git in upstream of pipe
> t5520: replace $(cat ...) comparison with test_cmp
> t5520: remove redundant lines in test cases
> t5520: replace `! git` with `test_must_fail git`
> lib-bash.sh: move `then` onto its own line
> apply-one-time-sed.sh: modernize style
> t0014: remove git command upstream of pipe
> t0090: stop losing return codes of git commands
> t3301: stop losing return codes of git commands
> t3600: use test_line_count() where possible
> t3600: stop losing return codes of git commands
> t3600: comment on inducing SIGPIPE in `git rm`
> t4015: stop losing return codes of git commands
> t4015: use test_write_lines()
> t4138: stop losing return codes of git commands
> t5317: stop losing return codes of git commands
> t5317: use ! grep to check for no matching lines
> t5703: simplify one-time-sed generation logic
> t5703: stop losing return codes of git commands
> t7501: remove spaces after redirect operators
> t7501: stop losing return codes of git commands
> t7700: drop redirections to /dev/null
> t7700: remove spaces after redirect operators
> t7700: move keywords onto their own line
> t7700: s/test -f/test_path_is_file/
> doc: replace MARC links with lore.kernel.org
> RelNotes: replace Gmane with real Message-IDs
> doc: replace LKML link with lore.kernel.org
> t7700: consolidate code into test_no_missing_in_packs()
> t7700: consolidate code into test_has_duplicate_object()
> t7700: replace egrep with grep
> t7700: make references to SHA-1 generic
> t7700: stop losing return codes of git commands
> t3400: demonstrate failure with format.useAutoBase
> format-patch: fix indentation
> t4014: use test_config()
> format-patch: teach --no-base
> rebase: fix format.useAutoBase breakage
> t3206: fix incorrect test name
> range-diff: mark pointers as const
> range-diff: clear `other_arg` at end of function
> notes: rename to load_display_notes()
> notes: create init_display_notes() helper
> notes: extract logic into set_display_notes()
> format-patch: use --notes behavior for format.notes
> format-patch: move git_config() before repo_init_revisions()
> config/format.txt: clarify behavior of multiple format.notes
> notes: break set_display_notes() into smaller functions
> notes.h: fix typos in comment
>
> Derrick Stolee (22):
> test-tool: use 'read-graph' helper
> sparse-checkout: create builtin with 'list' subcommand
> sparse-checkout: create 'init' subcommand
> clone: add --sparse mode
> sparse-checkout: 'set' subcommand
> sparse-checkout: add '--stdin' option to set subcommand
> sparse-checkout: create 'disable' subcommand
> sparse-checkout: add 'cone' mode
> sparse-checkout: use hashmaps for cone patterns
> sparse-checkout: init and set in cone mode
> unpack-trees: hash less in cone mode
> unpack-trees: add progress to clear_ce_flags()
> sparse-checkout: sanitize for nested folders
> sparse-checkout: update working directory in-process
> sparse-checkout: use in-process update for disable subcommand
> sparse-checkout: write using lockfile
> sparse-checkout: cone mode should not interact with .gitignore
> sparse-checkout: update working directory in-process for 'init'
> sparse-checkout: check for dirty status
> progress: create GIT_PROGRESS_DELAY
> commit-graph: use start_delayed_progress()
> sparse-checkout: respect core.ignoreCase in cone mode
>
> Dimitriy Ryazantcev (1):
> l10n: minor case fix in 'git branch' '--unset-upstream' description
>
> Doan Tran Cong Danh (14):
> t3301: test diagnose messages for too few/many paramters
> notes: fix minimum number of parameters to "copy" subcommand
> t0028: eliminate non-standard usage of printf
> configure.ac: define ICONV_OMITS_BOM if necessary
> t3900: demonstrate git-rebase problem with multi encoding
> sequencer: reencode to utf-8 before arrange rebase's todo list
> sequencer: reencode revert/cherry-pick's todo list
> sequencer: reencode squashing commit's message
> sequencer: reencode old merge-commit message
> sequencer: reencode commit message for am/rebase --show-current-patch
> sequencer: handle rebase-merges for "onto" message
> date.c: switch to reentrant {gm,local}time_r
> archive-zip.c: switch to reentrant localtime_r
> mingw: use {gm,local}time_s as backend for {gm,local}time_r
>
> Dominic Jäger (1):
> merge-strategies: fix typo "reflected to" to "reflected in"
>
> Ed Maste (3):
> t4210: skip i18n tests that don't work on FreeBSD
> userdiff: remove empty subexpression from elixir regex
> sparse-checkout: improve OS ls compatibility
>
> Elia Pinto (1):
> kset.h, tar.h: add missing header guard to prevent multiple inclusion
>
> Elijah Newren (26):
> merge-recursive: clean up get_renamed_dir_portion()
> merge-recursive: fix merging a subdirectory into the root directory
> t604[236]: do not run setup in separate tests
> Documentation: fix a bunch of typos, both old and new
> Fix spelling errors in documentation outside of Documentation/
> git-filter-branch.txt: correct argument name typo
> hashmap: fix documentation misuses of -> versus .
> name-hash.c: remove duplicate word in comment
> t6024: modernize style
> Fix spelling errors in code comments
> Fix spelling errors in comments of testcases
> Fix spelling errors in names of tests
> Fix spelling errors in messages shown to users
> Fix spelling errors in test commands
> sha1dc: fix trivial comment spelling error
> multimail: fix a few simple spelling errors
> Fix spelling errors in no-longer-updated-from-upstream modules
> t3011: demonstrate directory traversal failures
> Revert "dir.c: make 'git-status --ignored' work within leading directories"
> dir: remove stray quote character in comment
> dir: exit before wildcard fall-through if there is no wildcard
> dir: break part of read_directory_recursive() out for reuse
> t3434: mark successful test as such
> dir: fix checks on common prefix directory
> dir: synchronize treat_leading_path() and read_directory_recursive()
> dir: consolidate similar code in treat_directory()
>
> Emily Shaffer (4):
> documentation: add tutorial for object walking
> myfirstcontrib: add 'psuh' to command-list.txt
> myfirstcontrib: add dependency installation step
> myfirstcontrib: hint to find gitgitgadget allower
>
> Erik Chen (1):
> fetch: add trace2 instrumentation
>
> Garima Singh (2):
> test-path-utils: offer to run a protectNTFS/protectHFS benchmark
> tests: add a helper to stress test argument quoting
>
> Hans Jerry Illikainen (4):
> gpg-interface: refactor the free-and-xmemdupz pattern
> gpg-interface: limit search for primary key fingerprint
> gpg-interface: prefer check_signature() for GPG verification
> grep: don't return an expression from pcre2_free()
>
> Hariom Verma (2):
> builtin/blame.c: constants into bit shift format
> git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
>
> Heba Waly (22):
> config: move documentation to config.h
> documentation: remove empty doc files
> diff: move doc to diff.h and diffcore.h
> dir: move doc to dir.h
> graph: move doc to graph.h and graph.c
> merge: move doc to ll-merge.h
> sha1-array: move doc to sha1-array.h
> remote: move doc to remote.h and refspec.h
> refs: move doc to refs.h
> attr: move doc to attr.h
> revision: move doc to revision.h
> pathspec: move doc to pathspec.h
> sigchain: move doc to sigchain.h
> cache: move doc to cache.h
> argv-array: move doc to argv-array.h
> credential: move doc to credential.h
> parse-options: add link to doc file in parse-options.h
> run-command: move doc to run-command.h
> trace: move doc to trace.h
> tree-walk: move doc to tree-walk.h
> submodule-config: move doc to submodule-config.h
> trace2: move doc to trace2.h
>
> James Coglan (13):
> graph: automatically track display width of graph lines
> graph: handle line padding in `graph_next_line()`
> graph: reuse `find_new_column_by_commit()`
> graph: reduce duplication in `graph_insert_into_new_columns()`
> graph: remove `mapping_idx` and `graph_update_width()`
> graph: extract logic for moving to GRAPH_PRE_COMMIT state
> graph: example of graph output that can be simplified
> graph: tidy up display of left-skewed merges
> graph: commit and post-merge lines for left-skewed merges
> graph: rename `new_mapping` to `old_mapping`
> graph: smooth appearance of collapsing edges on commit lines
> graph: flatten edges that fuse with their right neighbor
> graph: fix coloring of octopus dashes
>
> James Shubin (1):
> completion: tab-complete "git svn --recursive"
>
> Jean-Noël Avila (2):
> doc: remove non pure ASCII characters
> doc: indent multi-line items in list
>
> Jeff Hostetler (1):
> trace2: add region in clear_ce_flags
>
> Jeff King (44):
> parse_commit_buffer(): treat lookup_commit() failure as parse error
> parse_commit_buffer(): treat lookup_tree() failure as parse error
> parse_tag_buffer(): treat NULL tag pointer as parse error
> commit, tag: don't set parsed bit for parse failures
> fsck: stop checking commit->tree value
> fsck: stop checking commit->parent counts
> fsck: stop checking tag->tagged
> fsck: require an actual buffer for non-blobs
> fsck: unify object-name code
> fsck_describe_object(): build on our get_object_name() primitive
> fsck: use oids rather than objects for object_name API
> fsck: don't require object structs for display functions
> fsck: only provide oid/type in fsck_error callback
> fsck: only require an oid for skiplist functions
> fsck: don't require an object struct for report()
> fsck: accept an oid instead of a "struct blob" for fsck_blob()
> fsck: drop blob struct from fsck_finish()
> fsck: don't require an object struct for fsck_ident()
> fsck: don't require an object struct in verify_headers()
> fsck: rename vague "oid" local variables
> fsck: accept an oid instead of a "struct tag" for fsck_tag()
> fsck: accept an oid instead of a "struct commit" for fsck_commit()
> fsck: accept an oid instead of a "struct tree" for fsck_tree()
> hex: drop sha1_to_hex_r()
> pack-objects: avoid pointless oe_map_new_pack() calls
> hex: drop sha1_to_hex()
> send-pack: check remote ref status on pack-objects failure
> t9502: pass along all arguments in xss helper
> t/gitweb-lib.sh: drop confusing quotes
> t/gitweb-lib.sh: set $REQUEST_URI
> gitweb: escape URLs generated by href()
> rev-parse: make --show-toplevel without a worktree an error
> perf-lib: use a single filename for all measurement types
> t/perf: don't depend on Git.pm
> send-pack: use OBJECT_INFO_QUICK to check negative objects
> doc: recommend lore.kernel.org over public-inbox.org
> doc: replace public-inbox links with lore.kernel.org
> t9300: drop some useless uses of cat
> t9300: create marks files for double-import-marks test
> fast-import: tighten parsing of boolean command line options
> fast-import: stop creating leading directories for import-marks
> fast-import: delay creating leading directories for export-marks
> fast-import: disallow "feature export-marks" by default
> fast-import: disallow "feature import-marks" by default
>
> Johannes Schindelin (93):
> t1400: wrap setup code in test case
> git_path(): handle `.lock` files correctly
> vreportf(): avoid relying on stdio buffering
> update-index: optionally leave skip-worktree entries alone
> stash: handle staged changes in skip-worktree files correctly
> fetch: add the command-line option `--write-commit-graph`
> fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
> remote-curl: unbreak http.extraHeader with custom allocators
> Start to implement a built-in version of `git add --interactive`
> built-in add -i: implement the main loop
> built-in add -i: show unique prefixes of the commands
> built-in add -i: support `?` (prompt help)
> rebase-merges: move labels' whitespace mangling into `label_oid()`
> git svn: stop using `rebase --preserve-merges`
> mingw: demonstrate that all file handles are inherited by child processes
> mingw: work around incorrect standard handles
> mingw: spawned processes need to inherit only standard handles
> mingw: restrict file handle inheritance only on Windows 7 and later
> mingw: do set `errno` correctly when trying to restrict handle inheritance
> add-interactive: make sure to release `rev.prune_data`
> built-in add -i: allow filtering the modified files list
> built-in add -i: prepare for multi-selection commands
> built-in add -i: implement the `update` command
> built-in add -i: re-implement `revert` in C
> built-in add -i: re-implement `add-untracked` in C
> built-in add -i: implement the `patch` command
> built-in add -i: re-implement the `diff` command
> built-in add -i: offer the `quit` command
> pkt-line: fix a typo
> mingw: forbid translating ERROR_SUCCESS to an errno value
> clone --recurse-submodules: prevent name squatting on Windows
> mingw: disallow backslash characters in tree objects' file names
> path.c: document the purpose of `is_ntfs_dotgit()`
> is_ntfs_dotgit(): only verify the leading segment
> path: safeguard `.git` against NTFS Alternate Streams Accesses
> is_ntfs_dotgit(): speed it up
> mingw: fix quoting of arguments
> path: also guard `.gitmodules` against NTFS Alternate Data Streams
> protect_ntfs: turn on NTFS protection by default
> Disallow dubiously-nested submodule git directories
> quote-stress-test: accept arguments to test via the command-line
> t6130/t9350: prepare for stringent Win32 path validation
> quote-stress-test: allow skipping some trials
> unpack-trees: let merged_entry() pass through do_add_entry()'s errors
> mingw: refuse to access paths with illegal characters
> quote-stress-test: offer to test quoting arguments for MSYS2 sh
> mingw: refuse to access paths with trailing spaces or periods
> mingw: handle `subst`-ed "DOS drives"
> Git 2.14.6
> Git 2.15.4
> test-drop-caches: use `has_dos_drive_prefix()`
> Git 2.16.6
> Git 2.17.3
> Git 2.18.2
> Git 2.19.3
> t7415: adjust test for dubiously-nested submodule gitdirs for v2.20.x
> Git 2.20.2
> mingw: detect when MSYS2's sh is to be spawned more robustly
> mingw: use MSYS2 quoting even when spawning shell scripts
> mingw: fix quoting of empty arguments for `sh`
> t7415: drop v2.20.x-specific work-around
> mingw: sh arguments need quoting in more circumstances
> Git 2.21.1
> Git 2.22.2
> Git 2.23.1
> Git 2.24.1
> t3701: add a test for advanced split-hunk editing
> t3701: avoid depending on the TTY prerequisite
> t3701: add a test for the different `add -p` prompts
> t3701: verify the shown messages when nothing can be added
> t3701: verify that the diff.algorithm config setting is handled
> git add -p: use non-zero exit code when the diff generation failed
> apply --allow-overlap: fix a corner case
> t3404: fix indentation
> built-in add -i: start implementing the `patch` functionality in C
> built-in add -i: wire up the new C code for the `patch` command
> built-in add -p: show colored hunks by default
> built-in add -p: adjust hunk headers as needed
> built-in add -p: color the prompt and the help text
> built-in add -p: offer a helpful error message when hunk navigation failed
> built-in add -p: support multi-file diffs
> built-in add -p: handle deleted empty files
> built-in app -p: allow selecting a mode change as a "hunk"
> built-in add -p: show different prompts for mode changes and deletions
> built-in add -p: implement the hunk splitting feature
> built-in add -p: coalesce hunks after splitting them
> strbuf: add a helper function to call the editor "on an strbuf"
> built-in add -p: implement hunk editing
> built-in add -p: implement the 'g' ("goto") command
> built-in add -p: implement the '/' ("search regex") command
> built-in add -p: implement the 'q' ("quit") command
> built-in add -p: only show the applicable parts of the help text
> built-in add -p: show helpful hint when nothing can be staged
>
> Jonathan Nieder (3):
> submodule: reject submodule.update = !command in .gitmodules
> fsck: reject submodule.update = !command in .gitmodules
> submodule: defend against submodule.update = !command in .gitmodules
>
> Jonathan Tan (6):
> fetch-pack: write fetched refs to .promisor
> fetch: remove fetch_if_missing=0
> clone: remove fetch_if_missing=0
> promisor-remote: remove fetch_if_missing=0
> Doc: explain submodule.alternateErrorStrategy
> submodule--helper: advise on fatal alternate error
>
> Josh Holland (1):
> userdiff: support Python async functions
>
> Junio C Hamano (13):
> doc: am --show-current-patch gives an entire e-mail message
> The first batch post 2.24 cycle
> fsmonitor: do not compare bitmap size with size of split index
> ci(osx): update homebrew-cask repository with less noise
> rebase -i: finishing touches to --reset-author-date
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> Makefile: drop GEN_HDRS
> The sixth batch
> dir.c: use st_add3() for allocation size
> Git 2.25-rc0
>
> Kevin Willford (1):
> fsmonitor: fix watchman integration
>
> Manish Goregaokar (2):
> doc: document 'git submodule status --cached'
> submodule: fix 'submodule status' when called from a subdirectory
>
> Martin Ågren (1):
> t7004: check existence of correct tag
>
> Matthew Rogers (1):
> rebase -r: let `label` generate safer labels
>
> Mihail Atanassov (1):
> Documentation/git-bisect.txt: add --no-ff to merge command
>
> Mike Hommey (2):
> revision: clear the topo-walk flags in reset_revision_walk
> revision: free topo_walk_info before creating a new one in init_topo_walk
>
> Miriam Rubio (1):
> clone: rename static function `dir_exists()`.
>
> Nathan Stocks (1):
> t: fix typo in test descriptions
>
> Naveen Nathan (1):
> doc: improve readability of --rebase-merges in git-rebase
>
> Nika Layzell (1):
> reset: parse rev as tree-ish in patch mode
>
> Philip Oakley (1):
> Doc: Bundle file usage
>
> Philippe Blain (4):
> help: add gitsubmodules to the list of guides
> worktree: teach "add" to ignore submodule.recurse config
> doc: mention that 'git submodule update' fetches missing commits
> gitmodules: link to gitsubmodules guide
>
> Phillip Wood (7):
> t3404: remove unnecessary subshell
> t3404: set $EDITOR in subshell
> t3404: remove uneeded calls to set_fake_editor
> sequencer.h fix placement of #endif
> move run_commit_hook() to libgit and use it there
> sequencer: run post-commit hook
> sequencer: fix empty commit check when amending
>
> Prarit Bhargava (3):
> t6006: use test-lib.sh definitions
> t4203: use test-lib.sh definitions
> pretty: add "%aL" etc. to show local-part of email addresses
>
> Pratyush Yadav (1):
> git-shortlog.txt: include commit limiting options
>
> Ralf Thielow (1):
> fetch.c: fix typo in a warning message
>
> René Scharfe (32):
> trace2: add dots directly to strbuf in perf_fmt_prepare()
> utf8: use skip_iprefix() in same_utf_encoding()
> convert: use skip_iprefix() in validate_encoding()
> mingw: use COPY_ARRAY for copying array
> parse-options: avoid arithmetic on pointer that's potentially NULL
> pretty: provide short date format
> fetch: use skip_prefix() instead of starts_with()
> fmt-merge-msg: use skip_prefix() instead of starts_with()
> shell: use skip_prefix() instead of starts_with()
> push: use skip_prefix() instead of starts_with()
> name-rev: use skip_prefix() instead of starts_with()
> run-command: use prepare_git_cmd() in prepare_cmd()
> t1512: use test_line_count
> t1410: use test_line_count
> t1400: use test_must_be_empty
> test: use test_must_be_empty F instead of test -z $(cat F)
> test: use test_must_be_empty F instead of test_cmp empty F
> t9300: don't create unused file
> t7811: don't create unused file
> xdiff: unignore changes in function context
> name-rev: use strbuf_strip_suffix() in get_rev_name()
> commit: use strbuf_add() to add a length-limited string
> patch-id: use oid_to_hex() to print multiple object IDs
> archive-zip: use enum for compression method
> t4256: don't create unused file
> t7004: don't create unused file
> refs: pass NULL to refs_read_ref_full() because object ID is not needed
> remote: pass NULL to read_ref_full() because object ID is not needed
> t3501: don't create unused file
> t5580: don't create unused file
> t6030: don't create unused file
> t4015: improve coverage of function context test
>
> Robin H. Johnson (3):
> bundle: framework for options before bundle file
> bundle-create: progress output control
> bundle-verify: add --quiet
>
> Rohit Ashiwal (6):
> rebase -i: add --ignore-whitespace flag
> sequencer: allow callers of read_author_script() to ignore fields
> rebase -i: support --committer-date-is-author-date
> sequencer: rename amend_author to author_to_rename
> rebase -i: support --ignore-date
> rebase: add --reset-author-date
>
> Ruud van Asseldonk (1):
> t5150: skip request-pull test if Perl is disabled
>
> SZEDER Gábor (29):
> Documentation: mention more worktree-specific exceptions
> path.c: clarify trie_find()'s in-code comment
> path.c: mark 'logs/HEAD' in 'common_list' as file
> path.c: clarify two field names in 'struct common_dir'
> path.c: don't call the match function without value in trie_find()
> builtin/commit-graph.c: remove subcommand-less usage string
> builtin/blame.c: remove '--indent-heuristic' from usage string
> test-lib: don't check prereqs of test cases that won't be run anyway
> t6120-describe: correct test repo history graph in comment
> builtin/unpack-objects.c: show throughput progress
> tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
> t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
> sequencer: don't re-read todo for revert and cherry-pick
> test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
> ci: build Git with GCC 9 in the 'osx-gcc' build job
> t9300-fast-import: store the PID in a variable instead of pidfile
> t9300-fast-import: don't hang if background fast-import exits too early
> t6120-describe: modernize the 'check_describe' helper
> name-rev: avoid unnecessary cast in name_ref()
> name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
> t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
> name-rev: extract creating/updating a 'struct name_rev' into a helper
> name-rev: pull out deref handling from the recursion
> name-rev: restructure parsing commits and applying date cutoff
> name-rev: restructure creating/updating 'struct rev_name' instances
> name-rev: drop name_rev()'s 'generation' and 'distance' parameters
> name-rev: use 'name->tip_name' instead of 'tip_name'
> name-rev: eliminate recursion in name_rev()
> name-rev: cleanup name_ref()
>
> Slavica Đukić (3):
> built-in add -i: color the header in the `status` command
> built-in add -i: use color in the main loop
> built-in add -i: implement the `help` command
>
> Tanushree Tumane (2):
> bisect--helper: avoid use-after-free
> bisect--helper: convert `*_warning` char pointers to char arrays.
>
> Thomas Gummerer (1):
> stash: make sure we have a valid index before writing it
>
> Todd Zullinger (1):
> t7812: expect failure for grep -i with invalid UTF-8 data
>
> Utsav Shah (1):
> unpack-trees: skip stat on fsmonitor-valid files
>
> William Baker (6):
> midx: add MIDX_PROGRESS flag
> midx: add progress to write_midx_file
> midx: add progress to expire_midx_packs
> midx: honor the MIDX_PROGRESS flag in verify_midx_file
> midx: honor the MIDX_PROGRESS flag in midx_repack
> multi-pack-index: add [--[no-]progress] option.
>
> brian m. carlson (16):
> t/oid-info: allow looking up hash algorithm name
> t/oid-info: add empty tree and empty blob values
> rev-parse: add a --show-object-format option
> t1305: avoid comparing extensions
> t3429: remove SHA1 annotation
> t4010: abstract away SHA-1-specific constants
> t4011: abstract away SHA-1-specific constants
> t4015: abstract away SHA-1-specific constants
> t4027: make hash-size independent
> t4034: abstract away SHA-1-specific constants
> t4038: abstract away SHA-1 specific constants
> t4039: abstract away SHA-1-specific constants
> t4044: update test to work with SHA-256
> t4045: make hash-size independent
> t4048: abstract away SHA-1-specific constants
> t9001: avoid including non-trailing NUL bytes in variables
>
> r.burenkov (1):
> git-p4: honor lfs.storage configuration variable
>
> ryenus (1):
> fix-typo: consecutive-word duplications
>
> Łukasz Niemier (1):
> userdiff: add Elixir to supported userdiff languages
>
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.25.0-rc0
@ 2019-12-25 21:44 2% Junio C Hamano
2019-12-26 0:33 0% ` Denton Liu
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-12-25 21:44 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.25.0-rc0 is now available for
testing at the usual places. It is comprised of 531 non-merge
commits since v2.24.0, contributed by 61 people, 24 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.25.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.24.0 are as follows.
Welcome to the Git development community!
Colin Stolley, Doan Tran Cong Danh, Dominic Jäger, Erik Chen,
Hariom Verma, Heba Waly, James Coglan, James Shubin, Josh
Holland, Łukasz Niemier, Manish Goregaokar, Matthew Rogers,
Mihail Atanassov, Miriam Rubio, Nathan Stocks, Naveen Nathan,
Nika Layzell, Philippe Blain, Prarit Bhargava, r.burenkov,
Ruud van Asseldonk, ryenus, Slavica Đukić, and Utsav Shah.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alban Gruin, Alexandr Miloslavskiy, Andreas Schwab, Andrei Rybak,
brian m. carlson, Daniel Ferreira, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Ed Maste, Elia Pinto, Elijah Newren, Emily
Shaffer, Garima Singh, Hans Jerry Illikainen, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Johannes Schindelin, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Kevin Willford, Martin Ågren,
Mike Hommey, Philip Oakley, Phillip Wood, Pratyush Yadav,
Ralf Thielow, René Scharfe, Robin H. Johnson, Rohit Ashiwal,
SZEDER Gábor, Tanushree Tumane, Thomas Gummerer, Todd Zullinger,
and William Baker.
----------------------------------------------------------------
Git 2.25 Release Notes (draft)
==============================
Updates since v2.24
-------------------
Backward compatibility notes
UI, Workflows & Features
* A tutorial on object enumeration has been added.
* The branch description ("git branch --edit-description") has been
used to fill the body of the cover letters by the format-patch
command; this has been enhanced so that the subject can also be
filled.
* "git rebase --preserve-merges" has been marked as deprecated; this
release stops advertising it in the "git rebase -h" output.
* The code to generate multi-pack index learned to show (or not to
show) progress indicators.
* "git apply --3way" learned to honor merge.conflictStyle
configuration variable, like merges would.
* The custom format for "git log --format=<format>" learned the l/L
placeholder that is similar to e/E that fills in the e-mail
address, but only the local part on the left side of '@'.
* Documentation pages for "git shortlog" now list commit limiting
options explicitly.
* The patterns to detect function boundary for Elixir language has
been added.
* The completion script (in contrib/) learned that the "--onto"
option of "git rebase" can take its argument as the value of the
option.
* The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.
* "git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.
* "git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.
* A few commands learned to take the pathspec from the standard input
or a named file, instead of taking it as the command line
arguments, with the "--pathspec-from-file" option.
* "git rebase -i" learned a few options that are known by "git
rebase" proper.
* "git submodule" learned a subcommand "set-url".
* "git log" family learned "--pretty=reference" that gives the name
of a commit in the format that is often used to refer to it in log
messages.
* The interaction between "git clone --recurse-submodules" and
alternate object store was ill-designed. The documentation and
code have been taught to make more clear recommendations when the
users see failures.
* Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.
Performance, Internal Implementation, Development Support etc.
* Debugging support for lazy cloning has been a bit improved.
* Move the definition of a set of bitmask constants from 0ctal
literal to (1U<<count) notation.
* Test updates to prepare for SHA-2 transition continues.
* Crufty code and logic accumulated over time around the object
parsing and low-level object access used in "git fsck" have been
cleaned up.
* The implementation of "git log --graph" got refactored and then its
output got simplified.
* Follow recent push to move API docs from Documentation/ to header
files and update config.h
* "git bundle" has been taught to use the parse options API. "git
bundle verify" learned "--quiet" and "git bundle create" learned
options to control the progress output.
* Handling of commit objects that use non UTF-8 encoding during
"rebase -i" has been improved.
* The beginning of rewriting "git add -i" in C.
* A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
* The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
* We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently. The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.
* Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.
* Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.
* Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.
* PerfTest fix to avoid stale result mixed up with the latest round
of test results.
* Hide lower-level verify_signed-buffer() API as a pure helper to
implement the public check_signature() function, in order to
encourage new callers to use the correct and more strict
validation.
* Unnecessary reading of state variables back from the disk during
sequencer operation has been reduced.
* The code has been made to avoid gmtime() and localtime() and prefer
their reentrant counterparts.
* The effort to reimplement "git add -i" in C continues.
* In a repository with many packfiles, the cost of the procedure that
avoids registering the same packfile twice was unnecessarily high
by using an inefficient search algorithm, which has been corrected.
* Redo "git name-rev" to avoid recursive calls.
Fixes since v2.24
-----------------
* "rebase -i" ceased to run post-commit hook by mistake in an earlier
update, which has been corrected.
* "git notes copy $original" ought to copy the notes attached to the
original object to HEAD, but a mistaken tightening to command line
parameter validation made earlier disabled that feature by mistake.
* When all files from some subdirectory were renamed to the root
directory, the directory rename heuristics would fail to detect that
as a rename/merge of the subdirectory to the root directory, which has
been corrected.
* Code clean-up and a bugfix in the logic used to tell worktree local
and repository global refs apart.
(merge f45f88b2e4 sg/dir-trie-fixes later to maint).
* "git stash save" in a working tree that is sparsely checked out
mistakenly removed paths that are outside the area of interest.
(merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
* "git rev-parse --git-path HEAD.lock" did not give the right path
when run in a secondary worktree.
(merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
* "git merge --no-commit" needs "--no-ff" if you do not want to move
HEAD, which has been corrected in the manual page for "git bisect".
(merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
* "git worktree add" internally calls "reset --hard" that should not
descend into submodules, even when submodule.recurse configuration
is set, but it was affected. This has been corrected.
(merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
* Messages from die() etc. can be mixed up from multiple processes
without even line buffering on Windows, which has been worked
around.
(merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
* HTTP transport had possible allocator/deallocator mismatch, which
has been corrected.
* The watchman integration for fsmonitor was racy, which has been
corrected to be more conservative.
(merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
* Fetching from multiple remotes into the same repository in parallel
had a bad interaction with the recent change to (optionally) update
the commit-graph after a fetch job finishes, as these parallel
fetches compete with each other. Which has been corrected.
* Recent update to "git stash pop" made the command empty the index
when run with the "--quiet" option, which has been corrected.
* "git fetch" codepath had a big "do not lazily fetch missing objects
when I ask if something exists" switch. This has been corrected by
marking the "does this thing exist?" calls with "if not please do not
lazily fetch it" flag.
* Test update to avoid wasted cycles.
(merge e0316695ec sg/skip-skipped-prereq later to maint).
* Error handling after "git push" finishes sending the packdata and
waits for the response to the remote side has been improved.
(merge ad7a403268 jk/send-pack-remote-failure later to maint).
* Some codepaths in "gitweb" that forgot to escape URLs generated
based on end-user input have been corrected.
(merge a376e37b2c jk/gitweb-anti-xss later to maint).
* CI jobs for macOS has been made less chatty when updating perforce
package used during testing.
(merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
* "git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object. It now shows the throughput as
well.
(merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
* The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.
* The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.
(merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
* "git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.
(merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
* "git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.
* "git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.
(merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
* The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.
(merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
* TravisCI update.
(merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
* While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.
(merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
* Work around a issue where a FD that is left open when spawning a
child process and is kept open in the child can interfere with the
operation in the parent process on Windows.
* One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.
* "git rebase" did not work well when format.useAutoBase
configuration variable is set, which has been corrected.
* The "diff" machinery learned not to lose added/removed blank lines
in the context when --ignore-blank-lines and --function-context are
used at the same time.
(merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint).
* The test on "fast-import" used to get stuck when "fast-import" died
in the middle.
(merge 0d9b0d7885 sg/t9300-robustify later to maint).
* "git format-patch" can take a set of configured format.notes values
to specify which notes refs to use in the log message part of the
output. The behaviour of this was not consistent with multiple
--notes command line options, which has been corrected.
(merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint).
* "git p4" used to ignore lfs.storage configuration variable, which
has been corrected.
(merge ea94b16fb8 rb/p4-lfs later to maint).
* Assorted fixes to the directory traversal API.
(merge 6836d2fe06 en/fill-directory-fixes later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
(merge 8b656572ca sg/commit-graph-usage-fix later to maint).
(merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
(merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
(merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
(merge 270de6acbe en/t6024-style later to maint).
(merge 14c4776d75 ns/test-desc-typofix later to maint).
(merge 68d40f30c4 dj/typofix-merge-strat later to maint).
(merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
(merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
(merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
(merge b018719927 ma/t7004 later to maint).
(merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
(merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
(merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
(merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
(merge 2a02262078 dl/t5520-cleanup later to maint).
(merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
(merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
(merge 3eae30e464 jk/lore-is-the-archive later to maint).
(merge 14b7664df8 dl/lore-is-the-archive later to maint).
(merge 0e40a73a4c po/bundle-doc-clonable later to maint).
(merge e714b898c6 as/t7812-missing-redirects-fix later to maint).
(merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint).
(merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint).
(merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint).
(merge 11de8dd7ef dr/branch-usage-casefix later to maint).
(merge e05e8cf074 rs/archive-zip-code-cleanup later to maint).
(merge 147ee35558 rs/commit-export-env-simplify later to maint).
(merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint).
(merge 51a0a4ed95 mr/bisect-use-after-free later to maint).
(merge cc2bd5c45d pb/submodule-doc-xref later to maint).
(merge df5be01669 ja/doc-markup-cleanup later to maint).
(merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint).
----------------------------------------------------------------
Changes since v2.24.0 are as follows:
Alban Gruin (6):
sequencer: update `total_nr' when adding an item to a todo list
sequencer: update `done_nr' when skipping commands in a todo list
sequencer: move the code writing total_nr on the disk to a new function
rebase: fill `squash_onto' in get_replay_opts()
sequencer: directly call pick_commits() from complete_action()
sequencer: fix a memory leak in sequencer_continue()
Alexandr Miloslavskiy (14):
parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
pathspec: add new function to parse file
doc: reset: synchronize <pathspec> description
reset: support the `--pathspec-from-file` option
doc: commit: synchronize <pathspec> description
commit: support the --pathspec-from-file option
cmd_add: prepare for next patch
add: support the --pathspec-from-file option
doc: checkout: remove duplicate synopsis
doc: checkout: fix broken text reference
doc: checkout: synchronize <pathspec> description
doc: restore: synchronize <pathspec> description
checkout, restore: support the --pathspec-from-file option
commit: forbid --pathspec-from-file --all
Andreas Schwab (1):
t7812: add missing redirects
Andrei Rybak (1):
INSTALL: use existing shell scripts as example
Colin Stolley (1):
packfile.c: speed up loading lots of packfiles
Daniel Ferreira (2):
diff: export diffstat interface
built-in add -i: implement the `status` command
Denton Liu (93):
format-patch: replace erroneous and condition
format-patch: use enum variables
format-patch: teach --cover-from-description option
rebase: hide --preserve-merges option
t4108: replace create_file with test_write_lines
t4108: remove git command upstream of pipe
t4108: use `test_config` instead of `git config`
t4108: demonstrate bug in apply
apply: respect merge.conflictStyle in --3way
submodule: teach set-url subcommand
git-diff.txt: document return code of `--no-index`
completion: learn to complete `git rebase --onto=`
t4215: use helper function to check output
argv-array: add space after `while`
rev-list-options.txt: remove reference to --show-notes
SubmittingPatches: use generic terms for hash
pretty-formats.txt: use generic terms for hash
SubmittingPatches: remove dq from commit reference
completion: complete `tformat:` pretty format
revision: make get_revision_mark() return const pointer
pretty.c: inline initalize format_context
t4205: cover `git log --reflog -z` blindspot
pretty: add struct cmt_fmt_map::default_date_mode_type
pretty: implement 'reference' format
SubmittingPatches: use `--pretty=reference`
pretty-options.txt: --notes accepts a ref instead of treeish
t3206: remove spaces after redirect operators
t3206: disable parameter substitution in heredoc
t3206: s/expected/expect/
t3206: range-diff compares logs with commit notes
range-diff: output `## Notes ##` header
range-diff: pass through --notes to `git log`
format-patch: pass notes configuration to range-diff
t0000: test multiple local assignment
t: teach test_cmp_rev to accept ! for not-equals
t5520: improve test style
t5520: use sq for test case names
t5520: let sed open its own input
t5520: replace test -f with test-lib functions
t5520: remove spaces after redirect operator
t5520: use test_line_count where possible
t5520: replace test -{n,z} with test-lib functions
t5520: use test_cmp_rev where possible
t5520: test single-line files by git with test_cmp
t5520: don't put git in upstream of pipe
t5520: replace $(cat ...) comparison with test_cmp
t5520: remove redundant lines in test cases
t5520: replace `! git` with `test_must_fail git`
lib-bash.sh: move `then` onto its own line
apply-one-time-sed.sh: modernize style
t0014: remove git command upstream of pipe
t0090: stop losing return codes of git commands
t3301: stop losing return codes of git commands
t3600: use test_line_count() where possible
t3600: stop losing return codes of git commands
t3600: comment on inducing SIGPIPE in `git rm`
t4015: stop losing return codes of git commands
t4015: use test_write_lines()
t4138: stop losing return codes of git commands
t5317: stop losing return codes of git commands
t5317: use ! grep to check for no matching lines
t5703: simplify one-time-sed generation logic
t5703: stop losing return codes of git commands
t7501: remove spaces after redirect operators
t7501: stop losing return codes of git commands
t7700: drop redirections to /dev/null
t7700: remove spaces after redirect operators
t7700: move keywords onto their own line
t7700: s/test -f/test_path_is_file/
doc: replace MARC links with lore.kernel.org
RelNotes: replace Gmane with real Message-IDs
doc: replace LKML link with lore.kernel.org
t7700: consolidate code into test_no_missing_in_packs()
t7700: consolidate code into test_has_duplicate_object()
t7700: replace egrep with grep
t7700: make references to SHA-1 generic
t7700: stop losing return codes of git commands
t3400: demonstrate failure with format.useAutoBase
format-patch: fix indentation
t4014: use test_config()
format-patch: teach --no-base
rebase: fix format.useAutoBase breakage
t3206: fix incorrect test name
range-diff: mark pointers as const
range-diff: clear `other_arg` at end of function
notes: rename to load_display_notes()
notes: create init_display_notes() helper
notes: extract logic into set_display_notes()
format-patch: use --notes behavior for format.notes
format-patch: move git_config() before repo_init_revisions()
config/format.txt: clarify behavior of multiple format.notes
notes: break set_display_notes() into smaller functions
notes.h: fix typos in comment
Derrick Stolee (22):
test-tool: use 'read-graph' helper
sparse-checkout: create builtin with 'list' subcommand
sparse-checkout: create 'init' subcommand
clone: add --sparse mode
sparse-checkout: 'set' subcommand
sparse-checkout: add '--stdin' option to set subcommand
sparse-checkout: create 'disable' subcommand
sparse-checkout: add 'cone' mode
sparse-checkout: use hashmaps for cone patterns
sparse-checkout: init and set in cone mode
unpack-trees: hash less in cone mode
unpack-trees: add progress to clear_ce_flags()
sparse-checkout: sanitize for nested folders
sparse-checkout: update working directory in-process
sparse-checkout: use in-process update for disable subcommand
sparse-checkout: write using lockfile
sparse-checkout: cone mode should not interact with .gitignore
sparse-checkout: update working directory in-process for 'init'
sparse-checkout: check for dirty status
progress: create GIT_PROGRESS_DELAY
commit-graph: use start_delayed_progress()
sparse-checkout: respect core.ignoreCase in cone mode
Dimitriy Ryazantcev (1):
l10n: minor case fix in 'git branch' '--unset-upstream' description
Doan Tran Cong Danh (14):
t3301: test diagnose messages for too few/many paramters
notes: fix minimum number of parameters to "copy" subcommand
t0028: eliminate non-standard usage of printf
configure.ac: define ICONV_OMITS_BOM if necessary
t3900: demonstrate git-rebase problem with multi encoding
sequencer: reencode to utf-8 before arrange rebase's todo list
sequencer: reencode revert/cherry-pick's todo list
sequencer: reencode squashing commit's message
sequencer: reencode old merge-commit message
sequencer: reencode commit message for am/rebase --show-current-patch
sequencer: handle rebase-merges for "onto" message
date.c: switch to reentrant {gm,local}time_r
archive-zip.c: switch to reentrant localtime_r
mingw: use {gm,local}time_s as backend for {gm,local}time_r
Dominic Jäger (1):
merge-strategies: fix typo "reflected to" to "reflected in"
Ed Maste (3):
t4210: skip i18n tests that don't work on FreeBSD
userdiff: remove empty subexpression from elixir regex
sparse-checkout: improve OS ls compatibility
Elia Pinto (1):
kset.h, tar.h: add missing header guard to prevent multiple inclusion
Elijah Newren (26):
merge-recursive: clean up get_renamed_dir_portion()
merge-recursive: fix merging a subdirectory into the root directory
t604[236]: do not run setup in separate tests
Documentation: fix a bunch of typos, both old and new
Fix spelling errors in documentation outside of Documentation/
git-filter-branch.txt: correct argument name typo
hashmap: fix documentation misuses of -> versus .
name-hash.c: remove duplicate word in comment
t6024: modernize style
Fix spelling errors in code comments
Fix spelling errors in comments of testcases
Fix spelling errors in names of tests
Fix spelling errors in messages shown to users
Fix spelling errors in test commands
sha1dc: fix trivial comment spelling error
multimail: fix a few simple spelling errors
Fix spelling errors in no-longer-updated-from-upstream modules
t3011: demonstrate directory traversal failures
Revert "dir.c: make 'git-status --ignored' work within leading directories"
dir: remove stray quote character in comment
dir: exit before wildcard fall-through if there is no wildcard
dir: break part of read_directory_recursive() out for reuse
t3434: mark successful test as such
dir: fix checks on common prefix directory
dir: synchronize treat_leading_path() and read_directory_recursive()
dir: consolidate similar code in treat_directory()
Emily Shaffer (4):
documentation: add tutorial for object walking
myfirstcontrib: add 'psuh' to command-list.txt
myfirstcontrib: add dependency installation step
myfirstcontrib: hint to find gitgitgadget allower
Erik Chen (1):
fetch: add trace2 instrumentation
Garima Singh (2):
test-path-utils: offer to run a protectNTFS/protectHFS benchmark
tests: add a helper to stress test argument quoting
Hans Jerry Illikainen (4):
gpg-interface: refactor the free-and-xmemdupz pattern
gpg-interface: limit search for primary key fingerprint
gpg-interface: prefer check_signature() for GPG verification
grep: don't return an expression from pcre2_free()
Hariom Verma (2):
builtin/blame.c: constants into bit shift format
git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
Heba Waly (22):
config: move documentation to config.h
documentation: remove empty doc files
diff: move doc to diff.h and diffcore.h
dir: move doc to dir.h
graph: move doc to graph.h and graph.c
merge: move doc to ll-merge.h
sha1-array: move doc to sha1-array.h
remote: move doc to remote.h and refspec.h
refs: move doc to refs.h
attr: move doc to attr.h
revision: move doc to revision.h
pathspec: move doc to pathspec.h
sigchain: move doc to sigchain.h
cache: move doc to cache.h
argv-array: move doc to argv-array.h
credential: move doc to credential.h
parse-options: add link to doc file in parse-options.h
run-command: move doc to run-command.h
trace: move doc to trace.h
tree-walk: move doc to tree-walk.h
submodule-config: move doc to submodule-config.h
trace2: move doc to trace2.h
James Coglan (13):
graph: automatically track display width of graph lines
graph: handle line padding in `graph_next_line()`
graph: reuse `find_new_column_by_commit()`
graph: reduce duplication in `graph_insert_into_new_columns()`
graph: remove `mapping_idx` and `graph_update_width()`
graph: extract logic for moving to GRAPH_PRE_COMMIT state
graph: example of graph output that can be simplified
graph: tidy up display of left-skewed merges
graph: commit and post-merge lines for left-skewed merges
graph: rename `new_mapping` to `old_mapping`
graph: smooth appearance of collapsing edges on commit lines
graph: flatten edges that fuse with their right neighbor
graph: fix coloring of octopus dashes
James Shubin (1):
completion: tab-complete "git svn --recursive"
Jean-Noël Avila (2):
doc: remove non pure ASCII characters
doc: indent multi-line items in list
Jeff Hostetler (1):
trace2: add region in clear_ce_flags
Jeff King (44):
parse_commit_buffer(): treat lookup_commit() failure as parse error
parse_commit_buffer(): treat lookup_tree() failure as parse error
parse_tag_buffer(): treat NULL tag pointer as parse error
commit, tag: don't set parsed bit for parse failures
fsck: stop checking commit->tree value
fsck: stop checking commit->parent counts
fsck: stop checking tag->tagged
fsck: require an actual buffer for non-blobs
fsck: unify object-name code
fsck_describe_object(): build on our get_object_name() primitive
fsck: use oids rather than objects for object_name API
fsck: don't require object structs for display functions
fsck: only provide oid/type in fsck_error callback
fsck: only require an oid for skiplist functions
fsck: don't require an object struct for report()
fsck: accept an oid instead of a "struct blob" for fsck_blob()
fsck: drop blob struct from fsck_finish()
fsck: don't require an object struct for fsck_ident()
fsck: don't require an object struct in verify_headers()
fsck: rename vague "oid" local variables
fsck: accept an oid instead of a "struct tag" for fsck_tag()
fsck: accept an oid instead of a "struct commit" for fsck_commit()
fsck: accept an oid instead of a "struct tree" for fsck_tree()
hex: drop sha1_to_hex_r()
pack-objects: avoid pointless oe_map_new_pack() calls
hex: drop sha1_to_hex()
send-pack: check remote ref status on pack-objects failure
t9502: pass along all arguments in xss helper
t/gitweb-lib.sh: drop confusing quotes
t/gitweb-lib.sh: set $REQUEST_URI
gitweb: escape URLs generated by href()
rev-parse: make --show-toplevel without a worktree an error
perf-lib: use a single filename for all measurement types
t/perf: don't depend on Git.pm
send-pack: use OBJECT_INFO_QUICK to check negative objects
doc: recommend lore.kernel.org over public-inbox.org
doc: replace public-inbox links with lore.kernel.org
t9300: drop some useless uses of cat
t9300: create marks files for double-import-marks test
fast-import: tighten parsing of boolean command line options
fast-import: stop creating leading directories for import-marks
fast-import: delay creating leading directories for export-marks
fast-import: disallow "feature export-marks" by default
fast-import: disallow "feature import-marks" by default
Johannes Schindelin (93):
t1400: wrap setup code in test case
git_path(): handle `.lock` files correctly
vreportf(): avoid relying on stdio buffering
update-index: optionally leave skip-worktree entries alone
stash: handle staged changes in skip-worktree files correctly
fetch: add the command-line option `--write-commit-graph`
fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
remote-curl: unbreak http.extraHeader with custom allocators
Start to implement a built-in version of `git add --interactive`
built-in add -i: implement the main loop
built-in add -i: show unique prefixes of the commands
built-in add -i: support `?` (prompt help)
rebase-merges: move labels' whitespace mangling into `label_oid()`
git svn: stop using `rebase --preserve-merges`
mingw: demonstrate that all file handles are inherited by child processes
mingw: work around incorrect standard handles
mingw: spawned processes need to inherit only standard handles
mingw: restrict file handle inheritance only on Windows 7 and later
mingw: do set `errno` correctly when trying to restrict handle inheritance
add-interactive: make sure to release `rev.prune_data`
built-in add -i: allow filtering the modified files list
built-in add -i: prepare for multi-selection commands
built-in add -i: implement the `update` command
built-in add -i: re-implement `revert` in C
built-in add -i: re-implement `add-untracked` in C
built-in add -i: implement the `patch` command
built-in add -i: re-implement the `diff` command
built-in add -i: offer the `quit` command
pkt-line: fix a typo
mingw: forbid translating ERROR_SUCCESS to an errno value
clone --recurse-submodules: prevent name squatting on Windows
mingw: disallow backslash characters in tree objects' file names
path.c: document the purpose of `is_ntfs_dotgit()`
is_ntfs_dotgit(): only verify the leading segment
path: safeguard `.git` against NTFS Alternate Streams Accesses
is_ntfs_dotgit(): speed it up
mingw: fix quoting of arguments
path: also guard `.gitmodules` against NTFS Alternate Data Streams
protect_ntfs: turn on NTFS protection by default
Disallow dubiously-nested submodule git directories
quote-stress-test: accept arguments to test via the command-line
t6130/t9350: prepare for stringent Win32 path validation
quote-stress-test: allow skipping some trials
unpack-trees: let merged_entry() pass through do_add_entry()'s errors
mingw: refuse to access paths with illegal characters
quote-stress-test: offer to test quoting arguments for MSYS2 sh
mingw: refuse to access paths with trailing spaces or periods
mingw: handle `subst`-ed "DOS drives"
Git 2.14.6
Git 2.15.4
test-drop-caches: use `has_dos_drive_prefix()`
Git 2.16.6
Git 2.17.3
Git 2.18.2
Git 2.19.3
t7415: adjust test for dubiously-nested submodule gitdirs for v2.20.x
Git 2.20.2
mingw: detect when MSYS2's sh is to be spawned more robustly
mingw: use MSYS2 quoting even when spawning shell scripts
mingw: fix quoting of empty arguments for `sh`
t7415: drop v2.20.x-specific work-around
mingw: sh arguments need quoting in more circumstances
Git 2.21.1
Git 2.22.2
Git 2.23.1
Git 2.24.1
t3701: add a test for advanced split-hunk editing
t3701: avoid depending on the TTY prerequisite
t3701: add a test for the different `add -p` prompts
t3701: verify the shown messages when nothing can be added
t3701: verify that the diff.algorithm config setting is handled
git add -p: use non-zero exit code when the diff generation failed
apply --allow-overlap: fix a corner case
t3404: fix indentation
built-in add -i: start implementing the `patch` functionality in C
built-in add -i: wire up the new C code for the `patch` command
built-in add -p: show colored hunks by default
built-in add -p: adjust hunk headers as needed
built-in add -p: color the prompt and the help text
built-in add -p: offer a helpful error message when hunk navigation failed
built-in add -p: support multi-file diffs
built-in add -p: handle deleted empty files
built-in app -p: allow selecting a mode change as a "hunk"
built-in add -p: show different prompts for mode changes and deletions
built-in add -p: implement the hunk splitting feature
built-in add -p: coalesce hunks after splitting them
strbuf: add a helper function to call the editor "on an strbuf"
built-in add -p: implement hunk editing
built-in add -p: implement the 'g' ("goto") command
built-in add -p: implement the '/' ("search regex") command
built-in add -p: implement the 'q' ("quit") command
built-in add -p: only show the applicable parts of the help text
built-in add -p: show helpful hint when nothing can be staged
Jonathan Nieder (3):
submodule: reject submodule.update = !command in .gitmodules
fsck: reject submodule.update = !command in .gitmodules
submodule: defend against submodule.update = !command in .gitmodules
Jonathan Tan (6):
fetch-pack: write fetched refs to .promisor
fetch: remove fetch_if_missing=0
clone: remove fetch_if_missing=0
promisor-remote: remove fetch_if_missing=0
Doc: explain submodule.alternateErrorStrategy
submodule--helper: advise on fatal alternate error
Josh Holland (1):
userdiff: support Python async functions
Junio C Hamano (13):
doc: am --show-current-patch gives an entire e-mail message
The first batch post 2.24 cycle
fsmonitor: do not compare bitmap size with size of split index
ci(osx): update homebrew-cask repository with less noise
rebase -i: finishing touches to --reset-author-date
The second batch
The third batch
The fourth batch
The fifth batch
Makefile: drop GEN_HDRS
The sixth batch
dir.c: use st_add3() for allocation size
Git 2.25-rc0
Kevin Willford (1):
fsmonitor: fix watchman integration
Manish Goregaokar (2):
doc: document 'git submodule status --cached'
submodule: fix 'submodule status' when called from a subdirectory
Martin Ågren (1):
t7004: check existence of correct tag
Matthew Rogers (1):
rebase -r: let `label` generate safer labels
Mihail Atanassov (1):
Documentation/git-bisect.txt: add --no-ff to merge command
Mike Hommey (2):
revision: clear the topo-walk flags in reset_revision_walk
revision: free topo_walk_info before creating a new one in init_topo_walk
Miriam Rubio (1):
clone: rename static function `dir_exists()`.
Nathan Stocks (1):
t: fix typo in test descriptions
Naveen Nathan (1):
doc: improve readability of --rebase-merges in git-rebase
Nika Layzell (1):
reset: parse rev as tree-ish in patch mode
Philip Oakley (1):
Doc: Bundle file usage
Philippe Blain (4):
help: add gitsubmodules to the list of guides
worktree: teach "add" to ignore submodule.recurse config
doc: mention that 'git submodule update' fetches missing commits
gitmodules: link to gitsubmodules guide
Phillip Wood (7):
t3404: remove unnecessary subshell
t3404: set $EDITOR in subshell
t3404: remove uneeded calls to set_fake_editor
sequencer.h fix placement of #endif
move run_commit_hook() to libgit and use it there
sequencer: run post-commit hook
sequencer: fix empty commit check when amending
Prarit Bhargava (3):
t6006: use test-lib.sh definitions
t4203: use test-lib.sh definitions
pretty: add "%aL" etc. to show local-part of email addresses
Pratyush Yadav (1):
git-shortlog.txt: include commit limiting options
Ralf Thielow (1):
fetch.c: fix typo in a warning message
René Scharfe (32):
trace2: add dots directly to strbuf in perf_fmt_prepare()
utf8: use skip_iprefix() in same_utf_encoding()
convert: use skip_iprefix() in validate_encoding()
mingw: use COPY_ARRAY for copying array
parse-options: avoid arithmetic on pointer that's potentially NULL
pretty: provide short date format
fetch: use skip_prefix() instead of starts_with()
fmt-merge-msg: use skip_prefix() instead of starts_with()
shell: use skip_prefix() instead of starts_with()
push: use skip_prefix() instead of starts_with()
name-rev: use skip_prefix() instead of starts_with()
run-command: use prepare_git_cmd() in prepare_cmd()
t1512: use test_line_count
t1410: use test_line_count
t1400: use test_must_be_empty
test: use test_must_be_empty F instead of test -z $(cat F)
test: use test_must_be_empty F instead of test_cmp empty F
t9300: don't create unused file
t7811: don't create unused file
xdiff: unignore changes in function context
name-rev: use strbuf_strip_suffix() in get_rev_name()
commit: use strbuf_add() to add a length-limited string
patch-id: use oid_to_hex() to print multiple object IDs
archive-zip: use enum for compression method
t4256: don't create unused file
t7004: don't create unused file
refs: pass NULL to refs_read_ref_full() because object ID is not needed
remote: pass NULL to read_ref_full() because object ID is not needed
t3501: don't create unused file
t5580: don't create unused file
t6030: don't create unused file
t4015: improve coverage of function context test
Robin H. Johnson (3):
bundle: framework for options before bundle file
bundle-create: progress output control
bundle-verify: add --quiet
Rohit Ashiwal (6):
rebase -i: add --ignore-whitespace flag
sequencer: allow callers of read_author_script() to ignore fields
rebase -i: support --committer-date-is-author-date
sequencer: rename amend_author to author_to_rename
rebase -i: support --ignore-date
rebase: add --reset-author-date
Ruud van Asseldonk (1):
t5150: skip request-pull test if Perl is disabled
SZEDER Gábor (29):
Documentation: mention more worktree-specific exceptions
path.c: clarify trie_find()'s in-code comment
path.c: mark 'logs/HEAD' in 'common_list' as file
path.c: clarify two field names in 'struct common_dir'
path.c: don't call the match function without value in trie_find()
builtin/commit-graph.c: remove subcommand-less usage string
builtin/blame.c: remove '--indent-heuristic' from usage string
test-lib: don't check prereqs of test cases that won't be run anyway
t6120-describe: correct test repo history graph in comment
builtin/unpack-objects.c: show throughput progress
tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
sequencer: don't re-read todo for revert and cherry-pick
test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
ci: build Git with GCC 9 in the 'osx-gcc' build job
t9300-fast-import: store the PID in a variable instead of pidfile
t9300-fast-import: don't hang if background fast-import exits too early
t6120-describe: modernize the 'check_describe' helper
name-rev: avoid unnecessary cast in name_ref()
name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
name-rev: extract creating/updating a 'struct name_rev' into a helper
name-rev: pull out deref handling from the recursion
name-rev: restructure parsing commits and applying date cutoff
name-rev: restructure creating/updating 'struct rev_name' instances
name-rev: drop name_rev()'s 'generation' and 'distance' parameters
name-rev: use 'name->tip_name' instead of 'tip_name'
name-rev: eliminate recursion in name_rev()
name-rev: cleanup name_ref()
Slavica Đukić (3):
built-in add -i: color the header in the `status` command
built-in add -i: use color in the main loop
built-in add -i: implement the `help` command
Tanushree Tumane (2):
bisect--helper: avoid use-after-free
bisect--helper: convert `*_warning` char pointers to char arrays.
Thomas Gummerer (1):
stash: make sure we have a valid index before writing it
Todd Zullinger (1):
t7812: expect failure for grep -i with invalid UTF-8 data
Utsav Shah (1):
unpack-trees: skip stat on fsmonitor-valid files
William Baker (6):
midx: add MIDX_PROGRESS flag
midx: add progress to write_midx_file
midx: add progress to expire_midx_packs
midx: honor the MIDX_PROGRESS flag in verify_midx_file
midx: honor the MIDX_PROGRESS flag in midx_repack
multi-pack-index: add [--[no-]progress] option.
brian m. carlson (16):
t/oid-info: allow looking up hash algorithm name
t/oid-info: add empty tree and empty blob values
rev-parse: add a --show-object-format option
t1305: avoid comparing extensions
t3429: remove SHA1 annotation
t4010: abstract away SHA-1-specific constants
t4011: abstract away SHA-1-specific constants
t4015: abstract away SHA-1-specific constants
t4027: make hash-size independent
t4034: abstract away SHA-1-specific constants
t4038: abstract away SHA-1 specific constants
t4039: abstract away SHA-1-specific constants
t4044: update test to work with SHA-256
t4045: make hash-size independent
t4048: abstract away SHA-1-specific constants
t9001: avoid including non-trailing NUL bytes in variables
r.burenkov (1):
git-p4: honor lfs.storage configuration variable
ryenus (1):
fix-typo: consecutive-word duplications
Łukasz Niemier (1):
userdiff: add Elixir to supported userdiff languages
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Dec 2019, #02; Thu, 5)
@ 2019-12-05 22:36 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-12-05 22:36 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics are now in 'master'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* dd/rebase-merge-reserves-onto-label (2019-11-20) 1 commit
(merged to 'next' on 2019-11-21 at a6e4e5af0a)
+ sequencer: handle rebase-merges for "onto" message
(this branch uses js/rebase-r-safer-label.)
The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
* dl/range-diff-with-notes (2019-11-21) 10 commits
(merged to 'next' on 2019-11-25 at dd6dad97c1)
+ format-patch: pass notes configuration to range-diff
+ range-diff: pass through --notes to `git log`
+ range-diff: output `## Notes ##` header
+ t3206: range-diff compares logs with commit notes
+ t3206: s/expected/expect/
+ t3206: disable parameter substitution in heredoc
+ t3206: remove spaces after redirect operators
+ pretty-options.txt: --notes accepts a ref instead of treeish
+ rev-list-options.txt: remove reference to --show-notes
+ argv-array: add space after `while`
"git range-diff" learned to take the "--notes=<ref>" and the
"--no-notes" options to control the commit notes included in the
log message that gets compared.
* dl/t5520-cleanup (2019-11-21) 15 commits
(merged to 'next' on 2019-11-27 at 523d920acf)
+ t5520: replace `! git` with `test_must_fail git`
+ t5520: remove redundant lines in test cases
+ t5520: replace $(cat ...) comparison with test_cmp
+ t5520: don't put git in upstream of pipe
+ t5520: test single-line files by git with test_cmp
+ t5520: use test_cmp_rev where possible
+ t5520: replace test -{n,z} with test-lib functions
+ t5520: use test_line_count where possible
+ t5520: remove spaces after redirect operator
+ t5520: replace test -f with test-lib functions
+ t5520: let sed open its own input
+ t5520: use sq for test case names
+ t5520: improve test style
+ t: teach test_cmp_rev to accept ! for not-equals
+ t0000: test multiple local assignment
Test cleanup.
* ec/fetch-mark-common-refs-trace2 (2019-11-20) 1 commit
(merged to 'next' on 2019-11-25 at c2b8e1546c)
+ fetch: add trace2 instrumentation
Trace2 annotation.
* ep/guard-kset-tar-headers (2019-11-07) 1 commit
(merged to 'next' on 2019-11-21 at 6c9574b01d)
+ kset.h, tar.h: add missing header guard to prevent multiple inclusion
Code clean-up.
* hi/gpg-optional-pkfp-fix (2019-11-23) 2 commits
(merged to 'next' on 2019-11-25 at b0d668176f)
+ gpg-interface: limit search for primary key fingerprint
+ gpg-interface: refactor the free-and-xmemdupz pattern
(this branch is used by hi/gpg-use-check-signature.)
The code to parse GPG output used to assume incorrectly that the
finterprint for the primary key would always be present for a valid
signature, which has been corrected.
* hv/assume-priumax-is-available-anywhere (2019-11-25) 1 commit
(merged to 'next' on 2019-11-27 at caac4f633d)
+ git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
We have had compatibility fallback macro definitions for "PRIuMAX",
"PRIu32", etc. but did not for "PRIdMAX", while the code used the
last one apparently without any hiccup reported recently. The
fallback macro definitions for these <inttypes.h> macros that must
appear in C99 systems have been removed.
* jc/azure-ci-osx-fix-fix (2019-11-20) 1 commit
(merged to 'next' on 2019-11-25 at 7de6356e67)
+ ci(osx): update homebrew-cask repository with less noise
CI jobs for macOS has been made less chatty when updating perforce
package used during testing.
* jh/userdiff-python-async (2019-11-20) 1 commit
(merged to 'next' on 2019-11-25 at 74e4a4ed9f)
+ userdiff: support Python async functions
The userdiff machinery has been taught that "async def" is another
way to begin a "function" in Python.
* jk/fail-show-toplevel-outside-working-tree (2019-11-20) 1 commit
(merged to 'next' on 2019-11-25 at cd97ae38bc)
+ rev-parse: make --show-toplevel without a worktree an error
"git rev-parse --show-toplevel" run outside of any working tree did
not error out, which has been corrected.
* js/builtin-add-i (2019-11-18) 9 commits
(merged to 'next' on 2019-11-21 at caefa55b89)
+ built-in add -i: implement the `help` command
+ built-in add -i: use color in the main loop
+ built-in add -i: support `?` (prompt help)
+ built-in add -i: show unique prefixes of the commands
+ built-in add -i: implement the main loop
+ built-in add -i: color the header in the `status` command
+ built-in add -i: implement the `status` command
+ diff: export diffstat interface
+ Start to implement a built-in version of `git add --interactive`
(this branch is used by js/builtin-add-i-cmds.)
The beginning of rewriting "git add -i" in C.
* js/git-svn-use-rebase-merges (2019-11-23) 1 commit
(merged to 'next' on 2019-11-25 at 9585fe30f8)
+ git svn: stop using `rebase --preserve-merges`
Prepare further for "rebase --preserve-merges" deprecation.
* js/pkt-line-h-typofix (2019-12-02) 1 commit
(merged to 'next' on 2019-12-02 at 8f36a354ae)
+ pkt-line: fix a typo
Typofix.
* js/rebase-r-safer-label (2019-11-18) 2 commits
(merged to 'next' on 2019-11-21 at 791d51b0d7)
+ rebase -r: let `label` generate safer labels
+ rebase-merges: move labels' whitespace mangling into `label_oid()`
(this branch is used by dd/rebase-merge-reserves-onto-label.)
A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
* mg/doc-submodule-status-cached (2019-11-24) 1 commit
(merged to 'next' on 2019-11-25 at fa833392a3)
+ doc: document 'git submodule status --cached'
"git submodule status" and "git submodule status --cached" show
different things, but the documentation did not cover them
correctly, which has been corrected.
* mg/submodule-status-from-a-subdirectory (2019-11-25) 1 commit
(merged to 'next' on 2019-11-27 at 24cb2d79ff)
+ submodule: fix 'submodule status' when called from a subdirectory
"git submodule status" that is run from a subdirectory of the
superproject did not work well, which has been corrected.
* mh/clear-topo-walk-upon-reset (2019-11-25) 2 commits
(merged to 'next' on 2019-11-27 at 15871c1c2a)
+ revision: free topo_walk_info before creating a new one in init_topo_walk
+ revision: clear the topo-walk flags in reset_revision_walk
The revision walking machinery uses resources like per-object flag
bits that need to be reset before a new iteration of walking
begins, but the resources related to topological walk were not
cleared correctly, which has been corrected.
* nl/reset-patch-takes-a-tree (2019-11-25) 1 commit
(merged to 'next' on 2019-11-25 at 34dc348eaf)
+ reset: parse rev as tree-ish in patch mode
"git reset --patch $object" without any pathspec should allow a
tree object to be given, but incorrectly required a committish,
which has been corrected.
* pb/submodule-update-fetches (2019-11-24) 1 commit
(merged to 'next' on 2019-11-25 at 7736f98351)
+ doc: mention that 'git submodule update' fetches missing commits
Doc update.
* pw/sequencer-compare-with-right-parent-to-check-empty-commits (2019-11-23) 1 commit
(merged to 'next' on 2019-11-25 at a4e4f06286)
+ sequencer: fix empty commit check when amending
The sequencer machinery compared the HEAD and the state it is
attempting to commit to decide if the result would be a no-op
commit, even when amending a commit, which was incorrect, and
has been corrected.
* sg/test-bool-env (2019-11-23) 2 commits
(merged to 'next' on 2019-11-27 at e1874e422f)
+ t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
+ tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values
Recently we have declared that GIT_TEST_* variables take the
usual boolean values (it used to be that some used "non-empty
means true" and taking GIT_TEST_VAR=YesPlease as true); make
sure we notice and fail when non-bool strings are given to
these variables.
* sg/unpack-progress-throughput (2019-11-20) 1 commit
(merged to 'next' on 2019-11-25 at 0418db6a27)
+ builtin/unpack-objects.c: show throughput progress
"git unpack-objects" used to show progress based only on the number
of received and unpacked objects, which stalled when it has to
handle an unusually large object. It now shows the throughput as
well.
* us/unpack-trees-fsmonitor (2019-11-21) 1 commit
(merged to 'next' on 2019-11-27 at 4c06f74957)
+ unpack-trees: skip stat on fsmonitor-valid files
Users of oneway_merge() (like "reset --hard") learned to take
advantage of fsmonitor to avoid unnecessary lstat(2) calls.
--------------------------------------------------
[New Topics]
* am/pathspec-f-f-checkout (2019-12-04) 7 commits
- checkout, restore: support the --pathspec-from-file option
- doc: restore: synchronize <pathspec> description
- doc: checkout: synchronize <pathspec> description
- doc: checkout: fix broken text reference
- doc: checkout: remove duplicate synopsis
- add: support the --pathspec-from-file option
- cmd_add: prepare for next patch
(this branch uses am/pathspec-from-file; is tangled with es/pathspec-f-f-grep.)
A few more commands learned the "--pathspec-from-file" command line
option.
Will merge to 'next'.
* dl/lore-is-the-archive (2019-12-04) 3 commits
(merged to 'next' on 2019-12-05 at c87e168cd6)
+ doc: replace LKML link with lore.kernel.org
+ RelNotes: replace Gmane with real Message-IDs
+ doc: replace MARC links with lore.kernel.org
(this branch uses jk/lore-is-the-archive.)
Publicize lore.kernel.org mailing list archive and use URLs
pointing into it to refer to notable messages in the documentation.
Will merge to 'master'.
* dl/rebase-with-autobase (2019-12-05) 5 commits
- rebase: fix format.useAutoBase breakage
- format-patch: teach --no-base
- t4014: use test_config()
- format-patch: fix indentation
- t3400: demonstrate failure with format.useAutoBase
"git rebase" did not work well when format.useAutoBase
configuration variable is set, which has been corrected.
Will merge to 'next'.
* es/pathspec-f-f-grep (2019-12-04) 1 commit
- grep: support the --pathspec-from-file option
(this branch uses am/pathspec-from-file; is tangled with am/pathspec-f-f-checkout.)
"git grep" learned the "--pathspec-from-file" command line
option.
Waiting for review response.
* rs/xdiff-ignore-ws-w-func-context (2019-12-05) 1 commit
- xdiff: unignore changes in function context
The "diff" machinery learned not to lose added/removed blank lines
in the context when --ignore-blank-lines and --function-context are
used at the same time.
Will merge to 'next'.
* ag/edit-todo-drop-check (2019-12-04) 2 commits
- rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
- sequencer: move check_todo_list_from_file() to rebase-interactive.c
(this branch uses ag/sequencer-todo-updates.)
Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
Seems to break when merged to 'pu'.
--------------------------------------------------
[Stalled]
* mt/threaded-grep-in-object-store (2019-10-02) 11 commits
- grep: move driver pre-load out of critical section
- grep: re-enable threads in non-worktree case
- grep: protect packed_git [re-]initialization
- grep: allow submodule functions to run in parallel
- submodule-config: add skip_if_read option to repo_read_gitmodules()
- grep: replace grep_read_mutex by internal obj read lock
- object-store: allow threaded access to object reading
- replace-object: make replace operations thread-safe
- grep: fix racy calls in grep_objects()
- grep: fix race conditions at grep_submodule()
- grep: fix race conditions on userdiff calls
Traditionally, we avoided threaded grep while searching in objects
(as opposed to files in the working tree) as accesses to the object
layer is not thread-safe. This limitation is getting lifted.
Expecting a reroll.
cf. <CAHd-oW7UPSSExyLtfLMCObWogKrBOctYabrFrOdf9-4Q2PZmMg@mail.gmail.com>
* po/bundle-doc-clonable (2019-10-21) 1 commit
(merged to 'next' on 2019-12-02 at bd7fa24ad6)
+ Doc: Bundle file usage
Doc update.
Will merge to 'master'.
* js/advise-rebase-skip (2019-10-23) 3 commits
- commit: give correct advice for empty commit during a rebase
- sequencer: export the function to get the path of `.git/rebase-merge/`
- cherry-pick: add test for `--skip` advice in `git commit`
The logic used in "git commit" to give hints and errors depending
on what operation was in progress learned to distinguish rebase and
cherry-pick better.
Kicked back to 'pu'.
cf. <nycvar.QRO.7.76.6.1911081508560.46@tvgsbejvaqbjf.bet>
* vn/reset-deleted-ita (2019-07-26) 1 commit
- reset: unstage empty deleted ita files
"git reset HEAD [<pathspec>]" did not reset an empty file that was
added with the intent-to-add bit.
Expecting a reroll.
* jn/unknown-index-extensions (2018-11-21) 2 commits
- index: offer advice for unknown index extensions
- index: do not warn about unrecognized extensions
A bit too alarming warning given when unknown index extensions
exist is getting revamped.
Expecting a reroll.
* jc/format-patch-delay-message-id (2019-04-05) 1 commit
- format-patch: move message-id and related headers to the end
The location "git format-patch --thread" adds the Message-Id:
header in the series of header fields has been moved down, which
may help working around a suspected bug in GMail MSA, reported at
<CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>
Waiting for feedback to see if it truly helps.
Needs tests.
* js/protocol-advertise-multi (2018-12-28) 1 commit
- protocol: advertise multiple supported versions
The transport layer has been updated so that the protocol version
used can be negotiated between the parties, by the initiator
listing the protocol versions it is willing to talk, and the other
side choosing from one of them.
Expecting a reroll.
cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
--------------------------------------------------
[Cooking]
* ds/commit-graph-delay-gen-progress (2019-11-27) 2 commits
(merged to 'next' on 2019-12-05 at 9252a4b1b6)
+ commit-graph: use start_delayed_progress()
+ progress: create GIT_PROGRESS_DELAY
One kind of progress messages were always given during commit-graph
generation, instead of following the "if it takes more than two
seconds, show progress" pattern, which has been corrected.
Will merge to 'master'.
* ds/sparse-cone (2019-11-22) 19 commits
- sparse-checkout: check for dirty status
- sparse-checkout: update working directory in-process for 'init'
- sparse-checkout: cone mode should not interact with .gitignore
- sparse-checkout: write using lockfile
- sparse-checkout: use in-process update for disable subcommand
- sparse-checkout: update working directory in-process
- sparse-checkout: sanitize for nested folders
- unpack-trees: add progress to clear_ce_flags()
- unpack-trees: hash less in cone mode
- sparse-checkout: init and set in cone mode
- sparse-checkout: use hashmaps for cone patterns
- sparse-checkout: add 'cone' mode
- trace2: add region in clear_ce_flags
- sparse-checkout: create 'disable' subcommand
- sparse-checkout: add '--stdin' option to set subcommand
- sparse-checkout: 'set' subcommand
- clone: add --sparse mode
- sparse-checkout: create 'init' subcommand
- sparse-checkout: create builtin with 'list' subcommand
Management of sparsely checked-out working tree has gained a
dedicated "sparse-checkout" command.
Possibly wait for Szeder?
cf. <bea26b66-ac52-8f0e-9557-c958db7be628@gmail.com>
* dl/test-cleanup (2019-12-04) 26 commits
- t7700: stop losing return codes of git commands
- t7700: make references to SHA-1 generic
- t7700: replace egrep with grep
- t7700: consolidate code into test_has_duplicate_object()
- t7700: consolidate code into test_no_missing_in_packs()
- t7700: s/test -f/test_path_is_file/
- t7700: move keywords onto their own line
- t7700: remove spaces after redirect operators
- t7700: drop redirections to /dev/null
- t7501: stop losing return codes of git commands
- t7501: remove spaces after redirect operators
- t5703: stop losing return codes of git commands
- t5703: simplify one-time-sed generation logic
- t5317: use ! grep to check for no matching lines
- t5317: stop losing return codes of git commands
- t4138: stop losing return codes of git commands
- t4015: use test_write_lines()
- t4015: stop losing return codes of git commands
- t3600: comment on inducing SIGPIPE in `git rm`
- t3600: stop losing return codes of git commands
- t3600: use test_line_count() where possible
- t3301: stop losing return codes of git commands
- t0090: stop losing return codes of git commands
- t0014: remove git command upstream of pipe
- apply-one-time-sed.sh: modernize style
- lib-bash.sh: move `then` onto its own line
Test cleanup.
Will merge to 'next'.
* tg/perf-remove-stale-result (2019-11-27) 1 commit
(merged to 'next' on 2019-12-05 at 466f07fb63)
+ perf-lib: use a single filename for all measurement types
PerfTest fix to avoid stale result mixed up with the latest round
of test results.
Will merge to 'master'.
* ds/fsmonitor-testing (2019-11-22) 11 commits
- test-lib: clear watchman watches at test completion
- t7519: disable external GIT_TEST_FSMONITOR variable
- t7063: disable fsmonitor with status cache
- tests: disable fsmonitor in submodule tests
- t3600-rm.sh: disable fsmonitor when deleting populated submodule
- t3030-merge-recursive.sh: disable fsmonitor when tweaking GIT_WORK_TREE
- fsmonitor: disable fsmonitor with worktrees
- t1510-repo-setup.sh: disable fsmonitor if no .git dir
- t1301-shared-repo.sh: disable FSMONITOR
- fsmonitor: do not output to stderr for tests
- fsmonitor: disable in a bare repo
Updates around testing fsmoitor integration.
On Hold.
cf. <bea26b66-ac52-8f0e-9557-c958db7be628@gmail.com>
* js/mingw-inherit-only-std-handles (2019-12-02) 6 commits
(merged to 'next' on 2019-12-05 at 289f13054b)
+ mingw: forbid translating ERROR_SUCCESS to an errno value
(merged to 'next' on 2019-12-02 at 798a952eca)
+ mingw: do set `errno` correctly when trying to restrict handle inheritance
(merged to 'next' on 2019-11-27 at 4736894af6)
+ mingw: restrict file handle inheritance only on Windows 7 and later
+ mingw: spawned processes need to inherit only standard handles
+ mingw: work around incorrect standard handles
+ mingw: demonstrate that all file handles are inherited by child processes
Work around a issue where a FD that is left open when spawning a
child process and is kept open in the child can interfere with the
operation in the parent process on Windows.
Will merge to 'master'.
* sg/assume-no-todo-update-in-cherry-pick (2019-11-24) 1 commit
(merged to 'next' on 2019-11-27 at 6908186f85)
+ sequencer: don't re-read todo for revert and cherry-pick
While running "revert" or "cherry-pick --edit" for multiple
commits, a recent regression incorrectly detected "nothing to
commit, working tree clean", instead of replaying the commits,
which has been corrected.
Will merge to 'master'.
* as/t7812-missing-redirects-fix (2019-12-01) 2 commits
(merged to 'next' on 2019-12-05 at aa89a7945f)
+ t7812: expect failure for grep -i with invalid UTF-8 data
+ t7812: add missing redirects
Test fix.
Will merge to 'master'.
* jk/perf-wo-git-dot-pm (2019-11-27) 1 commit
(merged to 'next' on 2019-12-05 at 6d9e3930ec)
+ t/perf: don't depend on Git.pm
Test cleanup.
Will merge to 'master'.
* jt/clone-recursesub-ref-advise (2019-12-03) 2 commits
(merged to 'next' on 2019-12-05 at fc071dddfe)
+ submodule--helper: advise on fatal alternate error
+ Doc: explain submodule.alternateErrorStrategy
The interaction between "git clone --recurse-submodules" and
alternate object store was ill-designed. The documentation and
code have been taught to make more clear recommendations when the
users see failures.
Will merge to 'master'.
* ra/t5150-depends-on-perl (2019-11-27) 1 commit
. t5150: skip request-pull test if Perl is disabled
Some Porcelain commands are written in Perl, and tests on them are
expected not to work when the platform lacks a working perl.
Redo.
* rs/simplify-prepare-cmd (2019-11-27) 1 commit
(merged to 'next' on 2019-12-02 at 12e1a9e935)
+ run-command: use prepare_git_cmd() in prepare_cmd()
Code cleanup.
Will merge to 'master'.
* rs/test-cleanup (2019-11-30) 7 commits
(merged to 'next' on 2019-12-02 at eabc2e30f5)
+ t7811: don't create unused file
+ t9300: don't create unused file
+ test: use test_must_be_empty F instead of test_cmp empty F
+ test: use test_must_be_empty F instead of test -z $(cat F)
+ t1400: use test_must_be_empty
+ t1410: use test_line_count
+ t1512: use test_line_count
Test cleanup.
Will merge to 'master'.
* rs/use-skip-prefix-more (2019-11-27) 5 commits
(merged to 'next' on 2019-12-02 at a2124db23e)
+ name-rev: use skip_prefix() instead of starts_with()
+ push: use skip_prefix() instead of starts_with()
+ shell: use skip_prefix() instead of starts_with()
+ fmt-merge-msg: use skip_prefix() instead of starts_with()
+ fetch: use skip_prefix() instead of starts_with()
Code cleanup.
Will merge to 'master'.
* sg/test-squelch-noise-in-commit-bulk (2019-11-27) 1 commit
(merged to 'next' on 2019-12-05 at 7819efee07)
+ test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'
Code cleanup.
Will merge to 'master'.
* ag/sequencer-continue-leakfix (2019-11-30) 1 commit
(merged to 'next' on 2019-12-05 at 923a6a7ab6)
+ sequencer: fix a memory leak in sequencer_continue()
Leakfix.
Will merge to 'master'.
* bc/t9001-zsh-in-posix-emulation-mode (2019-11-30) 1 commit
(merged to 'next' on 2019-12-05 at d0ce4bcc90)
+ t9001: avoid including non-trailing NUL bytes in variables
Test portability fix.
Will merge to 'master'.
* cs/store-packfiles-in-hashmap (2019-12-03) 1 commit
(merged to 'next' on 2019-12-05 at 887d5559bb)
+ packfile.c: speed up loading lots of packfiles
In a repository with many packfiles, the cost of the procedure that
avoids registering the same packfile twice was unnecessarily high
by using an inefficient search algorithm, which has been corrected.
Will merge to 'master'.
* dd/time-reentrancy (2019-12-01) 3 commits
(merged to 'next' on 2019-12-05 at d0c91f4d1b)
+ mingw: use {gm,local}time_s as backend for {gm,local}time_r
+ archive-zip.c: switch to reentrant localtime_r
+ date.c: switch to reentrant {gm,local}time_r
Avoid gmtime() and localtime() and prefer their reentrant
counterparts.
Will merge to 'master'.
* em/test-skip-regex-illseq (2019-11-30) 1 commit
(merged to 'next' on 2019-12-05 at 85c7940aeb)
+ t4210: skip i18n tests that don't work on FreeBSD
Test portability fix.
Will merge to 'master'.
* hi/gpg-use-check-signature (2019-11-30) 1 commit
(merged to 'next' on 2019-12-05 at 35fc8e839a)
+ gpg-interface: prefer check_signature() for GPG verification
Hide lower-level verify_signed-buffer() API as a pure helper to
implement the public check_signature() function, in order to
encourage new callers to use the correct and more strict
validation.
Will merge to 'master'.
* hi/grep-do-not-return-void (2019-11-30) 1 commit
(merged to 'next' on 2019-12-02 at 4409c73cfa)
+ grep: don't return an expression from pcre2_free()
Code cleanup.
Will merge to 'master'.
* jk/lore-is-the-archive (2019-11-30) 2 commits
(merged to 'next' on 2019-12-02 at 603a2b0105)
+ doc: replace public-inbox links with lore.kernel.org
+ doc: recommend lore.kernel.org over public-inbox.org
(this branch is used by dl/lore-is-the-archive.)
Doc update for the mailing list archiving and nntp service.
Will merge to 'master'.
* jk/send-pack-check-negative-with-quick (2019-11-30) 1 commit
(merged to 'next' on 2019-12-02 at 2b01214601)
+ send-pack: use OBJECT_INFO_QUICK to check negative objects
Performance tweak on "git push" into a repository with many refs
that point at objects we have never heard of.
Will merge to 'master'.
* sg/osx-force-gcc-9 (2019-11-29) 1 commit
(merged to 'next' on 2019-12-02 at 4916f80e5e)
+ ci: build Git with GCC 9 in the 'osx-gcc' build job
TravisCI update.
Will merge to 'master'.
* dl/pretty-reference (2019-11-20) 11 commits
(merged to 'next' on 2019-12-05 at 0972133ad2)
+ SubmittingPatches: use `--pretty=reference`
+ pretty: implement 'reference' format
+ pretty: add struct cmt_fmt_map::default_date_mode_type
+ pretty: provide short date format
+ t4205: cover `git log --reflog -z` blindspot
+ pretty.c: inline initalize format_context
+ revision: make get_revision_mark() return const pointer
+ completion: complete `tformat:` pretty format
+ SubmittingPatches: remove dq from commit reference
+ pretty-formats.txt: use generic terms for hash
+ SubmittingPatches: use generic terms for hash
"git log" family learned "--pretty=ref" that gives the name of a
commit in the format that is often used to refer to it in log
messages.
Will merge to 'master'.
* hw/doc-in-header (2019-11-18) 20 commits
- trace2: move doc to trace2.h
- submodule-config: move doc to submodule-config.h
- tree-walk: move doc to tree-walk.h
- trace: move doc to trace.h
- run-command: move doc to run-command.h
- parse-options: add link to doc file in parse-options.h
- credential: move doc to credential.h
- argv-array: move doc to argv-array.h
- cache: move doc to cache.h
- sigchain: move doc to sigchain.h
- pathspec: move doc to pathspec.h
- revision: move doc to revision.h
- attr: move doc to attr.h
- refs: move doc to refs.h
- remote: move doc to remote.h and refspec.h
- sha1-array: move doc to sha1-array.h
- merge: move doc to ll-merge.h
- graph: move doc to graph.h and graph.c
- dir: move doc to dir.h
- diff: move doc to diff.h and diffcore.h
* js/builtin-add-i-cmds (2019-12-01) 9 commits
(merged to 'next' on 2019-12-05 at 30cfe5c15d)
+ built-in add -i: offer the `quit` command
+ built-in add -i: re-implement the `diff` command
+ built-in add -i: implement the `patch` command
+ built-in add -i: re-implement `add-untracked` in C
+ built-in add -i: re-implement `revert` in C
+ built-in add -i: implement the `update` command
+ built-in add -i: prepare for multi-selection commands
+ built-in add -i: allow filtering the modified files list
+ add-interactive: make sure to release `rev.prune_data`
"git add -i" that is getting rewritten in C has been extended to
cover subcommands other than the "patch".
Will merge to 'master'.
* ma/config-bool-valex (2019-11-14) 8 commits
- builtin/config: die if "value_regex" doesn't canonicalize as boolean
- builtin/config: warn if "value_regex" doesn't canonicalize as boolean
- builtin/config: canonicalize "value_regex" with `--type=bool-or-int`
- builtin/config: canonicalize "value_regex" with `--type=bool`
- builtin/config: collect "value_regexp" data in a struct
- builtin/config: extract `handle_value_regex()` from `get_value()`
- t1300: modernize part of script
- config: make `git_parse_maybe_bool_text()` public
"git config" can be told to affect the existing entries that
"match" the given value via its value_regex argument. It learned
to normalize the value set in the configuration and the value given
from the command line before computing they "match", e.g. "true" in
the configuration file can now match with "yes" given from the
command line.
Needs a bit more work?
cf. <CAN0heSrtwi9V607vBX9PMSfNLQ8iGcno6_iGuR4Fs8ndGxqh8A@mail.gmail.com>
* sg/name-rev-wo-recursion (2019-11-13) 13 commits
- name-rev: cleanup name_ref()
- name-rev: eliminate recursion in name_rev()
- name-rev: drop name_rev()'s 'generation' and 'distance' parameters
- name-rev: restructure creating/updating 'struct rev_name' instances
- name-rev: restructure parsing commits and applying date cutoff
- name-rev: pull out deref handling from the recursion
- name-rev: extract creating/updating a 'struct name_rev' into a helper
- t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
- name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
- name-rev: avoid unnecessary cast in name_ref()
- name-rev: use strbuf_strip_suffix() in get_rev_name()
- t6120-describe: modernize the 'check_describe' helper
- t6120-describe: correct test repo history graph in comment
Redo "git name-rev" to avoid recursive calls.
Looks more-or-less ready for 'next'?
cf. <20191127181322.171734-1-jonathantanmy@google.com>
cf. <20191127180210.168901-1-jonathantanmy@google.com>
cf. <20191112103821.30265-1-szeder.dev@gmail.com>
* am/pathspec-from-file (2019-11-20) 6 commits
(merged to 'next' on 2019-11-27 at ee131b80fb)
+ commit: support the --pathspec-from-file option
+ doc: commit: synchronize <pathspec> description
+ reset: support the `--pathspec-from-file` option
+ doc: reset: synchronize <pathspec> description
+ pathspec: add new function to parse file
+ parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
(this branch is used by am/pathspec-f-f-checkout and es/pathspec-f-f-grep.)
A few commands learned to take the pathspec from the
standard input or a named file, instead of taking it as the command
line arguments.
Will merge to 'master'.
* ra/rebase-i-more-options (2019-11-25) 7 commits
(merged to 'next' on 2019-11-27 at e8a6d1e281)
+ rebase -i: finishing touches to --reset-author-date
+ rebase: add --reset-author-date
+ rebase -i: support --ignore-date
+ sequencer: rename amend_author to author_to_rename
+ rebase -i: support --committer-date-is-author-date
+ sequencer: allow callers of read_author_script() to ignore fields
+ rebase -i: add --ignore-whitespace flag
"git rebase -i" learned a few options that are known by "git
rebase" proper.
Will merge to 'master'.
* dl/submodule-set-url (2019-10-30) 1 commit
(merged to 'next' on 2019-12-05 at a164eccad1)
+ submodule: teach set-url subcommand
"git submodule" learned a subcommand "set-url".
Will merge to 'master'.
* ag/sequencer-todo-updates (2019-11-25) 5 commits
(merged to 'next' on 2019-11-27 at 3258d51dfc)
+ sequencer: directly call pick_commits() from complete_action()
+ rebase: fill `squash_onto' in get_replay_opts()
+ sequencer: move the code writing total_nr on the disk to a new function
+ sequencer: update `done_nr' when skipping commands in a todo list
+ sequencer: update `total_nr' when adding an item to a todo list
(this branch is used by ag/edit-todo-drop-check.)
Reduce unnecessary reading of state variables back from the disk
during sequencer operation.
Will merge to 'master'.
* jk/packfile-reuse-cleanup (2019-10-23) 9 commits
(merged to 'next' on 2019-11-19 at 9683853939)
+ pack-objects: improve partial packfile reuse
+ builtin/pack-objects: introduce obj_is_packed()
+ pack-objects: introduce pack.allowPackReuse
+ csum-file: introduce hashfile_total()
+ pack-bitmap: introduce bitmap_walk_contains()
+ pack-bitmap: don't rely on bitmap_git->reuse_objects
+ ewah/bitmap: introduce bitmap_word_alloc()
+ packfile: expose get_delta_base()
+ builtin/pack-objects: report reused packfile objects
The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.
Hold. There is an update to these patches that currently are on 'next'.
cf. <20191115180319.113991-1-jonathantanmy@google.com>
^ permalink raw reply [relevance 1%]
* Re: [GIT PULL] git-gui pull request
@ 2019-09-18 19:23 4% ` Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-09-18 19:23 UTC (permalink / raw)
To: Pratyush Yadav; +Cc: Denton Liu, git
Denton Liu <liu.denton@gmail.com> writes:
> Hi Pratyush,
>
> Since you're the maintainer now, you should submit a patch to
> Documentation/SubmittingPatches to change
>
> - `git-gui/` comes from git-gui project, maintained by Pat Thoyts:
>
> git://repo.or.cz/git-gui.git
>
> to have your own information.
There also is MaintNotes on the todo branch, which I'll take care
of.
FWIW, the following update to the draft release notes will be part
of what I'll push out, together with the "Third batch" update to the
master.
diff --git a/Documentation/RelNotes/2.24.0.txt b/Documentation/RelNotes/2.24.0.txt
index e123d2daa6..ff48d8582c 100644
--- a/Documentation/RelNotes/2.24.0.txt
+++ b/Documentation/RelNotes/2.24.0.txt
@@ -11,6 +11,9 @@ Backward compatibility note
UI, Workflows & Features
+ * We now have an active interim maintainer for the Git-Gui part of
+ the system. Praise and thank Pratyush Yadav for volunteering.
+
* The command line parser learned "--end-of-options" notation; the
standard convention for scripters to have hardcoded set of options
first on the command line, and force the command to treat end-user
@@ -28,6 +31,21 @@ UI, Workflows & Features
* Device-tree files learned their own userdiff patterns.
(merge 3c81760bc6 sb/userdiff-dts later to maint).
+ * "git rebase --rebase-merges" learned to drive different merge
+ strategies and pass strategy specific options to them.
+
+ * A new "pre-merge-commit" hook has been introduced.
+
+ * Command line completion updates for "git -c var.name=val" have been
+ added.
+
+ * The lazy clone machinery has been taught that there can be more
+ than one promisor remote and consult them in order when downloading
+ missing objects on demand.
+
+ * The list-objects-filter API (used to create a sparse/lazy clone)
+ learned to take a combined filter specification.
+
Performance, Internal Implementation, Development Support etc.
@@ -39,6 +57,20 @@ Performance, Internal Implementation, Development Support etc.
* Further clean-up of the initialization code.
+ * xmalloc() used to have a mechanism to ditch memory and address
+ space resources as the last resort upon seeing an allocation
+ failure from the underlying malloc(), which made the code complex
+ and thread-unsafe with dubious benefit, as major memory resource
+ users already do limit their uses with various other mechanisms.
+ It has been simplified away.
+
+ * Unnecessary full-tree diff in "git log -L" machinery has been
+ optimized away.
+
+ * The http transport lacked some optimization the native transports
+ learned to avoid unnecessary ref advertisement, which has been
+ corrected.
+
Fixes since v2.23
-----------------
@@ -99,6 +131,10 @@ Fixes since v2.23
subsequent steps.
(merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).
+ * Tell cURL library to use the same malloc() implementation, with the
+ xmalloc() wrapper, as the rest of the system, for consistency.
+ (merge 93b980e58f cb/curl-use-xmalloc later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge d1387d3895 en/fast-import-merge-doc later to maint).
(merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
^ permalink raw reply related [relevance 4%]
* Re: [ANNOUNCE] Git v2.23.0
2019-08-16 21:00 2% [ANNOUNCE] Git v2.23.0 Junio C Hamano
@ 2019-08-16 21:30 0% ` Bhaskar Chowdhury
0 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-08-16 21:30 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 46719 bytes --]
Thanks, a bunch Junio! :)
On 14:00 Fri 16 Aug 2019, Junio C Hamano wrote:
>The latest feature release Git v2.23.0 is now available at the
>usual places. It is comprised of 505 non-merge commits since
>v2.22.0, contributed by 77 people, 26 of which are new faces.
>
>The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/
>
>The following public repositories all have a copy of the 'v2.23.0'
>tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
>New contributors whose contributions weren't in v2.22.0 are as follows.
>Welcome to the Git development community!
>
> Ariadne Conill, Barret Rhoden, Ben Avison, Carmine Zaccagnino,
> Daniel Ferreira, Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk,
> John Lin, Mark Rushakoff, Matheus Tavares, Mazo, Andrey,
> Michael Osipov, Michael Platings, Miguel Ojeda, Mike Mueller,
> Morian Sonnet, Philipp Weißmann, Quentin Nerden, Robert Morgan,
> Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
> Vishal Verma, and Xin Li.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alessandro Menti, Alexander
> Shopov, Beat Bolli, Boxuan Li, brian m. carlson, Carlo Marcelo
> Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
> Couder, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
> Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
> Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh
> Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
> Martin Ågren, Matthew DeVore, Matthias Rüster, Mike Hommey,
> Nguyễn Thái Ngọc Duy, Nickolai Belakovski, Paolo Bonzini,
> Peter Krefting, Philip Oakley, Phillip Wood, Ramsay Jones, René
> Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor, Taylor Blau,
> Thomas Gummerer, Trần Ngọc Quân, and William Chargin.
>
>----------------------------------------------------------------
>
>Git 2.23 Release Notes
>======================
>
>Updates since v2.22
>-------------------
>
>Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
> prerequisite patches in an unstable way, which has been updated to
> compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
> was given.
>
>
>UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
> with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
> refs/worktrees/<wtname>/ hierarchy, which means that worktree names
> must be a valid refname component. The code now sanitizes the names
> given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
> merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
> its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
> interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
> to ignore commit object names recorded in the superproject gitlink
> and instead use the commits that happen to be at the tip of the
> remote-tracking branches from the get-go, by passing the new
> "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Matlab has been extend to cover Octave, which is more
> or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
> people).
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
> "--[no-]ahead-behind" option with a new configuration variable
> status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
> non-fast-forward updates to let the user notice unusual situation.
> The commands learned "--no-show-forced-updates" option to disable
> this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
> split "checking out a branch to work on advancing its history" and
> "checking out paths out of the index and/or a tree-ish to work on
> advancing the current history" out of the single "git checkout"
> command.
>
> * "git branch --list" learned to always output the detached HEAD as
> the first item (when the HEAD is detached, of course), regardless
> of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
> the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
> squelch the path to the object that is used as a grouping hint for
> pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
> "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
> effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
> starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
> commit-graph files now, which allows the commit-graph files to be
> updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
> of which part of what file the patch shown is about.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
> no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
> ensure that the remainder of the tests still succeeds when tests
> with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
> same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
> has been simplified. The old default to pass -R/path/to/dir has been
> replaced with the new default to pass -Wl,-rpath,/path/to/dir,
> which is the more recent GCC uses. Those who need to build with an
> old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
> on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
> developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
> libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
> auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
> "git status" has been made more robust against a corrupt or stale
> state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
> instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
> committed, the command line prompt script failed to notice the
> current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
> how our tests are run, but a few followed "non-empty is true, empty
> or unset is false" while others followed the usual "there are a few
> ways to spell true, like yes, on, etc., and also ways to spell
> false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
> optimization codepath.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
> repositories with many simple commits, and a handful of test
> scripts have been updated to use it.
>
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to an unrelated file descriptor getting
> closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
> give the user a chance to edit the log message, even when there is
> otherwise no need to create a new merge and replace the existing
> one (i.e. fast-forward instead), but did not. Which has been
> corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git branch --list" learned to show branches that are checked out
> in other worktrees connected to the same repository prefixed with
> '+', similar to the way the currently checked out branch is shown
> with '*' in front.
> (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * Protocol capabilities that go over wire should never be translated,
> but it was incorrectly marked for translation, which has been
> corrected. The output of protocol capabilities for debugging has
> been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
> as these are mutually exclusive features.
> (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
> been removed, which has been fixed.
> (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --function-context line in a corner case, which has been
> corrected.
> (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge fbec05c210 cc/test-oidmap later to maint).
> (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
> (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
> (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Alessandro Menti (3):
> l10n: it.po: update the Italian translation
> l10n: it.po: update the Italian translation for v2.23.0
> l10n: it.po: update the Italian localization for v2.23.0 round 2
>
>Alexander Shopov (1):
> l10n: bg.po: Updated Bulgarian translation (4674t)
>
>Ariadne Conill (3):
> log: add warning for unspecified log.mailmap setting
> documentation: mention --no-use-mailmap and log.mailmap false setting
> tests: defang pager tests by explicitly disabling the log.mailmap warning
>
>Barret Rhoden (8):
> fsck: rename and touch up init_skiplist()
> Move oidset_parse_file() to oidset.c
> blame: use a helper function in blame_chunk()
> blame: add the ability to ignore commits and their changes
> blame: add config options for the output of ignored or unblamable lines
> blame: optionally track line fingerprints during fill_blame_origin()
> blame: use the fingerprint heuristic to match ignored lines
> blame: add a test to cover blame_coalesce()
>
>Beat Bolli (2):
> unicode: update the width tables to Unicode 12.1
> grep: print the pcre2_jit_on value
>
>Ben Avison (1):
> clone: add `--remote-submodules` flag
>
>Boxuan Li (2):
> userdiff: add Octave
> userdiff: fix grammar and style issues
>
>Carlo Marcelo Arenas Belón (6):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> trace2: correct typo in technical documentation
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
>Carmine Zaccagnino (1):
> l10n: it.po: remove an extra space
>
>Cesar Eduardo Barros (1):
> mingw: embed a manifest to trick UAC into Doing The Right Thing
>
>Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
>Christian Couder (7):
> t/helper: add test-oidmap.c
> t: add t0016-oidmap.sh
> oidmap: use sha1hash() instead of static hash() function
> test-hashmap: remove 'hash' command
> doc: improve usage string in MyFirstContribution
> test-oidmap: remove 'add' subcommand
> t0016: add 'remove' subcommand test
>
>Christopher Díaz Riveros (1):
> l10n: es: 2.23.0 round 2
>
>Daniel Ferreira (1):
> dir-iterator: add tests for dir-iterator API
>
>Denton Liu (5):
> git-format-patch.txt: document --no-notes option
> format-patch: teach format.notes config option
> config: learn the "onbranch:" includeIf condition
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (51):
> commit-graph: fix the_repository reference
> revision: use generation for A..B --topo-order queries
> revision: keep topo-walk free of unintersting commits
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> repack: refactor pack deletion for future use
> Docs: rearrange subcommands for multi-pack-index
> multi-pack-index: prepare for 'expire' subcommand
> midx: simplify computation of pack name lengths
> midx: refactor permutation logic and pack sorting
> multi-pack-index: implement 'expire' subcommand
> multi-pack-index: prepare 'repack' subcommand
> midx: implement midx_repack()
> multi-pack-index: test expire while adding packs
> midx: add test that 'expire' respects .keep files
> t5319-multi-pack-index.sh: test batch size zero
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
> commit-graph: document commit-graph chains
> commit-graph: prepare for commit-graph chains
> commit-graph: rename commit_compare to oid_compare
> commit-graph: load commit-graph chains
> commit-graph: add base graphs chunk
> commit-graph: rearrange chunk count logic
> commit-graph: write commit-graph chains
> commit-graph: add --split option to builtin
> commit-graph: merge commit-graph chains
> commit-graph: allow cross-alternate chains
> commit-graph: expire commit-graph files
> commit-graph: create options for split files
> commit-graph: verify chains with --shallow mode
> commit-graph: clean up chains after flattened write
> commit-graph: test octopus merges with --split
> commit-graph: test --split across alternate without --split
> commit-graph: normalize commit-graph filenames
> commit-graph: test verify across alternates
> fetch: add --[no-]show-forced-updates argument
> fetch: warn about forced updates in branch listing
> pull: add --[no-]show-forced-updates passthrough
> t5319: use 'test-tool path-utils' instead of 'ls -l'
> commit-graph: fix bug around octopus merges
>
>Dimitriy Ryazantcev (2):
> l10n: ru.po: update Russian translation
> l10n: localizable upload progress messages
>
>Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
>Edmundo Carmona Antoranz (1):
> builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
>Elijah Newren (6):
> t9350: fix encoding test to actually test reencoding
> fast-import: support 'encoding' commit header
> fast-export: avoid stripping encoding header if we cannot reencode
> fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
> fast-export: do automatic reencoding of commit messages only if requested
> merge-recursive: avoid directory rename detection in recursive case
>
>Emily Shaffer (7):
> documentation: add tutorial for first contribution
> documentation: add anchors to MyFirstContribution
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> doc: add some nit fixes to MyFirstContribution
> rev-list: teach --no-object-names to enable piping
> transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (3):
> update-server-info: avoid needless overwrites
> server-info: do not list unlinked packs
> repack: disable bitmaps-by-default if .keep files exist
>
>Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
>Jean-Noël Avila (2):
> l10n: reformat some localized strings for v2.23.0
> l10n: fr v2.23.0 round 2
>
>Jeff Hostetler (13):
> cache-tree/blame: avoid reusing the DEBUG constant
> msvc: mark a variable as non-const
> msvc: do not re-declare the timespec struct
> msvc: define ftello()
> msvc: fix detect_msys_tty()
> msvc: update Makefile to allow for spaces in the compiler path
> status: add status.aheadbehind setting
> status: warn when a/b calculation takes too long
> status: ignore status.aheadbehind in porcelain formats
> msvc: support building Git using MS Visual C++
> msvc: add a compile-time flag to allow detailed heap debugging
> msvc: do not pretend to support all signals
> msvc: ignore .dll and incremental compile output
>
>Jeff King (57):
> cmd_{read,write}_tree: rename "unused" variable that is used
> builtin: consistently pass cmd_* prefix to parse_options
> submodule: drop unused prefix parameter from some functions
> clone: drop dest parameter from copy_alternates()
> read-cache: drop unused parameter from threaded load
> wt-status: drop unused status parameter
> mktree: drop unused length parameter
> name-rev: drop unused parameters from is_better_name()
> pack-objects: drop unused rev_info parameters
> receive-pack: drop unused "commands" from prepare_shallow_update()
> remove_all_fetch_refspecs(): drop unused "remote" parameter
> rev-list: drop unused void pointer from finish_commit()
> show-branch: drop unused parameter from show_independent()
> verify-commit: simplify parameters to run_gpg_verify()
> help_unknown_ref(): duplicate collected refnames
> help_unknown_ref(): check for refname ambiguity
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> describe: fix accidental oid/hash type-punning
> upload-pack: rename a "sha1" variable to "oid"
> pack-bitmap-write: convert some helpers to use object_id
> pack-objects: convert packlist_find() to use object_id
> pack-objects: convert locate_object_entry_hash() to object_id
> object: convert lookup_unknown_object() to use object_id
> object: convert lookup_object() to use object_id
> object: convert internal hash_obj() to object_id
> object: convert create_object() to use object_id
> khash: drop broken oid_map typedef
> khash: rename kh_oid_t to kh_oid_set
> delta-islands: convert island_marks khash to use oids
> pack-bitmap: convert khash_sha1 maps into kh_oid_map
> khash: drop sha1-specific map types
> khash: rename oid helper functions
> hash.h: move object_id definition from cache.h
> hashmap: convert sha1hash() to oidhash()
> delta-islands: respect progress flag
> blame: drop some unused function parameters
> object-store.h: move for_each_alternate_ref() from transport.h
> check_everything_connected: assume alternate ref tips are valid
> test-lib: introduce test_commit_bulk
> t5310: increase the number of bitmapped commits
> t3311: use test_commit_bulk
> t5702: use test_commit_bulk
> t5703: use test_commit_bulk
> t6200: use test_commit_bulk
> xdiff: clamp function context indices in post-image
> t: sort output of hashmap iteration
> t7700: clean up .keep file in bitmap-writing test
> repack: silence warnings when auto-enabled bitmaps cannot be built
> repack: simplify handling of auto-bitmaps and .keep files
> t0000: reword comments for "local" test
>
>Jiang Xin (3):
> l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
> l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
> l10n: zh_CN: for git v2.23.0 l10n round 1~2
>
>Johannes Schindelin (47):
> Drop unused git-rebase--am.sh
> t3400: stop referring to the scripted rebase
> .gitignore: there is no longer a built-in `git-rebase--interactive`
> sequencer: the `am` and `rebase--interactive` scripts are gone
> rebase: fold git-rebase--common into the -p backend
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> mingw: fix a typo in the msysGit-specific section
> Mark .bat files as requiring CR/LF endings
> t0001 (mingw): do not expect a specific order of stdout/stderr
> obstack: fix compiler warning
> mingw: replace mingw_startup() hack
> msvc: fix dependencies of compat/msvc.c
> t0001: fix on case-insensitive filesystems
> msvc: avoid debug assertion windows in Debug Mode
> mingw: enable stack smashing protector
> mingw: get pw_name in UTF-8 format
> mingw: use Unicode functions explicitly
> rebase --am: ignore rebase.rescheduleFailedExec
> mingw: fix possible buffer overrun when calling `GetUserNameW()`
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
> rebase: fix white-space
> git: mark cmd_rebase as requiring a worktree
> Vcproj.pm: auto-generate GUIDs
> Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
> Vcproj.pm: urlencode '<' and '>' when generating VC projects
> contrib/buildsystems: ignore irrelevant files in Generators/
> contrib/buildsystems: error out on unknown option
> contrib/buildsystems: handle libiconv, too
> contrib/buildsystems: also handle -lexpat
> contrib/buildsystems: handle options starting with a slash
> contrib/buildsystems: add a backend for modern Visual Studio versions
> msvc: add a Makefile target to pre-generate the Visual Studio solution
> vcxproj: also link-or-copy builtins
> .gitignore: ignore Visual Studio's temporary/generated files
> bin-wrappers: append `.exe` to target paths if necessary
> git: avoid calling aliased builtins via their dashed form
> config: work around bug with includeif:onbranch and early config
>
>Johannes Sixt (5):
> userdiff: two simplifications of patterns for rust
> t7610-mergetool: do not place pipelines headed by `yes` in subshells
> t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
> mergetool: dissect strings with shell variable magic instead of `expr`
> mergetool: use shell variable magic instead of `awk`
>
>John Lin (1):
> status: remove the empty line after hints
>
>Jonathan Nieder (1):
> t: decrease nesting in test_oid_to_path
>
>Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
>Jordi Mas (2):
> l10n: Update Catalan translation
> l10n: Update Catalan translation
>
>Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
>Junio C Hamano (21):
> The first batch after 2.22
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> The sixth batch
> The seventh batch
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.23-rc0
> test-dir-iterator: do not assume errno values
> A few more last-minute fixes
> log: flip the --mailmap default unconditionally
> log: really flip the --mailmap default
> Git 2.23-rc1
> Git 2.23-rc2
> Git 2.22.1
> Git 2.23
>
>Karsten Blees (2):
> gettext: always use UTF-8 on native Windows
> mingw: initialize HOME on startup
>
>Marc-André Lureau (1):
> userdiff: add built-in pattern for rust
>
>Mark Rushakoff (2):
> doc: typo: s/can not/cannot/ and s/is does/does/
> doc: fix repeated words
>
>Martin Ågren (3):
> ref-filter: fix memory leak in `free_array_item()`
> RelNotes/2.21.1: typofix
> RelNotes/2.23.0: fix a few typos and other minor issues
>
>Matheus Tavares (8):
> clone: better handle symlinked files at .git/objects/
> dir-iterator: use warning_errno when possible
> dir-iterator: refactor state machine model
> dir-iterator: add flags parameter to dir_iterator_begin
> clone: copy hidden paths at local clone
> clone: extract function from copy_or_link_directory
> clone: use dir-iterator to avoid explicit dir traversal
> clone: replace strcmp by fspathcmp
>
>Matthew DeVore (5):
> list-objects-filter-options: error is localizeable
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
> ref-filter: sort detached HEAD lines firstly
>
>Matthias Rüster (1):
> l10n: de.po: Update German translation
>
>Mazo, Andrey (8):
> git-p4: detect/prevent infinite loop in gitCommitByP4Change()
> git-p4: add failing test for "git-p4: match branches case insensitively if configured"
> git-p4: match branches case insensitively if configured
> git-p4: don't groom exclude path list on every commit
> git-p4: add failing test for "don't exclude other files with same prefix"
> git-p4: don't exclude other files with same prefix
> git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
> git-p4: respect excluded paths when detecting branches
>
>Michael Osipov (1):
> configure: Detect linking style for HP aCC on HP-UX
>
>Michael Platings (2):
> blame: add a fingerprint heuristic to match ignored lines
> t8014: remove unnecessary braces
>
>Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (63):
> git-checkout.txt: spell out --no-option
> git-checkout.txt: fix one syntax line
> doc: document --overwrite-ignore
> git-checkout.txt: fix monospace typeset
> t: rename t2014-switch.sh to t2014-checkout-switch.sh
> checkout: advice how to get out of detached HEAD mode
> checkout: inform the user when removing branch state
> checkout: keep most #include sorted
> checkout: factor out some code in parse_branchname_arg()
> checkout: make "opts" in cmd_checkout() a pointer
> checkout: move 'confict_style' and 'dwim_..' to checkout_opts
> checkout: split options[] array in three pieces
> checkout: split part of it to new command 'switch'
> switch: better names for -b and -B
> switch: add --discard-changes
> switch: remove -l
> switch: stop accepting pathspec
> switch: reject "do nothing" case
> switch: only allow explicit detached HEAD
> switch: add short option for --detach
> switch: implicit dwim, use --no-guess to disable it
> switch: no worktree status unless real branch switch happens
> switch: reject if some operation is in progress
> switch: make --orphan switch to an empty tree
> t: add tests for switch
> completion: support switch
> doc: promote "git switch"
> checkout: split part of it to new command 'restore'
> restore: take tree-ish from --source option instead
> restore: make pathspec mandatory
> restore: disable overlay mode by default
> checkout: factor out worktree checkout code
> restore: add --worktree and --staged
> restore: reject invalid combinations with --staged
> restore: default to --source=HEAD when only --staged is specified
> restore: replace --force with --ignore-unmerged
> restore: support --patch
> t: add tests for restore
> completion: support restore
> user-manual.txt: prefer 'merge --abort' over 'reset --hard'
> doc: promote "git restore"
> help: move git-diff and git-reset to different groups
> Declare both git-switch and git-restore experimental
> merge: remove drop_save() in favor of remove_merge_branch_state()
> init: make --template path relative to $CWD
> worktree add: sanitize worktree names
> worktree add: be tolerant of corrupt worktrees
> merge: add --quit
> completion: do not cache if --git-completion-helper fails
> fetch: only run 'gc' once when fetching multiple remotes
> t2027: use test_must_be_empty
> switch: allow to switch in the middle of bisect
> completion: disable dwim on "git switch -d"
> fetch-pack: move capability names out of i18n strings
> fetch-pack: print all relevant supported capabilities with -v -v
> fetch-pack: print server version at the top in -v -v
> sha1-file.c: remove the_repo from read_object_with_reference()
> tree-walk.c: remove the_repo from fill_tree_descriptor()
> tree-walk.c: remove the_repo from get_tree_entry()
> tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
> match-trees.c: remove the_repo from shift_tree*()
> Use the right 'struct repository' instead of the_repository
> t7814: do not generate same commits in different repos
>
>Nickolai Belakovski (3):
> ref-filter: add worktreepath atom
> branch: update output to include worktree info
> branch: add worktree info on verbose output
>
>Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
>Peter Krefting (1):
> l10n: sv.po: Update Swedish translation (4676t0f0u)
>
>Philip Oakley (16):
> git.c: show usage for accessing the git(1) help page
> Doc: git.txt: remove backticks from link and add git-scm.com/docs
> doc branch: provide examples for listing remote tracking branches
> msvc: include sigset_t definition
> msvc: define O_ACCMODE
> msvc: add pragmas for common warnings
> Vcproj.pm: list git.exe first to be startup project
> contrib/buildsystems: ignore invalidcontinue.obj
> contrib/buildsystems: fix misleading error message
> contrib/buildsystems: handle quoted spaces in filenames
> contrib/buildsystems: ignore gettext stuff
> contrib/buildsystems: redirect errors of the dry run into a log file
> contrib/buildsystems: optionally capture the dry-run in a file
> contrib/buildsystems: handle the curl library option
> .gitignore: touch up the entries regarding Visual Studio
> .mailmap: update email address of Philip Oakley
>
>Philipp Weißmann (1):
> l10n: de.po: Fix typo in German translation
>
>Phillip Wood (12):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> rebase -r: always reword merge -c
> add -p: fix checkout -p with pathological context
> show --continue/skip etc. consistently in synopsis
> sequencer: always allow tab after command name
> sequencer: factor out todo command name parsing
> status: do not report errors in sequencer/todo
> git-prompt: improve cherry-pick/revert detection
> t3420: remove progress lines before comparing output
>
>Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
>Ramsay Jones (1):
> env--helper: mark a file-local symbol as static
>
>René Scharfe (10):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
> commit-graph: release strbufs after use
> dir-iterator: release strbuf after use
> test-dir-iterator: use path argument directly
> sha1-file: release strbuf after use
>
>Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
>Rohit Ashiwal (5):
> sequencer: add advice for revert
> sequencer: rename reset_for_rollback to reset_merge
> sequencer: use argv_array in reset_merge
> cherry-pick/revert: add --skip option
> cherry-pick/revert: advise using --skip
>
>SZEDER Gábor (12):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> travis-ci: build with GCC 4.8 as well
> Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
> git-p4: allow unshelving of branched files
>
>Stephen Boyd (2):
> format-patch: inform user that patch-id generation is unstable
> format-patch: make --base patch-id output stable
>
>Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
>Taylor Blau (1):
> ref-filter.c: find disjoint pattern prefixes
>
>Thomas Gummerer (16):
> stash: fix show referencing stash index
> apply: replace marc.info link with public-inbox
> apply: only pass required data to skip_tree_prefix
> apply: only pass required data to git_header_name
> apply: only pass required data to check_header_line
> apply: only pass required data to find_name_*
> apply: only pass required data to gitdiff_* functions
> apply: make parse_git_diff_header public
> range-diff: fix function parameter indentation
> range-diff: split lines manually
> range-diff: don't remove funcname from inner diff
> range-diff: suppress line count in outer diff
> range-diff: add section header instead of diff header
> range-diff: add filename to inner diff
> range-diff: add headers to the outer hunk header
> stash: fix handling removed files with --keep-index
>
>Tigran Mkrtchyan (1):
> tag: add tag.gpgSign config option to force all tags be GPG-signed
>
>Trần Ngọc Quân (2):
> l10n: vi.po (4676t): Updated Vietnamese translation
> l10n: vi(4674t): Updated translation for Vietnamese
>
>Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
> merge: refuse --commit with --squash
>
>William Chargin (1):
> restore: fix typo in docs
>
>Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
>brian m. carlson (10):
> t: add helper to convert object IDs to paths
> t1410: make hash size independent
> t1450: make hash size independent
> t5000: make hash independent
> t6030: make test work with SHA-256
> t0027: make hash size independent
> t0090: make test pass with SHA-256
> t1007: remove SHA1 prerequisites
> t1710: make hash independent
> t2203: avoid hard-coded object ID values
>
>Ævar Arnfjörð Bjarmason (21):
> send-email: move the read_config() function above getopts
> send-email: rename the @bcclist variable for consistency
> send-email: do defaults -> config -> getopt in that order
> tests: add a special setup where prerequisites fail
> Makefile: remove the NO_R_TO_GCC_LINKER flag
> send-email: remove cargo-culted multi-patch pattern in tests
> send-email: fix broken transferEncoding tests
> send-email: document --no-[to|cc|bcc]
> hash-object doc: stop mentioning git-cvsimport
> send-email: fix regression in sendemail.identity parsing
> Revert "test-lib: whitelist GIT_TR2_* in the environment"
> config tests: simplify include cycle test
> env--helper: new undocumented builtin wrapping git_env_*()
> config.c: refactor die_bad_number() to not call gettext() early
> t6040 test: stop using global "script" variable
> tests: make GIT_TEST_GETTEXT_POISON a boolean
> tests README: re-flow a previously changed paragraph
> tests: replace test_tristate with "git env--helper"
> tests: make GIT_TEST_FAIL_PREREQS a boolean
> tests: mark two failing tests under FAIL_PREREQS
> clone: test for our behavior on odd objects/* content
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.23.0
@ 2019-08-16 21:00 2% Junio C Hamano
2019-08-16 21:30 0% ` Bhaskar Chowdhury
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-08-16 21:00 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.23.0 is now available at the
usual places. It is comprised of 505 non-merge commits since
v2.22.0, contributed by 77 people, 26 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.23.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Carmine Zaccagnino,
Daniel Ferreira, Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk,
John Lin, Mark Rushakoff, Matheus Tavares, Mazo, Andrey,
Michael Osipov, Michael Platings, Miguel Ojeda, Mike Mueller,
Morian Sonnet, Philipp Weißmann, Quentin Nerden, Robert Morgan,
Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alessandro Menti, Alexander
Shopov, Beat Bolli, Boxuan Li, brian m. carlson, Carlo Marcelo
Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
Couder, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh
Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
Martin Ågren, Matthew DeVore, Matthias Rüster, Mike Hommey,
Nguyễn Thái Ngọc Duy, Nickolai Belakovski, Paolo Bonzini,
Peter Krefting, Philip Oakley, Phillip Wood, Ramsay Jones, René
Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor, Taylor Blau,
Thomas Gummerer, Trần Ngọc Quân, and William Chargin.
----------------------------------------------------------------
Git 2.23 Release Notes
======================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
* The "git log" command by default behaves as if the --mailmap option
was given.
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-show-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned the "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainder of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targeting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to an unrelated file descriptor getting
closed, which has been fixed.
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
* More parameter validation.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* Code clean-up to avoid signed integer wraparounds during binary search.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* The internal diff machinery can be made to read out of bounds while
looking for --function-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Alessandro Menti (3):
l10n: it.po: update the Italian translation
l10n: it.po: update the Italian translation for v2.23.0
l10n: it.po: update the Italian localization for v2.23.0 round 2
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (4674t)
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (6):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Carmine Zaccagnino (1):
l10n: it.po: remove an extra space
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Christopher Díaz Riveros (1):
l10n: es: 2.23.0 round 2
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (51):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
commit-graph: fix bug around octopus merges
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (6):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
merge-recursive: avoid directory rename detection in recursive case
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jean-Noël Avila (2):
l10n: reformat some localized strings for v2.23.0
l10n: fr v2.23.0 round 2
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (57):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
t: sort output of hashmap iteration
t7700: clean up .keep file in bitmap-writing test
repack: silence warnings when auto-enabled bitmaps cannot be built
repack: simplify handling of auto-bitmaps and .keep files
t0000: reword comments for "local" test
Jiang Xin (3):
l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
l10n: zh_CN: for git v2.23.0 l10n round 1~2
Johannes Schindelin (47):
Drop unused git-rebase--am.sh
t3400: stop referring to the scripted rebase
.gitignore: there is no longer a built-in `git-rebase--interactive`
sequencer: the `am` and `rebase--interactive` scripts are gone
rebase: fold git-rebase--common into the -p backend
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Vcproj.pm: auto-generate GUIDs
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Vcproj.pm: urlencode '<' and '>' when generating VC projects
contrib/buildsystems: ignore irrelevant files in Generators/
contrib/buildsystems: error out on unknown option
contrib/buildsystems: handle libiconv, too
contrib/buildsystems: also handle -lexpat
contrib/buildsystems: handle options starting with a slash
contrib/buildsystems: add a backend for modern Visual Studio versions
msvc: add a Makefile target to pre-generate the Visual Studio solution
vcxproj: also link-or-copy builtins
.gitignore: ignore Visual Studio's temporary/generated files
bin-wrappers: append `.exe` to target paths if necessary
git: avoid calling aliased builtins via their dashed form
config: work around bug with includeif:onbranch and early config
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Nieder (1):
t: decrease nesting in test_oid_to_path
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (21):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
test-dir-iterator: do not assume errno values
A few more last-minute fixes
log: flip the --mailmap default unconditionally
log: really flip the --mailmap default
Git 2.23-rc1
Git 2.23-rc2
Git 2.22.1
Git 2.23
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Mark Rushakoff (2):
doc: typo: s/can not/cannot/ and s/is does/does/
doc: fix repeated words
Martin Ågren (3):
ref-filter: fix memory leak in `free_array_item()`
RelNotes/2.21.1: typofix
RelNotes/2.23.0: fix a few typos and other minor issues
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Matthias Rüster (1):
l10n: de.po: Update German translation
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (4676t0f0u)
Philip Oakley (16):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Vcproj.pm: list git.exe first to be startup project
contrib/buildsystems: ignore invalidcontinue.obj
contrib/buildsystems: fix misleading error message
contrib/buildsystems: handle quoted spaces in filenames
contrib/buildsystems: ignore gettext stuff
contrib/buildsystems: redirect errors of the dry run into a log file
contrib/buildsystems: optionally capture the dry-run in a file
contrib/buildsystems: handle the curl library option
.gitignore: touch up the entries regarding Visual Studio
.mailmap: update email address of Philip Oakley
Philipp Weißmann (1):
l10n: de.po: Fix typo in German translation
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (10):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
commit-graph: release strbufs after use
dir-iterator: release strbuf after use
test-dir-iterator: use path argument directly
sha1-file: release strbuf after use
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (12):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Trần Ngọc Quân (2):
l10n: vi.po (4676t): Updated Vietnamese translation
l10n: vi(4674t): Updated translation for Vietnamese
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
William Chargin (1):
restore: fix typo in docs
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
brian m. carlson (10):
t: add helper to convert object IDs to paths
t1410: make hash size independent
t1450: make hash size independent
t5000: make hash independent
t6030: make test work with SHA-256
t0027: make hash size independent
t0090: make test pass with SHA-256
t1007: remove SHA1 prerequisites
t1710: make hash independent
t2203: avoid hard-coded object ID values
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 2%]
* Re: [ANNOUNCE] Git v2.22.1
2019-08-12 19:40 1% [ANNOUNCE] Git v2.22.1 Junio C Hamano
@ 2019-08-12 22:49 0% ` Bhaskar Chowdhury
0 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-08-12 22:49 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 14946 bytes --]
Thanks, a bunch Junio :)
On 12:40 Mon 12 Aug 2019, Junio C Hamano wrote:
>A maintenance release Git v2.22.1 is now available at the usual
>places. This backports many of the fixes that appeared already
>on the 'master' front in preparation for the upcoming v2.23 release
>of Git.
>
>The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/
>
>The following public repositories all have a copy of the 'v2.22.1'
>tag and the 'maint' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
>----------------------------------------------------------------
>
>Git 2.22.1 Release Notes
>========================
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to unrelated file descriptor getting
> closed, which has been fixed.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * Code clean-up to avoid signed integer overlaps during binary search.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --funcion-context line in a corner case, which has been
> corrected.
>
>Also contains various documentation updates, code clean-ups and minor fixups.
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Beat Bolli (1):
> unicode: update the width tables to Unicode 12.1
>
>Carlo Marcelo Arenas Belón (5):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
>Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
>Denton Liu (2):
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (15):
> commit-graph: fix the_repository reference
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
>
>Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
>Emily Shaffer (3):
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (1):
> server-info: do not list unlinked packs
>
>Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
>Jeff King (10):
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> delta-islands: respect progress flag
> xdiff: clamp function context indices in post-image
>
>Johannes Schindelin (14):
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> t0001: fix on case-insensitive filesystems
> rebase --am: ignore rebase.rescheduleFailedExec
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
>
>Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
>Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
>Junio C Hamano (6):
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.22.1
>
>Martin Ågren (1):
> RelNotes/2.21.1: typofix
>
>Matthew DeVore (3):
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
>
>Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (3):
> init: make --template path relative to $CWD
> worktree add: be tolerant of corrupt worktrees
> completion: do not cache if --git-completion-helper fails
>
>Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
>Philip Oakley (2):
> doc branch: provide examples for listing remote tracking branches
> .mailmap: update email address of Philip Oakley
>
>Phillip Wood (5):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> add -p: fix checkout -p with pathological context
>
>Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
>René Scharfe (6):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
>
>Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
>SZEDER Gábor (11):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
> git-p4: allow unshelving of branched files
>
>Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
>Thomas Gummerer (1):
> stash: fix show referencing stash index
>
>Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
> merge: refuse --commit with --squash
>
>Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
>Ævar Arnfjörð Bjarmason (1):
> hash-object doc: stop mentioning git-cvsimport
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.22.1
@ 2019-08-12 19:40 1% Junio C Hamano
2019-08-12 22:49 0% ` Bhaskar Chowdhury
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-08-12 19:40 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A maintenance release Git v2.22.1 is now available at the usual
places. This backports many of the fixes that appeared already
on the 'master' front in preparation for the upcoming v2.23 release
of Git.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.22.1'
tag and the 'maint' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
----------------------------------------------------------------
Git 2.22.1 Release Notes
========================
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to unrelated file descriptor getting
closed, which has been fixed.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* Code clean-up to avoid signed integer overlaps during binary search.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* The internal diff machinery can be made to read out of bounds while
looking for --funcion-context line in a corner case, which has been
corrected.
Also contains various documentation updates, code clean-ups and minor fixups.
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Beat Bolli (1):
unicode: update the width tables to Unicode 12.1
Carlo Marcelo Arenas Belón (5):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Chris Mayo (1):
send-email: update documentation of required Perl modules
Denton Liu (2):
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (15):
commit-graph: fix the_repository reference
sha1-file: split OBJECT_INFO_FOR_PREFETCH
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Emily Shaffer (3):
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (1):
server-info: do not list unlinked packs
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jeff King (10):
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
delta-islands: respect progress flag
xdiff: clamp function context indices in post-image
Johannes Schindelin (14):
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
t0001: fix on case-insensitive filesystems
rebase --am: ignore rebase.rescheduleFailedExec
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (6):
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.22.1
Martin Ågren (1):
RelNotes/2.21.1: typofix
Matthew DeVore (3):
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (3):
init: make --template path relative to $CWD
worktree add: be tolerant of corrupt worktrees
completion: do not cache if --git-completion-helper fails
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (2):
doc branch: provide examples for listing remote tracking branches
.mailmap: update email address of Philip Oakley
Phillip Wood (5):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
add -p: fix checkout -p with pathological context
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
René Scharfe (6):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
Robert Morgan (1):
gpg(docs): use correct --verify syntax
SZEDER Gábor (11):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Thomas Gummerer (1):
stash: fix show referencing stash index
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
Ævar Arnfjörð Bjarmason (1):
hash-object doc: stop mentioning git-cvsimport
^ permalink raw reply [relevance 1%]
* Git for Windows v2.23.0-rc2, was Re: [ANNOUNCE] Git v2.23.0-rc2
2019-08-09 19:29 2% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
2019-08-09 21:20 0% ` Bhaskar Chowdhury
@ 2019-08-09 21:31 0% ` Johannes Schindelin
1 sibling, 0 replies; 162+ results
From: Johannes Schindelin @ 2019-08-09 21:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git-for-windows, git, git-packagers
[-- Attachment #1: Type: text/plain, Size: 46623 bytes --]
Team,
On Fri, 9 Aug 2019, Junio C Hamano wrote:
> A release candidate Git v2.23.0-rc2 is now available for testing
> at the usual places. It is comprised of 483 non-merge commits
> since v2.22.0, contributed by 67 people, 24 of which are new faces.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
> The following public repositories all have a copy of the
> 'v2.23.0-rc2' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
The corresponding Git for Windows v2.23.0-rc2 can be found here:
https://github.com/git-for-windows/git/releases/tag/v2.23.0-rc2.windows.1
Please test as much as you can.
Thanks!
Johannes
>
> New contributors whose contributions weren't in v2.22.0 are as follows.
> Welcome to the Git development community!
>
> Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
> Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
> Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
> Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
> Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
> Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
> m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
> Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
> Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
> Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
> Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
> Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
> Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
> René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
> Taylor Blau, Thomas Gummerer, and William Chargin.
>
> ----------------------------------------------------------------
>
> Git 2.23 Release Notes (draft)
> ==============================
>
> Updates since v2.22
> -------------------
>
> Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
> prerequisite patches in an unstable way, which has been updated to
> compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
> was given.
>
>
> UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
> with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
> refs/worktrees/<wtname>/ hierarchy, which means that worktree names
> must be a valid refname component. The code now sanitizes the names
> given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
> merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
> its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
> interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
> to ignore commit object names recorded in the superproject gitlink
> and instead use the commits that happen to be at the tip of the
> remote-tracking branches from the get-go, by passing the new
> "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Matlab has been extend to cover Octave, which is more
> or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
> people).
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
> "--[no-]ahead-behind" option with a new configuration variable
> status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
> non-fast-forward updates to let the user notice unusual situation.
> The commands learned "--no-show-forced-updates" option to disable
> this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
> split "checking out a branch to work on advancing its history" and
> "checking out paths out of the index and/or a tree-ish to work on
> advancing the current history" out of the single "git checkout"
> command.
>
> * "git branch --list" learned to always output the detached HEAD as
> the first item (when the HEAD is detached, of course), regardless
> of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
> the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
> squelch the path to the object that is used as a grouping hint for
> pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
> "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
> effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
> starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
> commit-graph files now, which allows the commit-graph files to be
> updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
> of which part of what file the patch shown is about.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
> no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
> ensure that the remainder of the tests still succeeds when tests
> with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
> same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
> has been simplified. The old default to pass -R/path/to/dir has been
> replaced with the new default to pass -Wl,-rpath,/path/to/dir,
> which is the more recent GCC uses. Those who need to build with an
> old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
> on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
> developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
> libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
> auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
> "git status" has been made more robust against a corrupt or stale
> state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
> instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
> committed, the command line prompt script failed to notice the
> current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
> how our tests are run, but a few followed "non-empty is true, empty
> or unset is false" while others followed the usual "there are a few
> ways to spell true, like yes, on, etc., and also ways to spell
> false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
> optimization codepath.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
> repositories with many simple commits, and a handful of test
> scripts have been updated to use it.
>
>
> Fixes since v2.22
> -----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to an unrelated file descriptor getting
> closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
> give the user a chance to edit the log message, even when there is
> otherwise no need to create a new merge and replace the existing
> one (i.e. fast-forward instead), but did not. Which has been
> corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git branch --list" learned to show branches that are checked out
> in other worktrees connected to the same repository prefixed with
> '+', similar to the way the currently checked out branch is shown
> with '*' in front.
> (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * Protocol capabilities that go over wire should never be translated,
> but it was incorrectly marked for translation, which has been
> corrected. The output of protocol capabilities for debugging has
> been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
> as these are mutually exclusive features.
> (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
> been removed, which has been fixed.
> (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --function-context line in a corner case, which has been
> corrected.
> (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge fbec05c210 cc/test-oidmap later to maint).
> (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
> (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
> (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.22.0 are as follows:
>
> Ariadne Conill (3):
> log: add warning for unspecified log.mailmap setting
> documentation: mention --no-use-mailmap and log.mailmap false setting
> tests: defang pager tests by explicitly disabling the log.mailmap warning
>
> Barret Rhoden (8):
> fsck: rename and touch up init_skiplist()
> Move oidset_parse_file() to oidset.c
> blame: use a helper function in blame_chunk()
> blame: add the ability to ignore commits and their changes
> blame: add config options for the output of ignored or unblamable lines
> blame: optionally track line fingerprints during fill_blame_origin()
> blame: use the fingerprint heuristic to match ignored lines
> blame: add a test to cover blame_coalesce()
>
> Beat Bolli (2):
> unicode: update the width tables to Unicode 12.1
> grep: print the pcre2_jit_on value
>
> Ben Avison (1):
> clone: add `--remote-submodules` flag
>
> Boxuan Li (2):
> userdiff: add Octave
> userdiff: fix grammar and style issues
>
> Carlo Marcelo Arenas Belón (6):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> trace2: correct typo in technical documentation
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
> Cesar Eduardo Barros (1):
> mingw: embed a manifest to trick UAC into Doing The Right Thing
>
> Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
> Christian Couder (7):
> t/helper: add test-oidmap.c
> t: add t0016-oidmap.sh
> oidmap: use sha1hash() instead of static hash() function
> test-hashmap: remove 'hash' command
> doc: improve usage string in MyFirstContribution
> test-oidmap: remove 'add' subcommand
> t0016: add 'remove' subcommand test
>
> Daniel Ferreira (1):
> dir-iterator: add tests for dir-iterator API
>
> Denton Liu (5):
> git-format-patch.txt: document --no-notes option
> format-patch: teach format.notes config option
> config: learn the "onbranch:" includeIf condition
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
> Derrick Stolee (51):
> commit-graph: fix the_repository reference
> revision: use generation for A..B --topo-order queries
> revision: keep topo-walk free of unintersting commits
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> repack: refactor pack deletion for future use
> Docs: rearrange subcommands for multi-pack-index
> multi-pack-index: prepare for 'expire' subcommand
> midx: simplify computation of pack name lengths
> midx: refactor permutation logic and pack sorting
> multi-pack-index: implement 'expire' subcommand
> multi-pack-index: prepare 'repack' subcommand
> midx: implement midx_repack()
> multi-pack-index: test expire while adding packs
> midx: add test that 'expire' respects .keep files
> t5319-multi-pack-index.sh: test batch size zero
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
> commit-graph: document commit-graph chains
> commit-graph: prepare for commit-graph chains
> commit-graph: rename commit_compare to oid_compare
> commit-graph: load commit-graph chains
> commit-graph: add base graphs chunk
> commit-graph: rearrange chunk count logic
> commit-graph: write commit-graph chains
> commit-graph: add --split option to builtin
> commit-graph: merge commit-graph chains
> commit-graph: allow cross-alternate chains
> commit-graph: expire commit-graph files
> commit-graph: create options for split files
> commit-graph: verify chains with --shallow mode
> commit-graph: clean up chains after flattened write
> commit-graph: test octopus merges with --split
> commit-graph: test --split across alternate without --split
> commit-graph: normalize commit-graph filenames
> commit-graph: test verify across alternates
> fetch: add --[no-]show-forced-updates argument
> fetch: warn about forced updates in branch listing
> pull: add --[no-]show-forced-updates passthrough
> t5319: use 'test-tool path-utils' instead of 'ls -l'
> commit-graph: fix bug around octopus merges
>
> Dimitriy Ryazantcev (1):
> l10n: localizable upload progress messages
>
> Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
> Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
> Edmundo Carmona Antoranz (1):
> builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
> Elijah Newren (6):
> t9350: fix encoding test to actually test reencoding
> fast-import: support 'encoding' commit header
> fast-export: avoid stripping encoding header if we cannot reencode
> fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
> fast-export: do automatic reencoding of commit messages only if requested
> merge-recursive: avoid directory rename detection in recursive case
>
> Emily Shaffer (7):
> documentation: add tutorial for first contribution
> documentation: add anchors to MyFirstContribution
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> doc: add some nit fixes to MyFirstContribution
> rev-list: teach --no-object-names to enable piping
> transport-helper: enforce atomic in push_refs_with_push
>
> Eric Wong (3):
> update-server-info: avoid needless overwrites
> server-info: do not list unlinked packs
> repack: disable bitmaps-by-default if .keep files exist
>
> Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
> Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
> Jean-Noël Avila (1):
> l10n: reformat some localized strings for v2.23.0
>
> Jeff Hostetler (13):
> cache-tree/blame: avoid reusing the DEBUG constant
> msvc: mark a variable as non-const
> msvc: do not re-declare the timespec struct
> msvc: define ftello()
> msvc: fix detect_msys_tty()
> msvc: update Makefile to allow for spaces in the compiler path
> status: add status.aheadbehind setting
> status: warn when a/b calculation takes too long
> status: ignore status.aheadbehind in porcelain formats
> msvc: support building Git using MS Visual C++
> msvc: add a compile-time flag to allow detailed heap debugging
> msvc: do not pretend to support all signals
> msvc: ignore .dll and incremental compile output
>
> Jeff King (57):
> cmd_{read,write}_tree: rename "unused" variable that is used
> builtin: consistently pass cmd_* prefix to parse_options
> submodule: drop unused prefix parameter from some functions
> clone: drop dest parameter from copy_alternates()
> read-cache: drop unused parameter from threaded load
> wt-status: drop unused status parameter
> mktree: drop unused length parameter
> name-rev: drop unused parameters from is_better_name()
> pack-objects: drop unused rev_info parameters
> receive-pack: drop unused "commands" from prepare_shallow_update()
> remove_all_fetch_refspecs(): drop unused "remote" parameter
> rev-list: drop unused void pointer from finish_commit()
> show-branch: drop unused parameter from show_independent()
> verify-commit: simplify parameters to run_gpg_verify()
> help_unknown_ref(): duplicate collected refnames
> help_unknown_ref(): check for refname ambiguity
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> describe: fix accidental oid/hash type-punning
> upload-pack: rename a "sha1" variable to "oid"
> pack-bitmap-write: convert some helpers to use object_id
> pack-objects: convert packlist_find() to use object_id
> pack-objects: convert locate_object_entry_hash() to object_id
> object: convert lookup_unknown_object() to use object_id
> object: convert lookup_object() to use object_id
> object: convert internal hash_obj() to object_id
> object: convert create_object() to use object_id
> khash: drop broken oid_map typedef
> khash: rename kh_oid_t to kh_oid_set
> delta-islands: convert island_marks khash to use oids
> pack-bitmap: convert khash_sha1 maps into kh_oid_map
> khash: drop sha1-specific map types
> khash: rename oid helper functions
> hash.h: move object_id definition from cache.h
> hashmap: convert sha1hash() to oidhash()
> delta-islands: respect progress flag
> blame: drop some unused function parameters
> object-store.h: move for_each_alternate_ref() from transport.h
> check_everything_connected: assume alternate ref tips are valid
> test-lib: introduce test_commit_bulk
> t5310: increase the number of bitmapped commits
> t3311: use test_commit_bulk
> t5702: use test_commit_bulk
> t5703: use test_commit_bulk
> t6200: use test_commit_bulk
> xdiff: clamp function context indices in post-image
> t: sort output of hashmap iteration
> t7700: clean up .keep file in bitmap-writing test
> repack: silence warnings when auto-enabled bitmaps cannot be built
> repack: simplify handling of auto-bitmaps and .keep files
> t0000: reword comments for "local" test
>
> Johannes Schindelin (47):
> Drop unused git-rebase--am.sh
> t3400: stop referring to the scripted rebase
> .gitignore: there is no longer a built-in `git-rebase--interactive`
> sequencer: the `am` and `rebase--interactive` scripts are gone
> rebase: fold git-rebase--common into the -p backend
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> mingw: fix a typo in the msysGit-specific section
> Mark .bat files as requiring CR/LF endings
> t0001 (mingw): do not expect a specific order of stdout/stderr
> obstack: fix compiler warning
> mingw: replace mingw_startup() hack
> msvc: fix dependencies of compat/msvc.c
> t0001: fix on case-insensitive filesystems
> msvc: avoid debug assertion windows in Debug Mode
> mingw: enable stack smashing protector
> mingw: get pw_name in UTF-8 format
> mingw: use Unicode functions explicitly
> rebase --am: ignore rebase.rescheduleFailedExec
> mingw: fix possible buffer overrun when calling `GetUserNameW()`
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
> rebase: fix white-space
> git: mark cmd_rebase as requiring a worktree
> Vcproj.pm: auto-generate GUIDs
> Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
> Vcproj.pm: urlencode '<' and '>' when generating VC projects
> contrib/buildsystems: ignore irrelevant files in Generators/
> contrib/buildsystems: error out on unknown option
> contrib/buildsystems: handle libiconv, too
> contrib/buildsystems: also handle -lexpat
> contrib/buildsystems: handle options starting with a slash
> contrib/buildsystems: add a backend for modern Visual Studio versions
> msvc: add a Makefile target to pre-generate the Visual Studio solution
> vcxproj: also link-or-copy builtins
> .gitignore: ignore Visual Studio's temporary/generated files
> bin-wrappers: append `.exe` to target paths if necessary
> git: avoid calling aliased builtins via their dashed form
> config: work around bug with includeif:onbranch and early config
>
> Johannes Sixt (5):
> userdiff: two simplifications of patterns for rust
> t7610-mergetool: do not place pipelines headed by `yes` in subshells
> t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
> mergetool: dissect strings with shell variable magic instead of `expr`
> mergetool: use shell variable magic instead of `awk`
>
> John Lin (1):
> status: remove the empty line after hints
>
> Jonathan Nieder (1):
> t: decrease nesting in test_oid_to_path
>
> Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
> Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
> Junio C Hamano (19):
> The first batch after 2.22
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> The sixth batch
> The seventh batch
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.23-rc0
> test-dir-iterator: do not assume errno values
> A few more last-minute fixes
> log: flip the --mailmap default unconditionally
> log: really flip the --mailmap default
> Git 2.23-rc1
> Git 2.23-rc2
>
> Karsten Blees (2):
> gettext: always use UTF-8 on native Windows
> mingw: initialize HOME on startup
>
> Marc-André Lureau (1):
> userdiff: add built-in pattern for rust
>
> Mark Rushakoff (1):
> doc: typo: s/can not/cannot/ and s/is does/does/
>
> Martin Ågren (3):
> ref-filter: fix memory leak in `free_array_item()`
> RelNotes/2.21.1: typofix
> RelNotes/2.23.0: fix a few typos and other minor issues
>
> Matheus Tavares (8):
> clone: better handle symlinked files at .git/objects/
> dir-iterator: use warning_errno when possible
> dir-iterator: refactor state machine model
> dir-iterator: add flags parameter to dir_iterator_begin
> clone: copy hidden paths at local clone
> clone: extract function from copy_or_link_directory
> clone: use dir-iterator to avoid explicit dir traversal
> clone: replace strcmp by fspathcmp
>
> Matthew DeVore (5):
> list-objects-filter-options: error is localizeable
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
> ref-filter: sort detached HEAD lines firstly
>
> Mazo, Andrey (8):
> git-p4: detect/prevent infinite loop in gitCommitByP4Change()
> git-p4: add failing test for "git-p4: match branches case insensitively if configured"
> git-p4: match branches case insensitively if configured
> git-p4: don't groom exclude path list on every commit
> git-p4: add failing test for "don't exclude other files with same prefix"
> git-p4: don't exclude other files with same prefix
> git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
> git-p4: respect excluded paths when detecting branches
>
> Michael Osipov (1):
> configure: Detect linking style for HP aCC on HP-UX
>
> Michael Platings (2):
> blame: add a fingerprint heuristic to match ignored lines
> t8014: remove unnecessary braces
>
> Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
> Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
> Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
> Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
> Nguyễn Thái Ngọc Duy (63):
> git-checkout.txt: spell out --no-option
> git-checkout.txt: fix one syntax line
> doc: document --overwrite-ignore
> git-checkout.txt: fix monospace typeset
> t: rename t2014-switch.sh to t2014-checkout-switch.sh
> checkout: advice how to get out of detached HEAD mode
> checkout: inform the user when removing branch state
> checkout: keep most #include sorted
> checkout: factor out some code in parse_branchname_arg()
> checkout: make "opts" in cmd_checkout() a pointer
> checkout: move 'confict_style' and 'dwim_..' to checkout_opts
> checkout: split options[] array in three pieces
> checkout: split part of it to new command 'switch'
> switch: better names for -b and -B
> switch: add --discard-changes
> switch: remove -l
> switch: stop accepting pathspec
> switch: reject "do nothing" case
> switch: only allow explicit detached HEAD
> switch: add short option for --detach
> switch: implicit dwim, use --no-guess to disable it
> switch: no worktree status unless real branch switch happens
> switch: reject if some operation is in progress
> switch: make --orphan switch to an empty tree
> t: add tests for switch
> completion: support switch
> doc: promote "git switch"
> checkout: split part of it to new command 'restore'
> restore: take tree-ish from --source option instead
> restore: make pathspec mandatory
> restore: disable overlay mode by default
> checkout: factor out worktree checkout code
> restore: add --worktree and --staged
> restore: reject invalid combinations with --staged
> restore: default to --source=HEAD when only --staged is specified
> restore: replace --force with --ignore-unmerged
> restore: support --patch
> t: add tests for restore
> completion: support restore
> user-manual.txt: prefer 'merge --abort' over 'reset --hard'
> doc: promote "git restore"
> help: move git-diff and git-reset to different groups
> Declare both git-switch and git-restore experimental
> merge: remove drop_save() in favor of remove_merge_branch_state()
> init: make --template path relative to $CWD
> worktree add: sanitize worktree names
> worktree add: be tolerant of corrupt worktrees
> merge: add --quit
> completion: do not cache if --git-completion-helper fails
> fetch: only run 'gc' once when fetching multiple remotes
> t2027: use test_must_be_empty
> switch: allow to switch in the middle of bisect
> completion: disable dwim on "git switch -d"
> fetch-pack: move capability names out of i18n strings
> fetch-pack: print all relevant supported capabilities with -v -v
> fetch-pack: print server version at the top in -v -v
> sha1-file.c: remove the_repo from read_object_with_reference()
> tree-walk.c: remove the_repo from fill_tree_descriptor()
> tree-walk.c: remove the_repo from get_tree_entry()
> tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
> match-trees.c: remove the_repo from shift_tree*()
> Use the right 'struct repository' instead of the_repository
> t7814: do not generate same commits in different repos
>
> Nickolai Belakovski (3):
> ref-filter: add worktreepath atom
> branch: update output to include worktree info
> branch: add worktree info on verbose output
>
> Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
> Philip Oakley (15):
> git.c: show usage for accessing the git(1) help page
> Doc: git.txt: remove backticks from link and add git-scm.com/docs
> doc branch: provide examples for listing remote tracking branches
> msvc: include sigset_t definition
> msvc: define O_ACCMODE
> msvc: add pragmas for common warnings
> Vcproj.pm: list git.exe first to be startup project
> contrib/buildsystems: ignore invalidcontinue.obj
> contrib/buildsystems: fix misleading error message
> contrib/buildsystems: handle quoted spaces in filenames
> contrib/buildsystems: ignore gettext stuff
> contrib/buildsystems: redirect errors of the dry run into a log file
> contrib/buildsystems: optionally capture the dry-run in a file
> contrib/buildsystems: handle the curl library option
> .gitignore: touch up the entries regarding Visual Studio
>
> Phillip Wood (12):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> rebase -r: always reword merge -c
> add -p: fix checkout -p with pathological context
> show --continue/skip etc. consistently in synopsis
> sequencer: always allow tab after command name
> sequencer: factor out todo command name parsing
> status: do not report errors in sequencer/todo
> git-prompt: improve cherry-pick/revert detection
> t3420: remove progress lines before comparing output
>
> Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
> Ramsay Jones (1):
> env--helper: mark a file-local symbol as static
>
> René Scharfe (10):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
> commit-graph: release strbufs after use
> dir-iterator: release strbuf after use
> test-dir-iterator: use path argument directly
> sha1-file: release strbuf after use
>
> Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
> Rohit Ashiwal (5):
> sequencer: add advice for revert
> sequencer: rename reset_for_rollback to reset_merge
> sequencer: use argv_array in reset_merge
> cherry-pick/revert: add --skip option
> cherry-pick/revert: advise using --skip
>
> SZEDER Gábor (12):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> travis-ci: build with GCC 4.8 as well
> Documentation/git-fsck.txt: include fsck.* config variables
>
> Simon Williams (1):
> git-p4: allow unshelving of branched files
>
> Stephen Boyd (2):
> format-patch: inform user that patch-id generation is unstable
> format-patch: make --base patch-id output stable
>
> Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
> Taylor Blau (1):
> ref-filter.c: find disjoint pattern prefixes
>
> Thomas Gummerer (16):
> stash: fix show referencing stash index
> apply: replace marc.info link with public-inbox
> apply: only pass required data to skip_tree_prefix
> apply: only pass required data to git_header_name
> apply: only pass required data to check_header_line
> apply: only pass required data to find_name_*
> apply: only pass required data to gitdiff_* functions
> apply: make parse_git_diff_header public
> range-diff: fix function parameter indentation
> range-diff: split lines manually
> range-diff: don't remove funcname from inner diff
> range-diff: suppress line count in outer diff
> range-diff: add section header instead of diff header
> range-diff: add filename to inner diff
> range-diff: add headers to the outer hunk header
> stash: fix handling removed files with --keep-index
>
> Tigran Mkrtchyan (1):
> tag: add tag.gpgSign config option to force all tags be GPG-signed
>
> Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
> Vishal Verma (1):
> merge: refuse --commit with --squash
>
> William Chargin (1):
> restore: fix typo in docs
>
> Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
> brian m. carlson (10):
> t: add helper to convert object IDs to paths
> t1410: make hash size independent
> t1450: make hash size independent
> t5000: make hash independent
> t6030: make test work with SHA-256
> t0027: make hash size independent
> t0090: make test pass with SHA-256
> t1007: remove SHA1 prerequisites
> t1710: make hash independent
> t2203: avoid hard-coded object ID values
>
> Ævar Arnfjörð Bjarmason (21):
> send-email: move the read_config() function above getopts
> send-email: rename the @bcclist variable for consistency
> send-email: do defaults -> config -> getopt in that order
> tests: add a special setup where prerequisites fail
> Makefile: remove the NO_R_TO_GCC_LINKER flag
> send-email: remove cargo-culted multi-patch pattern in tests
> send-email: fix broken transferEncoding tests
> send-email: document --no-[to|cc|bcc]
> hash-object doc: stop mentioning git-cvsimport
> send-email: fix regression in sendemail.identity parsing
> Revert "test-lib: whitelist GIT_TR2_* in the environment"
> config tests: simplify include cycle test
> env--helper: new undocumented builtin wrapping git_env_*()
> config.c: refactor die_bad_number() to not call gettext() early
> t6040 test: stop using global "script" variable
> tests: make GIT_TEST_GETTEXT_POISON a boolean
> tests README: re-flow a previously changed paragraph
> tests: replace test_tristate with "git env--helper"
> tests: make GIT_TEST_FAIL_PREREQS a boolean
> tests: mark two failing tests under FAIL_PREREQS
> clone: test for our behavior on odd objects/* content
>
> --
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqqk1bmcf3q.fsf%40gitster-ct.c.googlers.com.
>
^ permalink raw reply [relevance 0%]
* Re: [ANNOUNCE] Git v2.23.0-rc2
2019-08-09 19:29 2% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
@ 2019-08-09 21:20 0% ` Bhaskar Chowdhury
2019-08-09 21:31 0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
1 sibling, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-08-09 21:20 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 45240 bytes --]
Thanks, Junio! will dig in.
On 12:29 Fri 09 Aug 2019, Junio C Hamano wrote:
>A release candidate Git v2.23.0-rc2 is now available for testing
>at the usual places. It is comprised of 483 non-merge commits
>since v2.22.0, contributed by 67 people, 24 of which are new faces.
>
>The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
>The following public repositories all have a copy of the
>'v2.23.0-rc2' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
>New contributors whose contributions weren't in v2.22.0 are as follows.
>Welcome to the Git development community!
>
> Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
> Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
> Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
> Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
> Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
> Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
> m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
> Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
> Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
> Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
> Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
> Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
> Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
> René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
> Taylor Blau, Thomas Gummerer, and William Chargin.
>
>----------------------------------------------------------------
>
>Git 2.23 Release Notes (draft)
>==============================
>
>Updates since v2.22
>-------------------
>
>Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
> prerequisite patches in an unstable way, which has been updated to
> compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
> was given.
>
>
>UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
> with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
> refs/worktrees/<wtname>/ hierarchy, which means that worktree names
> must be a valid refname component. The code now sanitizes the names
> given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
> merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
> its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
> interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
> to ignore commit object names recorded in the superproject gitlink
> and instead use the commits that happen to be at the tip of the
> remote-tracking branches from the get-go, by passing the new
> "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Matlab has been extend to cover Octave, which is more
> or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
> people).
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
> "--[no-]ahead-behind" option with a new configuration variable
> status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
> non-fast-forward updates to let the user notice unusual situation.
> The commands learned "--no-show-forced-updates" option to disable
> this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
> split "checking out a branch to work on advancing its history" and
> "checking out paths out of the index and/or a tree-ish to work on
> advancing the current history" out of the single "git checkout"
> command.
>
> * "git branch --list" learned to always output the detached HEAD as
> the first item (when the HEAD is detached, of course), regardless
> of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
> the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
> squelch the path to the object that is used as a grouping hint for
> pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
> "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
> effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
> starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
> commit-graph files now, which allows the commit-graph files to be
> updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
> of which part of what file the patch shown is about.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
> no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
> ensure that the remainder of the tests still succeeds when tests
> with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
> same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
> has been simplified. The old default to pass -R/path/to/dir has been
> replaced with the new default to pass -Wl,-rpath,/path/to/dir,
> which is the more recent GCC uses. Those who need to build with an
> old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
> on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
> developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
> libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
> auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
> "git status" has been made more robust against a corrupt or stale
> state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
> instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
> committed, the command line prompt script failed to notice the
> current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
> how our tests are run, but a few followed "non-empty is true, empty
> or unset is false" while others followed the usual "there are a few
> ways to spell true, like yes, on, etc., and also ways to spell
> false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
> optimization codepath.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
> repositories with many simple commits, and a handful of test
> scripts have been updated to use it.
>
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to an unrelated file descriptor getting
> closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
> give the user a chance to edit the log message, even when there is
> otherwise no need to create a new merge and replace the existing
> one (i.e. fast-forward instead), but did not. Which has been
> corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git branch --list" learned to show branches that are checked out
> in other worktrees connected to the same repository prefixed with
> '+', similar to the way the currently checked out branch is shown
> with '*' in front.
> (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * Protocol capabilities that go over wire should never be translated,
> but it was incorrectly marked for translation, which has been
> corrected. The output of protocol capabilities for debugging has
> been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
> as these are mutually exclusive features.
> (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
> been removed, which has been fixed.
> (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --function-context line in a corner case, which has been
> corrected.
> (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge fbec05c210 cc/test-oidmap later to maint).
> (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
> (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
> (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Ariadne Conill (3):
> log: add warning for unspecified log.mailmap setting
> documentation: mention --no-use-mailmap and log.mailmap false setting
> tests: defang pager tests by explicitly disabling the log.mailmap warning
>
>Barret Rhoden (8):
> fsck: rename and touch up init_skiplist()
> Move oidset_parse_file() to oidset.c
> blame: use a helper function in blame_chunk()
> blame: add the ability to ignore commits and their changes
> blame: add config options for the output of ignored or unblamable lines
> blame: optionally track line fingerprints during fill_blame_origin()
> blame: use the fingerprint heuristic to match ignored lines
> blame: add a test to cover blame_coalesce()
>
>Beat Bolli (2):
> unicode: update the width tables to Unicode 12.1
> grep: print the pcre2_jit_on value
>
>Ben Avison (1):
> clone: add `--remote-submodules` flag
>
>Boxuan Li (2):
> userdiff: add Octave
> userdiff: fix grammar and style issues
>
>Carlo Marcelo Arenas Belón (6):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> trace2: correct typo in technical documentation
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
>Cesar Eduardo Barros (1):
> mingw: embed a manifest to trick UAC into Doing The Right Thing
>
>Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
>Christian Couder (7):
> t/helper: add test-oidmap.c
> t: add t0016-oidmap.sh
> oidmap: use sha1hash() instead of static hash() function
> test-hashmap: remove 'hash' command
> doc: improve usage string in MyFirstContribution
> test-oidmap: remove 'add' subcommand
> t0016: add 'remove' subcommand test
>
>Daniel Ferreira (1):
> dir-iterator: add tests for dir-iterator API
>
>Denton Liu (5):
> git-format-patch.txt: document --no-notes option
> format-patch: teach format.notes config option
> config: learn the "onbranch:" includeIf condition
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (51):
> commit-graph: fix the_repository reference
> revision: use generation for A..B --topo-order queries
> revision: keep topo-walk free of unintersting commits
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> repack: refactor pack deletion for future use
> Docs: rearrange subcommands for multi-pack-index
> multi-pack-index: prepare for 'expire' subcommand
> midx: simplify computation of pack name lengths
> midx: refactor permutation logic and pack sorting
> multi-pack-index: implement 'expire' subcommand
> multi-pack-index: prepare 'repack' subcommand
> midx: implement midx_repack()
> multi-pack-index: test expire while adding packs
> midx: add test that 'expire' respects .keep files
> t5319-multi-pack-index.sh: test batch size zero
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
> commit-graph: document commit-graph chains
> commit-graph: prepare for commit-graph chains
> commit-graph: rename commit_compare to oid_compare
> commit-graph: load commit-graph chains
> commit-graph: add base graphs chunk
> commit-graph: rearrange chunk count logic
> commit-graph: write commit-graph chains
> commit-graph: add --split option to builtin
> commit-graph: merge commit-graph chains
> commit-graph: allow cross-alternate chains
> commit-graph: expire commit-graph files
> commit-graph: create options for split files
> commit-graph: verify chains with --shallow mode
> commit-graph: clean up chains after flattened write
> commit-graph: test octopus merges with --split
> commit-graph: test --split across alternate without --split
> commit-graph: normalize commit-graph filenames
> commit-graph: test verify across alternates
> fetch: add --[no-]show-forced-updates argument
> fetch: warn about forced updates in branch listing
> pull: add --[no-]show-forced-updates passthrough
> t5319: use 'test-tool path-utils' instead of 'ls -l'
> commit-graph: fix bug around octopus merges
>
>Dimitriy Ryazantcev (1):
> l10n: localizable upload progress messages
>
>Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
>Edmundo Carmona Antoranz (1):
> builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
>Elijah Newren (6):
> t9350: fix encoding test to actually test reencoding
> fast-import: support 'encoding' commit header
> fast-export: avoid stripping encoding header if we cannot reencode
> fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
> fast-export: do automatic reencoding of commit messages only if requested
> merge-recursive: avoid directory rename detection in recursive case
>
>Emily Shaffer (7):
> documentation: add tutorial for first contribution
> documentation: add anchors to MyFirstContribution
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> doc: add some nit fixes to MyFirstContribution
> rev-list: teach --no-object-names to enable piping
> transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (3):
> update-server-info: avoid needless overwrites
> server-info: do not list unlinked packs
> repack: disable bitmaps-by-default if .keep files exist
>
>Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
>Jean-Noël Avila (1):
> l10n: reformat some localized strings for v2.23.0
>
>Jeff Hostetler (13):
> cache-tree/blame: avoid reusing the DEBUG constant
> msvc: mark a variable as non-const
> msvc: do not re-declare the timespec struct
> msvc: define ftello()
> msvc: fix detect_msys_tty()
> msvc: update Makefile to allow for spaces in the compiler path
> status: add status.aheadbehind setting
> status: warn when a/b calculation takes too long
> status: ignore status.aheadbehind in porcelain formats
> msvc: support building Git using MS Visual C++
> msvc: add a compile-time flag to allow detailed heap debugging
> msvc: do not pretend to support all signals
> msvc: ignore .dll and incremental compile output
>
>Jeff King (57):
> cmd_{read,write}_tree: rename "unused" variable that is used
> builtin: consistently pass cmd_* prefix to parse_options
> submodule: drop unused prefix parameter from some functions
> clone: drop dest parameter from copy_alternates()
> read-cache: drop unused parameter from threaded load
> wt-status: drop unused status parameter
> mktree: drop unused length parameter
> name-rev: drop unused parameters from is_better_name()
> pack-objects: drop unused rev_info parameters
> receive-pack: drop unused "commands" from prepare_shallow_update()
> remove_all_fetch_refspecs(): drop unused "remote" parameter
> rev-list: drop unused void pointer from finish_commit()
> show-branch: drop unused parameter from show_independent()
> verify-commit: simplify parameters to run_gpg_verify()
> help_unknown_ref(): duplicate collected refnames
> help_unknown_ref(): check for refname ambiguity
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> describe: fix accidental oid/hash type-punning
> upload-pack: rename a "sha1" variable to "oid"
> pack-bitmap-write: convert some helpers to use object_id
> pack-objects: convert packlist_find() to use object_id
> pack-objects: convert locate_object_entry_hash() to object_id
> object: convert lookup_unknown_object() to use object_id
> object: convert lookup_object() to use object_id
> object: convert internal hash_obj() to object_id
> object: convert create_object() to use object_id
> khash: drop broken oid_map typedef
> khash: rename kh_oid_t to kh_oid_set
> delta-islands: convert island_marks khash to use oids
> pack-bitmap: convert khash_sha1 maps into kh_oid_map
> khash: drop sha1-specific map types
> khash: rename oid helper functions
> hash.h: move object_id definition from cache.h
> hashmap: convert sha1hash() to oidhash()
> delta-islands: respect progress flag
> blame: drop some unused function parameters
> object-store.h: move for_each_alternate_ref() from transport.h
> check_everything_connected: assume alternate ref tips are valid
> test-lib: introduce test_commit_bulk
> t5310: increase the number of bitmapped commits
> t3311: use test_commit_bulk
> t5702: use test_commit_bulk
> t5703: use test_commit_bulk
> t6200: use test_commit_bulk
> xdiff: clamp function context indices in post-image
> t: sort output of hashmap iteration
> t7700: clean up .keep file in bitmap-writing test
> repack: silence warnings when auto-enabled bitmaps cannot be built
> repack: simplify handling of auto-bitmaps and .keep files
> t0000: reword comments for "local" test
>
>Johannes Schindelin (47):
> Drop unused git-rebase--am.sh
> t3400: stop referring to the scripted rebase
> .gitignore: there is no longer a built-in `git-rebase--interactive`
> sequencer: the `am` and `rebase--interactive` scripts are gone
> rebase: fold git-rebase--common into the -p backend
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> mingw: fix a typo in the msysGit-specific section
> Mark .bat files as requiring CR/LF endings
> t0001 (mingw): do not expect a specific order of stdout/stderr
> obstack: fix compiler warning
> mingw: replace mingw_startup() hack
> msvc: fix dependencies of compat/msvc.c
> t0001: fix on case-insensitive filesystems
> msvc: avoid debug assertion windows in Debug Mode
> mingw: enable stack smashing protector
> mingw: get pw_name in UTF-8 format
> mingw: use Unicode functions explicitly
> rebase --am: ignore rebase.rescheduleFailedExec
> mingw: fix possible buffer overrun when calling `GetUserNameW()`
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
> rebase: fix white-space
> git: mark cmd_rebase as requiring a worktree
> Vcproj.pm: auto-generate GUIDs
> Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
> Vcproj.pm: urlencode '<' and '>' when generating VC projects
> contrib/buildsystems: ignore irrelevant files in Generators/
> contrib/buildsystems: error out on unknown option
> contrib/buildsystems: handle libiconv, too
> contrib/buildsystems: also handle -lexpat
> contrib/buildsystems: handle options starting with a slash
> contrib/buildsystems: add a backend for modern Visual Studio versions
> msvc: add a Makefile target to pre-generate the Visual Studio solution
> vcxproj: also link-or-copy builtins
> .gitignore: ignore Visual Studio's temporary/generated files
> bin-wrappers: append `.exe` to target paths if necessary
> git: avoid calling aliased builtins via their dashed form
> config: work around bug with includeif:onbranch and early config
>
>Johannes Sixt (5):
> userdiff: two simplifications of patterns for rust
> t7610-mergetool: do not place pipelines headed by `yes` in subshells
> t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
> mergetool: dissect strings with shell variable magic instead of `expr`
> mergetool: use shell variable magic instead of `awk`
>
>John Lin (1):
> status: remove the empty line after hints
>
>Jonathan Nieder (1):
> t: decrease nesting in test_oid_to_path
>
>Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
>Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
>Junio C Hamano (19):
> The first batch after 2.22
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> The sixth batch
> The seventh batch
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.23-rc0
> test-dir-iterator: do not assume errno values
> A few more last-minute fixes
> log: flip the --mailmap default unconditionally
> log: really flip the --mailmap default
> Git 2.23-rc1
> Git 2.23-rc2
>
>Karsten Blees (2):
> gettext: always use UTF-8 on native Windows
> mingw: initialize HOME on startup
>
>Marc-André Lureau (1):
> userdiff: add built-in pattern for rust
>
>Mark Rushakoff (1):
> doc: typo: s/can not/cannot/ and s/is does/does/
>
>Martin Ågren (3):
> ref-filter: fix memory leak in `free_array_item()`
> RelNotes/2.21.1: typofix
> RelNotes/2.23.0: fix a few typos and other minor issues
>
>Matheus Tavares (8):
> clone: better handle symlinked files at .git/objects/
> dir-iterator: use warning_errno when possible
> dir-iterator: refactor state machine model
> dir-iterator: add flags parameter to dir_iterator_begin
> clone: copy hidden paths at local clone
> clone: extract function from copy_or_link_directory
> clone: use dir-iterator to avoid explicit dir traversal
> clone: replace strcmp by fspathcmp
>
>Matthew DeVore (5):
> list-objects-filter-options: error is localizeable
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
> ref-filter: sort detached HEAD lines firstly
>
>Mazo, Andrey (8):
> git-p4: detect/prevent infinite loop in gitCommitByP4Change()
> git-p4: add failing test for "git-p4: match branches case insensitively if configured"
> git-p4: match branches case insensitively if configured
> git-p4: don't groom exclude path list on every commit
> git-p4: add failing test for "don't exclude other files with same prefix"
> git-p4: don't exclude other files with same prefix
> git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
> git-p4: respect excluded paths when detecting branches
>
>Michael Osipov (1):
> configure: Detect linking style for HP aCC on HP-UX
>
>Michael Platings (2):
> blame: add a fingerprint heuristic to match ignored lines
> t8014: remove unnecessary braces
>
>Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (63):
> git-checkout.txt: spell out --no-option
> git-checkout.txt: fix one syntax line
> doc: document --overwrite-ignore
> git-checkout.txt: fix monospace typeset
> t: rename t2014-switch.sh to t2014-checkout-switch.sh
> checkout: advice how to get out of detached HEAD mode
> checkout: inform the user when removing branch state
> checkout: keep most #include sorted
> checkout: factor out some code in parse_branchname_arg()
> checkout: make "opts" in cmd_checkout() a pointer
> checkout: move 'confict_style' and 'dwim_..' to checkout_opts
> checkout: split options[] array in three pieces
> checkout: split part of it to new command 'switch'
> switch: better names for -b and -B
> switch: add --discard-changes
> switch: remove -l
> switch: stop accepting pathspec
> switch: reject "do nothing" case
> switch: only allow explicit detached HEAD
> switch: add short option for --detach
> switch: implicit dwim, use --no-guess to disable it
> switch: no worktree status unless real branch switch happens
> switch: reject if some operation is in progress
> switch: make --orphan switch to an empty tree
> t: add tests for switch
> completion: support switch
> doc: promote "git switch"
> checkout: split part of it to new command 'restore'
> restore: take tree-ish from --source option instead
> restore: make pathspec mandatory
> restore: disable overlay mode by default
> checkout: factor out worktree checkout code
> restore: add --worktree and --staged
> restore: reject invalid combinations with --staged
> restore: default to --source=HEAD when only --staged is specified
> restore: replace --force with --ignore-unmerged
> restore: support --patch
> t: add tests for restore
> completion: support restore
> user-manual.txt: prefer 'merge --abort' over 'reset --hard'
> doc: promote "git restore"
> help: move git-diff and git-reset to different groups
> Declare both git-switch and git-restore experimental
> merge: remove drop_save() in favor of remove_merge_branch_state()
> init: make --template path relative to $CWD
> worktree add: sanitize worktree names
> worktree add: be tolerant of corrupt worktrees
> merge: add --quit
> completion: do not cache if --git-completion-helper fails
> fetch: only run 'gc' once when fetching multiple remotes
> t2027: use test_must_be_empty
> switch: allow to switch in the middle of bisect
> completion: disable dwim on "git switch -d"
> fetch-pack: move capability names out of i18n strings
> fetch-pack: print all relevant supported capabilities with -v -v
> fetch-pack: print server version at the top in -v -v
> sha1-file.c: remove the_repo from read_object_with_reference()
> tree-walk.c: remove the_repo from fill_tree_descriptor()
> tree-walk.c: remove the_repo from get_tree_entry()
> tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
> match-trees.c: remove the_repo from shift_tree*()
> Use the right 'struct repository' instead of the_repository
> t7814: do not generate same commits in different repos
>
>Nickolai Belakovski (3):
> ref-filter: add worktreepath atom
> branch: update output to include worktree info
> branch: add worktree info on verbose output
>
>Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
>Philip Oakley (15):
> git.c: show usage for accessing the git(1) help page
> Doc: git.txt: remove backticks from link and add git-scm.com/docs
> doc branch: provide examples for listing remote tracking branches
> msvc: include sigset_t definition
> msvc: define O_ACCMODE
> msvc: add pragmas for common warnings
> Vcproj.pm: list git.exe first to be startup project
> contrib/buildsystems: ignore invalidcontinue.obj
> contrib/buildsystems: fix misleading error message
> contrib/buildsystems: handle quoted spaces in filenames
> contrib/buildsystems: ignore gettext stuff
> contrib/buildsystems: redirect errors of the dry run into a log file
> contrib/buildsystems: optionally capture the dry-run in a file
> contrib/buildsystems: handle the curl library option
> .gitignore: touch up the entries regarding Visual Studio
>
>Phillip Wood (12):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> rebase -r: always reword merge -c
> add -p: fix checkout -p with pathological context
> show --continue/skip etc. consistently in synopsis
> sequencer: always allow tab after command name
> sequencer: factor out todo command name parsing
> status: do not report errors in sequencer/todo
> git-prompt: improve cherry-pick/revert detection
> t3420: remove progress lines before comparing output
>
>Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
>Ramsay Jones (1):
> env--helper: mark a file-local symbol as static
>
>René Scharfe (10):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
> commit-graph: release strbufs after use
> dir-iterator: release strbuf after use
> test-dir-iterator: use path argument directly
> sha1-file: release strbuf after use
>
>Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
>Rohit Ashiwal (5):
> sequencer: add advice for revert
> sequencer: rename reset_for_rollback to reset_merge
> sequencer: use argv_array in reset_merge
> cherry-pick/revert: add --skip option
> cherry-pick/revert: advise using --skip
>
>SZEDER Gábor (12):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> travis-ci: build with GCC 4.8 as well
> Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
> git-p4: allow unshelving of branched files
>
>Stephen Boyd (2):
> format-patch: inform user that patch-id generation is unstable
> format-patch: make --base patch-id output stable
>
>Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
>Taylor Blau (1):
> ref-filter.c: find disjoint pattern prefixes
>
>Thomas Gummerer (16):
> stash: fix show referencing stash index
> apply: replace marc.info link with public-inbox
> apply: only pass required data to skip_tree_prefix
> apply: only pass required data to git_header_name
> apply: only pass required data to check_header_line
> apply: only pass required data to find_name_*
> apply: only pass required data to gitdiff_* functions
> apply: make parse_git_diff_header public
> range-diff: fix function parameter indentation
> range-diff: split lines manually
> range-diff: don't remove funcname from inner diff
> range-diff: suppress line count in outer diff
> range-diff: add section header instead of diff header
> range-diff: add filename to inner diff
> range-diff: add headers to the outer hunk header
> stash: fix handling removed files with --keep-index
>
>Tigran Mkrtchyan (1):
> tag: add tag.gpgSign config option to force all tags be GPG-signed
>
>Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
> merge: refuse --commit with --squash
>
>William Chargin (1):
> restore: fix typo in docs
>
>Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
>brian m. carlson (10):
> t: add helper to convert object IDs to paths
> t1410: make hash size independent
> t1450: make hash size independent
> t5000: make hash independent
> t6030: make test work with SHA-256
> t0027: make hash size independent
> t0090: make test pass with SHA-256
> t1007: remove SHA1 prerequisites
> t1710: make hash independent
> t2203: avoid hard-coded object ID values
>
>Ævar Arnfjörð Bjarmason (21):
> send-email: move the read_config() function above getopts
> send-email: rename the @bcclist variable for consistency
> send-email: do defaults -> config -> getopt in that order
> tests: add a special setup where prerequisites fail
> Makefile: remove the NO_R_TO_GCC_LINKER flag
> send-email: remove cargo-culted multi-patch pattern in tests
> send-email: fix broken transferEncoding tests
> send-email: document --no-[to|cc|bcc]
> hash-object doc: stop mentioning git-cvsimport
> send-email: fix regression in sendemail.identity parsing
> Revert "test-lib: whitelist GIT_TR2_* in the environment"
> config tests: simplify include cycle test
> env--helper: new undocumented builtin wrapping git_env_*()
> config.c: refactor die_bad_number() to not call gettext() early
> t6040 test: stop using global "script" variable
> tests: make GIT_TEST_GETTEXT_POISON a boolean
> tests README: re-flow a previously changed paragraph
> tests: replace test_tristate with "git env--helper"
> tests: make GIT_TEST_FAIL_PREREQS a boolean
> tests: mark two failing tests under FAIL_PREREQS
> clone: test for our behavior on odd objects/* content
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.23.0-rc2
@ 2019-08-09 19:29 2% Junio C Hamano
2019-08-09 21:20 0% ` Bhaskar Chowdhury
2019-08-09 21:31 0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
0 siblings, 2 replies; 162+ results
From: Junio C Hamano @ 2019-08-09 19:29 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.23.0-rc2 is now available for testing
at the usual places. It is comprised of 483 non-merge commits
since v2.22.0, contributed by 67 people, 24 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.23.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
Taylor Blau, Thomas Gummerer, and William Chargin.
----------------------------------------------------------------
Git 2.23 Release Notes (draft)
==============================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
* The "git log" command by default behaves as if the --mailmap option
was given.
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-show-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned the "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainder of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targeting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to an unrelated file descriptor getting
closed, which has been fixed.
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
* More parameter validation.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* Code clean-up to avoid signed integer wraparounds during binary search.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* The internal diff machinery can be made to read out of bounds while
looking for --function-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (6):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (51):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
commit-graph: fix bug around octopus merges
Dimitriy Ryazantcev (1):
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (6):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
merge-recursive: avoid directory rename detection in recursive case
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jean-Noël Avila (1):
l10n: reformat some localized strings for v2.23.0
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (57):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
t: sort output of hashmap iteration
t7700: clean up .keep file in bitmap-writing test
repack: silence warnings when auto-enabled bitmaps cannot be built
repack: simplify handling of auto-bitmaps and .keep files
t0000: reword comments for "local" test
Johannes Schindelin (47):
Drop unused git-rebase--am.sh
t3400: stop referring to the scripted rebase
.gitignore: there is no longer a built-in `git-rebase--interactive`
sequencer: the `am` and `rebase--interactive` scripts are gone
rebase: fold git-rebase--common into the -p backend
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Vcproj.pm: auto-generate GUIDs
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Vcproj.pm: urlencode '<' and '>' when generating VC projects
contrib/buildsystems: ignore irrelevant files in Generators/
contrib/buildsystems: error out on unknown option
contrib/buildsystems: handle libiconv, too
contrib/buildsystems: also handle -lexpat
contrib/buildsystems: handle options starting with a slash
contrib/buildsystems: add a backend for modern Visual Studio versions
msvc: add a Makefile target to pre-generate the Visual Studio solution
vcxproj: also link-or-copy builtins
.gitignore: ignore Visual Studio's temporary/generated files
bin-wrappers: append `.exe` to target paths if necessary
git: avoid calling aliased builtins via their dashed form
config: work around bug with includeif:onbranch and early config
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Nieder (1):
t: decrease nesting in test_oid_to_path
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (19):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
test-dir-iterator: do not assume errno values
A few more last-minute fixes
log: flip the --mailmap default unconditionally
log: really flip the --mailmap default
Git 2.23-rc1
Git 2.23-rc2
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Mark Rushakoff (1):
doc: typo: s/can not/cannot/ and s/is does/does/
Martin Ågren (3):
ref-filter: fix memory leak in `free_array_item()`
RelNotes/2.21.1: typofix
RelNotes/2.23.0: fix a few typos and other minor issues
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (15):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Vcproj.pm: list git.exe first to be startup project
contrib/buildsystems: ignore invalidcontinue.obj
contrib/buildsystems: fix misleading error message
contrib/buildsystems: handle quoted spaces in filenames
contrib/buildsystems: ignore gettext stuff
contrib/buildsystems: redirect errors of the dry run into a log file
contrib/buildsystems: optionally capture the dry-run in a file
contrib/buildsystems: handle the curl library option
.gitignore: touch up the entries regarding Visual Studio
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (10):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
commit-graph: release strbufs after use
dir-iterator: release strbuf after use
test-dir-iterator: use path argument directly
sha1-file: release strbuf after use
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (12):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
William Chargin (1):
restore: fix typo in docs
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
brian m. carlson (10):
t: add helper to convert object IDs to paths
t1410: make hash size independent
t1450: make hash size independent
t5000: make hash independent
t6030: make test work with SHA-256
t0027: make hash size independent
t0090: make test pass with SHA-256
t1007: remove SHA1 prerequisites
t1710: make hash independent
t2203: avoid hard-coded object ID values
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 2%]
* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
2019-08-09 2:07 0% ` Taylor Blau
@ 2019-08-09 3:04 0% ` Ariadne Conill
0 siblings, 0 replies; 162+ results
From: Ariadne Conill @ 2019-08-09 3:04 UTC (permalink / raw)
To: Taylor Blau; +Cc: Junio C Hamano, Git Mailing List, Phil Hord
Hello,
On Thu, Aug 8, 2019 at 9:07 PM Taylor Blau <me@ttaylorr.com> wrote:
>
> Hi Ariadne,
>
> Thank you for replying. I'm replying myself to the quoted hunks below,
> and I very much appreciate your input. I would like to note that I
> myself did not come up with these concerns alone, they were merely
> suggested to me by a coworker, and I found them concerning.
>
> I am not myself transgender, instead I am simply raising an issue that I
> found myself concerning.
Sure, there are concerns with the use of .mailmap being the primary
source of truth for identities in a git repository. However, this is
the present design. I'm not against improving the design, but see no
reason to block changes that *improve quality of life* for people who
are both transgender (or simply have changed their name for whatever
reason) and those who collaborate with said people. I also believe
that this is an *intended* use of the design, since mailmap allows
rewriting names. If it is not intended, then why does mailmap support
rewriting names?
This isn't an either/or thing. This is more along the lines of --
lets improve what we have now -- and deal with making a more robust
mailmap replacement down the line, because that is going to require
more careful consideration.
> On Thu, Aug 08, 2019 at 09:34:15PM -0400, Ariadne Conill wrote:
> > Hello,
> >
> > On August 8, 2019 8:13:15 PM EDT, Taylor Blau <me@ttaylorr.com> wrote:
> > >Hi Junio,
> > >
> > >On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
> > >> Here are the topics that have been cooking. Commits prefixed with
> > >> '-' are only in 'pu' (proposed updates) while commits prefixed with
> > >> '+' are in 'next'. The ones marked with '.' do not appear in any of
> > >> the integration branches, but I am still holding onto them.
> > >>
> > >> The seventh batch is in; I've merged fix-up topics that has been in
> > >> 'master' for some time (i.e. up to the third batch of this cycle)
> > >> down to 'maint'.
> > >>
> > >> You can find the changes described here in the integration branches
> > >> of the repositories listed at
> > >>
> > >> http://git-blame.blogspot.com/p/git-public-repositories.html
> > >>
> > >> --------------------------------------------------
> > >> [Graduated to "master"]
> > >>
> > >> *snip*
> > >>
> > >> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
> > >> (merged to 'next' on 2019-07-19 at e5669de950)
> > >> + tests: defang pager tests by explicitly disabling the log.mailmap
> > >warning
> > >> + documentation: mention --no-use-mailmap and log.mailmap false
> > >setting
> > >> + log: add warning for unspecified log.mailmap setting
> > >>
> > >> The "git log" command learns to issue a warning when log.mailmap
> > >> configuration is not set and --[no-]mailmap option is not used, to
> > >> prepare users for future versions of Git that uses the mailmap by
> > >> default.
> > >
> > >Sorry for jumping into this discussion quite late. I was discussing
> > >this
> > >change with a colleague of mine who pointed out an issue with the
> > >eventual new defaults. I'd like to re-raise the issues they shared with
> > >me on the list for discussion, and if agreement is reached, I will send
> > >a series that reverts these changes.
> > >
> > >If a transgender person uses '.mailmap' to rewrite their deadname to
> > >their legal name (as was the original motivation in [1]), there are two
> > >potential issues:
> >
> > What does myself being transgender have to do with anything? Please
> > explain.
> >
> > My motivation was to allow anyone to document their name change.
> > People other than transgender individuals do change their names.
>
> I think that the '.mailmap' is a good solution for other identity
> changes, like when someone leaves a company, acquires an email address,
> and wishes to take their contributions with them.
Then maybe .mailmap should be scoped to rewriting e-mail addresses only.
> I don't think that being transgender changes one's usage of '.mailmap'.
> I do, however, share the concern with my coworker that these patches are
> being used to assist in deadname rewriting. It was my impression that
> these patches are a response to the thread [1] that I linked in my last
> email, and thus that eventually turning on '.mailmap'-rewriting by
> default was the solution given to Phil Hord.
Yes, they *are* being used to assist in deadname rewriting, because
that is the mechanism that already exists in the code to facilitate
it.
In what case would you *not* want to know the current name of the
person who authored a contribution? There are legal situations
involving auditing the copyright status of contributions where
*current* identity information for the author is desirable over what
was there historically, because you need to contact the author and
find out his or her wishes involving the code. Situations like
relicensing, for example.
> > Perhaps the fact that I am transgender means I am more attuned to the
> > risks involved in using .mailmap in this way.
>
> I'll certainly defer to your opinion on how this feature affects
> transgender users over mine, and very much appreciate your perspective
> and insight.
>
> > > - The '.mailmap' provides a list of transgender individuals, along
> > > with their deadname, which can be used to harass them.
> >
> > This is potentially a problem but it's not as bad as you depict. A
> > mailmap rule can match against e-mail only, which is precisely what I
> > have done in my projects.
>
> Ah, I may be severely mistaken -- my memory was that '.mailmap'
> rewriting could be used to rewrite both name and email, not merely
> email. I thought that records could take:
>
> A U Thor <author@xample.com> -> B C Xyzz <newname@example.com>
>
> instead of canonicalizing by email alone. If this is the case, then I
> completely agree and share the opinion that this is not as bad as I
> originally depicted.
Yes, you can write mailmap entries with just the email like I have
done in pkgconf for example[1].
> > And to be clear, anybody who is out there doxing transgender people
> > are going to be using sources that are more reliable than a mailmap
> > file.
>
> Indeed. I think the '.mailmap' file doesn't contain much information if
> it doesn't remap author names, and certainly individuals can choose not
> to use it.
>
> > > - If they are not in control of the '.mailmap', and 'log.mailmap' is
> > > not specifiable (and instead defaults to 'true'), then a malicious
> > > maintainer or contributor can submit a change that rewrites their
> > > real name to their deadname, and harasses them further.
> >
> > The log.mailmap setting remains specifiable in these changes. Sure, a
> > maintainer can abuse mailmap, but they could already do so. This
> > commit changes absolutely nothing in that regard.
>
> I think that I might be mistaken about the intentions of your patch
> series. Do you hope to eventually remove 'log.mailmap', instead having
> all clients automatically obey the '.mailmap'? If so, I think that this
> does change the behavior, at least down the road. If a maintainer wishes
> to abuse mailmap, today no one has to see it, because they have the
> option to turn off mailmap rewriting. If this setting doesn't exist, it
> gives more power to maintainers and contributors with write-level
> access to force mailmap rewriting to take place.
I have no interest in removing the log.mailmap setting, but I would
like to see the setting behave consistently across all applets. In
other words, "git shortlog", "git log" and "git blame" should have the
same behaviour given log.mailmap being set a certain way. They
presently don't have consistent behaviour (shortlog and blame always
use mailmap), and I found that surprising. This allows people to look
at the raw data if they have explicit interest in it, by setting
log.mailmap to false, and ensuring that people get reasonable
behaviour by default (log.mailmap is default to true).
I also want to explicitly state that I believe wholeheartedly that
people will fork projects with a hostile maintainer who renames people
in the mailmap file to derogatory names, so I think that is a
non-issue. Somebody who is trolling by using mailmap files to rewrite
contributor names is indicative that a project shouldn't be taken
seriously.
> > The commit does make `git shortlog` and `git log` consistent which is what most people expect.
> >
> > >This issue was not raised in the original discussion, but it's clear
> > >that this has the potential be used for bad, not good.
> >
> > Every tool has the potential to be abused. I would not have submitted
> > this merge request if I thought that the benefits outweighed the
> > trolling possibilities.
>
> Yes, I agree that tools can be abused, and I do not question your
> judgement in submitting this patch whatsoever. Again, I was merely
> pointing out that there does seem to be a greater potential for this
> tool to be misused, but only if I am understanding it correctly.
Based on your misunderstanding of the mailmap feature, I believe
you're not understanding the patches correctly.
> > >Given that the release is so close, I propose we revert this change
> > >before v2.23.0 is tagged. After that, we ought to discuss ways for
> > >folks
> > >to change how their name is displayed in porcelain commands, and
> > >thoroughly consider whether or not a new plan is exploitable.
> > >
> > >If you think this is a good course of action, I will send a series to
> > >revert the changes that were queued here.
> >
> > I do not think this is a good course of action and I think your
> > justification is extremely flimsy.
> >
> > While I would like to see the ability to commit a special commit that
> > documents a name change, this does not change the fact that such
> > commits will be mined in the same way.
> >
> > While I am glad that you are concerned about this from a trolling and
> > harassment issue, I propose that you should allow individuals to make
> > their own assessments on what they should do regarding documenting
> > their changes using the mailmap file.
>
> I'm happy to defer to the judgement of others, here; again I merely
> wanted to raise a concern and share a proposed course of action in
> response to it. If others do not buy into the justification, or if I
> have misunderstood the feature, then we ought to let the release proceed
> as normal.
As previously stated, I think that your justification is flimsy, but I
think that's simply due to a misunderstanding of how mailmap works,
and to what level of consistency mailmap is respected. Hopefully this
explanation is useful.
[1]: https://git.sr.ht/~kaniini/pkgconf/tree/master/.mailmap
Ariadne
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
2019-08-09 1:34 0% ` Ariadne Conill
@ 2019-08-09 2:07 0% ` Taylor Blau
2019-08-09 3:04 0% ` Ariadne Conill
0 siblings, 1 reply; 162+ results
From: Taylor Blau @ 2019-08-09 2:07 UTC (permalink / raw)
To: Ariadne Conill; +Cc: Taylor Blau, Junio C Hamano, git, Phil Hord
Hi Ariadne,
Thank you for replying. I'm replying myself to the quoted hunks below,
and I very much appreciate your input. I would like to note that I
myself did not come up with these concerns alone, they were merely
suggested to me by a coworker, and I found them concerning.
I am not myself transgender, instead I am simply raising an issue that I
found myself concerning.
On Thu, Aug 08, 2019 at 09:34:15PM -0400, Ariadne Conill wrote:
> Hello,
>
> On August 8, 2019 8:13:15 PM EDT, Taylor Blau <me@ttaylorr.com> wrote:
> >Hi Junio,
> >
> >On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
> >> Here are the topics that have been cooking. Commits prefixed with
> >> '-' are only in 'pu' (proposed updates) while commits prefixed with
> >> '+' are in 'next'. The ones marked with '.' do not appear in any of
> >> the integration branches, but I am still holding onto them.
> >>
> >> The seventh batch is in; I've merged fix-up topics that has been in
> >> 'master' for some time (i.e. up to the third batch of this cycle)
> >> down to 'maint'.
> >>
> >> You can find the changes described here in the integration branches
> >> of the repositories listed at
> >>
> >> http://git-blame.blogspot.com/p/git-public-repositories.html
> >>
> >> --------------------------------------------------
> >> [Graduated to "master"]
> >>
> >> *snip*
> >>
> >> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
> >> (merged to 'next' on 2019-07-19 at e5669de950)
> >> + tests: defang pager tests by explicitly disabling the log.mailmap
> >warning
> >> + documentation: mention --no-use-mailmap and log.mailmap false
> >setting
> >> + log: add warning for unspecified log.mailmap setting
> >>
> >> The "git log" command learns to issue a warning when log.mailmap
> >> configuration is not set and --[no-]mailmap option is not used, to
> >> prepare users for future versions of Git that uses the mailmap by
> >> default.
> >
> >Sorry for jumping into this discussion quite late. I was discussing
> >this
> >change with a colleague of mine who pointed out an issue with the
> >eventual new defaults. I'd like to re-raise the issues they shared with
> >me on the list for discussion, and if agreement is reached, I will send
> >a series that reverts these changes.
> >
> >If a transgender person uses '.mailmap' to rewrite their deadname to
> >their legal name (as was the original motivation in [1]), there are two
> >potential issues:
>
> What does myself being transgender have to do with anything? Please
> explain.
>
> My motivation was to allow anyone to document their name change.
> People other than transgender individuals do change their names.
I think that the '.mailmap' is a good solution for other identity
changes, like when someone leaves a company, acquires an email address,
and wishes to take their contributions with them.
I don't think that being transgender changes one's usage of '.mailmap'.
I do, however, share the concern with my coworker that these patches are
being used to assist in deadname rewriting. It was my impression that
these patches are a response to the thread [1] that I linked in my last
email, and thus that eventually turning on '.mailmap'-rewriting by
default was the solution given to Phil Hord.
> Perhaps the fact that I am transgender means I am more attuned to the
> risks involved in using .mailmap in this way.
I'll certainly defer to your opinion on how this feature affects
transgender users over mine, and very much appreciate your perspective
and insight.
> > - The '.mailmap' provides a list of transgender individuals, along
> > with their deadname, which can be used to harass them.
>
> This is potentially a problem but it's not as bad as you depict. A
> mailmap rule can match against e-mail only, which is precisely what I
> have done in my projects.
Ah, I may be severely mistaken -- my memory was that '.mailmap'
rewriting could be used to rewrite both name and email, not merely
email. I thought that records could take:
A U Thor <author@xample.com> -> B C Xyzz <newname@example.com>
instead of canonicalizing by email alone. If this is the case, then I
completely agree and share the opinion that this is not as bad as I
originally depicted.
> And to be clear, anybody who is out there doxing transgender people
> are going to be using sources that are more reliable than a mailmap
> file.
Indeed. I think the '.mailmap' file doesn't contain much information if
it doesn't remap author names, and certainly individuals can choose not
to use it.
> > - If they are not in control of the '.mailmap', and 'log.mailmap' is
> > not specifiable (and instead defaults to 'true'), then a malicious
> > maintainer or contributor can submit a change that rewrites their
> > real name to their deadname, and harasses them further.
>
> The log.mailmap setting remains specifiable in these changes. Sure, a
> maintainer can abuse mailmap, but they could already do so. This
> commit changes absolutely nothing in that regard.
I think that I might be mistaken about the intentions of your patch
series. Do you hope to eventually remove 'log.mailmap', instead having
all clients automatically obey the '.mailmap'? If so, I think that this
does change the behavior, at least down the road. If a maintainer wishes
to abuse mailmap, today no one has to see it, because they have the
option to turn off mailmap rewriting. If this setting doesn't exist, it
gives more power to maintainers and contributors with write-level
access to force mailmap rewriting to take place.
> The commit does make `git shortlog` and `git log` consistent which is what most people expect.
>
> >This issue was not raised in the original discussion, but it's clear
> >that this has the potential be used for bad, not good.
>
> Every tool has the potential to be abused. I would not have submitted
> this merge request if I thought that the benefits outweighed the
> trolling possibilities.
Yes, I agree that tools can be abused, and I do not question your
judgement in submitting this patch whatsoever. Again, I was merely
pointing out that there does seem to be a greater potential for this
tool to be misused, but only if I am understanding it correctly.
> >Given that the release is so close, I propose we revert this change
> >before v2.23.0 is tagged. After that, we ought to discuss ways for
> >folks
> >to change how their name is displayed in porcelain commands, and
> >thoroughly consider whether or not a new plan is exploitable.
> >
> >If you think this is a good course of action, I will send a series to
> >revert the changes that were queued here.
>
> I do not think this is a good course of action and I think your
> justification is extremely flimsy.
>
> While I would like to see the ability to commit a special commit that
> documents a name change, this does not change the fact that such
> commits will be mined in the same way.
>
> While I am glad that you are concerned about this from a trolling and
> harassment issue, I propose that you should allow individuals to make
> their own assessments on what they should do regarding documenting
> their changes using the mailmap file.
I'm happy to defer to the judgement of others, here; again I merely
wanted to raise a concern and share a proposed course of action in
response to it. If others do not buy into the justification, or if I
have misunderstood the feature, then we ought to let the release proceed
as normal.
> >Thanks,
> >Taylor
> >
> >[1]:
> >https://public-inbox.org/git/CABURp0poUjSBTTFUXP8dAmJ=37qvpe64=o+t_+mHOiK9Cv+=kg@mail.gmail.com/
>
> Ariadne
Thanks,
Taylor
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
2019-08-09 0:13 0% ` Taylor Blau
@ 2019-08-09 1:34 0% ` Ariadne Conill
2019-08-09 2:07 0% ` Taylor Blau
0 siblings, 1 reply; 162+ results
From: Ariadne Conill @ 2019-08-09 1:34 UTC (permalink / raw)
To: Taylor Blau, Junio C Hamano; +Cc: git, Phil Hord
Hello,
On August 8, 2019 8:13:15 PM EDT, Taylor Blau <me@ttaylorr.com> wrote:
>Hi Junio,
>
>On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
>> Here are the topics that have been cooking. Commits prefixed with
>> '-' are only in 'pu' (proposed updates) while commits prefixed with
>> '+' are in 'next'. The ones marked with '.' do not appear in any of
>> the integration branches, but I am still holding onto them.
>>
>> The seventh batch is in; I've merged fix-up topics that has been in
>> 'master' for some time (i.e. up to the third batch of this cycle)
>> down to 'maint'.
>>
>> You can find the changes described here in the integration branches
>> of the repositories listed at
>>
>> http://git-blame.blogspot.com/p/git-public-repositories.html
>>
>> --------------------------------------------------
>> [Graduated to "master"]
>>
>> *snip*
>>
>> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
>> (merged to 'next' on 2019-07-19 at e5669de950)
>> + tests: defang pager tests by explicitly disabling the log.mailmap
>warning
>> + documentation: mention --no-use-mailmap and log.mailmap false
>setting
>> + log: add warning for unspecified log.mailmap setting
>>
>> The "git log" command learns to issue a warning when log.mailmap
>> configuration is not set and --[no-]mailmap option is not used, to
>> prepare users for future versions of Git that uses the mailmap by
>> default.
>
>Sorry for jumping into this discussion quite late. I was discussing
>this
>change with a colleague of mine who pointed out an issue with the
>eventual new defaults. I'd like to re-raise the issues they shared with
>me on the list for discussion, and if agreement is reached, I will send
>a series that reverts these changes.
>
>If a transgender person uses '.mailmap' to rewrite their deadname to
>their legal name (as was the original motivation in [1]), there are two
>potential issues:
What does myself being transgender have to do with anything? Please explain.
My motivation was to allow anyone to document their name change. People other than transgender individuals do change their names.
Perhaps the fact that I am transgender means I am more attuned to the risks involved in using .mailmap in this way.
> - The '.mailmap' provides a list of transgender individuals, along
> with their deadname, which can be used to harass them.
This is potentially a problem but it's not as bad as you depict. A mailmap rule can match against e-mail only, which is precisely what I have done in my projects.
And to be clear, anybody who is out there doxing transgender people are going to be using sources that are more reliable than a mailmap file.
> - If they are not in control of the '.mailmap', and 'log.mailmap' is
> not specifiable (and instead defaults to 'true'), then a malicious
> maintainer or contributor can submit a change that rewrites their
> real name to their deadname, and harasses them further.
The log.mailmap setting remains specifiable in these changes. Sure, a maintainer can abuse mailmap, but they could already do so. This commit changes absolutely nothing in that regard.
The commit does make `git shortlog` and `git log` consistent which is what most people expect.
>This issue was not raised in the original discussion, but it's clear
>that this has the potential be used for bad, not good.
Every tool has the potential to be abused. I would not have submitted this merge request if I thought that the benefits outweighed the trolling possibilities.
>Given that the release is so close, I propose we revert this change
>before v2.23.0 is tagged. After that, we ought to discuss ways for
>folks
>to change how their name is displayed in porcelain commands, and
>thoroughly consider whether or not a new plan is exploitable.
>
>If you think this is a good course of action, I will send a series to
>revert the changes that were queued here.
I do not think this is a good course of action and I think your justification is extremely flimsy.
While I would like to see the ability to commit a special commit that documents a name change, this does not change the fact that such commits will be mined in the same way.
While I am glad that you are concerned about this from a trolling and harassment issue, I propose that you should allow individuals to make their own assessments on what they should do regarding documenting their changes using the mailmap file.
>Thanks,
>Taylor
>
>[1]:
>https://public-inbox.org/git/CABURp0poUjSBTTFUXP8dAmJ=37qvpe64=o+t_+mHOiK9Cv+=kg@mail.gmail.com/
Ariadne
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
2019-07-26 0:19 1% What's cooking in git.git (Jul 2019, #06; Thu, 25) Junio C Hamano
2019-07-26 14:33 0% ` Johannes Schindelin
@ 2019-08-09 0:13 0% ` Taylor Blau
2019-08-09 1:34 0% ` Ariadne Conill
1 sibling, 1 reply; 162+ results
From: Taylor Blau @ 2019-08-09 0:13 UTC (permalink / raw)
To: Junio C Hamano, Ariadne Conill; +Cc: git, Phil Hord
Hi Junio,
On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
> Here are the topics that have been cooking. Commits prefixed with
> '-' are only in 'pu' (proposed updates) while commits prefixed with
> '+' are in 'next'. The ones marked with '.' do not appear in any of
> the integration branches, but I am still holding onto them.
>
> The seventh batch is in; I've merged fix-up topics that has been in
> 'master' for some time (i.e. up to the third batch of this cycle)
> down to 'maint'.
>
> You can find the changes described here in the integration branches
> of the repositories listed at
>
> http://git-blame.blogspot.com/p/git-public-repositories.html
>
> --------------------------------------------------
> [Graduated to "master"]
>
> *snip*
>
> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
> (merged to 'next' on 2019-07-19 at e5669de950)
> + tests: defang pager tests by explicitly disabling the log.mailmap warning
> + documentation: mention --no-use-mailmap and log.mailmap false setting
> + log: add warning for unspecified log.mailmap setting
>
> The "git log" command learns to issue a warning when log.mailmap
> configuration is not set and --[no-]mailmap option is not used, to
> prepare users for future versions of Git that uses the mailmap by
> default.
Sorry for jumping into this discussion quite late. I was discussing this
change with a colleague of mine who pointed out an issue with the
eventual new defaults. I'd like to re-raise the issues they shared with
me on the list for discussion, and if agreement is reached, I will send
a series that reverts these changes.
If a transgender person uses '.mailmap' to rewrite their deadname to
their legal name (as was the original motivation in [1]), there are two
potential issues:
- The '.mailmap' provides a list of transgender individuals, along
with their deadname, which can be used to harass them.
- If they are not in control of the '.mailmap', and 'log.mailmap' is
not specifiable (and instead defaults to 'true'), then a malicious
maintainer or contributor can submit a change that rewrites their
real name to their deadname, and harasses them further.
This issue was not raised in the original discussion, but it's clear
that this has the potential be used for bad, not good.
Given that the release is so close, I propose we revert this change
before v2.23.0 is tagged. After that, we ought to discuss ways for folks
to change how their name is displayed in porcelain commands, and
thoroughly consider whether or not a new plan is exploitable.
If you think this is a good course of action, I will send a series to
revert the changes that were queued here.
Thanks,
Taylor
[1]: https://public-inbox.org/git/CABURp0poUjSBTTFUXP8dAmJ=37qvpe64=o+t_+mHOiK9Cv+=kg@mail.gmail.com/
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.23.0-rc1
@ 2019-08-02 22:06 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-08-02 22:06 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.23.0-rc1 is now available for testing
at the usual places. It is comprised of 471 non-merge commits
since v2.22.0, contributed by 63 people, 23 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.23.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira, Doug
Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Matheus Tavares,
Mazo, Andrey, Michael Osipov, Michael Platings, Miguel Ojeda,
Mike Mueller, Morian Sonnet, Quentin Nerden, Robert Morgan,
Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
Emily Shaffer, Eric Wong, Felipe Contreras, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
Martin Ågren, Matthew DeVore, Mike Hommey, Nguyễn Thái Ngọc
Duy, Nickolai Belakovski, Paolo Bonzini, Philip Oakley, Phillip
Wood, Ramsay Jones, René Scharfe, Rohit Ashiwal, Stephen Boyd,
SZEDER Gábor, Taylor Blau, and Thomas Gummerer.
----------------------------------------------------------------
Git 2.23 Release Notes (draft)
==============================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
* The "git log" command by default behaves as if the --mailmap option
was given.
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-show-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned the "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainder of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targeting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to an unrelated file descriptor getting
closed, which has been fixed.
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
* More parameter validation.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* Code clean-up to avoid signed integer wraparounds during binary search.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* The internal diff machinery can be made to read out of bounds while
looking for --function-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (6):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (50):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
Dimitriy Ryazantcev (1):
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (5):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (56):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
t: sort output of hashmap iteration
t7700: clean up .keep file in bitmap-writing test
repack: silence warnings when auto-enabled bitmaps cannot be built
repack: simplify handling of auto-bitmaps and .keep files
Johannes Schindelin (47):
Drop unused git-rebase--am.sh
t3400: stop referring to the scripted rebase
.gitignore: there is no longer a built-in `git-rebase--interactive`
sequencer: the `am` and `rebase--interactive` scripts are gone
rebase: fold git-rebase--common into the -p backend
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Vcproj.pm: auto-generate GUIDs
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Vcproj.pm: urlencode '<' and '>' when generating VC projects
contrib/buildsystems: ignore irrelevant files in Generators/
contrib/buildsystems: error out on unknown option
contrib/buildsystems: handle libiconv, too
contrib/buildsystems: also handle -lexpat
contrib/buildsystems: handle options starting with a slash
contrib/buildsystems: add a backend for modern Visual Studio versions
msvc: add a Makefile target to pre-generate the Visual Studio solution
vcxproj: also link-or-copy builtins
.gitignore: ignore Visual Studio's temporary/generated files
bin-wrappers: append `.exe` to target paths if necessary
git: avoid calling aliased builtins via their dashed form
config: work around bug with includeif:onbranch and early config
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (18):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
test-dir-iterator: do not assume errno values
A few more last-minute fixes
log: flip the --mailmap default unconditionally
log: really flip the --mailmap default
Git 2.23-rc1
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Martin Ågren (3):
ref-filter: fix memory leak in `free_array_item()`
RelNotes/2.21.1: typofix
RelNotes/2.23.0: fix a few typos and other minor issues
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (15):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Vcproj.pm: list git.exe first to be startup project
contrib/buildsystems: ignore invalidcontinue.obj
contrib/buildsystems: fix misleading error message
contrib/buildsystems: handle quoted spaces in filenames
contrib/buildsystems: ignore gettext stuff
contrib/buildsystems: redirect errors of the dry run into a log file
contrib/buildsystems: optionally capture the dry-run in a file
contrib/buildsystems: handle the curl library option
.gitignore: touch up the entries regarding Visual Studio
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (6):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (12):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
brian m. carlson (10):
t: add helper to convert object IDs to paths
t1410: make hash size independent
t1450: make hash size independent
t5000: make hash independent
t6030: make test work with SHA-256
t0027: make hash size independent
t0090: make test pass with SHA-256
t1007: remove SHA1 prerequisites
t1710: make hash independent
t2203: avoid hard-coded object ID values
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.23.0-rc0
@ 2019-07-29 21:49 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-07-29 21:49 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.23.0-rc0 is now available for
testing at the usual places. It is comprised of 420 non-merge
commits since v2.22.0, contributed by 62 people, 23 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.23.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira, Doug
Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Matheus Tavares,
Mazo, Andrey, Michael Osipov, Michael Platings, Miguel Ojeda,
Mike Mueller, Morian Sonnet, Quentin Nerden, Robert Morgan,
Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, Carlo Marcelo
Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
Couder, Denton Liu, Derrick Stolee, Dimitriy Ryazantcev,
Edmundo Carmona Antoranz, Elijah Newren, Emily Shaffer, Eric
Wong, Felipe Contreras, Jeff Hostetler, Jeff King, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Josh Steadmon, Junio
C Hamano, Karsten Blees, Marc-André Lureau, Martin Ågren,
Matthew DeVore, Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai
Belakovski, Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay
Jones, René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
Taylor Blau, and Thomas Gummerer.
----------------------------------------------------------------
Git 2.23 Release Notes (draft)
==============================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-shown-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned with "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* The "git log" command learns to issue a warning when log.mailmap
configuration is not set and --[no-]mailmap option is not used, to
prepare users for future versions of Git that uses the mailmap by
default.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainer of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targetting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
(merge cc0c42975a jc/post-c89-rules-doc later to maint).
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
(merge e1df7fe43f nd/init-relative-template-fix later to maint).
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
(merge 105df73e71 nd/corrupt-worktrees later to maint).
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to unrelated file descriptor getting
closed, which has been fixed.
(merge 3203566a71 mh/import-transport-fd-fix later to maint).
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
(merge 31f5256c82 ds/object-info-for-prefetch-fix later to maint).
* More parameter validation.
(merge de99eb0c24 es/grep-require-name-when-needed later to maint).
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
(merge e941c48d49 ew/server-info-remove-crufts later to maint).
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
(merge 533e088250 jk/HEAD-symref-in-xfer-namespaces later to maint).
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
(merge 7663e438c5 jk/am-i-resolved-fix later to maint).
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
(merge 3bbbe467f2 js/bundle-verify-require-object-store later to maint).
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
(merge 1d14d0c994 vv/merge-squash-with-explicit-commit later to maint).
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
(merge b5a8169752 js/fsmonitor-unflake later to maint).
* Update to Unicode 12.1 width table.
(merge 5817f9caa3 bb/unicode-12.1-reiwa later to maint).
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
(merge c3f2358de3 mm/p4-unshelve-windows-fix later to maint).
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
(merge 0454220d66 pb/request-pull-verify-remote-ref later to maint).
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
(merge 1c4a9f9114 xl/record-partial-clone-origin later to maint).
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
(merge 810e19322d jt/partial-clone-missing-ref-delta-base later to maint).
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
(merge 7140600e2e md/list-objects-filter-memfix later to maint).
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
(merge 1a58bad014 an/ignore-doc-update later to maint).
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
(merge d37dc239a4 md/url-parse-harden later to maint).
* The list of for-each like macros used by clang-format has been
updated.
(merge fc7e03aace mo/clang-format-for-each-update later to maint).
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
(merge f80d922355 fc/fetch-with-import-fix later to maint).
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
(merge 2d511cfc0b ds/close-object-store later to maint).
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
(merge 2bd69b9024 pw/add-p-recount later to maint).
* Code clean-up to avoid signed integer wraparounds during binary search.
(merge 568a05c5ec rs/avoid-overflow-in-midpoint-computation later to maint).
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
(merge 29c83fc23f jk/trailers-use-config later to maint).
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
(merge 63b50c8ffe tg/stash-ref-by-index-fix later to maint).
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
(merge d559f502c5 pw/rebase-abort-clean-rewritten later to maint).
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
(merge 69702523af nd/completion-no-cache-failure later to maint).
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
(merge 39c575c969 rs/config-unit-parsing later to maint).
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
(merge bdbdf42f8a jk/delta-islands-progress-fix later to maint).
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
(merge 5b12e3123b sg/rebase-progress later to maint).
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
(merge 30db18b148 ms/submodule-foreach-fix later to maint).
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running an non-interactive one, which was not
the case. This has been corrected.
(merge 906b63942a js/rebase-reschedule-applies-only-to-interactive later to maint).
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
(merge bfc8c84ed5 qn/clone-doc-use-long-form later to maint).
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
(merge b2b1f615ce jc/denoise-rm-to-resolve later to maint).
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
(merge eb7c786314 js/mingw-spawn-with-spaces-in-path later to maint).
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
(merge 64c45dc72e sr/gpg-interface-stop-at-the-end later to maint).
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
(merge b09364c47a js/clean-report-too-long-a-path later to maint).
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
(merge 2581ea3d31 es/local-atomic-push-failure-with-http later to maint).
* The internal diff machinery can be made to read out of bounds while
looking for --funcion-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f547101b26 es/git-debugger-doc later to maint).
(merge 7877ac3d7b js/bisect-helper-check-get-oid-return-value later to maint).
(merge 0108f47eb3 sw/git-p4-unshelve-branched-files later to maint).
(merge 9df8f734fd cm/send-email-document-req-modules later to maint).
(merge afc3bf6eb1 ab/hash-object-doc later to maint).
(merge 1fde99cfc7 po/doc-branch later to maint).
(merge 459842e1c2 dl/config-alias-doc later to maint).
(merge 5d137fc2c7 cb/fsmonitor-intfix later to maint).
(merge 921d49be86 rs/copy-array later to maint).
(merge cc8d872e69 js/t3404-typofix later to maint).
(merge 729a9b558b cb/mkstemps-uint-type-fix later to maint).
(merge 9dae4fe79f js/gcc-8-and-9 later to maint).
(merge ed33bd8f30 js/t0001-case-insensitive later to maint).
(merge dfa880e336 jw/gitweb-sample-update later to maint).
(merge e532a90a9f sg/t5551-fetch-smart-error-is-translated later to maint).
(merge 8d45ad8c29 jt/t5551-test-chunked later to maint).
(merge 1a64e07d23 sg/git-C-empty-doc later to maint).
(merge 37a2e35395 sg/ci-brew-gcc-workaround later to maint).
(merge 24df0d49c4 js/trace2-signo-typofix later to maint).
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7926cee904 di/readme-markup-fix later to maint).
(merge 02638d1e11 vn/xmmap-gently later to maint).
(merge f7bf24d4dd rm/gpg-program-doc-fix later to maint).
(merge 3aef54e8b8 js/unmap-before-ext-diff later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (3):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (50):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
Dimitriy Ryazantcev (1):
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (5):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (50):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
Johannes Schindelin (32):
Drop unused git-rebase--am.sh
t3400: stop referring to the scripted rebase
.gitignore: there is no longer a built-in `git-rebase--interactive`
sequencer: the `am` and `rebase--interactive` scripts are gone
rebase: fold git-rebase--common into the -p backend
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (13):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Martin Ågren (1):
ref-filter: fix memory leak in `free_array_item()`
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (6):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (6):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (11):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 2%]
* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
2019-07-26 14:33 0% ` Johannes Schindelin
@ 2019-07-26 20:23 0% ` Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-07-26 20:23 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Hi Junio,
>
> On Thu, 25 Jul 2019, Junio C Hamano wrote:
>
>> The seventh batch is in; I've merged fix-up topics that has been in
>> 'master' for some time (i.e. up to the third batch of this cycle)
>> down to 'maint'.
>
> Would you terribly mind also merging `js/gcc-8-and-9` into `maint`?
> Otherwise, the CI build is broken after my upgrade of the Git for
> Windows SDk to GCC v9.x.
I do not mind. I am just taking things in smaller batches than just
the whole ball of wax.
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
2019-07-26 0:19 1% What's cooking in git.git (Jul 2019, #06; Thu, 25) Junio C Hamano
@ 2019-07-26 14:33 0% ` Johannes Schindelin
2019-07-26 20:23 0% ` Junio C Hamano
2019-08-09 0:13 0% ` Taylor Blau
1 sibling, 1 reply; 162+ results
From: Johannes Schindelin @ 2019-07-26 14:33 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Hi Junio,
On Thu, 25 Jul 2019, Junio C Hamano wrote:
> The seventh batch is in; I've merged fix-up topics that has been in
> 'master' for some time (i.e. up to the third batch of this cycle)
> down to 'maint'.
Would you terribly mind also merging `js/gcc-8-and-9` into `maint`?
Otherwise, the CI build is broken after my upgrade of the Git for
Windows SDk to GCC v9.x.
Thanks,
Dscho
^ permalink raw reply [relevance 0%]
* What's cooking in git.git (Jul 2019, #06; Thu, 25)
@ 2019-07-26 0:19 1% Junio C Hamano
2019-07-26 14:33 0% ` Johannes Schindelin
2019-08-09 0:13 0% ` Taylor Blau
0 siblings, 2 replies; 162+ results
From: Junio C Hamano @ 2019-07-26 0:19 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The seventh batch is in; I've merged fix-up topics that has been in
'master' for some time (i.e. up to the third batch of this cycle)
down to 'maint'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ab/test-env (2019-07-11) 9 commits
(merged to 'next' on 2019-07-15 at 42e86beb20)
+ env--helper: mark a file-local symbol as static
(merged to 'next' on 2019-07-09 at 096658f382)
+ tests: make GIT_TEST_FAIL_PREREQS a boolean
+ tests: replace test_tristate with "git env--helper"
+ tests README: re-flow a previously changed paragraph
+ tests: make GIT_TEST_GETTEXT_POISON a boolean
+ t6040 test: stop using global "script" variable
+ config.c: refactor die_bad_number() to not call gettext() early
+ env--helper: new undocumented builtin wrapping git_env_*()
+ config tests: simplify include cycle test
Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
(merged to 'next' on 2019-07-19 at e5669de950)
+ tests: defang pager tests by explicitly disabling the log.mailmap warning
+ documentation: mention --no-use-mailmap and log.mailmap false setting
+ log: add warning for unspecified log.mailmap setting
The "git log" command learns to issue a warning when log.mailmap
configuration is not set and --[no-]mailmap option is not used, to
prepare users for future versions of Git that uses the mailmap by
default.
* di/readme-markup-fix (2019-07-18) 1 commit
(merged to 'next' on 2019-07-19 at 339470d824)
+ README: fix rendering of text in angle brackets
Docfix.
* es/local-atomic-push-failure-with-http (2019-07-16) 2 commits
(merged to 'next' on 2019-07-19 at 8d5b776a96)
+ transport-helper: avoid var decl in for () loop control
(merged to 'next' on 2019-07-15 at 960e92d24f)
+ transport-helper: enforce atomic in push_refs_with_push
"git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* jc/denoise-rm-to-resolve (2019-07-18) 1 commit
(merged to 'next' on 2019-07-19 at 12f7e5d413)
+ rm: resolving by removal is not a warning-worthy event
"git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* jc/post-c89-rules-doc (2019-07-18) 1 commit
(merged to 'next' on 2019-07-19 at 8acd58e189)
+ CodingGuidelines: spell out post-C89 rules
We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* jk/test-commit-bulk (2019-07-23) 6 commits
(merged to 'next' on 2019-07-23 at edc849c7dd)
+ t6200: use test_commit_bulk
+ t5703: use test_commit_bulk
+ t5702: use test_commit_bulk
+ t3311: use test_commit_bulk
+ t5310: increase the number of bitmapped commits
+ test-lib: introduce test_commit_bulk
A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
* js/clean-report-too-long-a-path (2019-07-19) 1 commit
(merged to 'next' on 2019-07-19 at b7da0a821c)
+ clean: show an error message when the path is too long
"git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* js/mingw-spawn-with-spaces-in-path (2019-07-16) 1 commit
(merged to 'next' on 2019-07-19 at 33dd6d0401)
+ mingw: support spawning programs containing spaces in their names
Window 7 update ;-)
* js/unmap-before-ext-diff (2019-07-11) 1 commit
(merged to 'next' on 2019-07-15 at 7aa292c66c)
+ diff: munmap() file contents before running external diff
Windows update.
* mt/dir-iterator-updates (2019-07-11) 10 commits
(merged to 'next' on 2019-07-19 at 2ebb586ce6)
+ clone: replace strcmp by fspathcmp
+ clone: use dir-iterator to avoid explicit dir traversal
+ clone: extract function from copy_or_link_directory
+ clone: copy hidden paths at local clone
+ dir-iterator: add flags parameter to dir_iterator_begin
+ dir-iterator: refactor state machine model
+ dir-iterator: use warning_errno when possible
+ dir-iterator: add tests for dir-iterator API
+ clone: better handle symlinked files at .git/objects/
+ clone: test for our behavior on odd objects/* content
Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* rm/gpg-program-doc-fix (2019-07-12) 1 commit
(merged to 'next' on 2019-07-15 at ef358ec2e9)
+ gpg(docs): use correct --verify syntax
Docfix.
* sr/gpg-interface-stop-at-the-end (2019-07-16) 1 commit
(merged to 'next' on 2019-07-19 at 5d38aa1236)
+ gpg-interface: do not scan past the end of buffer
A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* tg/range-diff-output-update (2019-07-11) 14 commits
(merged to 'next' on 2019-07-15 at b847d206ed)
+ range-diff: add headers to the outer hunk header
+ range-diff: add filename to inner diff
+ range-diff: add section header instead of diff header
+ range-diff: suppress line count in outer diff
+ range-diff: don't remove funcname from inner diff
+ range-diff: split lines manually
+ range-diff: fix function parameter indentation
+ apply: make parse_git_diff_header public
+ apply: only pass required data to gitdiff_* functions
+ apply: only pass required data to find_name_*
+ apply: only pass required data to check_header_line
+ apply: only pass required data to git_header_name
+ apply: only pass required data to skip_tree_prefix
+ apply: replace marc.info link with public-inbox
"git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
* tg/stash-keep-index-with-removed-paths (2019-07-16) 1 commit
(merged to 'next' on 2019-07-19 at d4ae24a939)
+ stash: fix handling removed files with --keep-index
"git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
* vn/xmmap-gently (2019-07-14) 1 commit
(merged to 'next' on 2019-07-19 at d95c1d2be3)
+ read-cache.c: do not die if mmap fails
Clean-up an error codepath.
--------------------------------------------------
[New Topics]
* bb/grep-pcre2-bug-message-fix (2019-07-23) 1 commit
(merged to 'next' on 2019-07-23 at 8bd5a68618)
+ grep: print the pcre2_jit_on value
BUG() message fix.
The codepath may want to just simply be removed, though.
* ra/rebase-i-more-options (2019-07-23) 4 commits
- SQUASH???
- rebase -i: support --committer-date-is-author-date
- sequencer: add NULL checks under read_author_script
- rebase -i: add --ignore-whitespace flag
"git rebase -i" learned a few options that are known by "git
rebase" proper.
Needs a bit of fixups, at least.
* sg/travis-gcc-4.8 (2019-07-19) 1 commit
(merged to 'next' on 2019-07-25 at e3d546eb15)
+ travis-ci: build with GCC 4.8 as well
Add a job to build with a tad older GCC to make sure we are still
buildable.
Will merge to 'master'.
* ab/pcre-jit-fixes (2019-07-24) 3 commits
- grep: stop using a custom JIT stack with PCRE v1
- grep: stop "using" a custom JIT stack with PCRE v2
- grep: remove overly paranoid BUG(...) code
A few simplification and bugfixes to PCRE interface.
Will merge to 'next'.
* jk/xdiff-clamp-funcname-context-index (2019-07-23) 1 commit
(merged to 'next' on 2019-07-25 at b2944a0ba6)
+ xdiff: clamp function context indices in post-image
The internal diff machinery can be made to read out of bounds while
looking for --funcion-context line in a corner case, which has been
corrected.
Will merge to 'master'.
* js/rebase-cleanup (2019-07-25) 2 commits
(merged to 'next' on 2019-07-25 at 3d9cedf470)
+ git: mark cmd_rebase as requiring a worktree
+ rebase: fix white-space
A few leftover cleanup to "git rebase" in C.
Will merge to 'master'.
* js/rebase-r-strategy (2019-07-25) 12 commits
- rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
- t3418: test `rebase -r` with merge strategies
- t/lib-rebase: prepare for testing `git rebase --rebase-merges`
- rebase -r: support merge strategies other than `recursive`
- t3427: mark two test cases as requiring support for `git rebase -p`
- t3427: fix another incorrect assumption
- t3427: accommodate for the `rebase --merge` backend having been replaced
- t3427: fix erroneous assumption
- t3427: condense the unnecessarily repetitive test cases into three
- t3427: move the `filter-branch` invocation into the `setup` case
- t3427: simplify the `setup` test case significantly
- t3427: add a clarifying comment
"git rebase --rebase-merges" learned to drive different merge
strategies and pass strategy specific options to them.
* js/trace2-json-schema (2019-07-25) 3 commits
- ci: run trace2 schema validation in the CI suite
- trace2: add a schema validator for trace2 events
- trace2: add a JSON schema for trace2 events
The JSON output produced by "trace2" subsystem now has JSON schema
defined on it, to allow us validate the output and catch deviation.
The CI integration may be a bit too heavy-handed.
--------------------------------------------------
[Stalled]
* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
- xdiff: avoid accidental redefinition of LFS feature in OpenIndiana
Compilation fix.
Will be rerolled together with patches from the
jk/no-system-includes-in-dot-c topic.
* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
- wt-status.h: drop stdio.h include
- verify-tag: drop signal.h include
Compilation fix.
Will be rerolled with the above.
* nd/index-dump-in-json (2019-06-26) 11 commits
- SQUASH???
- t3008: use the new SINGLE_CPU prereq
- read-cache.c: dump "IEOT" extension as json
- read-cache.c: dump "EOIE" extension as json
- resolve-undo.c: dump "REUC" extension as json
- fsmonitor.c: dump "FSMN" extension as json
- split-index.c: dump "link" extension as json
- dir.c: dump "UNTR" extension as json
- cache-tree.c: dump "TREE" extension as json
- read-cache.c: dump common extension info in json
- ls-files: add --json to dump the index
"ls-files" learned "--debug-json" option to dump the contents and
the extensions of the index file.
At least the fixup at the tip needs to be squashed into the right
commit. Also the new test seems flaky.
* jn/unknown-index-extensions (2018-11-21) 2 commits
- index: offer advice for unknown index extensions
- index: do not warn about unrecognized extensions
A bit too alarming warning given when unknown index extensions
exist is getting revamped.
Expecting a reroll.
* jc/format-patch-delay-message-id (2019-04-05) 1 commit
- format-patch: move message-id and related headers to the end
The location "git format-patch --thread" adds the Message-Id:
header in the series of header fields has been moved down, which
may help working around a suspected bug in GMail MSA, reported at
<CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>
Waiting for feedback to see if it truly helps.
Needs tests.
* jt/fetch-cdn-offload (2019-03-12) 9 commits
- SQUASH???
- upload-pack: send part of packfile response as uri
- fetch-pack: support more than one pack lockfile
- upload-pack: refactor reading of pack-objects out
- Documentation: add Packfile URIs design doc
- Documentation: order protocol v2 sections
- http-fetch: support fetching packfiles by URL
- http: improve documentation of http_pack_request
- http: use --stdin when getting dumb HTTP pack
WIP for allowing a response to "git fetch" to instruct the bulk of
the pack contents to be instead taken from elsewhere (aka CDN).
* js/protocol-advertise-multi (2018-12-28) 1 commit
- protocol: advertise multiple supported versions
The transport layer has been updated so that the protocol version
used can be negotiated between the parties, by the initiator
listing the protocol versions it is willing to talk, and the other
side choosing from one of them.
Expecting a reroll.
cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
* dl/remote-save-to-push (2018-12-11) 1 commit
- remote: add --save-to-push option to git remote set-url
"git remote set-url" learned a new option that moves existing value
of the URL field to pushURL field of the remote before replacing
the URL field with a new value.
Anybody who wants to champion this topic?
I am personally not yet quite convinced if this is worth pursuing.
--------------------------------------------------
[Cooking]
* js/builtin-add-i (2019-07-18) 11 commits
- built-in add -i: implement the `help` command
- built-in add -i: use color in the main loop
- built-in add -i: support `?` (prompt help)
- built-in add -i: show unique prefixes of the commands
- Add a function to determine unique prefixes for a list of strings
- built-in add -i: implement the main loop
- built-in add -i: color the header in the `status` command
- built-in add -i: refresh the index before running `status`
- built-in add -i: implement the `status` command
- diff: export diffstat interface
- Start to implement a built-in version of `git add --interactive`
The beginning of rewriting "git add -i" in C.
* js/visual-studio (2019-07-18) 24 commits
- git: avoid calling aliased builtins via their dashed form
- t5505,t5516: create .git/branches/ when needed
- bin-wrappers: append `.exe` to target paths if necessary
- .gitignore: ignore Visual Studio's temporary/generated files
- .gitignore: touch up the entries regarding Visual Studio
- vcxproj: also link-or-copy builtins
- msvc: add a Makefile target to pre-generate the Visual Studio solution
- contrib/buildsystems: add a backend for modern Visual Studio versions
- contrib/buildsystems: handle options starting with a slash
- contrib/buildsystems: also handle -lexpat
- contrib/buildsystems: handle libiconv, too
- contrib/buildsystems: handle the curl library option
- contrib/buildsystems: error out on unknown option
- contrib/buildsystems: optionally capture the dry-run in a file
- contrib/buildsystems: redirect errors of the dry run into a log file
- contrib/buildsystems: ignore gettext stuff
- contrib/buildsystems: handle quoted spaces in filenames
- contrib/buildsystems: fix misleading error message
- contrib/buildsystems: ignore irrelevant files in Generators/
- contrib/buildsystems: ignore invalidcontinue.obj
- Vcproj.pm: urlencode '<' and '>' when generating VC projects
- Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
- Vcproj.pm: list git.exe first to be startup project
- Vcproj.pm: auto-generate GUIDs
Support building Git with Visual Studio
The ".git/branches" bit needs to be ejected and treated separately,
but other than that, the topic looked reasonable.
* bc/hash-independent-tests-part-4 (2019-07-01) 10 commits
- t2203: avoid hard-coded object ID values
- t1710: make hash independent
- t1007: remove SHA1 prerequisites
- t0090: make test pass with SHA-256
- t0027: make hash size independent
- t6030: make test work with SHA-256
- t5000: make hash independent
- t1450: make hash size independent
- t1410: make hash size independent
- t: add helper to convert object IDs to paths
Update to the tests to help SHA-256 transition continues.
Will merge to 'next'.
* es/walken-tutorial (2019-07-02) 1 commit
- documentation: add tutorial for revision walking
Yet another revision walker tutorial.
* ds/early-access (2019-07-01) 3 commits
- repo-settings: pack.useSparse=true
- repo-settings: use index.version=4 by default
- repo-settings: create core.featureAdoptionRate setting
A mechanism to enable newish configuration settings in bulk has
been invented.
Will replace with a redesigned variant which is being discussed
when the dust settles.
cf. <pull.292.v2.git.gitgitgadget@gmail.com> (v2)
* ab/no-kwset (2019-07-01) 10 commits
(merged to 'next' on 2019-07-15 at ed0479ce3d)
+ grep: use PCRE v2 for optimized fixed-string search
+ grep: remove the kwset optimization
+ grep: drop support for \0 in --fixed-strings <pattern>
+ grep: make the behavior for NUL-byte in patterns sane
+ grep tests: move binary pattern tests into their own file
+ grep tests: move "grep binary" alongside the rest
+ grep: inline the return value of a function call used only once
+ t4210: skip more command-line encoding tests on MinGW
+ grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
+ log tests: test regex backends in "--encode=<enc>" tests
Retire use of kwset library, which is an optimization for looking
for fixed strings, with use of pcre2 JIT.
Needs to wait for a few pcre JIT related fixups, including the
handling of non-UTF8 haystack.
* md/list-objects-filter-combo (2019-06-28) 10 commits
- list-objects-filter-options: make parser void
- list-objects-filter-options: clean up use of ALLOC_GROW
- list-objects-filter-options: allow mult. --filter
- strbuf: give URL-encoding API a char predicate fn
- list-objects-filter-options: make filter_spec a string_list
- list-objects-filter-options: move error check up
- list-objects-filter: implement composite filters
- list-objects-filter-options: always supply *errbuf
- list-objects-filter: put omits set in filter struct
- list-objects-filter: encapsulate filter components
The list-objects-filter API (used to create a sparse/lazy clone)
learned to take a combined filter specification.
Will merge to 'next'.
* cc/multi-promisor (2019-06-25) 15 commits
- Move core_partial_clone_filter_default to promisor-remote.c
- Move repository_format_partial_clone to promisor-remote.c
- Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
- remote: add promisor and partial clone config to the doc
- partial-clone: add multiple remotes in the doc
- t0410: test fetching from many promisor remotes
- builtin/fetch: remove unique promisor remote limitation
- promisor-remote: parse remote.*.partialclonefilter
- Use promisor_remote_get_direct() and has_promisor_remote()
- promisor-remote: use repository_format_partial_clone
- promisor-remote: add promisor_remote_reinit()
- promisor-remote: implement promisor_remote_get_direct()
- Add initial support for many promisor remotes
- fetch-object: make functions return an error code
- t0410: remove pipes after git commands
Teach the lazy clone machinery that there can be more than one
promisor remote and consult them in order when downloading missing
objects on demand.
Will merge to 'next'.
* jc/format-patch-noclobber (2019-02-22) 1 commit
- format-patch: --no-clobber refrains from overwriting output files
"git format-patch" used to overwrite an existing patch/cover-letter
file. A new "--no-clobber" option stops it.
Will discard.
* dl/rebase-i-keep-base (2019-04-25) 6 commits
- rebase: teach rebase --keep-base
- rebase: fast-forward --fork-point in more cases
- rebase: fast-forward --onto in more cases
- rebase: refactor can_fast_forward into goto tower
- t3432: test rebase fast-forward behavior
- t3431: add rebase --fork-point tests
"git rebase --keep-base <upstream>" tries to find the original base
of the topic being rebased and rebase on top of that same base,
which is useful when running the "git rebase -i" (and its limited
variant "git rebase -x").
The command also has learned to fast-forward in more cases where it
can instead of replaying to recreate identical commits.
On hold.
cf. <20190508001252.15752-1-avarab@gmail.com>
cf. <20190719210156.GA9688@archbookpro.localdomain>
^ permalink raw reply [relevance 1%]
* Re: What's cooking in git.git (Jul 2019, #01; Wed, 3)
2019-07-03 22:28 1% What's cooking in git.git (Jul 2019, #01; Wed, 3) Junio C Hamano
@ 2019-07-04 9:56 0% ` Phillip Wood
0 siblings, 0 replies; 162+ results
From: Phillip Wood @ 2019-07-04 9:56 UTC (permalink / raw)
To: Junio C Hamano, git
On 03/07/2019 23:28, Junio C Hamano wrote:
> Here are the topics that have been cooking. Commits prefixed with
> '-' are only in 'pu' (proposed updates) while commits prefixed with
> '+' are in 'next'. The ones marked with '.' do not appear in any of
> the integration branches, but I am still holding onto them.
>
> The third batch of topics post 2.22 are now in 'master', and the tip
> of 'next' has been rewound.
>
> You can find the changes described here in the integration branches
> of the repositories listed at
>
> http://git-blame.blogspot.com/p/git-public-repositories.html
>
> --------------------------------------------------
> [New Topics]
>
> * pw/rebase-progress-test-cleanup (2019-07-01) 1 commit
> - t3420: remove progress lines before comparing output
> (this branch uses sg/rebase-progress.)
>
> Test cleanup.
>
> Will merge to 'next'.
I've just posted an update to this which avoids the repeated printf calls
Best Wishes
Phillip
^ permalink raw reply [relevance 0%]
* What's cooking in git.git (Jul 2019, #01; Wed, 3)
@ 2019-07-03 22:28 1% Junio C Hamano
2019-07-04 9:56 0% ` Phillip Wood
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-07-03 22:28 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics post 2.22 are now in 'master', and the tip
of 'next' has been rewound.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* bc/hash-independent-tests-part-4 (2019-07-01) 10 commits
- t2203: avoid hard-coded object ID values
- t1710: make hash independent
- t1007: remove SHA1 prerequisites
- t0090: make test pass with SHA-256
- t0027: make hash size independent
- t6030: make test work with SHA-256
- t5000: make hash independent
- t1450: make hash size independent
- t1410: make hash size independent
- t: add helper to convert object IDs to paths
Update to the tests to help SHA-256 transition continues.
* pw/prompt-cherry-pick-revert-fix (2019-07-01) 1 commit
- git-prompt: improve cherry-pick/revert detection
When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
Will merge to 'next'.
* pw/rebase-progress-test-cleanup (2019-07-01) 1 commit
- t3420: remove progress lines before comparing output
(this branch uses sg/rebase-progress.)
Test cleanup.
Will merge to 'next'.
* sg/git-C-empty-doc (2019-07-01) 1 commit
- Document that 'git -C ""' works and doesn't change directory
Doc update.
Will merge to 'next'.
* es/local-atomic-push-failure-with-http (2019-07-02) 2 commits
- SQUASH???
- transport-helper: enforce atomic in push_refs_with_push
"git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
Need to either wait for reroll or squash the fix in directly.
* es/walken-tutorial (2019-07-02) 1 commit
- documentation: add tutorial for revision walking
Yet another revision walker tutorial.
* qn/clone-doc-use-long-form (2019-07-02) 2 commits
- docs: git-clone: list short form of options first
- docs: git-clone: refer to long form of options
The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
Will merge to 'next'.
* sg/ci-brew-gcc-workaround (2019-07-03) 2 commits
- ci: disable Homebrew's auto cleanup
- ci: don't update Homebrew
Dev support update.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* jn/unknown-index-extensions (2018-11-21) 2 commits
- index: offer advice for unknown index extensions
- index: do not warn about unrecognized extensions
A bit too alarming warning given when unknown index extensions
exist is getting revamped.
Expecting a reroll.
* jc/format-patch-delay-message-id (2019-04-05) 1 commit
- format-patch: move message-id and related headers to the end
The location "git format-patch --thread" adds the Message-Id:
header in the series of header fields has been moved down, which
may help working around a suspected bug in GMail MSA, reported at
<CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>
Waiting for feedback to see if it truly helps.
Needs tests.
* jt/fetch-cdn-offload (2019-03-12) 9 commits
- SQUASH???
- upload-pack: send part of packfile response as uri
- fetch-pack: support more than one pack lockfile
- upload-pack: refactor reading of pack-objects out
- Documentation: add Packfile URIs design doc
- Documentation: order protocol v2 sections
- http-fetch: support fetching packfiles by URL
- http: improve documentation of http_pack_request
- http: use --stdin when getting dumb HTTP pack
WIP for allowing a response to "git fetch" to instruct the bulk of
the pack contents to be instead taken from elsewhere (aka CDN).
Stalled
* js/protocol-advertise-multi (2018-12-28) 1 commit
- protocol: advertise multiple supported versions
The transport layer has been updated so that the protocol version
used can be negotiated between the parties, by the initiator
listing the protocol versions it is willing to talk, and the other
side choosing from one of them.
Expecting a reroll.
cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
* dl/remote-save-to-push (2018-12-11) 1 commit
- remote: add --save-to-push option to git remote set-url
"git remote set-url" learned a new option that moves existing value
of the URL field to pushURL field of the remote before replacing
the URL field with a new value.
Anybody who wants to champion this topic?
I am personally not yet quite convinced if this is worth pursuing.
--------------------------------------------------
[Cooking]
* cb/windows-manifest (2019-06-27) 1 commit
(merged to 'next' on 2019-07-03 at 875721bdc9)
+ mingw: embed a manifest to trick UAC into Doing The Right Thing
Windows update.
Will merge to 'master'.
* js/mingw-gcc-stack-protect (2019-06-27) 1 commit
(merged to 'next' on 2019-07-03 at 7e3185f69d)
+ mingw: enable stack smashing protector
Windows update.
Will merge to 'master'.
* js/mingw-use-utf8 (2019-06-27) 2 commits
(merged to 'next' on 2019-07-03 at f528daf88d)
+ mingw: use Unicode functions explicitly
+ mingw: get pw_name in UTF-8 format
Windows update.
Will merge to 'master'.
* kb/windows-force-utf8 (2019-06-27) 1 commit
- gettext: always use UTF-8 on native Windows
Windows update.
On hold.
cf. <nycvar.QRO.7.76.6.1907031321270.44@tvgsbejvaqbjf.bet>
* js/rebase-reschedule-applies-only-to-interactive (2019-07-01) 1 commit
- rebase --am: ignore rebase.rescheduleFailedExec
The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running an non-interactive one, which was not
the case. This has been corrected.
Will merge to 'next'.
* jt/t5551-test-chunked (2019-06-27) 1 commit
(merged to 'next' on 2019-07-03 at aafd74451c)
+ t5551: test usage of chunked encoding explicitly
Update smart-http test.
Will merge to 'master'.
* tb/ref-filter-multiple-patterns (2019-06-27) 1 commit
(merged to 'next' on 2019-07-03 at f59ad42c4a)
+ ref-filter.c: find disjoint pattern prefixes
"git for-each-ref" with multiple patterns have been optimized.
Will merge to 'master'.
* ew/repack-with-bitmaps-by-default (2019-07-01) 1 commit
- repack: disable bitmaps-by-default if .keep files exist
Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
Will merge to 'next'.
* jk/check-connected-with-alternates (2019-07-01) 2 commits
- check_everything_connected: assume alternate ref tips are valid
- object-store.h: move for_each_alternate_ref() from transport.h
The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
Will merge to 'next'.
* jk/test-commit-bulk (2019-07-02) 7 commits
- SQUASH???
- t6200: use test_commit_bulk
- t5703: use test_commit_bulk
- t5702: use test_commit_bulk
- t3311: use test_commit_bulk
- t5310: increase the number of bitmapped commits
- test-lib: introduce test_commit_bulk
A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Will merge to 'next'.
I think I spotted one unused command, which we may want to remove, though.
* ab/test-env (2019-06-21) 8 commits
- tests: make GIT_TEST_FAIL_PREREQS a boolean
- tests: replace test_tristate with "git env--helper"
- tests README: re-flow a previously changed paragraph
- tests: make GIT_TEST_GETTEXT_POISON a boolean
- t6040 test: stop using global "script" variable
- config.c: refactor die_bad_number() to not call gettext() early
- env--helper: new undocumented builtin wrapping git_env_*()
- config tests: simplify include cycle test
Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
Will merge to 'next'.
* cc/first-contrib-tutorial (2019-06-24) 1 commit
(merged to 'next' on 2019-06-27 at a9f2ab2f21)
+ doc: improve usage string in MyFirstContribution
Update docs used in a tutorial.
Will merge to 'master'.
* ds/early-access (2019-07-01) 3 commits
- repo-settings: pack.useSparse=true
- repo-settings: use index.version=4 by default
- repo-settings: create core.featureAdoptionRate setting
A mechanism to enable newish configuration settings in bulk has
been invented.
The model may need to be rethought. A linear scale with "early
adoption" mindset may not match diverse use cases of the tool.
* jh/msvc (2019-06-25) 20 commits
(merged to 'next' on 2019-06-27 at 5a16e3d67c)
+ msvc: ignore .dll and incremental compile output
+ msvc: avoid debug assertion windows in Debug Mode
+ msvc: do not pretend to support all signals
+ msvc: add pragmas for common warnings
+ msvc: add a compile-time flag to allow detailed heap debugging
+ msvc: support building Git using MS Visual C++
+ msvc: update Makefile to allow for spaces in the compiler path
+ msvc: fix detect_msys_tty()
+ msvc: define ftello()
+ msvc: do not re-declare the timespec struct
+ msvc: mark a variable as non-const
+ msvc: define O_ACCMODE
+ msvc: include sigset_t definition
+ msvc: fix dependencies of compat/msvc.c
+ mingw: replace mingw_startup() hack
+ obstack: fix compiler warning
+ cache-tree/blame: avoid reusing the DEBUG constant
+ t0001 (mingw): do not expect a specific order of stdout/stderr
+ Mark .bat files as requiring CR/LF endings
+ mingw: fix a typo in the msysGit-specific section
Support to build with MSVC has been updated.
Will merge to 'master'.
* jk/delta-islands-progress-fix (2019-06-20) 1 commit
(merged to 'next' on 2019-06-27 at 644526ba73)
+ delta-islands: respect progress flag
The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
Will merge to 'master'.
* jk/oidhash (2019-06-20) 17 commits
(merged to 'next' on 2019-06-27 at 7bf6b87738)
+ hashmap: convert sha1hash() to oidhash()
+ hash.h: move object_id definition from cache.h
+ khash: rename oid helper functions
+ khash: drop sha1-specific map types
+ pack-bitmap: convert khash_sha1 maps into kh_oid_map
+ delta-islands: convert island_marks khash to use oids
+ khash: rename kh_oid_t to kh_oid_set
+ khash: drop broken oid_map typedef
+ object: convert create_object() to use object_id
+ object: convert internal hash_obj() to object_id
+ object: convert lookup_object() to use object_id
+ object: convert lookup_unknown_object() to use object_id
+ pack-objects: convert locate_object_entry_hash() to object_id
+ pack-objects: convert packlist_find() to use object_id
+ pack-bitmap-write: convert some helpers to use object_id
+ upload-pack: rename a "sha1" variable to "oid"
+ describe: fix accidental oid/hash type-punning
Code clean-up to remove hardcoded SHA-1 hash from manty places.
Will merge to 'master'.
* nd/fetch-capability-tweak (2019-06-20) 3 commits
(merged to 'next' on 2019-06-27 at dedbcb31a1)
+ fetch-pack: print server version at the top in -v -v
+ fetch-pack: print all relevant supported capabilities with -v -v
+ fetch-pack: move capability names out of i18n strings
Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
Will merge to 'master'.
* nd/index-dump-in-json (2019-06-26) 11 commits
- SQUASH???
- t3008: use the new SINGLE_CPU prereq
- read-cache.c: dump "IEOT" extension as json
- read-cache.c: dump "EOIE" extension as json
- resolve-undo.c: dump "REUC" extension as json
- fsmonitor.c: dump "FSMN" extension as json
- split-index.c: dump "link" extension as json
- dir.c: dump "UNTR" extension as json
- cache-tree.c: dump "TREE" extension as json
- read-cache.c: dump common extension info in json
- ls-files: add --json to dump the index
"ls-files" learned "--debug-json" option to dump the contents and
the extensions of the index file.
At least the fixup at the tip needs to be squashed into the right
commit.
* rs/config-unit-parsing (2019-06-24) 3 commits
(merged to 'next' on 2019-06-27 at db633f85fe)
+ config: simplify parsing of unit factors
+ config: don't multiply in parse_unit_factor()
+ config: use unsigned_mult_overflows to check for overflows
(this branch uses js/gcc-8-and-9.)
The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
Will merge to 'master'.
* ab/fail-prereqs-in-test (2019-06-21) 1 commit
(merged to 'next' on 2019-06-27 at 4df04aa1a0)
+ tests: mark two failing tests under FAIL_PREREQS
Test updates.
Will merge to 'master'.
* ds/fetch-disable-force-notice (2019-06-21) 3 commits
(merged to 'next' on 2019-06-27 at 3ff4516f85)
+ pull: add --[no-]show-forced-updates passthrough
+ fetch: warn about forced updates in branch listing
+ fetch: add --[no-]show-forced-updates argument
"git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-shown-forced-updates" option to disable
this safety feature.
Will merge to 'master'.
* jh/status-aheadbehind (2019-06-21) 3 commits
(merged to 'next' on 2019-06-27 at 362ee6b059)
+ status: ignore status.aheadbehind in porcelain formats
+ status: warn when a/b calculation takes too long
+ status: add status.aheadbehind setting
"git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
Will merge to 'master'.
* js/t0001-case-insensitive (2019-06-24) 1 commit
(merged to 'next' on 2019-06-27 at 6c0001aebb)
+ t0001: fix on case-insensitive filesystems
Test update.
Will merge to 'master'.
* dr/progress-i18n (2019-07-02) 1 commit
- l10n: localizable upload progress messages
Progress messages have been made localizable.
Will merge to 'next'.
* jw/gitweb-sample-update (2019-06-24) 1 commit
(merged to 'next' on 2019-06-27 at 30a5e91e76)
+ doc: don't use git.kernel.org as example gitweb URL
Doc update.
Will merge to 'master'.
* ms/submodule-foreach-fix (2019-06-25) 1 commit
(merged to 'next' on 2019-06-27 at ccd37d4dac)
+ submodule foreach: fix recursion of options
"git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
Will merge to 'master'.
* pw/status-with-corrupt-sequencer-state (2019-06-27) 3 commits
(merged to 'next' on 2019-07-03 at 273aee6b3c)
+ status: do not report errors in sequencer/todo
+ sequencer: factor out todo command name parsing
+ sequencer: always allow tab after command name
The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
Will merge to 'master'.
* sg/t5551-fetch-smart-error-is-translated (2019-06-25) 1 commit
(merged to 'next' on 2019-06-27 at 967c03da24)
+ t5551: use 'test_i18ngrep' to check translated output
Test update.
Will merge to 'master'.
* ab/no-kwset (2019-07-01) 10 commits
- grep: use PCRE v2 for optimized fixed-string search
- grep: remove the kwset optimization
- grep: drop support for \0 in --fixed-strings <pattern>
- grep: make the behavior for NUL-byte in patterns sane
- grep tests: move binary pattern tests into their own file
- grep tests: move "grep binary" alongside the rest
- grep: inline the return value of a function call used only once
- t4210: skip more command-line encoding tests on MinGW
- grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
- log tests: test regex backends in "--encode=<enc>" tests
Retire use of kwset library, which is an optimization for looking
for fixed strings, with use of pcre2 JIT.
On hold.
cf. <nycvar.QRO.7.76.6.1907021417050.48@tvgsbejvaqbjf.bet>
* mt/dir-iterator-updates (2019-06-25) 10 commits
- clone: replace strcmp by fspathcmp
- clone: use dir-iterator to avoid explicit dir traversal
- clone: extract function from copy_or_link_directory
- clone: copy hidden paths at local clone
- dir-iterator: add flags parameter to dir_iterator_begin
- dir-iterator: refactor state machine model
- dir-iterator: use warning_errno when possible
- dir-iterator: add tests for dir-iterator API
- clone: better handle symlinked files at .git/objects/
- clone: test for our behavior on odd objects/* content
Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
Is this ready for 'next'?
* nd/tree-walk-with-repo (2019-06-28) 7 commits
- t7814: do not generate same commits in different repos
- Use the right 'struct repository' instead of the_repository
- match-trees.c: remove the_repo from shift_tree*()
- tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
- tree-walk.c: remove the_repo from get_tree_entry()
- tree-walk.c: remove the_repo from fill_tree_descriptor()
- sha1-file.c: remove the_repo from read_object_with_reference()
The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
Will merge to 'next'.
* cb/fsmonitor-intfix (2019-06-17) 1 commit
(merged to 'next' on 2019-06-26 at bed7c7e78b)
+ fsmonitor: avoid signed integer overflow / infinite loop
Variable type fix.
Will merge to 'master'.
* es/rev-list-no-object-names (2019-06-20) 1 commit
(merged to 'next' on 2019-06-27 at 6d95228e01)
+ rev-list: teach --no-object-names to enable piping
"git rev-list --objects" learned with "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
Will merge to 'master'.
* md/list-objects-filter-combo (2019-06-28) 10 commits
- list-objects-filter-options: make parser void
- list-objects-filter-options: clean up use of ALLOC_GROW
- list-objects-filter-options: allow mult. --filter
- strbuf: give URL-encoding API a char predicate fn
- list-objects-filter-options: make filter_spec a string_list
- list-objects-filter-options: move error check up
- list-objects-filter: implement composite filters
- list-objects-filter-options: always supply *errbuf
- list-objects-filter: put omits set in filter struct
- list-objects-filter: encapsulate filter components
The list-objects-filter API (used to create a sparse/lazy clone)
learned to take a combined filter specification.
There is a bit of interaction with cc/multi-promisor topic, whose
conflict resolution I have no confidence in X-<. Extra sets of
eyes are appreciated.
* pw/doc-synopsis-markup-opmode-options (2019-06-17) 1 commit
(merged to 'next' on 2019-06-26 at 4258eddd2d)
+ show --continue/skip etc. consistently in synopsis
Docfix.
Will merge to 'master'.
* rs/copy-array (2019-06-17) 2 commits
(merged to 'next' on 2019-06-26 at dfaa162f88)
+ use COPY_ARRAY for copying arrays
+ coccinelle: use COPY_ARRAY for copying arrays
Code clean-up.
Will merge to 'master'.
* cb/mkstemps-uint-type-fix (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at df44db4a69)
+ wrapper: avoid undefined behaviour in macOS
Variable type fix.
Will merge to 'master'.
* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
- xdiff: avoid accidental redefinition of LFS feature in OpenIndiana
Compilation fix.
Will be rerolled together with patches from the
jk/no-system-includes-in-dot-c topic.
* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
- wt-status.h: drop stdio.h include
- verify-tag: drop signal.h include
Compilation fix.
Will be rerolled with the above.
* jk/trailers-use-config (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at 1ba8a7c2dd)
+ interpret-trailers: load default config
"git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
Will merge to 'master'.
* nd/fetch-multi-gc-once (2019-06-19) 1 commit
(merged to 'next' on 2019-06-27 at 0225ada5e2)
+ fetch: only run 'gc' once when fetching multiple remotes
"git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
Will merge to 'master'.
* ra/cherry-pick-revert-skip (2019-07-02) 5 commits
- cherry-pick/revert: advise using --skip
- cherry-pick/revert: add --skip option
- sequencer: use argv_array in reset_merge
- sequencer: rename reset_for_rollback to reset_merge
- sequencer: add advice for revert
"git cherry-pick/revert" learned a new "--skip" action.
Will merge to 'next'.
* tg/stash-ref-by-index-fix (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at ee2e6308ae)
+ stash: fix show referencing stash index
"git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
Will merge to 'master'.
* js/gcc-8-and-9 (2019-06-13) 4 commits
(merged to 'next' on 2019-06-27 at 92bb0db3c7)
+ config: avoid calling `labs()` on too-large data type
+ winansi: simplify loading the GetCurrentConsoleFontEx() function
+ kwset: allow building with GCC 8
+ poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
(this branch is used by rs/config-unit-parsing.)
Code clean-up for new compilers.
Will merge to 'master'.
The 'kwset' one may get a wholesale replacement, either with new
version of kwset from upstream or removal of its users, but in the
meantime, it is probably OK to merge it down.
* pw/add-p-recount (2019-06-13) 1 commit
(merged to 'next' on 2019-06-26 at 63e063d65d)
+ add -p: fix checkout -p with pathological context
"git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
Will merge to 'master'.
* rs/avoid-overflow-in-midpoint-computation (2019-06-13) 1 commit
(merged to 'next' on 2019-06-26 at e6bd5b496b)
+ cleanup: fix possible overflow errors in binary search, part 2
Code clean-up to avoid signed integer overlaps during binary search.
Will merge to 'master'.
* js/t3404-typofix (2019-06-14) 1 commit
(merged to 'next' on 2019-06-26 at ba3fcc1fc1)
+ t3404: fix a typo
Typofix.
Will merge to 'master'.
* mo/hpux-dynpath (2019-06-07) 1 commit
(merged to 'next' on 2019-06-26 at 5add3b28b2)
+ configure: Detect linking style for HP aCC on HP-UX
Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
Will merge to 'master'.
* js/mergetool-optim (2019-06-12) 4 commits
(merged to 'next' on 2019-06-26 at 8ad650bfa8)
+ mergetool: use shell variable magic instead of `awk`
+ mergetool: dissect strings with shell variable magic instead of `expr`
+ t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
+ t7610-mergetool: do not place pipelines headed by `yes` in subshells
"git mergetool" and its tests now spawn fewer subprocesses.
Will merge to 'master'.
* cc/test-oidmap (2019-07-01) 6 commits
(merged to 'next' on 2019-07-01 at 331a414a24)
+ t0016: add 'remove' subcommand test
+ test-oidmap: remove 'add' subcommand
(merged to 'next' on 2019-06-27 at 247a4341ca)
+ test-hashmap: remove 'hash' command
+ oidmap: use sha1hash() instead of static hash() function
+ t: add t0016-oidmap.sh
+ t/helper: add test-oidmap.c
Extend the test coverage a bit.
Will merge to 'master'.
* ds/midx-expire-repack (2019-07-01) 12 commits
(merged to 'next' on 2019-07-01 at c2a907f395)
+ t5319: use 'test-tool path-utils' instead of 'ls -l'
(merged to 'next' on 2019-06-27 at 35e6e3b38d)
+ t5319-multi-pack-index.sh: test batch size zero
+ midx: add test that 'expire' respects .keep files
+ multi-pack-index: test expire while adding packs
+ midx: implement midx_repack()
+ multi-pack-index: prepare 'repack' subcommand
+ multi-pack-index: implement 'expire' subcommand
+ midx: refactor permutation logic and pack sorting
+ midx: simplify computation of pack name lengths
+ multi-pack-index: prepare for 'expire' subcommand
+ Docs: rearrange subcommands for multi-pack-index
+ repack: refactor pack deletion for future use
"git multi-pack-index" learned expire and repack subcommands.
Will merge to 'master'.
* md/sort-detached-head-first (2019-06-19) 1 commit
(merged to 'next' on 2019-06-27 at dc50dbe045)
+ ref-filter: sort detached HEAD lines firstly
"git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
Will merge to 'master'.
* nd/completion-no-cache-failure (2019-06-12) 1 commit
(merged to 'next' on 2019-06-26 at f7b5a0a622)
+ completion: do not cache if --git-completion-helper fails
An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
Will merge to 'master'.
* sg/rebase-progress (2019-06-27) 5 commits
(merged to 'next' on 2019-06-27 at 425dd45c81)
+ progress: use term_clear_line()
+ rebase: fix garbled progress display with '-x'
+ pager: add a helper function to clear the last line in the terminal
+ t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
+ t3404: modernize here doc style
(this branch is used by pw/rebase-progress-test-cleanup.)
Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
Will merge to 'master'.
* sg/trace2-rename (2019-06-27) 2 commits
(merged to 'next' on 2019-06-27 at 6e189bdb20)
+ trace2: correct typo in technical documentation
(merged to 'next' on 2019-06-26 at 8ee228c455)
+ Revert "test-lib: whitelist GIT_TR2_* in the environment"
Dev support update to help tracing out tests.
Will merge to 'master'.
* fc/fetch-with-import-fix (2019-06-04) 5 commits
(merged to 'next' on 2019-06-26 at b7e7f359a9)
+ fetch: fix regression with transport helpers
+ fetch: make the code more understandable
+ fetch: trivial cleanup
+ t5801 (remote-helpers): add test to fetch tags
+ t5801 (remote-helpers): cleanup refspec stuff
Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
Will merge to 'master'.
* jl/status-reduce-vertical-blank (2019-06-21) 1 commit
- status: remove the empty line after hints
(this branch uses nd/switch-and-restore.)
Extra blank lines in "git status" output have been reduced.
Needs to wait on nd/switch-and-restore to stabilize.
* dl/config-alias-doc (2019-06-06) 2 commits
(merged to 'next' on 2019-06-26 at 3776902022)
+ config/alias.txt: document alias accepting non-command first word
+ config/alias.txt: change " and ' to `
Doc update.
Will merge to 'master'.
* dl/includeif-onbranch (2019-06-05) 1 commit
(merged to 'next' on 2019-06-27 at ef7250bbae)
+ config: learn the "onbranch:" includeIf condition
The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
Will merge to 'master'.
* ds/commit-graph-incremental (2019-06-19) 18 commits
(merged to 'next' on 2019-07-03 at 5dee5edbdf)
+ commit-graph: test verify across alternates
+ commit-graph: normalize commit-graph filenames
+ commit-graph: test --split across alternate without --split
+ commit-graph: test octopus merges with --split
+ commit-graph: clean up chains after flattened write
+ commit-graph: verify chains with --shallow mode
+ commit-graph: create options for split files
+ commit-graph: expire commit-graph files
+ commit-graph: allow cross-alternate chains
+ commit-graph: merge commit-graph chains
+ commit-graph: add --split option to builtin
+ commit-graph: write commit-graph chains
+ commit-graph: rearrange chunk count logic
+ commit-graph: add base graphs chunk
+ commit-graph: load commit-graph chains
+ commit-graph: rename commit_compare to oid_compare
+ commit-graph: prepare for commit-graph chains
+ commit-graph: document commit-graph chains
(this branch uses ds/close-object-store and ds/commit-graph-write-refactor.)
The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
Will cook in 'next'.
* tm/tag-gpgsign-config (2019-06-05) 1 commit
(merged to 'next' on 2019-06-26 at 015709def5)
+ tag: add tag.gpgSign config option to force all tags be GPG-signed
A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
Will merge to 'master'.
* po/doc-branch (2019-05-29) 1 commit
(merged to 'next' on 2019-06-26 at 0debcb13e5)
+ doc branch: provide examples for listing remote tracking branches
Doc update.
Will merge to 'master'.
* ds/close-object-store (2019-06-12) 3 commits
(merged to 'next' on 2019-06-26 at 86b60f2631)
+ packfile: rename close_all_packs to close_object_store
+ packfile: close commit-graph in close_all_packs
+ commit-graph: use raw_object_store when closing
(this branch is used by ds/commit-graph-incremental; uses ds/commit-graph-write-refactor.)
The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
Will merge to 'master'.
* pw/rebase-abort-clean-rewritten (2019-05-15) 4 commits
(merged to 'next' on 2019-06-27 at 97c9f12c4d)
+ rebase --abort/--quit: cleanup refs/rewritten
+ sequencer: return errors from sequencer_remove_state()
+ rebase: warn if state directory cannot be removed
+ rebase: fix a memory leak
"git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
Will merge to 'master'.
cf. <2a37d4c2-6eec-548d-0bd0-12bbd49c8071@gmail.com>
* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits
(merged to 'next' on 2019-06-26 at ae3b7a626d)
+ branch: add worktree info on verbose output
+ branch: update output to include worktree info
+ ref-filter: add worktreepath atom
"git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
Will merge to 'master'.
* cc/multi-promisor (2019-06-25) 15 commits
- Move core_partial_clone_filter_default to promisor-remote.c
- Move repository_format_partial_clone to promisor-remote.c
- Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
- remote: add promisor and partial clone config to the doc
- partial-clone: add multiple remotes in the doc
- t0410: test fetching from many promisor remotes
- builtin/fetch: remove unique promisor remote limitation
- promisor-remote: parse remote.*.partialclonefilter
- Use promisor_remote_get_direct() and has_promisor_remote()
- promisor-remote: use repository_format_partial_clone
- promisor-remote: add promisor_remote_reinit()
- promisor-remote: implement promisor_remote_get_direct()
- Add initial support for many promisor remotes
- fetch-object: make functions return an error code
- t0410: remove pipes after git commands
Teach the lazy clone machinery that there can be more than one
promisor remote and consult them in order when downloading missing
objects on demand.
There is a bit of interaction with md/list-objects-filter-combo
topic, whose conflict resolution I have no confidence in X-<.
Extra sets of eyes are appreciated.
* nd/switch-and-restore (2019-06-20) 46 commits
(merged to 'next' on 2019-06-27 at 85f83ad8d6)
+ completion: disable dwim on "git switch -d"
+ switch: allow to switch in the middle of bisect
+ t2027: use test_must_be_empty
+ Declare both git-switch and git-restore experimental
+ help: move git-diff and git-reset to different groups
+ doc: promote "git restore"
+ user-manual.txt: prefer 'merge --abort' over 'reset --hard'
+ completion: support restore
+ t: add tests for restore
+ restore: support --patch
+ restore: replace --force with --ignore-unmerged
+ restore: default to --source=HEAD when only --staged is specified
+ restore: reject invalid combinations with --staged
+ restore: add --worktree and --staged
+ checkout: factor out worktree checkout code
+ restore: disable overlay mode by default
+ restore: make pathspec mandatory
+ restore: take tree-ish from --source option instead
+ checkout: split part of it to new command 'restore'
+ doc: promote "git switch"
+ completion: support switch
+ t: add tests for switch
+ switch: make --orphan switch to an empty tree
+ switch: reject if some operation is in progress
+ switch: no worktree status unless real branch switch happens
+ switch: implicit dwim, use --no-guess to disable it
+ switch: add short option for --detach
+ switch: only allow explicit detached HEAD
+ switch: reject "do nothing" case
+ switch: stop accepting pathspec
+ switch: remove -l
+ switch: add --discard-changes
+ switch: better names for -b and -B
+ checkout: split part of it to new command 'switch'
+ checkout: split options[] array in three pieces
+ checkout: move 'confict_style' and 'dwim_..' to checkout_opts
+ checkout: make "opts" in cmd_checkout() a pointer
+ checkout: factor out some code in parse_branchname_arg()
+ checkout: keep most #include sorted
+ checkout: inform the user when removing branch state
+ checkout: advice how to get out of detached HEAD mode
+ t: rename t2014-switch.sh to t2014-checkout-switch.sh
+ git-checkout.txt: fix monospace typeset
+ doc: document --overwrite-ignore
+ git-checkout.txt: fix one syntax line
+ git-checkout.txt: spell out --no-option
(this branch is used by jl/status-reduce-vertical-blank.)
Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
Will merge to 'master'.
cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6)
cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3)
* jc/format-patch-noclobber (2019-02-22) 1 commit
- format-patch: --no-clobber refrains from overwriting output files
"git format-patch" used to overwrite an existing patch/cover-letter
file. A new "--no-clobber" option stops it.
Undecided but inclined to discard.
* am/p4-branches-excludes (2019-04-02) 8 commits
(merged to 'next' on 2019-06-27 at 5b4fb87c45)
+ git-p4: respect excluded paths when detecting branches
+ git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
+ git-p4: don't exclude other files with same prefix
+ git-p4: add failing test for "don't exclude other files with same prefix"
+ git-p4: don't groom exclude path list on every commit
+ git-p4: match branches case insensitively if configured
+ git-p4: add failing test for "git-p4: match branches case insensitively if configured"
+ git-p4: detect/prevent infinite loop in gitCommitByP4Change()
"git p4" update.
Will merge to 'master'.
* dl/rebase-i-keep-base (2019-04-25) 6 commits
- rebase: teach rebase --keep-base
- rebase: fast-forward --fork-point in more cases
- rebase: fast-forward --onto in more cases
- rebase: refactor can_fast_forward into goto tower
- t3432: test rebase fast-forward behavior
- t3431: add rebase --fork-point tests
"git rebase --keep-base <upstream>" tries to find the original base
of the topic being rebased and rebase on top of that same base,
which is useful when running the "git rebase -i" (and its limited
variant "git rebase -x").
The command also has learned to fast-forward in more cases where it
can instead of replaying to recreate identical commits.
On hold.
cf. <20190508001252.15752-1-avarab@gmail.com>
cf. <xmqqa7fxionx.fsf@gitster-ct.c.googlers.com>
* ds/commit-graph-write-refactor (2019-06-12) 11 commits
(merged to 'next' on 2019-06-26 at 5430eafe51)
+ commit-graph: extract write_commit_graph_file()
+ commit-graph: extract copy_oids_to_commits()
+ commit-graph: extract count_distinct_commits()
+ commit-graph: extract fill_oids_from_all_packs()
+ commit-graph: extract fill_oids_from_commit_hex()
+ commit-graph: extract fill_oids_from_packs()
+ commit-graph: create write_commit_graph_context
+ commit-graph: remove Future Work section
+ commit-graph: collapse parameters into flags
+ commit-graph: return with errors during write
+ commit-graph: fix the_repository reference
(this branch is used by ds/close-object-store and ds/commit-graph-incremental.)
Renamed from commit-graph-format-v2 and changed scope.
Will merge to 'master'.
* br/blame-ignore (2019-07-01) 11 commits
(merged to 'next' on 2019-07-01 at f4b79421c9)
+ t8014: remove unnecessary braces
+ blame: drop some unused function parameters
(merged to 'next' on 2019-06-27 at 36b91a787f)
+ blame: add a test to cover blame_coalesce()
+ blame: use the fingerprint heuristic to match ignored lines
+ blame: add a fingerprint heuristic to match ignored lines
+ blame: optionally track line fingerprints during fill_blame_origin()
+ blame: add config options for the output of ignored or unblamable lines
+ blame: add the ability to ignore commits and their changes
+ blame: use a helper function in blame_chunk()
+ Move oidset_parse_file() to oidset.c
+ fsck: rename and touch up init_skiplist()
"git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
Will cook in 'next'.
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Jun 2019, #07; Fri, 28)
@ 2019-06-28 22:17 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-06-28 22:17 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics post 2.22 are now in 'master', and the tip
of 'next' has been rewound.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* cb/windows-manifest (2019-06-27) 1 commit
- mingw: embed a manifest to trick UAC into Doing The Right Thing
Windows update.
Will merge to 'next'.
* js/mingw-gcc-stash-protect (2019-06-27) 1 commit
- mingw: enable stack smashing protector
Windows update.
Will merge to 'next'.
* js/mingw-use-utf8 (2019-06-27) 2 commits
- mingw: use Unicode functions explicitly
- mingw: get pw_name in UTF-8 format
Windows update.
Will merge to 'next'.
* kb/windows-force-utf8 (2019-06-27) 1 commit
- gettext: always use UTF-8 on native Windows
Windows update.
Will merge to 'next'.
* js/rebase-reschedule-applies-only-to-interactive (2019-06-27) 1 commit
- rebase: ignore rebase.reschedulefailedexec unless interactive
The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running an non-interactive one, which was not
the case. This has been corrected.
Almost there, modulo minor nits.
* jt/t5551-test-chunked (2019-06-27) 1 commit
- t5551: test usage of chunked encoding explicitly
Update smart-http test.
Will merge to 'next'.
* tb/ref-filter-multiple-patterns (2019-06-27) 1 commit
- ref-filter.c: find disjoint pattern prefixes
"git for-each-ref" with multiple patterns have been optimized.
Will merge to 'next'.
* ew/repack-with-bitmaps-by-default (2019-06-28) 1 commit
- repack: disable bitmaps-by-default if .keep files exist
Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
* jk/br-blame-ignore-unused-fix (2019-06-28) 1 commit
- blame: drop some unused function parameters
(this branch uses br/blame-ignore.)
Move this into the base topic, once acked.
* jk/check-connected-with-alternates (2019-06-28) 1 commit
- check_connected: assume alternate ref tips are valid
The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
Will merge to 'next'.
* jk/test-commit-bulk (2019-06-28) 6 commits
- t6200: use test_commit_bulk
- t5703: use test_commit_bulk
- t5702: use test_commit_bulk
- t3311: use test_commit_bulk
- t5310: increase the number of bitmapped commits
- test-lib: introduce test_commit_bulk
A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Will merge to 'next'.
I think I spotted one unused command, which we may want to remove, though.
--------------------------------------------------
[Stalled]
* jn/unknown-index-extensions (2018-11-21) 2 commits
- index: offer advice for unknown index extensions
- index: do not warn about unrecognized extensions
A bit too alarming warning given when unknown index extensions
exist is getting revamped.
Expecting a reroll.
* jc/format-patch-delay-message-id (2019-04-05) 1 commit
- format-patch: move message-id and related headers to the end
The location "git format-patch --thread" adds the Message-Id:
header in the series of header fields has been moved down, which
may help working around a suspected bug in GMail MSA, reported at
<CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>
Waiting for feedback to see if it truly helps.
Needs tests.
* jt/fetch-cdn-offload (2019-03-12) 9 commits
- SQUASH???
- upload-pack: send part of packfile response as uri
- fetch-pack: support more than one pack lockfile
- upload-pack: refactor reading of pack-objects out
- Documentation: add Packfile URIs design doc
- Documentation: order protocol v2 sections
- http-fetch: support fetching packfiles by URL
- http: improve documentation of http_pack_request
- http: use --stdin when getting dumb HTTP pack
WIP for allowing a response to "git fetch" to instruct the bulk of
the pack contents to be instead taken from elsewhere (aka CDN).
Stalled
* js/protocol-advertise-multi (2018-12-28) 1 commit
- protocol: advertise multiple supported versions
The transport layer has been updated so that the protocol version
used can be negotiated between the parties, by the initiator
listing the protocol versions it is willing to talk, and the other
side choosing from one of them.
Expecting a reroll.
cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
* dl/remote-save-to-push (2018-12-11) 1 commit
- remote: add --save-to-push option to git remote set-url
"git remote set-url" learned a new option that moves existing value
of the URL field to pushURL field of the remote before replacing
the URL field with a new value.
Anybody who wants to champion this topic?
I am personally not yet quite convinced if this is worth pursuing.
--------------------------------------------------
[Cooking]
* ab/test-env (2019-06-21) 8 commits
- tests: make GIT_TEST_FAIL_PREREQS a boolean
- tests: replace test_tristate with "git env--helper"
- tests README: re-flow a previously changed paragraph
- tests: make GIT_TEST_GETTEXT_POISON a boolean
- t6040 test: stop using global "script" variable
- config.c: refactor die_bad_number() to not call gettext() early
- env--helper: new undocumented builtin wrapping git_env_*()
- config tests: simplify include cycle test
Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* cc/first-contrib-tutorial (2019-06-24) 1 commit
(merged to 'next' on 2019-06-27 at a9f2ab2f21)
+ doc: improve usage string in MyFirstContribution
Update docs used in a tutorial.
Will merge to 'master'.
* ds/early-access (2019-06-20) 3 commits
- repo-settings: pack.useSparse=true
- repo-settings: use index.version=4 by default
- repo-settings: create core.featureAdoptionRate setting
A mechanism to enable newish configuration settings in bulk has
been invented.
Looked mostly sane, modulo minor nits.
* jh/msvc (2019-06-25) 20 commits
(merged to 'next' on 2019-06-27 at 5a16e3d67c)
+ msvc: ignore .dll and incremental compile output
+ msvc: avoid debug assertion windows in Debug Mode
+ msvc: do not pretend to support all signals
+ msvc: add pragmas for common warnings
+ msvc: add a compile-time flag to allow detailed heap debugging
+ msvc: support building Git using MS Visual C++
+ msvc: update Makefile to allow for spaces in the compiler path
+ msvc: fix detect_msys_tty()
+ msvc: define ftello()
+ msvc: do not re-declare the timespec struct
+ msvc: mark a variable as non-const
+ msvc: define O_ACCMODE
+ msvc: include sigset_t definition
+ msvc: fix dependencies of compat/msvc.c
+ mingw: replace mingw_startup() hack
+ obstack: fix compiler warning
+ cache-tree/blame: avoid reusing the DEBUG constant
+ t0001 (mingw): do not expect a specific order of stdout/stderr
+ Mark .bat files as requiring CR/LF endings
+ mingw: fix a typo in the msysGit-specific section
Support to build with MSVC has been updated.
Will merge to 'master'.
* jk/delta-islands-progress-fix (2019-06-20) 1 commit
(merged to 'next' on 2019-06-27 at 644526ba73)
+ delta-islands: respect progress flag
The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
Will merge to 'master'.
* jk/oidhash (2019-06-20) 17 commits
(merged to 'next' on 2019-06-27 at 7bf6b87738)
+ hashmap: convert sha1hash() to oidhash()
+ hash.h: move object_id definition from cache.h
+ khash: rename oid helper functions
+ khash: drop sha1-specific map types
+ pack-bitmap: convert khash_sha1 maps into kh_oid_map
+ delta-islands: convert island_marks khash to use oids
+ khash: rename kh_oid_t to kh_oid_set
+ khash: drop broken oid_map typedef
+ object: convert create_object() to use object_id
+ object: convert internal hash_obj() to object_id
+ object: convert lookup_object() to use object_id
+ object: convert lookup_unknown_object() to use object_id
+ pack-objects: convert locate_object_entry_hash() to object_id
+ pack-objects: convert packlist_find() to use object_id
+ pack-bitmap-write: convert some helpers to use object_id
+ upload-pack: rename a "sha1" variable to "oid"
+ describe: fix accidental oid/hash type-punning
Code clean-up to remove hardcoded SHA-1 hash from manty places.
Will merge to 'master'.
* nd/fetch-capability-tweak (2019-06-20) 3 commits
(merged to 'next' on 2019-06-27 at dedbcb31a1)
+ fetch-pack: print server version at the top in -v -v
+ fetch-pack: print all relevant supported capabilities with -v -v
+ fetch-pack: move capability names out of i18n strings
Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
Will merge to 'master'.
* nd/index-dump-in-json (2019-06-26) 11 commits
- SQUASH???
- t3008: use the new SINGLE_CPU prereq
- read-cache.c: dump "IEOT" extension as json
- read-cache.c: dump "EOIE" extension as json
- resolve-undo.c: dump "REUC" extension as json
- fsmonitor.c: dump "FSMN" extension as json
- split-index.c: dump "link" extension as json
- dir.c: dump "UNTR" extension as json
- cache-tree.c: dump "TREE" extension as json
- read-cache.c: dump common extension info in json
- ls-files: add --json to dump the index
"ls-files" learned "--debug-json" option to dump the contents and
the extensions of the index file.
At least the fixup at the tip needs to be squashed into the right
commit.
* rs/config-unit-parsing (2019-06-24) 3 commits
(merged to 'next' on 2019-06-27 at db633f85fe)
+ config: simplify parsing of unit factors
+ config: don't multiply in parse_unit_factor()
+ config: use unsigned_mult_overflows to check for overflows
(this branch uses js/gcc-8-and-9.)
The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
Will merge to 'master'.
* ab/fail-prereqs-in-test (2019-06-21) 1 commit
(merged to 'next' on 2019-06-27 at 4df04aa1a0)
+ tests: mark two failing tests under FAIL_PREREQS
Test updates.
Will merge to 'master'.
* ds/fetch-disable-force-notice (2019-06-21) 3 commits
(merged to 'next' on 2019-06-27 at 3ff4516f85)
+ pull: add --[no-]show-forced-updates passthrough
+ fetch: warn about forced updates in branch listing
+ fetch: add --[no-]show-forced-updates argument
"git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-shown-forced-updates" option to disable
this safety feature.
Will merge to 'master'.
* jh/status-aheadbehind (2019-06-21) 3 commits
(merged to 'next' on 2019-06-27 at 362ee6b059)
+ status: ignore status.aheadbehind in porcelain formats
+ status: warn when a/b calculation takes too long
+ status: add status.aheadbehind setting
"git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
Will merge to 'master'.
* js/t0001-case-insensitive (2019-06-24) 1 commit
(merged to 'next' on 2019-06-27 at 6c0001aebb)
+ t0001: fix on case-insensitive filesystems
Test update.
Will merge to 'master'.
* dr/progress-i18n (2019-06-24) 1 commit
- l10n: localizable upload progress messages
Progress messages have been made localizable.
Not quite with the code duplication...
* jw/gitweb-sample-update (2019-06-24) 1 commit
(merged to 'next' on 2019-06-27 at 30a5e91e76)
+ doc: don't use git.kernel.org as example gitweb URL
Doc update.
Will merge to 'master'.
* ms/submodule-foreach-fix (2019-06-25) 1 commit
(merged to 'next' on 2019-06-27 at ccd37d4dac)
+ submodule foreach: fix recursion of options
"git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
Will merge to 'master'.
* pw/status-with-corrupt-sequencer-state (2019-06-27) 3 commits
- status: do not report errors in sequencer/todo
- sequencer: factor out todo command name parsing
- sequencer: always allow tab after command name
The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
Will merge to 'next'.
* sg/t5551-fetch-smart-error-is-translated (2019-06-25) 1 commit
(merged to 'next' on 2019-06-27 at 967c03da24)
+ t5551: use 'test_i18ngrep' to check translated output
Test update.
Will merge to 'master'.
* ab/no-kwset (2019-06-28) 9 commits
- grep: use PCRE v2 for optimized fixed-string search
- grep: remove the kwset optimization
- grep: drop support for \0 in --fixed-strings <pattern>
- grep: make the behavior for NUL-byte in patterns sane
- grep tests: move binary pattern tests into their own file
- grep tests: move "grep binary" alongside the rest
- grep: inline the return value of a function call used only once
- grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
- log tests: test regex backends in "--encode=<enc>" tests
Retire use of kwset library, which is an optimization for looking
for fixed strings, with use of pcre2 JIT.
Will merge to 'next'.
* mt/dir-iterator-updates (2019-06-25) 10 commits
- clone: replace strcmp by fspathcmp
- clone: use dir-iterator to avoid explicit dir traversal
- clone: extract function from copy_or_link_directory
- clone: copy hidden paths at local clone
- dir-iterator: add flags parameter to dir_iterator_begin
- dir-iterator: refactor state machine model
- dir-iterator: use warning_errno when possible
- dir-iterator: add tests for dir-iterator API
- clone: better handle symlinked files at .git/objects/
- clone: test for our behavior on odd objects/* content
Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
Is this ready for 'next'?
* nd/tree-walk-with-repo (2019-06-28) 7 commits
- t7814: do not generate same commits in different repos
- Use the right 'struct repository' instead of the_repository
- match-trees.c: remove the_repo from shift_tree*()
- tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
- tree-walk.c: remove the_repo from get_tree_entry()
- tree-walk.c: remove the_repo from fill_tree_descriptor()
- sha1-file.c: remove the_repo from read_object_with_reference()
The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* cb/fsmonitor-intfix (2019-06-17) 1 commit
(merged to 'next' on 2019-06-26 at bed7c7e78b)
+ fsmonitor: avoid signed integer overflow / infinite loop
Variable type fix.
Will merge to 'master'.
* es/rev-list-no-object-names (2019-06-20) 1 commit
(merged to 'next' on 2019-06-27 at 6d95228e01)
+ rev-list: teach --no-object-names to enable piping
"git rev-list --objects" learned with "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
Will merge to 'master'.
* md/list-objects-filter-combo (2019-06-28) 10 commits
- list-objects-filter-options: make parser void
- list-objects-filter-options: clean up use of ALLOC_GROW
- list-objects-filter-options: allow mult. --filter
- strbuf: give URL-encoding API a char predicate fn
- list-objects-filter-options: make filter_spec a string_list
- list-objects-filter-options: move error check up
- list-objects-filter: implement composite filters
- list-objects-filter-options: always supply *errbuf
- list-objects-filter: put omits set in filter struct
- list-objects-filter: encapsulate filter components
The list-objects-filter API (used to create a sparse/lazy clone)
learned to take a combined filter specification.
There is a bit of interaction with cc/multi-promisor topic, whose
conflict resolution I have no confidence in X-<.
* pw/doc-synopsis-markup-opmode-options (2019-06-17) 1 commit
(merged to 'next' on 2019-06-26 at 4258eddd2d)
+ show --continue/skip etc. consistently in synopsis
Docfix.
Will merge to 'master'.
* rs/copy-array (2019-06-17) 2 commits
(merged to 'next' on 2019-06-26 at dfaa162f88)
+ use COPY_ARRAY for copying arrays
+ coccinelle: use COPY_ARRAY for copying arrays
Code clean-up.
Will merge to 'master'.
* cb/mkstemps-uint-type-fix (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at df44db4a69)
+ wrapper: avoid undefined behaviour in macOS
Variable type fix.
Will merge to 'master'.
* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
- xdiff: avoid accidental redefinition of LFS feature in OpenIndiana
Compilation fix.
Will be rerolled together with patches from the
jk/no-system-includes-in-dot-c topic.
* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
- wt-status.h: drop stdio.h include
- verify-tag: drop signal.h include
Compilation fix.
Will be rerolled with the above.
* jk/trailers-use-config (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at 1ba8a7c2dd)
+ interpret-trailers: load default config
"git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
Will merge to 'master'.
* nd/fetch-multi-gc-once (2019-06-19) 1 commit
(merged to 'next' on 2019-06-27 at 0225ada5e2)
+ fetch: only run 'gc' once when fetching multiple remotes
"git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
Will merge to 'master'.
* ra/cherry-pick-revert-skip (2019-06-24) 6 commits
- cherry-pick/revert: advise using --skip
- cherry-pick/revert: add --skip option
- sequencer: use argv_array in reset_merge
- sequencer: rename reset_for_rollback to reset_merge
- sequencer: add advice for revert
- advice: add sequencerInUse config variable
"git cherry-pick/revert" learned a new "--skip" action.
Will merge to 'next'.
* tg/stash-ref-by-index-fix (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at ee2e6308ae)
+ stash: fix show referencing stash index
"git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
Will merge to 'master'.
* js/gcc-8-and-9 (2019-06-13) 4 commits
(merged to 'next' on 2019-06-27 at 92bb0db3c7)
+ config: avoid calling `labs()` on too-large data type
+ winansi: simplify loading the GetCurrentConsoleFontEx() function
+ kwset: allow building with GCC 8
+ poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
(this branch is used by rs/config-unit-parsing.)
Code clean-up for new compilers.
Will merge to 'master'.
The 'kwset' one may get a wholesale replacement, either with new
version of kwset from upstream or removal of its users, but in the
meantime, it is probably OK to merge it down.
* pw/add-p-recount (2019-06-13) 1 commit
(merged to 'next' on 2019-06-26 at 63e063d65d)
+ add -p: fix checkout -p with pathological context
"git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
Will merge to 'master'.
* rs/avoid-overflow-in-midpoint-computation (2019-06-13) 1 commit
(merged to 'next' on 2019-06-26 at e6bd5b496b)
+ cleanup: fix possible overflow errors in binary search, part 2
Code clean-up to avoid signed integer overlaps during binary search.
Will merge to 'master'.
* js/t3404-typofix (2019-06-14) 1 commit
(merged to 'next' on 2019-06-26 at ba3fcc1fc1)
+ t3404: fix a typo
Typofix.
Will merge to 'master'.
* mo/hpux-dynpath (2019-06-07) 1 commit
(merged to 'next' on 2019-06-26 at 5add3b28b2)
+ configure: Detect linking style for HP aCC on HP-UX
Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
Will merge to 'master'.
* js/mergetool-optim (2019-06-12) 4 commits
(merged to 'next' on 2019-06-26 at 8ad650bfa8)
+ mergetool: use shell variable magic instead of `awk`
+ mergetool: dissect strings with shell variable magic instead of `expr`
+ t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
+ t7610-mergetool: do not place pipelines headed by `yes` in subshells
"git mergetool" and its tests now spawn fewer subprocesses.
Will merge to 'master'.
* cc/test-oidmap (2019-06-17) 4 commits
(merged to 'next' on 2019-06-27 at 247a4341ca)
+ test-hashmap: remove 'hash' command
+ oidmap: use sha1hash() instead of static hash() function
+ t: add t0016-oidmap.sh
+ t/helper: add test-oidmap.c
Extend the test coverage a bit.
Will merge to 'master'.
* ds/midx-expire-repack (2019-06-11) 11 commits
(merged to 'next' on 2019-06-27 at 35e6e3b38d)
+ t5319-multi-pack-index.sh: test batch size zero
+ midx: add test that 'expire' respects .keep files
+ multi-pack-index: test expire while adding packs
+ midx: implement midx_repack()
+ multi-pack-index: prepare 'repack' subcommand
+ multi-pack-index: implement 'expire' subcommand
+ midx: refactor permutation logic and pack sorting
+ midx: simplify computation of pack name lengths
+ multi-pack-index: prepare for 'expire' subcommand
+ Docs: rearrange subcommands for multi-pack-index
+ repack: refactor pack deletion for future use
"git multi-pack-index" learned expire and repack subcommands.
Will merge to 'master'.
* md/sort-detached-head-first (2019-06-19) 1 commit
(merged to 'next' on 2019-06-27 at dc50dbe045)
+ ref-filter: sort detached HEAD lines firstly
"git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
Will merge to 'master'.
* nd/completion-no-cache-failure (2019-06-12) 1 commit
(merged to 'next' on 2019-06-26 at f7b5a0a622)
+ completion: do not cache if --git-completion-helper fails
An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
Will merge to 'master'.
* sg/rebase-progress (2019-06-27) 5 commits
(merged to 'next' on 2019-06-27 at 425dd45c81)
+ progress: use term_clear_line()
+ rebase: fix garbled progress display with '-x'
+ pager: add a helper function to clear the last line in the terminal
+ t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
+ t3404: modernize here doc style
Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
Will merge to 'master'.
* sg/trace2-rename (2019-06-27) 2 commits
(merged to 'next' on 2019-06-27 at 6e189bdb20)
+ trace2: correct typo in technical documentation
(merged to 'next' on 2019-06-26 at 8ee228c455)
+ Revert "test-lib: whitelist GIT_TR2_* in the environment"
Dev support update to help tracing out tests.
Will merge to 'master'.
* fc/fetch-with-import-fix (2019-06-04) 5 commits
(merged to 'next' on 2019-06-26 at b7e7f359a9)
+ fetch: fix regression with transport helpers
+ fetch: make the code more understandable
+ fetch: trivial cleanup
+ t5801 (remote-helpers): add test to fetch tags
+ t5801 (remote-helpers): cleanup refspec stuff
Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
Will merge to 'master'.
* jl/status-reduce-vertical-blank (2019-06-21) 1 commit
- status: remove the empty line after hints
(this branch uses nd/switch-and-restore.)
Extra blank lines in "git status" output have been reduced.
Needs to wait on nd/switch-and-restore to stabilize.
* dl/config-alias-doc (2019-06-06) 2 commits
(merged to 'next' on 2019-06-26 at 3776902022)
+ config/alias.txt: document alias accepting non-command first word
+ config/alias.txt: change " and ' to `
Doc update.
Will merge to 'master'.
* dl/includeif-onbranch (2019-06-05) 1 commit
(merged to 'next' on 2019-06-27 at ef7250bbae)
+ config: learn the "onbranch:" includeIf condition
The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
Will merge to 'master'.
* ds/commit-graph-incremental (2019-06-19) 18 commits
- commit-graph: test verify across alternates
- commit-graph: normalize commit-graph filenames
- commit-graph: test --split across alternate without --split
- commit-graph: test octopus merges with --split
- commit-graph: clean up chains after flattened write
- commit-graph: verify chains with --shallow mode
- commit-graph: create options for split files
- commit-graph: expire commit-graph files
- commit-graph: allow cross-alternate chains
- commit-graph: merge commit-graph chains
- commit-graph: add --split option to builtin
- commit-graph: write commit-graph chains
- commit-graph: rearrange chunk count logic
- commit-graph: add base graphs chunk
- commit-graph: load commit-graph chains
- commit-graph: rename commit_compare to oid_compare
- commit-graph: prepare for commit-graph chains
- commit-graph: document commit-graph chains
(this branch uses ds/close-object-store and ds/commit-graph-write-refactor.)
The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
Will merge to 'next'.
* tm/tag-gpgsign-config (2019-06-05) 1 commit
(merged to 'next' on 2019-06-26 at 015709def5)
+ tag: add tag.gpgSign config option to force all tags be GPG-signed
A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
Will merge to 'master'.
* po/doc-branch (2019-05-29) 1 commit
(merged to 'next' on 2019-06-26 at 0debcb13e5)
+ doc branch: provide examples for listing remote tracking branches
Doc update.
Will merge to 'master'.
* ds/close-object-store (2019-06-12) 3 commits
(merged to 'next' on 2019-06-26 at 86b60f2631)
+ packfile: rename close_all_packs to close_object_store
+ packfile: close commit-graph in close_all_packs
+ commit-graph: use raw_object_store when closing
(this branch is used by ds/commit-graph-incremental; uses ds/commit-graph-write-refactor.)
The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
Will merge to 'master'.
* pw/rebase-abort-clean-rewritten (2019-05-15) 4 commits
(merged to 'next' on 2019-06-27 at 97c9f12c4d)
+ rebase --abort/--quit: cleanup refs/rewritten
+ sequencer: return errors from sequencer_remove_state()
+ rebase: warn if state directory cannot be removed
+ rebase: fix a memory leak
"git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
Will merge to 'master'.
cf. <2a37d4c2-6eec-548d-0bd0-12bbd49c8071@gmail.com>
* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits
(merged to 'next' on 2019-06-26 at ae3b7a626d)
+ branch: add worktree info on verbose output
+ branch: update output to include worktree info
+ ref-filter: add worktreepath atom
"git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
Will merge to 'master'.
* cc/multi-promisor (2019-06-25) 15 commits
- Move core_partial_clone_filter_default to promisor-remote.c
- Move repository_format_partial_clone to promisor-remote.c
- Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
- remote: add promisor and partial clone config to the doc
- partial-clone: add multiple remotes in the doc
- t0410: test fetching from many promisor remotes
- builtin/fetch: remove unique promisor remote limitation
- promisor-remote: parse remote.*.partialclonefilter
- Use promisor_remote_get_direct() and has_promisor_remote()
- promisor-remote: use repository_format_partial_clone
- promisor-remote: add promisor_remote_reinit()
- promisor-remote: implement promisor_remote_get_direct()
- Add initial support for many promisor remotes
- fetch-object: make functions return an error code
- t0410: remove pipes after git commands
Teach the lazy clone machinery that there can be more than one
promisor remote and consult them in order when downloading missing
objects on demand.
There is a bit of interaction with md/list-objects-filter-combo
topic, whose conflict resolution I have no confidence in X-<.
* nd/switch-and-restore (2019-06-20) 46 commits
(merged to 'next' on 2019-06-27 at 85f83ad8d6)
+ completion: disable dwim on "git switch -d"
+ switch: allow to switch in the middle of bisect
+ t2027: use test_must_be_empty
+ Declare both git-switch and git-restore experimental
+ help: move git-diff and git-reset to different groups
+ doc: promote "git restore"
+ user-manual.txt: prefer 'merge --abort' over 'reset --hard'
+ completion: support restore
+ t: add tests for restore
+ restore: support --patch
+ restore: replace --force with --ignore-unmerged
+ restore: default to --source=HEAD when only --staged is specified
+ restore: reject invalid combinations with --staged
+ restore: add --worktree and --staged
+ checkout: factor out worktree checkout code
+ restore: disable overlay mode by default
+ restore: make pathspec mandatory
+ restore: take tree-ish from --source option instead
+ checkout: split part of it to new command 'restore'
+ doc: promote "git switch"
+ completion: support switch
+ t: add tests for switch
+ switch: make --orphan switch to an empty tree
+ switch: reject if some operation is in progress
+ switch: no worktree status unless real branch switch happens
+ switch: implicit dwim, use --no-guess to disable it
+ switch: add short option for --detach
+ switch: only allow explicit detached HEAD
+ switch: reject "do nothing" case
+ switch: stop accepting pathspec
+ switch: remove -l
+ switch: add --discard-changes
+ switch: better names for -b and -B
+ checkout: split part of it to new command 'switch'
+ checkout: split options[] array in three pieces
+ checkout: move 'confict_style' and 'dwim_..' to checkout_opts
+ checkout: make "opts" in cmd_checkout() a pointer
+ checkout: factor out some code in parse_branchname_arg()
+ checkout: keep most #include sorted
+ checkout: inform the user when removing branch state
+ checkout: advice how to get out of detached HEAD mode
+ t: rename t2014-switch.sh to t2014-checkout-switch.sh
+ git-checkout.txt: fix monospace typeset
+ doc: document --overwrite-ignore
+ git-checkout.txt: fix one syntax line
+ git-checkout.txt: spell out --no-option
(this branch is used by jl/status-reduce-vertical-blank.)
Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
Will merge to 'master'.
cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6)
cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3)
* jc/format-patch-noclobber (2019-02-22) 1 commit
- format-patch: --no-clobber refrains from overwriting output files
"git format-patch" used to overwrite an existing patch/cover-letter
file. A new "--no-clobber" option stops it.
Undecided but inclined to discard.
* am/p4-branches-excludes (2019-04-02) 8 commits
(merged to 'next' on 2019-06-27 at 5b4fb87c45)
+ git-p4: respect excluded paths when detecting branches
+ git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
+ git-p4: don't exclude other files with same prefix
+ git-p4: add failing test for "don't exclude other files with same prefix"
+ git-p4: don't groom exclude path list on every commit
+ git-p4: match branches case insensitively if configured
+ git-p4: add failing test for "git-p4: match branches case insensitively if configured"
+ git-p4: detect/prevent infinite loop in gitCommitByP4Change()
"git p4" update.
Will merge to 'master'.
* dl/rebase-i-keep-base (2019-04-25) 6 commits
- rebase: teach rebase --keep-base
- rebase: fast-forward --fork-point in more cases
- rebase: fast-forward --onto in more cases
- rebase: refactor can_fast_forward into goto tower
- t3432: test rebase fast-forward behavior
- t3431: add rebase --fork-point tests
"git rebase --keep-base <upstream>" tries to find the original base
of the topic being rebased and rebase on top of that same base,
which is useful when running the "git rebase -i" (and its limited
variant "git rebase -x").
The command also has learned to fast-forward in more cases where it
can instead of replaying to recreate identical commits.
On hold.
cf. <20190508001252.15752-1-avarab@gmail.com>
cf. <xmqqa7fxionx.fsf@gitster-ct.c.googlers.com>
* ds/commit-graph-write-refactor (2019-06-12) 11 commits
(merged to 'next' on 2019-06-26 at 5430eafe51)
+ commit-graph: extract write_commit_graph_file()
+ commit-graph: extract copy_oids_to_commits()
+ commit-graph: extract count_distinct_commits()
+ commit-graph: extract fill_oids_from_all_packs()
+ commit-graph: extract fill_oids_from_commit_hex()
+ commit-graph: extract fill_oids_from_packs()
+ commit-graph: create write_commit_graph_context
+ commit-graph: remove Future Work section
+ commit-graph: collapse parameters into flags
+ commit-graph: return with errors during write
+ commit-graph: fix the_repository reference
(this branch is used by ds/close-object-store and ds/commit-graph-incremental.)
Renamed from commit-graph-format-v2 and changed scope.
Will merge to 'master'.
* br/blame-ignore (2019-06-20) 9 commits
(merged to 'next' on 2019-06-27 at 36b91a787f)
+ blame: add a test to cover blame_coalesce()
+ blame: use the fingerprint heuristic to match ignored lines
+ blame: add a fingerprint heuristic to match ignored lines
+ blame: optionally track line fingerprints during fill_blame_origin()
+ blame: add config options for the output of ignored or unblamable lines
+ blame: add the ability to ignore commits and their changes
+ blame: use a helper function in blame_chunk()
+ Move oidset_parse_file() to oidset.c
+ fsck: rename and touch up init_skiplist()
(this branch is used by jk/br-blame-ignore-unused-fix.)
"git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
Needs a touch-up to reduce -Wunused-parameters error.
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Jun 2019, #06; Wed, 26)
@ 2019-06-26 22:29 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-06-26 22:29 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The third batch of topics post 2.22 are now in 'master', and the tip
of 'next' has been rewound.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ab/hash-object-doc (2019-05-28) 1 commit
(merged to 'next' on 2019-06-06 at 8e4d85b906)
+ hash-object doc: stop mentioning git-cvsimport
Doc update.
* an/ignore-doc-update (2019-06-04) 1 commit
(merged to 'next' on 2019-06-06 at 8579d82c0d)
+ gitignore.txt: make slash-rules more readable
The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* cm/send-email-document-req-modules (2019-05-31) 1 commit
(merged to 'next' on 2019-06-06 at acf1c2fc96)
+ send-email: update documentation of required Perl modules
A doc update.
* jt/partial-clone-missing-ref-delta-base (2019-06-11) 4 commits
(merged to 'next' on 2019-06-12 at 95628af9bb)
+ t5616: cover case of client having delta base
+ t5616: use correct flag to check object is missing
(merged to 'next' on 2019-05-29 at 5d7573a151)
+ index-pack: prefetch missing REF_DELTA bases
+ t5616: refactor packfile replacement
"git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* md/list-objects-filter-memfix (2019-05-31) 1 commit
(merged to 'next' on 2019-06-06 at 80f0187cef)
+ list-objects-filter: correct usage of ALLOC_GROW
The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* md/list-objects-filter-parse-msgfix (2019-05-31) 1 commit
(merged to 'next' on 2019-06-06 at 736f3c175b)
+ list-objects-filter-options: error is localizeable
Make an end-user facing message localizable.
* md/url-parse-harden (2019-06-04) 2 commits
(merged to 'next' on 2019-06-06 at b187c3dbfe)
+ url: do not allow %00 to represent NUL in URLs
+ url: do not read past end of buffer
The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* ml/userdiff-rust (2019-05-30) 2 commits
(merged to 'next' on 2019-06-12 at 33b88fa9e5)
+ userdiff: two simplifications of patterns for rust
(merged to 'next' on 2019-05-19 at 1266fddce5)
+ userdiff: add built-in pattern for rust
The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* mo/clang-format-for-each-update (2019-06-04) 1 commit
(merged to 'next' on 2019-06-06 at ee3066bb65)
+ clang-format: use git grep to generate the ForEachMacros list
The list of for-each like macros used by clang-format has been
updated.
--------------------------------------------------
[New Topics]
* ab/test-env (2019-06-21) 8 commits
- tests: make GIT_TEST_FAIL_PREREQS a boolean
- tests: replace test_tristate with "git env--helper"
- tests README: re-flow a previously changed paragraph
- tests: make GIT_TEST_GETTEXT_POISON a boolean
- t6040 test: stop using global "script" variable
- config.c: refactor die_bad_number() to not call gettext() early
- env--helper: new undocumented builtin wrapping git_env_*()
- config tests: simplify include cycle test
Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* cc/first-contrib-tutorial (2019-06-24) 1 commit
- doc: improve usage string in MyFirstContribution
Update docs used in a tutorial.
Will merge to 'next'.
* ds/early-access (2019-06-20) 3 commits
- repo-settings: pack.useSparse=true
- repo-settings: use index.version=4 by default
- repo-settings: create core.featureAdoptionRate setting
A mechanism to enable newish configuration settings in bulk has
been invented.
* jh/msvc (2019-06-25) 20 commits
- msvc: ignore .dll and incremental compile output
- msvc: avoid debug assertion windows in Debug Mode
- msvc: do not pretend to support all signals
- msvc: add pragmas for common warnings
- msvc: add a compile-time flag to allow detailed heap debugging
- msvc: support building Git using MS Visual C++
- msvc: update Makefile to allow for spaces in the compiler path
- msvc: fix detect_msys_tty()
- msvc: define ftello()
- msvc: do not re-declare the timespec struct
- msvc: mark a variable as non-const
- msvc: define O_ACCMODE
- msvc: include sigset_t definition
- msvc: fix dependencies of compat/msvc.c
- mingw: replace mingw_startup() hack
- obstack: fix compiler warning
- cache-tree/blame: avoid reusing the DEBUG constant
- t0001 (mingw): do not expect a specific order of stdout/stderr
- Mark .bat files as requiring CR/LF endings
- mingw: fix a typo in the msysGit-specific section
Support to build with MSVC has been updated.
Will merge to 'next'.
* jk/delta-islands-progress-fix (2019-06-20) 1 commit
- delta-islands: respect progress flag
The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
Will merge to 'next'.
* jk/oidhash (2019-06-20) 17 commits
- hashmap: convert sha1hash() to oidhash()
- hash.h: move object_id definition from cache.h
- khash: rename oid helper functions
- khash: drop sha1-specific map types
- pack-bitmap: convert khash_sha1 maps into kh_oid_map
- delta-islands: convert island_marks khash to use oids
- khash: rename kh_oid_t to kh_oid_set
- khash: drop broken oid_map typedef
- object: convert create_object() to use object_id
- object: convert internal hash_obj() to object_id
- object: convert lookup_object() to use object_id
- object: convert lookup_unknown_object() to use object_id
- pack-objects: convert locate_object_entry_hash() to object_id
- pack-objects: convert packlist_find() to use object_id
- pack-bitmap-write: convert some helpers to use object_id
- upload-pack: rename a "sha1" variable to "oid"
- describe: fix accidental oid/hash type-punning
Code clean-up to remove hardcoded SHA-1 hash from manty places.
Will merge to 'next'.
* nd/fetch-capability-tweak (2019-06-20) 3 commits
- fetch-pack: print server version at the top in -v -v
- fetch-pack: print all relevant supported capabilities with -v -v
- fetch-pack: move capability names out of i18n strings
Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
Will merge to 'next'.
* nd/index-dump-in-json (2019-06-26) 11 commits
- SQUASH???
- t3008: use the new SINGLE_CPU prereq
- read-cache.c: dump "IEOT" extension as json
- read-cache.c: dump "EOIE" extension as json
- resolve-undo.c: dump "REUC" extension as json
- fsmonitor.c: dump "FSMN" extension as json
- split-index.c: dump "link" extension as json
- dir.c: dump "UNTR" extension as json
- cache-tree.c: dump "TREE" extension as json
- read-cache.c: dump common extension info in json
- ls-files: add --json to dump the index
"ls-files" learned "--debug-json" option to dump the contents and
the extensions of the index file.
* nd/switch-and-restore-more (2019-06-20) 2 commits
- completion: disable dwim on "git switch -d"
- switch: allow to switch in the middle of bisect
(this branch is used by jl/status-reduce-vertical-blank; uses nd/switch-and-restore.)
(this topic is just bits and pieces out of 4 patches)
* rs/config-unit-parsing (2019-06-24) 3 commits
- config: simplify parsing of unit factors
- config: don't multiply in parse_unit_factor()
- config: use unsigned_mult_overflows to check for overflows
(this branch uses js/gcc-8-and-9.)
The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
Will merge to 'next'.
* ab/fail-prereqs-in-test (2019-06-21) 1 commit
- tests: mark two failing tests under FAIL_PREREQS
Test updates.
Will merge to 'next'.
* ds/fetch-disable-force-notice (2019-06-21) 3 commits
- pull: add --[no-]show-forced-updates passthrough
- fetch: warn about forced updates in branch listing
- fetch: add --[no-]show-forced-updates argument
"git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-shown-forced-updates" option to disable
this safety feature.
Will merge to 'next'.
* jh/status-aheadbehind (2019-06-21) 3 commits
- status: ignore status.aheadbehind in porcelain formats
- status: warn when a/b calculation takes too long
- status: add status.aheadbehind setting
"git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
Will merge to 'next'.
* js/t0001-case-insensitive (2019-06-24) 1 commit
- t0001: fix on case-insensitive filesystems
Test update.
Will merge to 'next'.
* dr/progress-i18n (2019-06-24) 1 commit
- l10n: localizable upload progress messages
Progress messages have been made localizable.
Not quite with the code duplication...
* jw/gitweb-sample-update (2019-06-24) 1 commit
- doc: don't use git.kernel.org as example gitweb URL
Doc update.
Will merge to 'next'.
* ms/submodule-foreach-fix (2019-06-25) 1 commit
- submodule foreach: fix recursion of options
"git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
Will merge to 'next'.
* pw/status-with-corrupt-sequencer-state (2019-06-25) 3 commits
- status: do not report errors in sequencer/todo
- sequencer: factor out todo command name parsing
- sequencer: always allow tab after command name
The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* sg/t5551-fetch-smart-error-is-translated (2019-06-25) 1 commit
- t5551: use 'test_i18ngrep' to check translated output
Test update.
Will merge to 'next'.
* ab/no-kwset (2019-06-26) 7 commits
- grep: use PCRE v2 for optimized fixed-string search
- grep: remove the kwset optimization
- grep: drop support for \0 in --fixed-strings <pattern>
- grep: make the behavior for \0 in patterns sane
- grep tests: move binary pattern tests into their own file
- grep tests: move "grep binary" alongside the rest
- grep: inline the return value of a function call used only once
Retire use of kwset library, which is an optimization for looking
for fixed strings, with use of pcre2 JIT.
Will merge to 'next'.
* mt/dir-iterator-updates (2019-06-25) 10 commits
- clone: replace strcmp by fspathcmp
- clone: use dir-iterator to avoid explicit dir traversal
- clone: extract function from copy_or_link_directory
- clone: copy hidden paths at local clone
- dir-iterator: add flags parameter to dir_iterator_begin
- dir-iterator: refactor state machine model
- dir-iterator: use warning_errno when possible
- dir-iterator: add tests for dir-iterator API
- clone: better handle symlinked files at .git/objects/
- clone: test for our behavior on odd objects/* content
Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
Is this ready for 'next'?
* nd/tree-walk-with-repo (2019-06-26) 6 commits
- Use the right 'struct repository' instead of the_repository
- match-trees.c: remove the_repo from shift_tree*()
- tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
- tree-walk.c: remove the_repo from get_tree_entry()
- tree-walk.c: remove the_repo from fill_tree_descriptor()
- sha1-file.c: remove the_repo from read_object_with_reference()
The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* jh/trace2-sid-fix (2019-06-26) 1 commit
- trace2: correct typo in technical documentation
Typofix.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* jn/unknown-index-extensions (2018-11-21) 2 commits
- index: offer advice for unknown index extensions
- index: do not warn about unrecognized extensions
A bit too alarming warning given when unknown index extensions
exist is getting revamped.
Expecting a reroll.
* jc/format-patch-delay-message-id (2019-04-05) 1 commit
- format-patch: move message-id and related headers to the end
The location "git format-patch --thread" adds the Message-Id:
header in the series of header fields has been moved down, which
may help working around a suspected bug in GMail MSA, reported at
<CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>
Waiting for feedback to see if it truly helps.
Needs tests.
* jt/fetch-cdn-offload (2019-03-12) 9 commits
- SQUASH???
- upload-pack: send part of packfile response as uri
- fetch-pack: support more than one pack lockfile
- upload-pack: refactor reading of pack-objects out
- Documentation: add Packfile URIs design doc
- Documentation: order protocol v2 sections
- http-fetch: support fetching packfiles by URL
- http: improve documentation of http_pack_request
- http: use --stdin when getting dumb HTTP pack
WIP for allowing a response to "git fetch" to instruct the bulk of
the pack contents to be instead taken from elsewhere (aka CDN).
Stalled
* js/protocol-advertise-multi (2018-12-28) 1 commit
- protocol: advertise multiple supported versions
The transport layer has been updated so that the protocol version
used can be negotiated between the parties, by the initiator
listing the protocol versions it is willing to talk, and the other
side choosing from one of them.
Expecting a reroll.
cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
* dl/remote-save-to-push (2018-12-11) 1 commit
- remote: add --save-to-push option to git remote set-url
"git remote set-url" learned a new option that moves existing value
of the URL field to pushURL field of the remote before replacing
the URL field with a new value.
Anybody who wants to champion this topic?
I am personally not yet quite convinced if this is worth pursuing.
--------------------------------------------------
[Cooking]
* cb/fsmonitor-intfix (2019-06-17) 1 commit
(merged to 'next' on 2019-06-26 at bed7c7e78b)
+ fsmonitor: avoid signed integer overflow / infinite loop
Variable type fix.
Will merge to 'master'.
* es/rev-list-no-object-names (2019-06-20) 1 commit
- rev-list: teach --no-object-names to enable piping
"git rev-list --objects" learned with "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
Will merge to 'next'.
* md/list-objects-filter-combo (2019-06-17) 10 commits
- list-objects-filter-options: make parser void
- list-objects-filter-options: clean up use of ALLOC_GROW
- list-objects-filter-options: allow mult. --filter
- strbuf: give URL-encoding API a char predicate fn
- list-objects-filter-options: make filter_spec a string_list
- list-objects-filter-options: move error check up
- list-objects-filter: implement composite filters
- list-objects-filter-options: always supply *errbuf
- list-objects-filter: put omits set in filter struct
- list-objects-filter: make API easier to use
The list-objects-filter API (used to create a sparse/lazy clone)
learned to take a combined filter specification.
Will merge to 'next'.
* pw/doc-synopsis-markup-opmode-options (2019-06-17) 1 commit
(merged to 'next' on 2019-06-26 at 4258eddd2d)
+ show --continue/skip etc. consistently in synopsis
Docfix.
Will merge to 'master'.
* rs/copy-array (2019-06-17) 2 commits
(merged to 'next' on 2019-06-26 at dfaa162f88)
+ use COPY_ARRAY for copying arrays
+ coccinelle: use COPY_ARRAY for copying arrays
Code clean-up.
Will merge to 'master'.
* cb/mkstemps-uint-type-fix (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at df44db4a69)
+ wrapper: avoid undefined behaviour in macOS
Variable type fix.
Will merge to 'master'.
* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
- xdiff: avoid accidental redefinition of LFS feature in OpenIndiana
Compilation fix.
Will be rerolled together with patches from the
jk/no-system-includes-in-dot-c topic.
* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
- wt-status.h: drop stdio.h include
- verify-tag: drop signal.h include
Compilation fix.
Will be rerolled with the above.
* jk/trailers-use-config (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at 1ba8a7c2dd)
+ interpret-trailers: load default config
"git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
Will merge to 'master'.
* nd/fetch-multi-gc-once (2019-06-19) 1 commit
- fetch: only run 'gc' once when fetching multiple remotes
"git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
Will merge to 'next'.
* ra/cherry-pick-revert-skip (2019-06-24) 6 commits
- cherry-pick/revert: advise using --skip
- cherry-pick/revert: add --skip option
- sequencer: use argv_array in reset_merge
- sequencer: rename reset_for_rollback to reset_merge
- sequencer: add advice for revert
- advice: add sequencerInUse config variable
"git cherry-pick/revert" learned a new "--skip" action.
Is this one ready for 'next'?
* tg/stash-ref-by-index-fix (2019-06-19) 1 commit
(merged to 'next' on 2019-06-26 at ee2e6308ae)
+ stash: fix show referencing stash index
"git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
Will merge to 'master'.
* js/gcc-8-and-9 (2019-06-13) 4 commits
- config: avoid calling `labs()` on too-large data type
- winansi: simplify loading the GetCurrentConsoleFontEx() function
- kwset: allow building with GCC 8
- poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
(this branch is used by rs/config-unit-parsing.)
Code clean-up for new compilers.
Will merge to 'next'.
The 'kwset' one may get a wholesale replacement, either with new
version of kwset from upstream or removal of its users, but in the
meantime, it is probably OK to merge it down.
* pw/add-p-recount (2019-06-13) 1 commit
(merged to 'next' on 2019-06-26 at 63e063d65d)
+ add -p: fix checkout -p with pathological context
"git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
Will merge to 'master'.
* rs/avoid-overflow-in-midpoint-computation (2019-06-13) 1 commit
(merged to 'next' on 2019-06-26 at e6bd5b496b)
+ cleanup: fix possible overflow errors in binary search, part 2
Code clean-up to avoid signed integer overlaps during binary search.
Will merge to 'master'.
* js/t3404-typofix (2019-06-14) 1 commit
(merged to 'next' on 2019-06-26 at ba3fcc1fc1)
+ t3404: fix a typo
Typofix.
Will merge to 'master'.
* mo/hpux-dynpath (2019-06-07) 1 commit
(merged to 'next' on 2019-06-26 at 5add3b28b2)
+ configure: Detect linking style for HP aCC on HP-UX
Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
Will merge to 'master'.
* js/mergetool-optim (2019-06-12) 4 commits
(merged to 'next' on 2019-06-26 at 8ad650bfa8)
+ mergetool: use shell variable magic instead of `awk`
+ mergetool: dissect strings with shell variable magic instead of `expr`
+ t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
+ t7610-mergetool: do not place pipelines headed by `yes` in subshells
"git mergetool" and its tests now spawn fewer subprocesses.
Will merge to 'master'.
* cc/test-oidmap (2019-06-17) 4 commits
- test-hashmap: remove 'hash' command
- oidmap: use sha1hash() instead of static hash() function
- t: add t0016-oidmap.sh
- t/helper: add test-oidmap.c
Extend the test coverage a bit.
Will merge to 'next'.
* ds/midx-expire-repack (2019-06-11) 11 commits
- t5319-multi-pack-index.sh: test batch size zero
- midx: add test that 'expire' respects .keep files
- multi-pack-index: test expire while adding packs
- midx: implement midx_repack()
- multi-pack-index: prepare 'repack' subcommand
- multi-pack-index: implement 'expire' subcommand
- midx: refactor permutation logic and pack sorting
- midx: simplify computation of pack name lengths
- multi-pack-index: prepare for 'expire' subcommand
- Docs: rearrange subcommands for multi-pack-index
- repack: refactor pack deletion for future use
"git multi-pack-index" learned expire and repack subcommands.
Will merge to 'next'.
* md/sort-detached-head-first (2019-06-19) 1 commit
- ref-filter: sort detached HEAD lines firstly
"git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
Will merge to 'next'.
* nd/completion-no-cache-failure (2019-06-12) 1 commit
(merged to 'next' on 2019-06-26 at f7b5a0a622)
+ completion: do not cache if --git-completion-helper fails
An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
Will merge to 'master'.
* sg/rebase-progress (2019-06-24) 5 commits
- progress: use term_clear_line()
- rebase: fix garbled progress display with '-x'
- pager: add a helper function to clear the last line in the terminal
- t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
- t3404: modernize here doc style
Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
Will merge to 'next'.
* sg/trace2-rename (2019-06-12) 1 commit
(merged to 'next' on 2019-06-26 at 8ee228c455)
+ Revert "test-lib: whitelist GIT_TR2_* in the environment"
Dev support update to help tracing out tests.
Will merge to 'master'.
* fc/fetch-with-import-fix (2019-06-04) 5 commits
(merged to 'next' on 2019-06-26 at b7e7f359a9)
+ fetch: fix regression with transport helpers
+ fetch: make the code more understandable
+ fetch: trivial cleanup
+ t5801 (remote-helpers): add test to fetch tags
+ t5801 (remote-helpers): cleanup refspec stuff
Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
Will merge to 'master'.
* jl/status-reduce-vertical-blank (2019-06-21) 1 commit
- status: remove the empty line after hints
(this branch uses nd/switch-and-restore and nd/switch-and-restore-more.)
Extra blank lines in "git status" output have been reduced.
Needs to wait on nd/switch-and-restore to stabilize.
* dl/config-alias-doc (2019-06-06) 2 commits
(merged to 'next' on 2019-06-26 at 3776902022)
+ config/alias.txt: document alias accepting non-command first word
+ config/alias.txt: change " and ' to `
Doc update.
Will merge to 'master'.
* dl/includeif-onbranch (2019-06-05) 1 commit
- config: learn the "onbranch:" includeIf condition
The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
Will merge to 'next'.
* ds/commit-graph-incremental (2019-06-19) 18 commits
- commit-graph: test verify across alternates
- commit-graph: normalize commit-graph filenames
- commit-graph: test --split across alternate without --split
- commit-graph: test octopus merges with --split
- commit-graph: clean up chains after flattened write
- commit-graph: verify chains with --shallow mode
- commit-graph: create options for split files
- commit-graph: expire commit-graph files
- commit-graph: allow cross-alternate chains
- commit-graph: merge commit-graph chains
- commit-graph: add --split option to builtin
- commit-graph: write commit-graph chains
- commit-graph: rearrange chunk count logic
- commit-graph: add base graphs chunk
- commit-graph: load commit-graph chains
- commit-graph: rename commit_compare to oid_compare
- commit-graph: prepare for commit-graph chains
- commit-graph: document commit-graph chains
(this branch uses ds/close-object-store and ds/commit-graph-write-refactor.)
The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
Will merge to 'next'.
* tm/tag-gpgsign-config (2019-06-05) 1 commit
(merged to 'next' on 2019-06-26 at 015709def5)
+ tag: add tag.gpgSign config option to force all tags be GPG-signed
A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
Will merge to 'master'.
* po/doc-branch (2019-05-29) 1 commit
(merged to 'next' on 2019-06-26 at 0debcb13e5)
+ doc branch: provide examples for listing remote tracking branches
Doc update.
Will merge to 'master'.
* ds/close-object-store (2019-06-12) 3 commits
(merged to 'next' on 2019-06-26 at 86b60f2631)
+ packfile: rename close_all_packs to close_object_store
+ packfile: close commit-graph in close_all_packs
+ commit-graph: use raw_object_store when closing
(this branch is used by ds/commit-graph-incremental; uses ds/commit-graph-write-refactor.)
The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
Will merge to 'master'.
* pw/rebase-abort-clean-rewritten (2019-05-15) 4 commits
- rebase --abort/--quit: cleanup refs/rewritten
- sequencer: return errors from sequencer_remove_state()
- rebase: warn if state directory cannot be removed
- rebase: fix a memory leak
"git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
Will merge to 'next'.
cf. <2a37d4c2-6eec-548d-0bd0-12bbd49c8071@gmail.com>
* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits
(merged to 'next' on 2019-06-26 at ae3b7a626d)
+ branch: add worktree info on verbose output
+ branch: update output to include worktree info
+ ref-filter: add worktreepath atom
"git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
Will merge to 'master'.
* cc/multi-promisor (2019-06-25) 15 commits
- Move core_partial_clone_filter_default to promisor-remote.c
- Move repository_format_partial_clone to promisor-remote.c
- Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
- remote: add promisor and partial clone config to the doc
- partial-clone: add multiple remotes in the doc
- t0410: test fetching from many promisor remotes
- builtin/fetch: remove unique promisor remote limitation
- promisor-remote: parse remote.*.partialclonefilter
- Use promisor_remote_get_direct() and has_promisor_remote()
- promisor-remote: use repository_format_partial_clone
- promisor-remote: add promisor_remote_reinit()
- promisor-remote: implement promisor_remote_get_direct()
- Add initial support for many promisor remotes
- fetch-object: make functions return an error code
- t0410: remove pipes after git commands
Teach the lazy clone machinery that there can be more than one
promisor remote and consult them in order when downloading missing
objects on demand.
* nd/switch-and-restore (2019-06-20) 44 commits
- t2027: use test_must_be_empty
- Declare both git-switch and git-restore experimental
- help: move git-diff and git-reset to different groups
- doc: promote "git restore"
- user-manual.txt: prefer 'merge --abort' over 'reset --hard'
- completion: support restore
- t: add tests for restore
- restore: support --patch
- restore: replace --force with --ignore-unmerged
- restore: default to --source=HEAD when only --staged is specified
- restore: reject invalid combinations with --staged
- restore: add --worktree and --staged
- checkout: factor out worktree checkout code
- restore: disable overlay mode by default
- restore: make pathspec mandatory
- restore: take tree-ish from --source option instead
- checkout: split part of it to new command 'restore'
- doc: promote "git switch"
- completion: support switch
- t: add tests for switch
- switch: make --orphan switch to an empty tree
- switch: reject if some operation is in progress
- switch: no worktree status unless real branch switch happens
- switch: implicit dwim, use --no-guess to disable it
- switch: add short option for --detach
- switch: only allow explicit detached HEAD
- switch: reject "do nothing" case
- switch: stop accepting pathspec
- switch: remove -l
- switch: add --discard-changes
- switch: better names for -b and -B
- checkout: split part of it to new command 'switch'
- checkout: split options[] array in three pieces
- checkout: move 'confict_style' and 'dwim_..' to checkout_opts
- checkout: make "opts" in cmd_checkout() a pointer
- checkout: factor out some code in parse_branchname_arg()
- checkout: keep most #include sorted
- checkout: inform the user when removing branch state
- checkout: advice how to get out of detached HEAD mode
- t: rename t2014-switch.sh to t2014-checkout-switch.sh
- git-checkout.txt: fix monospace typeset
- doc: document --overwrite-ignore
- git-checkout.txt: fix one syntax line
- git-checkout.txt: spell out --no-option
(this branch is used by jl/status-reduce-vertical-blank and nd/switch-and-restore-more.)
Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
Will merge to 'next'.
cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6)
cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3)
* jc/format-patch-noclobber (2019-02-22) 1 commit
- format-patch: --no-clobber refrains from overwriting output files
"git format-patch" used to overwrite an existing patch/cover-letter
file. A new "--no-clobber" option stops it.
Undecided but inclined to discard.
* am/p4-branches-excludes (2019-04-02) 8 commits
- git-p4: respect excluded paths when detecting branches
- git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
- git-p4: don't exclude other files with same prefix
- git-p4: add failing test for "don't exclude other files with same prefix"
- git-p4: don't groom exclude path list on every commit
- git-p4: match branches case insensitively if configured
- git-p4: add failing test for "git-p4: match branches case insensitively if configured"
- git-p4: detect/prevent infinite loop in gitCommitByP4Change()
"git p4" update.
Will merge to 'next'.
* dl/rebase-i-keep-base (2019-04-25) 6 commits
- rebase: teach rebase --keep-base
- rebase: fast-forward --fork-point in more cases
- rebase: fast-forward --onto in more cases
- rebase: refactor can_fast_forward into goto tower
- t3432: test rebase fast-forward behavior
- t3431: add rebase --fork-point tests
"git rebase --keep-base <upstream>" tries to find the original base
of the topic being rebased and rebase on top of that same base,
which is useful when running the "git rebase -i" (and its limited
variant "git rebase -x").
The command also has learned to fast-forward in more cases where it
can instead of replaying to recreate identical commits.
On hold.
cf. <20190508001252.15752-1-avarab@gmail.com>
cf. <xmqqa7fxionx.fsf@gitster-ct.c.googlers.com>
* ds/commit-graph-write-refactor (2019-06-12) 11 commits
(merged to 'next' on 2019-06-26 at 5430eafe51)
+ commit-graph: extract write_commit_graph_file()
+ commit-graph: extract copy_oids_to_commits()
+ commit-graph: extract count_distinct_commits()
+ commit-graph: extract fill_oids_from_all_packs()
+ commit-graph: extract fill_oids_from_commit_hex()
+ commit-graph: extract fill_oids_from_packs()
+ commit-graph: create write_commit_graph_context
+ commit-graph: remove Future Work section
+ commit-graph: collapse parameters into flags
+ commit-graph: return with errors during write
+ commit-graph: fix the_repository reference
(this branch is used by ds/close-object-store and ds/commit-graph-incremental.)
Renamed from commit-graph-format-v2 and changed scope.
Will merge to 'master'.
* br/blame-ignore (2019-06-20) 9 commits
- blame: add a test to cover blame_coalesce()
- blame: use the fingerprint heuristic to match ignored lines
- blame: add a fingerprint heuristic to match ignored lines
- blame: optionally track line fingerprints during fill_blame_origin()
- blame: add config options for the output of ignored or unblamable lines
- blame: add the ability to ignore commits and their changes
- blame: use a helper function in blame_chunk()
- Move oidset_parse_file() to oidset.c
- fsck: rename and touch up init_skiplist()
"git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
Will merge to 'next'.
cf. <20190620163820.231316-1-brho@google.com> (v9)
^ permalink raw reply [relevance 1%]
* [PATCH v6 00/15] Many promisor remotes
@ 2019-06-25 13:40 3% Christian Couder
0 siblings, 0 replies; 162+ results
From: Christian Couder @ 2019-06-25 13:40 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Jeff King, Ben Peart, Jonathan Tan,
Jonathan Nieder, Nguyen Thai Ngoc Duy, Mike Hommey,
Lars Schneider, Eric Wong, Christian Couder, Jeff Hostetler,
Eric Sunshine, Beat Bolli, SZEDER Gábor, Ramsay Jones,
Derrick Stolee
This patch series is based on master as of 8dca754b1e (The third batch, 2019-06-21).
It was previously based on jt/batch-fetch-blobs-in-diff, but this has
been merged into master.
Introduction
~~~~~~~~~~~~
This path series is a follow up from the "remote odb" patch series
that I sent last year, which were a follow up from previous
series. See the links section for more information.
The goal of this patch series is to make it possible to have and to
fetch missing objects from multiple remotes instead of only one.
For now the fetch order is the order of the remotes in the config,
except for the remote specified by extensions.partialclone config
option which comes last in the fetch order.
I selected the name "Promisor remote" over "Partial clone remote"
because it is shorter and because it is not only about cloning.
The existing extensions.partialclone config option is respected, but
it is not written in the config when a partial clone or fetch is
made. Instead remote.<name>.promisor is set to "true". This may create
a compatibility issue, but it makes it possible to start using many
promisor remotes by just cloning and fetching from different remotes
with partial clone filters. The compatibility issue could be resolved
in a future iteration by just setting extensions.partialclone instead
of remote.<name>.promisor the first time a promisor remote is used.
The code might not work with many promisor remotes that don't all have
all the promised objects, as that would require the fetch protocol to
send packs with best effort, as described by Junio in:
https://public-inbox.org/git/xmqqpnqve71d.fsf@gitster-ct.c.googlers.com/
I plan to take a look at improving that soon.
In general I have tried to change as few things as possible in the
first patches of the series, though the last patches try to hide the
old features that only made sense for the general code to use when
there was only one promisor remote.
High level view of changes since the V5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The only patchs that changed since V5 are:
- Patch 4/15 (promisor-remote: implement promisor_remote_get_direct())
The new OBJECT_INFO_SKIP_FETCH_OBJECT flag is used instead of using
the ugly fetch_if_missing global variable as suggested by Stolee.
Also, "missing" in variable names has been replaced with "remaining"
as suggested by Stolee.
- Patch 7/15 (Use promisor_remote_get_direct() and
has_promisor_remote())
The changes to diff.c that were in patch 8/16 in V5 have been squashed
into this patch as the squashed patch applied to diff.c the same
changes that are made in this patch. They were in a separate patch
because the changes in diff.c needed to be made only if the
jt/batch-fetch-blobs-in-diff series was merged, which has happened.
Some similar changes in builtin/index-pack.c were also added to this
patch. They were necessary since 8a30a1efd1 (index-pack: prefetch
missing REF_DELTA bases, 2019-05-14) has been merged.
High level overview of old patches in this patch series
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Patch 1/15 (t0410: remove pipes after git commands)
This is a preparatory cleanup patch to improve t0410 as suggested by
Szeder Gábor.
- Patch 2/15 (fetch-object: make functions return an error code)
This patch, makes functions in fetch-object.c return an error code,
which is necessary to later tell that they failed and try another
promisor remote when there is more than one. This could also just be
seen as a fix to these functions.
- Patch 3/15 (Add initial support for many promisor remotes)
This introduces the minimum infrastructure for promisor remotes.
- Patch 4/15 (promisor-remote: implement promisor_remote_get_direct())
- Patch 5/15 (promisor-remote: add promisor_remote_reinit())
- Patch 6/15 (promisor-remote: use repository_format_partial_clone)
These patches add a few missing bits in the promisor remote
infrastructure that will be needed in the following patches.
- Patch 7/15 (Use promisor_remote_get_direct() and has_promisor_remote())
This replaces the previous interface that used only one promisor
remote defined in extensions.partialclone with the new interface
created by the previous patches.
- Patch 8/15 (promisor-remote: parse remote.*.partialclonefilter)
This replaces the way a partial clone filter was handled by a new way
based on the previous patches that support more than one partial clone
filter.
- Patch 9/15 (builtin/fetch: remove unique promisor remote limitation)
This patch removes the limitation in builtin/fetch.c to have only one
promisor remote.
- Patch 10/15 (t0410: test fetching from many promisor remotes)
This adds test cases that shows that now more than one promisor remote
can be used and that remote.<name>.promisor is set to "true" when
fetching from a new promisor remote.
- Patch 11/15 (partial-clone: add multiple remotes in the doc)
- Patch 12/15 (remote: add promisor and partial clone config to the doc)
These documentation patches explain how things can work with more than
one promisor remote.
- Patch 13/15 (Remove fetch-object.{c,h} in favor of promisor-remote.{c,h})
- Patch 14/15 (Move repository_format_partial_clone to promisor-remote.c)
- Patch 15/15 (Move core_partial_clone_filter_default to promisor-remote.c)
These patches try to hide the old features (fetch_objects(),
repository_format_partial_clone and core_partial_clone_filter_default)
that only made sense for the general code to use when there was only
one promisor remote. This ensures that there will be compilation
errors rather than bugs or test failures if the old features are used
in the old fashion way.
Links
~~~~~
This patch series on GitHub:
V6: https://github.com/chriscool/git/commits/many-promisor-remotes
V5: https://github.com/chriscool/git/commits/many-promisor-remotes68
V4: https://github.com/chriscool/git/commits/many-promisor-remotes58
V3: https://github.com/chriscool/git/commits/many-promisor-remotes40
V2: https://github.com/chriscool/git/commits/many-promisor-remotes35
V1: https://github.com/chriscool/git/commits/many-promisor-remotes17
On the mailing list:
V5: https://public-inbox.org/git/20190409161116.30256-1-chriscool@tuxfamily.org/
V4: https://public-inbox.org/git/20190401164045.17328-1-chriscool@tuxfamily.org/
V3: https://public-inbox.org/git/20190312132959.11764-1-chriscool@tuxfamily.org/
V2: https://public-inbox.org/git/20190122144212.15119-1-chriscool@tuxfamily.org/
V1: https://public-inbox.org/git/20181211052746.16218-1-chriscool@tuxfamily.org/
This patch series is a follow up from the discussions related to
the remote odb V4 patch series:
https://public-inbox.org/git/20180802061505.2983-1-chriscool@tuxfamily.org/
Especially in:
https://public-inbox.org/git/CAP8UFD3nrhjANwNDqTwx5ZtnZNcnbAFqUN=u=LrvzuH4+3wQQA@mail.gmail.com/
I said that I would like to work on things in the following order:
1) Teaching partial clone to attempt to fetch missing objects from
multiple remotes instead of only one using the order in the config.
2) Simplifying the protocol for fetching missing objects so that it
can be satisfied by a lighter weight object storage system than a full
Git server.
3) Making it possible to explicitly define an order in which the
remotes are accessed.
4) Making the criteria for what objects can be missing more
aggressive, so that I can "git add" a large file and work with it
using Git without even having a second copy of that object in my local
object store.
And this patch series is about the 1).
The previous remote odb patch series on GitHub:
V5: https://github.com/chriscool/git/commits/remote-odb
V4: https://github.com/chriscool/git/commits/remote-odb5
V3: https://github.com/chriscool/git/commits/remote-odb3
V2: https://github.com/chriscool/git/commits/remote-odb2
V1: https://github.com/chriscool/git/commits/remote-odb1
Discussions related to previous versions of the odb patch series:
V4: https://public-inbox.org/git/20180802061505.2983-1-chriscool@tuxfamily.org/
V3: https://public-inbox.org/git/20180713174959.16748-1-chriscool@tuxfamily.org/
V2: https://public-inbox.org/git/20180630083542.20347-1-chriscool@tuxfamily.org/
V1: https://public-inbox.org/git/20180623121846.19750-1-chriscool@tuxfamily.org/
Christian Couder (15):
t0410: remove pipes after git commands
fetch-object: make functions return an error code
Add initial support for many promisor remotes
promisor-remote: implement promisor_remote_get_direct()
promisor-remote: add promisor_remote_reinit()
promisor-remote: use repository_format_partial_clone
Use promisor_remote_get_direct() and has_promisor_remote()
promisor-remote: parse remote.*.partialclonefilter
builtin/fetch: remove unique promisor remote limitation
t0410: test fetching from many promisor remotes
partial-clone: add multiple remotes in the doc
remote: add promisor and partial clone config to the doc
Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
Move repository_format_partial_clone to promisor-remote.c
Move core_partial_clone_filter_default to promisor-remote.c
Documentation/config/remote.txt | 8 +
Documentation/technical/partial-clone.txt | 117 +++++++---
Makefile | 2 +-
builtin/cat-file.c | 5 +-
builtin/fetch.c | 29 +--
builtin/gc.c | 3 +-
builtin/index-pack.c | 8 +-
builtin/repack.c | 3 +-
cache-tree.c | 3 +-
cache.h | 2 -
config.c | 5 -
connected.c | 3 +-
diff.c | 9 +-
environment.c | 2 -
fetch-object.c | 40 ----
fetch-object.h | 9 -
list-objects-filter-options.c | 51 +++--
list-objects-filter-options.h | 3 +-
packfile.c | 3 +-
promisor-remote.c | 265 ++++++++++++++++++++++
promisor-remote.h | 31 +++
setup.c | 3 +-
sha1-file.c | 15 +-
t/t0410-partial-clone.sh | 61 ++++-
t/t5601-clone.sh | 3 +-
t/t5616-partial-clone.sh | 4 +-
unpack-trees.c | 8 +-
27 files changed, 523 insertions(+), 172 deletions(-)
delete mode 100644 fetch-object.c
delete mode 100644 fetch-object.h
create mode 100644 promisor-remote.c
create mode 100644 promisor-remote.h
--
2.22.0.229.ga13d9ffdf7.dirty
^ permalink raw reply [relevance 3%]
* Re: [ANNOUNCE] Git v2.22.0
2019-06-07 21:31 2% [ANNOUNCE] Git v2.22.0 Junio C Hamano
@ 2019-06-07 22:48 0% ` Bhaskar Chowdhury
0 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-06-07 22:48 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 73593 bytes --]
Thanks, a bunch Junio!
On 14:31 Fri 07 Jun , Junio C Hamano wrote:
>The latest feature release Git v2.22.0 is now available at the
>usual places. It is comprised of 745 non-merge commits since
>v2.21.0, contributed by 74 people, 18 of which are new faces.
>
>The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/
>
>The following public repositories all have a copy of the 'v2.22.0'
>tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
>New contributors whose contributions weren't in v2.21.0 are as follows.
>Welcome to the Git development community!
>
> Alexander Blesius, Baruch Siach, Boxuan Li, Cédric Malard,
> Chris Mayo, Chris. Webster, Clément Chigot, Corentin BOMPARD,
> Damien Robert, Dustin Spicuzza, Emily Shaffer, Michal Suchanek,
> Rohit Ashiwal, Sun Chao, Tanushree Tumane, Vadim Kochan,
> William Hubbs, and Yash Bhatambare.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alban Gruin, Alessandro Menti,
> Alexander Shopov, Anders Waldenborg, Andreas Heiduk, Andrei
> Rybak, Beat Bolli, Ben Peart, Brandon Richardson, brian
> m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
> Christopher Díaz Riveros, Daniels Umanovskis, David Aguilar,
> David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
> Sunshine, Eric Wong, Fangyi Zhou, İsmail Dönmez, Jean-Noël
> Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joel Teichroeb,
> Joey Hess, Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh
> Steadmon, Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew
> Kraai, Matthias Rüster, Mike Hommey, Nguyễn Thái Ngọc
> Duy, Paul-Sebastian Ungureanu, Peter Krefting, Philip Oakley,
> Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe, Robert
> P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau, Thomas
> Gummerer, Todd Zullinger, Torsten Bögershausen, and Trần
> Ngọc Quân.
>
>----------------------------------------------------------------
>
>Git 2.22 Release Notes
>======================
>
>Updates since v2.21
>-------------------
>
>Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
> create a lazy/partial clone has been removed. Using a blob that is
> part of the project as sparse specification is still supported with
> the "--filter=sparse:oid=<blob>" option.
>
>UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
> checking out paths out of the tree-ish, that allows paths that
> match the pathspec that are in the current index and working tree
> and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..." now allows to
> optionally pick trailers selectively by keyword, show only values,
> etc.
>
> * Four new configuration variables {author,committer}.{name,email}
> have been introduced to override user.{name,email} in more specific
> cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
> "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
> merge involved renames. A new option adds the paths in the
> original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
> complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
> culprit using a raw "diff-tree", with which there is no output for
> a merge commit. This has been updated to use a more modern and
> human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
> option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
> been updated.
>
> * The completion helper code now pays attention to repository-local
> configuration (when available), which allows --list-cmds to honour
> a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
> its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
> file changes, which can help e.g. a virtualized working tree
> implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
> between HEAD and the working-tree files forward while checking out
> another branch, and ignored the differences between HEAD and the
> index. The command has been taught to abort when the index and the
> HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
> often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
> submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
> infer file movement based on how other files in the same directory
> moved. As this is inherently less robust heuristics than the one
> based on the content similarity of the file itself (rather than
> based on what its neighbours are doing), it sometimes gives an
> outcome unexpected by the end users. This has been toned down to
> leave the renamed paths in higher/conflicted stages in the index so
> that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
> mistake when creating an annotated or signed tag that points at
> another tag.
>
> * The "git pack-objects" command learned to report the number of
> objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
> conflicted merge was shown above the scissors line when the
> clean-up mode is set to "scissors", even though it was commented
> out just like the list of updated paths and other information to
> help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
> when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
> the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
> repositories now; also the pathname hash-cache is created by
> default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
> taught that in their contexts, the notation A...B means "the merge
> base between these two commits", just like "git checkout A...B"
> detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
> of {diff,merge}.{tool,guitool} configuration variables serve as
> fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
> mode; they are now explicitly marked as mutually incompatible.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
> long predates the parse-options API, uses fairly long and complex
> handcrafted option parser. This is being rewritten to use the
> parse-options API.
>
> * The implementation of pack-redundant has been updated for
> performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
> bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
> use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
> patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
> easier to run most of the tests under different versions of
> over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
> results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
> packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
> updated.
>
> * The tests have been updated not to rely on the abbreviated option
> names the parse-options API offers, to protect us from an
> abbreviated form of an option that used to be unique within the
> command getting non-unique when a new option that share the same
> prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
> list many times during a single step of its operation, and the
> recent C-rewrite made a faithful conversion of the logic to C. The
> implementation has been updated to carry necessary information
> around in-core to avoid rewriting the same file over and over
> unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
> processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
> missing blobs we will need, instead of waiting for the on-demand
> machinery to discover them one by one. The code learned to aim to
> achieve better performance by batching the request for these
> promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
> pointless to spend cycles for a large portion of the connectivity
> check that enumerates and skips promisor objects (which by
> definition is all objects fetched from the other side). This has
> been optimized out.
>
> * Mechanically and systematically drop "extern" from function
> declaration.
>
> * The script to aggregate perf result unconditionally depended on
> libjson-perl even though it did not have to, which has been
> corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
> avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
> of Git that happens to be on $PATH, not the specified one to
> measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
> spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
> responded by a request to disambiguate between --recursive and
> --recurse-submodules, which is bad because these two are synonyms.
> The parse-options API has been extended to define such synonyms
> more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
> fread/fwrite did not return the number of elements, which was found
> to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
>Fixes since v2.21
>-----------------
>
> * "git prune-packed" did not notice and complain against excess
> arguments given from the command line, which now it does.
> (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
> (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
> --ext-diff and --textconv, but so far these have been ignored,
> which has been corrected.
> (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
> a bug in the latter (lack of authentication retry) and generally
> improves the code base.
> (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
> to (accidentally) include it more than once.
> (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
> included sha256/gcrypt.h, even when it is not used, causing the
> make target to fail. We now skip it when GCRYPT_SHA256 is not in
> use.
> (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
> files, which is expensive on platforms with slow filesystems; it
> now optionally uses "ls-files" if working within a repository,
> which is a trick similar to how all sources are enumerated to run
> ETAGS on.
> (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
> correctly, which has been corrected.
> (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
> (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
> DEVELOPER=YesPlease; this did not work well before.
> (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
> the objects that are not reachable from any of the refs into
> unreachable and dangling. This is now enabled when dangling
> objects are requested (which is done by default, but can be
> overridden with the "--no-dangling" option).
> (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
> the upload-pack that runs on the other end that hangs up after
> detecting an error could cause "git fetch" to die with a signal,
> which led to a flaky test. "git fetch" now ignores SIGPIPE during
> the network portion of its operation (this is not a problem as we
> check the return status from our write(2)s).
> (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
> well-known objects like an empty tree (which should yield "yes",
> even when there is no on-disk object for an empty tree), which has
> been corrected.
> (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
> repository_format structure.
> (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
> but there is a slight difference that wasn't documented, which is
> now fixed.
> (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
> working tree down to a small "token" (a la Git LFS), there is no
> point in allocating a huge scratch area upfront, but the buffer is
> sized based on the original file size. The convert mechanism now
> allocates very minimum and reallocates as it receives the output
> from the clean filter process.
> (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
> intermediate states, which inherently makes the hierarchy per
> worktree, but it didn't quite work well.
> (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
> output as it should. This has been corrected.
> (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
> and then mkdir", which is race-prone. This has been fixed by using
> mkdir and reacting to EEXIST in a loop.
> (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
> (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
> asciidoc.
> (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
> messages at places.
> (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
> that they can be localized.
> (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
> configuration, which made Windows port to ignore settings of
> core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
> is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
> output file for the cover-letter, which has been corrected.
> (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
> incorrectly left some paths in an unmerged state, which has been
> corrected.
>
> * A corner case bug in the refs API has been corrected.
> (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
> (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
> strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
> (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
> (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
> update_server_info() function.
> (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
> updated.
> (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
> user to ask help resolving a conflicted step, did not honor the
> options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
> careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
> (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
> corrected.
>
> * Performance fix around "git blame", especially in a linear history
> (which is the norm we should optimize for).
> (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
> (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
> deal better with overlong messages.
> (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
> the working tree, and the same command in a bare repository errors
> out because there is no working tree by definition. The command
> has been taught to instead start blaming from the commit at HEAD,
> which is more useful.
> (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
> extension has been corrected.
> (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
> it is used in more places, by using xmalloc and/or xcalloc calls.
> (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
> was made runtime-tunable, which has been fixed.
> (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
> (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
> down correctly, which has been corrected.
> (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
> payload contains carriage-return. The use of the mechanism is in
> line with the design originally added the codepath that chooses QP
> when the payload has overly long lines.
> (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
> anything-by: trailers in 'git send-email' was found to be way too
> eager and considered nonsense strings as if they can be legitimate
> beginning of *-by: trailer. This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
> seems to have stopped including from /usr/local/include; this
> has been corrected.
> (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
> repository is an explicit indication that the user wants to add it
> as a submodule, but when the HEAD of the inner repository is on an
> unborn branch, it cannot be added as a submodule. Worse, the files
> in its working tree can be added as if they are a part of the outer
> repository, which is not what the user wants. These problems are
> being addressed.
> (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
> to (and more importantly, ought to) clean up the commit log message
> with the --cleanup=space option by default, but this has been
> broken since late 2017. This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
> failed to peel the tag before writing a replace ref, which did not
> make sense because the old graft mechanism the feature wants to
> mimic only allowed to replace one commit object with another.
> This has been fixed.
> (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
> of a different type is expected, instead of blindly assuming that
> the connection between objects are correctly made.
> (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
> which has been fixed.
> (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
> for-each-ref" and friends was not showing the right branch, which
> has been fixed.
> (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
> where a particular build may deliberately omit some subcommands,
> which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
> "git branch -D" from removing the branch that is currently checked
> out by mistake. The implementation of this logic was broken for
> repositories with unusual name, which unfortunately is the norm for
> submodules these days. This has been fixed.
> (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
> which has been corrected.
> (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
> gettext() implementations from -libintl by ignoring useless stub
> implementations shipped in some C library, which has been
> corrected.
> (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
> run in an empty repository, which emulates the initial clone
> situation better.
> (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
> tree resulted in duplicated Makefile rules that caused the build to
> issue an unnecessary warning during a trial build after merge
> conflicts are resolved in working tree *.h files but before the
> resolved results are added to the index. This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
> that deals with multiple commits got confused when the final step
> gets stopped with a conflict and the user concluded the sequence
> with "git commit". Attempt to fix it by cleaning up the state
> files used by these commands in such a situation.
> (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
> entities may become different from what the end-user expects, just
> like files in the working tree get "renamed". Work around the
> mismatch by paying attention to the core.precomposeUnicode
> configuration.
> (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
> see too many packfiles and ran out of open file descriptor, which
> has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
> git-svn package (in the hope that it would bring in the right
> dependencies). This has been updated to install the more direct
> dependency, namely, libsvn-perl.
> (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
> "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
> file gets discarded, which has been corrected.
> (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
> todo-list "rebase -i -r" uses should not be shown as a hex object
> name.
>
> * A prerequisite check in the test suite to see if a working jgit is
> available was made more robust.
> (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
> indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
> (merge 11f470aee7 jc/test-yes-doc later to maint).
> (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
> (merge 5c326d1252 jk/unused-params later to maint).
> (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
> (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
> (merge 1ede45e44b en/merge-options-doc later to maint).
> (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
> (merge c271dc28fd nd/no-more-check-racy later to maint).
> (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
> (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
> (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
> (merge 50b206371d js/untravis-windows later to maint).
> (merge dbf47215e3 js/rebase-recreate-merge later to maint).
> (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
> (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
> (merge af91b0230c dl/ignore-docs later to maint).
> (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
> (merge e041d0781b ar/t4150-remove-cruft later to maint).
> (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
> (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
> (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
> (merge a7256debd4 nd/checkout-m-doc-update later to maint).
> (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
> (merge 0b918b75af sg/t5318-cleanup later to maint).
> (merge 68ed71b53c cb/doco-mono later to maint).
> (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
> (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
> (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
> (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
> (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
> (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
> (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
> (merge d8083e4180 km/t3000-retitle later to maint).
> (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
> (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
> (merge 6804ba3a58 cw/diff-highlight later to maint).
> (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
> (merge d9ef573837 jk/apache-lsan later to maint).
> (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
> (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
> (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
> (merge d4907720a2 cm/notes-comment-fix later to maint).
> (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
> (merge 4c785c0edc js/rebase-config-bitfix later to maint).
> (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.21.0 are as follows:
>
>Alban Gruin (18):
> sequencer: changes in parse_insn_buffer()
> sequencer: make the todo_list structure public
> sequencer: remove the 'arg' field from todo_item
> sequencer: refactor transform_todos() to work on a todo_list
> sequencer: introduce todo_list_write_to_file()
> sequencer: refactor check_todo_list() to work on a todo_list
> sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
> sequencer: refactor rearrange_squash() to work on a todo_list
> sequencer: make sequencer_make_script() write its script to a strbuf
> sequencer: change complete_action() to use the refactored functions
> rebase--interactive: move sequencer_add_exec_commands()
> rebase--interactive: move rearrange_squash_in_todo_file()
> sequencer: refactor skip_unnecessary_picks() to work on a todo_list
> rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
> rebase-interactive: append_todo_help() changes
> rebase-interactive: rewrite edit_todo_list() to handle the initial edit
> sequencer: use edit_todo_list() in complete_action()
> rebase--interactive: move transform_todo_file()
>
>Alessandro Menti (1):
> l10n: it.po: Updated Italian translation
>
>Alexander Blesius (1):
> doc: fix typos in man pages
>
>Alexander Shopov (4):
> gitk: Update Bulgarian translation (317t)
> l10n: bg.po: Updated Bulgarian translation (4577t)
> l10n: bg.po: Updated Bulgarian translation (4580t)
> l10n: bg.po: Updated Bulgarian translation (4581t)
>
>Anders Waldenborg (7):
> doc: group pretty-format.txt placeholders descriptions
> pretty: allow %(trailers) options with explicit value
> pretty: single return path in %(trailers) handling
> pretty: allow showing specific trailers
> pretty: add support for "valueonly" option in %(trailers)
> strbuf: separate callback for strbuf_expand:ing literals
> pretty: add support for separator option in %(trailers)
>
>Andreas Heiduk (1):
> revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
>Andrei Rybak (1):
> t4150: remove unused variable
>
>Baruch Siach (1):
> send-email: don't cc *-by lines with '-' prefix
>
>Beat Bolli (1):
> unicode: update the width tables to Unicode 12
>
>Ben Peart (1):
> read-cache: add post-index-change hook
>
>Boxuan Li (1):
> t4253-am-keep-cr-dos: avoid using pipes
>
>Brandon Richardson (1):
> commit-tree: utilize parse-options api
>
>Carlo Marcelo Arenas Belón (1):
> http-push: prevent format overflow warning with gcc >= 9
>
>Chris Mayo (1):
> notes: correct documentation of format_display_notes()
>
>Chris. Webster (1):
> diff-highlight: use correct /dev/null for UNIX and Windows
>
>Christian Couder (5):
> t6050: use test_line_count instead of wc -l
> t6050: redirect expected error output to a file
> replace: peel tag when passing a tag as parent to --graft
> replace: peel tag when passing a tag first to --graft
> list-objects-filter: disable 'sparse:path' filters
>
>Christopher Díaz Riveros (3):
> l10n: es: 2.22.0 round 1
> l10n: es: 2.22.0 round 2
> l10n: es: 2.22.0 round 3
>
>Clément Chigot (2):
> Makefile: use fileno macro work around on AIX
> git-compat-util: work around for access(X_OK) under root
>
>Corentin BOMPARD (2):
> doc/CodingGuidelines: URLs and paths as monospace
> doc: format pathnames and URLs as monospace.
>
>Cédric Malard (1):
> l10n: fr.po: Review French translation
>
>Damien Robert (1):
> ref-filter: use correct branch for %(push:track)
>
>Daniels Umanovskis (1):
> branch: introduce --show-current display option
>
>David Aguilar (2):
> mergetools: add support for smerge (Sublime Merge)
> contrib/completion: add smerge to the mergetool completion candidates
>
>David Kastrup (1):
> blame.c: don't drop origin blobs as eagerly
>
>Denton Liu (38):
> completion: complete git submodule absorbgitdirs
> git-submodule.txt: "--branch <branch>" option defaults to 'master'
> submodule--helper: teach config subcommand --unset
> submodule: document default behavior
> git-reset.txt: clarify documentation
> git-clean.txt: clarify ignore pattern files
> docs: move core.excludesFile from git-add to gitignore
> contrib/subtree: ensure only one rev is provided
> midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> tag: fix formatting
> submodule: teach set-branch subcommand
> tag: advise on nested tags
> t7600: clean up style
> t3507: clean up style
> t7604: clean up style
> t7502: clean up style
> commit: extract cleanup_mode functions to sequencer
> parse-options.h: extract common --cleanup option
> merge: cleanup messages like commit
> merge: add scissors line on merge conflict
> cherry-pick/revert: add scissors line on merge conflict
> t7610: unsuppress output
> t7610: add mergetool --gui tests
> *.[ch]: remove extern from function declarations using spatch
> *.[ch]: remove extern from function declarations using sed
> *.[ch]: manually align parameter lists
> t2018: cleanup in current test
> branch: make create_branch accept a merge base rev
> revisions.txt: change "rev" to "<rev>"
> revisions.txt: mark optional rev arguments with []
> revisions.txt: mention <rev>~ form
> tag: fix typo in nested tagging hint
> mergetool: use get_merge_tool function
> mergetool--lib: create gui_mode function
> mergetool: fallback to tool when guitool unavailable
> difftool: make --gui, --tool and --extcmd mutually exclusive
> difftool: fallback on merge.guitool
>
>Derrick Stolee (4):
> trace2:data: pack-objects: add trace2 regions
> midx: pass a repository pointer
> midx: add packs to packed_git linked list
> trace2: add variable description to git.txt
>
>Dustin Spicuzza (1):
> cvsexportcommit: force crlf translation
>
>Elijah Newren (24):
> log,diff-tree: add --combined-all-paths option
> merge-options.txt: correct wording of --no-commit option
> t9300: demonstrate bug with get-mark and empty orphan commits
> git-fast-import.txt: fix wording about where ls command can appear
> fast-import: check most prominent commands first
> fast-import: only allow cat-blob requests where it makes sense
> fast-import: fix erroneous handling of get-mark with empty orphan commits
> Use 'unsigned short' for mode, like diff_filespec does
> merge-recursive: rename merge_options argument from 'o' to 'opt'
> merge-recursive: rename diff_filespec 'one' to 'o'
> merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
> merge-recursive: use 'ci' for rename_conflict_info variable name
> merge-recursive: move some struct declarations together
> merge-recursive: shrink rename_conflict_info
> merge-recursive: remove ren[12]_other fields from rename_conflict_info
> merge-recursive: track branch where rename occurred in rename struct
> merge-recursive: cleanup handle_rename_* function signatures
> merge-recursive: switch from (oid,mode) pairs to a diff_filespec
> t6043: fix copied test description to match its purpose
> merge-recursive: track information associated with directory renames
> merge-recursive: give callers of handle_content_merge() access to contents
> merge-recursive: switch directory rename detection default
> Honor core.precomposeUnicode in more places
> merge-recursive: restore accidentally dropped setting of path
>
>Emily Shaffer (1):
> gitsubmodules: align html and nroff lists
>
>Eric Sunshine (1):
> check-non-portable-shell: support Perl versions older than 5.10
>
>Eric Wong (1):
> repack: enable bitmaps by default on bare repos
>
>Fangyi Zhou (1):
> l10n: zh_CN: Revision for git v2.22.0 l10n
>
>Jean-Noël Avila (6):
> l10n: fr.po remove obsolete entries
> Doc: fix misleading asciidoc formating
> l10n: fr.po v2.22.0.rnd1
> diff: fix mistake in translatable strings
> l10n: fr.po v2.22.0 round 2
> l10n: fr v2.22.0 rnd 3
>
>Jeff Hostetler (30):
> trace2: Documentation/technical/api-trace2.txt
> trace2: create new combined trace facility
> trace2: collect Windows-specific process information
> trace2:data: add trace2 regions to wt-status
> trace2:data: add editor/pager child classification
> trace2:data: add trace2 sub-process classification
> trace2:data: add trace2 transport child classification
> trace2:data: add subverb to checkout command
> trace2:data: add subverb to reset command
> trace2:data: add trace2 hook classification
> trace2:data: add subverb for rebase
> trace2:data: add trace2 instrumentation to index read/write
> trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
> trace2: add for_each macros to clang-format
> progress: add sparse mode to force 100% complete message
> trace2:data: add trace2 data to midx
> midx: add progress indicators in multi-pack-index verify
> midx: during verify group objects by packfile to speed verification
> config: initialize opts structure in repo_read_config()
> trace2: refactor setting process starting time
> trace2: add absolute elapsed time to start event
> trace2: find exec-dir before trace2 initialization
> config: add read_very_early_config()
> trace2: use system/global config for default trace2 settings
> trace2: report peak memory usage of the process
> trace2: clarify UTC datetime formatting
> trace2: make SIDs more unique
> trace2: update docs to describe system/global config settings
> trace2: fixup access problem on /etc/gitconfig in read_very_early_config
> trace2: fix tracing when NO_PTHREADS is defined
>
>Jeff King (92):
> prune: lazily perform reachability traversal
> prune: use bitmaps for reachability traversal
> prune: check SEEN flag for reachability
> t5304: rename "sha1" variables to "oid"
> diff: drop options parameter from diffcore_fix_diff_index()
> diff: drop unused color reset parameters
> diff: drop unused emit data parameter from sane_truncate_line()
> diff: drop complete_rewrite parameter from run_external_diff()
> merge-recursive: drop several unused parameters
> pack-objects: drop unused parameter from oe_map_new_pack()
> files-backend: drop refs parameter from split_symref_update()
> ref-filter: drop unused buf/sz pairs
> ref-filter: drop unused "obj" parameters
> ref-filter: drop unused "sz" parameters
> diff: reuse diff setup for --no-index case
> bisect: use string arguments to feed internal diff-tree
> bisect: fix internal diff-tree config loading
> bisect: make diff-tree output prettier
> fetch: avoid calling write_or_die()
> fetch: ignore SIGPIPE during network operation
> rev-list: allow cached objects in existence check
> doc/fsck: clarify --connectivity-only behavior
> fsck: always compute USED flags for unreachable objects
> compat/bswap: add include header guards
> config: document --type=color output is a complete line
> line-log: suppress diff output with "-s"
> line-log: detect unsupported formats
> point pull requesters to GitGitGadget
> Makefile: fix unaligned loads in sha1dc with UBSan
> t5310: correctly remove bitmaps for jgit test
> pack-objects: default to writing bitmap hash-cache
> perf-lib.sh: rely on test-lib.sh for --tee handling
> revision: drop some unused "revs" parameters
> log: drop unused rev_info from early output
> log: drop unused "len" from show_tagger()
> update-index: drop unused prefix_length parameter from do_reupdate()
> test-date: drop unused "now" parameter from parse_dates()
> unpack-trees: drop name_entry from traverse_by_cache_tree()
> unpack-trees: drop unused error_type parameters
> report_path_error(): drop unused prefix parameter
> fetch_pack(): drop unused parameters
> parse-options: drop unused ctx parameter from show_gitcomp()
> pretty: drop unused "type" parameter in needs_rfc2047_encoding()
> pretty: drop unused strbuf from parse_padding_placeholder()
> git: read local config in --list-cmds
> completion: fix multiple command removals
> parse_opt_ref_sorting: always use with NONEG flag
> refs/files-backend: handle packed transaction prepare failure
> refs/files-backend: don't look at an aborted transaction
> http: factor out curl result code normalization
> http: normalize curl results for dumb loose and alternates fetches
> http: use normalize_curl_result() instead of manual conversion
> revision: use a prio_queue to hold rewritten parents
> get_commit_tree(): return NULL for broken tree
> rev-list: let traversal die when --missing is not in use
> rev-list: detect broken root trees
> test-prio-queue: use xmalloc
> xdiff: use git-compat-util
> xdiff: use xmalloc/xrealloc
> progress: use xmalloc/xcalloc
> t5516: drop ok=sigpipe from unreachable-want tests
> t5530: check protocol response for "not our ref"
> upload-pack: send ERR packet for non-tip objects
> pkt-line: prepare buffer before handling ERR packets
> fetch: use free_refs()
> remote.c: make singular free_ref() public
> fetch: do not consider peeled tags as advertised tips
> packfile.h: drop extern from function declarations
> pack-revindex: open index if necessary
> t5319: fix bogus cat-file argument
> t5319: drop useless --buffer from cat-file
> midx: check both pack and index names for containment
> packfile: fix pack basename computation
> http: simplify parsing of remote objects/info/packs
> server-info: fix blind pointer arithmetic
> server-info: simplify cleanup in parse_pack_def()
> server-info: use strbuf to read old info/packs file
> server-info: drop nr_alloc struct member
> server-info: drop objdirlen pointer arithmetic
> update_info_refs(): drop unused force parameter
> t5304: add a test for pruning with bitmaps
> untracked-cache: be defensive about missing NULs in index
> untracked-cache: simplify parsing by dropping "next"
> untracked-cache: simplify parsing by dropping "len"
> p5302: create the repo in each index-pack test
> doc/ls-files: put nested list for "-t" option into block
> t/perf: depend on perl JSON only when using --codespeed
> t/perf: add perf script for partial clones
> coccicheck: optionally batch spatch invocations
> t/lib-httpd: pass LSAN_OPTIONS through apache
> coccicheck: make batch size of 0 mean "unlimited"
> get_oid: handle NULL repo->index
>
>Jiang Xin (9):
> t5323: test cases for git-pack-redundant
> pack-redundant: delay creation of unique_objects
> pack-redundant: rename pack_list.all_objects
> pack-redundant: consistent sort method
> l10n: git.pot: v2.22.0 round 1 (270 new, 56 removed)
> l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
> i18n: fix typos found during l10n for git 2.22.0
> l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
> l10n: zh_CN: for git v2.22.0 l10n round 1~3
>
>Joel Teichroeb (5):
> stash: improve option parsing test coverage
> stash: convert apply to builtin
> stash: convert drop and clear to builtin
> stash: convert branch to builtin
> stash: convert pop to builtin
>
>Joey Hess (1):
> convert: avoid malloc of original file size
>
>Johannes Schindelin (67):
> ident: add the ability to provide a "fallback identity"
> travis: remove the hack to build the Windows job on Azure Pipelines
> tests: let --stress-limit=<N> imply --stress
> tests: introduce --stress-jobs=<N>
> built-in rebase: no need to check out `onto` twice
> built-in rebase: use the correct reflog when switching branches
> built-in rebase: demonstrate that ORIG_HEAD is not set correctly
> built-in rebase: set ORIG_HEAD just once, before the rebase
> Makefile: use `git ls-files` to list header files, if possible
> curl: anonymize URLs in error messages and warnings
> remote-curl: mark all error messages for translation
> stash: add back the original, scripted `git stash`
> stash: optionally use the scripted version again
> tests: add a special setup where stash.useBuiltin is off
> legacy stash: fix "rudimentary backport of -q"
> built-in stash: handle :(glob) pathspecs again
> mingw: drop MakeMaker reference
> mingw: allow building with an MSYS2 runtime v3.x
> rebase: deprecate --preserve-merges
> mingw: respect core.hidedotfiles = false in git-init again
> test-lib: introduce 'test_atexit'
> git-daemon: use 'test_atexit` to stop 'git-daemon'
> git p4 test: use 'test_atexit' to kill p4d and the watchdog process
> rebase -i: demonstrate obscure loose object cache bug
> sequencer: improve error message when an OID could not be parsed
> sequencer: move stale comment into correct location
> get_oid(): when an object was not found, try harder
> difftool: remove obsolete (and misleading) comment
> parse-options: make OPT_ARGUMENT() more useful
> difftool: allow running outside Git worktrees with --no-index
> docs: move gitremote-helpers into section 7
> docs: do not document the `git remote-testgit` command
> check-docs: really look at the documented commands again
> check-docs: do not expect guide pages to correspond to commands
> check-docs: fix for setups where executables have an extension
> tests (rebase): spell out the `--keep-empty` option
> tests (rebase): spell out the `--force-rebase` option
> t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
> t5531: avoid using an abbreviated option
> tests (push): do not abbreviate the `--follow-tags` option
> tests (status): spell out the `--find-renames` option in full
> tests (pack-objects): use the full, unabbreviated `--revs` option
> t3301: fix false negative
> untracked cache: fix off-by-one
> tests: disallow the use of abbreviated options (by default)
> t9822: skip tests if file names cannot be ISO-8859-1 encoded
> macOS: make sure that gettext is found
> remote-testgit: move it into the support directory for t5801
> Makefile: drop the NO_INSTALL variable
> help -a: do not list commands that are excluded from the build
> check-docs: allow command-list.txt to contain excluded commands
> docs: exclude documentation for commands that have been excluded
> check-docs: do not bother checking for legacy scripts' documentation
> test-tool: handle the `-C <directory>` option just like `git`
> Turn `git serve` into a test helper
> t5580: verify that alternates can be UNC paths
> fsmonitor: demonstrate that it is not refreshed after discard_index()
> fsmonitor: force a refresh after the index was discarded
> t6500(mingw): use the Windows PID of the shell
> difftool --no-index: error out on --dir-diff (and don't crash)
> status: fix display of rebase -ir's `label` command
> parse-options: adjust `parse_opt_unknown_cb()`s declared return type
> stash: document stash.useBuiltin
> rebase: replace incorrect logical negation by correct bitwise one
> tests: mark a couple more test cases as requiring `rebase -p`
> docs: say that `--rebase=preserve` is deprecated
> rebase docs: recommend `-r` over `-p`
>
>Jonathan Tan (25):
> remote-curl: reduce scope of rpc_state.argv
> remote-curl: reduce scope of rpc_state.stdin_preamble
> remote-curl: reduce scope of rpc_state.result
> remote-curl: refactor reading into rpc_state's buf
> remote-curl: use post_rpc() for protocol v2 also
> tests: define GIT_TEST_PROTOCOL_VERSION
> t5601: check ssh command only with protocol v0
> tests: always test fetch of unreachable with v0
> t5503: fix overspecification of trace expectation
> t5512: compensate for v0 only sending HEAD symrefs
> t5700: only run with protocol version 1
> tests: fix protocol version for overspecifications
> t5552: compensate for v2 filtering ref adv.
> submodule: explain first attempt failure clearly
> t5551: mark half-auth no-op fetch test as v0-only
> fetch-pack: call prepare_shallow_info only if v0
> fetch-pack: respect --no-update-shallow in v2
> sha1-file: support OBJECT_INFO_FOR_PREFETCH
> fetch-pack: binary search when storing wanted-refs
> diff: batch fetching of missing blobs
> pack-objects: write objects packed to trace2
> transport: die if server options are unsupported
> clone: send server options when using protocol v2
> worktree: update is_bare heuristics
> fetch-pack: send server options after command
>
>Jordi Mas (2):
> l10n: Fixes to Catalan translation
> l10n: Update Catalan translation
>
>Josh Steadmon (5):
> protocol-capabilities.txt: document symref
> trace2: write to directory targets
> clone: do faster object check for partial clones
> trace2: fix incorrect function pointer check
> commit-graph: fix memory leak
>
>Junio C Hamano (19):
> test: caution on our version of 'yes'
> builtin/log: downcase the beginning of error messages
> format-patch: notice failure to open cover letter for writing
> Start 2.22 cycle
> The second batch
> The third batch
> The fourth batch
> gettext tests: export the restored GIT_TEST_GETTEXT_POISON
> The fifth batch
> The sixth batch
> Makefile: dedup list of files obtained from ls-files
> The seventh batch
> The eighth batch
> Git 2.22-rc0
> pkt-line: drop 'const'-ness of a param to set_packet_header()
> Git 2.22-rc1
> Git 2.22-rc2
> Git 2.22-rc3
> Git 2.22
>
>Kyle Meyer (5):
> rebase docs: fix "gitlink" typo
> submodule: refuse to add repository with no commits
> dir: do not traverse repositories with no commits
> add: error appropriately on repository with no commits
> t3000 (ls-files -o): widen description to reflect current tests
>
>Martin Ågren (14):
> setup: free old value before setting `work_tree`
> setup: fix memory leaks with `struct repository_format`
> config/diff.txt: drop spurious backtick
> config/fsck.txt: avoid starting line with dash
> git.txt: remove empty line before list continuation
> git-svn.txt: drop escaping '\' that ends up being rendered
> Documentation: turn middle-of-line tabs into spaces
> Documentation/Makefile: add missing xsl dependencies for manpages
> Documentation/Makefile: add missing dependency on asciidoctor-extensions
> asciidoctor-extensions: fix spurious space after linkgit
> Doc: auto-detect changed build flags
> doc-diff: let `render_tree()` take an explicit directory name
> doc-diff: support diffing from/to AsciiDoc(tor)
> doc-diff: add `--cut-header-footer`
>
>Matthew Kraai (1):
> t3903: add test for --intent-to-add file
>
>Matthias Rüster (2):
> l10n: TEAMS: Change German translation team leader
> l10n: de.po: Update German translation
>
>Michal Suchanek (1):
> worktree: fix worktree add race
>
>Mike Hommey (2):
> fix pack protocol example client/server communication
> Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
>Nguyễn Thái Ngọc Duy (129):
> parse-options.h: remove extern on function prototypes
> parse-options: add one-shot mode
> parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
> parse-options: add OPT_BITOP()
> parse-options: stop abusing 'callback' for lowlevel callbacks
> parse-options: avoid magic return codes
> parse-options: allow ll_callback with OPTION_CALLBACK
> diff.h: keep forward struct declarations sorted
> diff.h: avoid bit fields in struct diff_flags
> diff.c: prepare to use parse_options() for parsing
> diff.c: convert -u|-p|--patch
> diff.c: convert -U|--unified
> diff.c: convert -W|--[no-]function-context
> diff.c: convert --raw
> read-cache.c: fix writing "link" index ext with null base oid
> completion: add more parameter value completion
> diff-parseopt: convert --patch-with-raw
> diff-parseopt: convert --numstat and --shortstat
> diff-parseopt: convert --dirstat and friends
> diff-parseopt: convert --check
> diff-parseopt: convert --summary
> diff-parseopt: convert --patch-with-stat
> diff-parseopt: convert --name-only
> diff-parseopt: convert --name-status
> diff-parseopt: convert -s|--no-patch
> diff-parseopt: convert --stat*
> diff-parseopt: convert --[no-]compact-summary
> diff-parseopt: convert --output-*
> diff-parseopt: convert -B|--break-rewrites
> diff-parseopt: convert -M|--find-renames
> diff-parseopt: convert -D|--irreversible-delete
> diff-parseopt: convert -C|--find-copies
> diff-parseopt: convert --find-copies-harder
> diff-parseopt: convert --no-renames|--[no--rename-empty
> diff-parseopt: convert --relative
> diff-parseopt: convert --[no-]minimal
> diff-parseopt: convert --ignore-some-changes
> Delete check-racy.c
> diff-parseopt: convert --[no-]indent-heuristic
> diff-parseopt: convert --patience
> diff-parseopt: convert --histogram
> diff-parseopt: convert --diff-algorithm
> diff-parseopt: convert --anchored
> diff-parseopt: convert --binary
> diff-parseopt: convert --full-index
> diff-parseopt: convert -a|--text
> diff-parseopt: convert -R
> diff-parseopt: convert --[no-]follow
> diff-parseopt: convert --[no-]color
> diff-parseopt: convert --word-diff
> diff-parseopt: convert --word-diff-regex
> diff-parseopt: convert --color-words
> diff-parseopt: convert --exit-code
> diff-parseopt: convert --quiet
> diff-parseopt: convert --ext-diff
> diff-parseopt: convert --textconv
> diff-parseopt: convert --ignore-submodules
> diff-parseopt: convert --submodule
> files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
> files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
> Make sure refs/rewritten/ is per-worktree
> unpack-trees: fix oneway_merge accidentally carry over stage index
> checkout.txt: note about losing staged changes with --merge
> commit: improve error message in "-a <paths>" case
> unpack-trees: keep gently check inside add_rejected_path
> unpack-trees: rename "gently" flag to "quiet"
> read-tree: add --quiet
> checkout: prevent losing staged changes with --merge
> diff-parseopt: convert --ws-error-highlight
> diff-parseopt: convert --ita-[in]visible-in-index
> diff-parseopt: convert -z
> diff-parseopt: convert -l
> diff-parseopt: convert -S|-G
> diff-parseopt: convert --pickaxe-all|--pickaxe-regex
> diff-parseopt: convert -O
> diff-parseopt: convert --find-object
> diff-parseopt: convert --diff-filter
> diff-parseopt: convert --[no-]abbrev
> diff-parseopt: convert --[src|dst]-prefix
> diff-parseopt: convert --line-prefix
> diff-parseopt: convert --no-prefix
> diff-parseopt: convert --inter-hunk-context
> diff-parseopt: convert --[no-]color-moved
> diff-parseopt: convert --color-moved-ws
> diff.c: allow --no-color-moved-ws
> range-diff: use parse_options() instead of diff_opt_parse()
> diff --no-index: use parse_options() instead of diff_opt_parse()
> am: avoid diff_opt_parse()
> config: correct '**' matching in includeIf patterns
> interpret-trailers.txt: start the desc line with a capital letter
> read-tree.txt: clarify --reset and worktree changes
> packfile.c: add repo_approximate_object_count()
> refs.c: add refs_ref_exists()
> refs.c: add refs_shorten_unambiguous_ref()
> refs.c: remove the_repo from substitute_branch_name()
> refs.c: remove the_repo from expand_ref()
> refs.c: add repo_dwim_ref()
> refs.c: add repo_dwim_log()
> refs.c: remove the_repo from read_ref_at()
> submodule foreach: fix "<command> --quiet" not being respected
> commit.cocci: refactor code, avoid double rewrite
> commit.c: add repo_get_commit_tree()
> sha1-name.c: remove the_repo from sort_ambiguous()
> sha1-name.c: remove the_repo from find_abbrev_len_packed()
> sha1-name.c: add repo_find_unique_abbrev_r()
> sha1-name.c: store and use repo in struct disambiguate_state
> sha1-name.c: add repo_for_each_abbrev()
> sha1-name.c: remove the_repo from get_short_oid()
> sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
> sha1-name.c: remove the_repo from interpret_branch_mark()
> sha1-name.c: add repo_interpret_branch_name()
> sha1-name.c: remove the_repo from get_oid_oneline()
> sha1-name.c: remove the_repo from get_describe_name()
> sha1-name.c: remove the_repo from get_oid_basic()
> sha1-name.c: remove the_repo from get_oid_1()
> sha1-name.c: remove the_repo from handle_one_ref()
> sha1-name.c: remove the_repo from diagnose_invalid_index_path()
> sha1-name.c: remove the_repo from resolve_relative_path()
> sha1-name.c: remove the_repo from get_oid_with_context_1()
> sha1-name.c: add repo_get_oid()
> submodule-config.c: use repo_get_oid for reading .gitmodules
> sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
> sha1-name.c: remove the_repo from other get_oid_*
> sha1-name.c: remove the_repo from get_oid_mb()
> parse-options: don't emit "ambiguous option" for aliases
> submodule--helper: add a missing \n
> diff-parseopt: correct variable types that are used by parseopt
> diff-parseopt: restore -U (no argument) behavior
> parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
>Paul-Sebastian Ungureanu (17):
> sha1-name.c: add `get_oidf()` which acts like `get_oid()`
> strbuf.c: add `strbuf_join_argv()`
> strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
> t3903: modernize style
> stash: rename test cases to be more descriptive
> stash: add tests for `git stash show` config
> stash: mention options in `show` synopsis
> stash: convert list to builtin
> stash: convert show to builtin
> stash: convert store to builtin
> stash: convert create to builtin
> stash: convert push to builtin
> stash: make push -q quiet
> stash: convert save to builtin
> stash: optimize `get_untracked_files()` and `check_changes()`
> stash: replace all `write-tree` child processes with API calls
> stash: convert `stash--helper.c` into `stash.c`
>
>Peter Krefting (2):
> l10n: sv.po: Update Swedish translation
> l10n: sv.po: Update Swedish translation (4577t0f0u)
>
>Philip Oakley (2):
> rerere doc: quote `rerere.enabled`
> describe doc: remove '7-char' abbreviation reference
>
>Phillip Wood (21):
> am/cherry-pick/rebase/revert: document --rerere-autoupdate
> merge: tweak --rerere-autoupdate documentation
> sequencer: break some long lines
> cherry-pick: demonstrate option amnesia
> cherry-pick --continue: remember options
> commit/reset: try to clean up sequencer state
> fix cherry-pick/revert status after commit
> sequencer: fix cleanup with --signoff and -x
> sequencer.c: save and restore cleanup mode
> sequencer: always discard index after checkout
> rebase: don't translate trace strings
> rebase: rename write_basic_state()
> rebase: use OPT_RERERE_AUTOUPDATE()
> rebase -i: combine rebase--interactive.c with rebase.c
> rebase -i: remove duplication
> rebase -i: use struct commit when parsing options
> rebase -i: use struct object_id for squash_onto
> rebase -i: use struct rebase_options to parse args
> rebase -i: use struct rebase_options in do_interactive_rebase()
> rebase: use a common action enum
> rebase -i: run without forking rebase--interactive
>
>Ralf Thielow (1):
> l10n: de.po: improve description of 'git reset --quiet'
>
>Ramsay Jones (2):
> prune-packed: check for too many arguments
> Makefile: fix 'hdr-check' when GCRYPT not installed
>
>René Scharfe (1):
> get-tar-commit-id: parse comment record
>
>Robert P. J. Day (3):
> mention use of "hooks.allownonascii" in "man githooks"
> docs/git-gc: fix typo "--prune=all" to "--prune=now"
> attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
>Rohit Ashiwal (3):
> test functions: add function `test_file_not_empty`
> t3600: modernize style
> t3600: use helpers to replace test -d/f/e/s <path>
>
>SZEDER Gábor (27):
> test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
> t/lib-git-daemon: make sure to kill the 'git-daemon' process
> tests: use 'test_atexit' to stop httpd
> t0301-credential-cache: use 'test_atexit' to stop the credentials helper
> git p4 test: clean up the p4d cleanup functions
> git p4 test: simplify timeout handling
> git p4 test: disable '-x' tracing in the p4d watchdog loop
> t9811-git-p4-label-import: fix pipeline negation
> t5318-commit-graph: remove unused variable
> Documentation/git-diff-tree.txt: fix formatting
> Documentation/technical/api-config.txt: fix formatting
> Documentation/technical/protocol-v2.txt: fix formatting
> ci: install Asciidoctor in 'ci/install-dependencies.sh'
> index-pack: show progress while checking objects
> ci: stick with Asciidoctor v1.5.8 for now
> ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
> progress: make display_progress() return void
> progress: assemble percentage and counters in a strbuf before printing
> blame: default to HEAD in a bare repo when no start commit is given
> builtin rebase: use FREE_AND_NULL
> builtin rebase: use oideq()
> progress: clear previous progress update dynamically
> progress: break too long progress bar lines
> ci: install 'libsvn-perl' instead of 'git-svn'
> trace2: rename environment variables to GIT_TRACE2*
> trace2: document the supported values of GIT_TRACE2* env variables
> progress: avoid empty line when breaking the progress line
>
>Sun Chao (2):
> pack-redundant: delete redundant code
> pack-redundant: new algorithm to find min packs
>
>Sven Strickroth (1):
> MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
>Tanushree Tumane (1):
> mingw: remove obsolete IPv6-related code
>
>Taylor Blau (4):
> t: move 'hex2oct' into test-lib-functions.sh
> t: introduce tests for unexpected object types
> list-objects.c: handle unexpected non-blob entries
> list-objects.c: handle unexpected non-tree entries
>
>Thomas Gummerer (15):
> move worktree tests to t24*
> entry: factor out unlink_entry function
> entry: support CE_WT_REMOVE flag in checkout_entry
> read-cache: add invalidate parameter to remove_marked_cache_entries
> checkout: clarify comment
> checkout: factor out mark_cache_entry_for_checkout function
> checkout: introduce --{,no-}overlay option
> checkout: introduce checkout.overlayMode config
> revert "checkout: introduce checkout.overlayMode config"
> ident: don't require calling prepare_fallback_ident first
> stash: drop unused parameter
> stash: pass pathspec as pointer
> glossary: add definition for overlay
> stash: setup default diff output format if necessary
> ls-files: use correct format string
>
>Todd Zullinger (9):
> t4038-diff-combined: quote paths with whitespace
> t9902: test multiple removals via completion.commands
> completion: use __git when calling --list-cmds
> Documentation/rev-list-options: wrap --date=<format> block with "--"
> Documentation/git-status: fix titles in porcelain v2 section
> Documentation/git-svn: improve asciidoctor compatibility
> Documentation/git-show-branch: avoid literal {apostrophe}
> test-lib: try harder to ensure a working jgit
> RelNotes: minor typo fixes in 2.22.0 draft
>
>Torsten Bögershausen (1):
> trace2: NULL is not allowed for va_list
>
>Trần Ngọc Quân (4):
> l10n: Updated Vietnamese translation for v2.21 rd2
> l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1
> l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
> l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3
>
>Vadim Kochan (1):
> autoconf: #include <libintl.h> when checking for gettext()
>
>William Hubbs (1):
> config: allow giving separate author and committer idents
>
>Yash Bhatambare (1):
> gitattributes.txt: fix typo
>
>brian m. carlson (35):
> t/lib-submodule-update: use appropriate length constant
> khash: move oid hash table definition
> pack-bitmap: make bitmap header handling hash agnostic
> pack-bitmap: convert struct stored_bitmap to object_id
> pack-bitmap: replace sha1_to_hex
> pack-bitmap: switch hard-coded constants to the_hash_algo
> pack-bitmap: switch hash tables to use struct object_id
> submodule: avoid hard-coded constants
> notes-merge: switch to use the_hash_algo
> notes: make hash size independent
> notes: replace sha1_to_hex
> object-store: rename and expand packed_git's sha1 member
> builtin/name-rev: make hash-size independent
> fast-import: make hash-size independent
> fast-import: replace sha1_to_hex
> builtin/am: make hash size independent
> builtin/pull: make hash-size independent
> http-push: convert to use the_hash_algo
> http-backend: allow 64-character hex names
> http-push: remove remaining uses of sha1_to_hex
> http-walker: replace sha1_to_hex
> http: replace hard-coded constant with the_hash_algo
> http: compute hash of downloaded objects using the_hash_algo
> http: replace sha1_to_hex
> remote-curl: make hash size independent
> hash: add a function to lookup hash algorithm by length
> builtin/get-tar-commit-id: make hash size independent
> archive: convert struct archiver_args to object_id
> refspec: make hash size independent
> builtin/difftool: use parse_oid_hex
> dir: make untracked cache extension hash size independent
> read-cache: read data in a hash-independent way
> Git.pm: make hash size independent
> gitweb: make hash size independent
> send-email: default to quoted-printable when CR is present
>
>Ævar Arnfjörð Bjarmason (44):
> receive-pack: fix use-after-free bug
> commit-graph tests: split up corrupt_graph_and_verify()
> commit-graph tests: test a graph that's too small
> Makefile: remove an out-of-date comment
> Makefile: move "strip" assignment down from flags
> Makefile: add/remove comments at top and tweak whitespace
> Makefile: Move *_LIBS assignment into its own section
> Makefile: move the setting of *FLAGS closer to "include"
> Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
> gc: remove redundant check for gc_auto_threshold
> gc: convert to using the_hash_algo
> gc: refactor a "call me once" pattern
> reflog tests: make use of "test_config" idiom
> reflog tests: test for the "points nowhere" warning
> rebase: remove the rebase.useBuiltin setting
> gc docs: modernize the advice for manually running "gc"
> gc docs: stop noting "repack" flags
> gc docs: clean grammar for "gc.bigPackThreshold"
> commit-graph: fix segfault on e.g. "git status"
> commit-graph: don't early exit(1) on e.g. "git status"
> commit-graph: don't pass filename to load_commit_graph_one_fd_st()
> commit-graph verify: detect inability to read the graph
> commit-graph write: don't die if the existing graph is corrupt
> commit-graph: improve & i18n error messages
> reflog tests: assert lack of early exit with expiry="never"
> gc: handle & check gc.reflogExpire config
> test-lib: whitelist GIT_TR2_* in the environment
> gc docs: include the "gc.*" section from "config" in "gc"
> gc docs: re-flow the "gc.*" section in "config"
> gc docs: fix formatting for "gc.writeCommitGraph"
> gc docs: note how --aggressive impacts --window & --depth
> gc docs: downplay the usefulness of --aggressive
> gc docs: note "gc --aggressive" in "fast-import"
> gc docs: clarify that "gc" doesn't throw away referenced objects
> gc docs: remove incorrect reference to gc.auto=0
> perf README: correct docs for 3c8f12c96c regression
> perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
> perf-lib.sh: make "./run <revisions>" use the correct gits
> perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
> perf tests: add "bindir" prefix to git tree test results
> perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
> trace2: fix up a missing "leave" entry point
> trace2: fix up a missing "leave" entry point
> sha1dc: update from upstream
>
>İsmail Dönmez (2):
> mingw: do not let ld strip relocations
> mingw: enable DEP and ASLR
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.22.0
@ 2019-06-07 21:31 2% Junio C Hamano
2019-06-07 22:48 0% ` Bhaskar Chowdhury
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-06-07 21:31 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.22.0 is now available at the
usual places. It is comprised of 745 non-merge commits since
v2.21.0, contributed by 74 people, 18 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.22.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.21.0 are as follows.
Welcome to the Git development community!
Alexander Blesius, Baruch Siach, Boxuan Li, Cédric Malard,
Chris Mayo, Chris. Webster, Clément Chigot, Corentin BOMPARD,
Damien Robert, Dustin Spicuzza, Emily Shaffer, Michal Suchanek,
Rohit Ashiwal, Sun Chao, Tanushree Tumane, Vadim Kochan,
William Hubbs, and Yash Bhatambare.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alessandro Menti,
Alexander Shopov, Anders Waldenborg, Andreas Heiduk, Andrei
Rybak, Beat Bolli, Ben Peart, Brandon Richardson, brian
m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
Christopher Díaz Riveros, Daniels Umanovskis, David Aguilar,
David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
Sunshine, Eric Wong, Fangyi Zhou, İsmail Dönmez, Jean-Noël
Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joel Teichroeb,
Joey Hess, Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh
Steadmon, Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew
Kraai, Matthias Rüster, Mike Hommey, Nguyễn Thái Ngọc
Duy, Paul-Sebastian Ungureanu, Peter Krefting, Philip Oakley,
Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe, Robert
P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau, Thomas
Gummerer, Todd Zullinger, Torsten Bögershausen, and Trần
Ngọc Quân.
----------------------------------------------------------------
Git 2.22 Release Notes
======================
Updates since v2.21
-------------------
Backward compatibility note
* The filter specification "--filter=sparse:path=<path>" used to
create a lazy/partial clone has been removed. Using a blob that is
part of the project as sparse specification is still supported with
the "--filter=sparse:oid=<blob>" option.
UI, Workflows & Features
* "git checkout --no-overlay" can be used to trigger a new mode of
checking out paths out of the tree-ish, that allows paths that
match the pathspec that are in the current index and working tree
and are not in the tree-ish.
* The %(trailers) formatter in "git log --format=..." now allows to
optionally pick trailers selectively by keyword, show only values,
etc.
* Four new configuration variables {author,committer}.{name,email}
have been introduced to override user.{name,email} in more specific
cases.
* Command-line completion (in contrib/) learned to tab-complete the
"git submodule absorbgitdirs" subcommand.
* "git branch" learned a new subcommand "--show-current".
* Output from "diff --cc" did not show the original paths when the
merge involved renames. A new option adds the paths in the
original trees to the output.
* The command line completion (in contrib/) has been taught to
complete more subcommand parameters.
* The final report from "git bisect" used to show the suspected
culprit using a raw "diff-tree", with which there is no output for
a merge commit. This has been updated to use a more modern and
human readable output that still is concise enough.
* "git rebase --rebase-merges" replaces its old "--preserve-merges"
option; the latter is now marked as deprecated.
* Error message given while cloning with --recurse-submodules has
been updated.
* The completion helper code now pays attention to repository-local
configuration (when available), which allows --list-cmds to honour
a repository specific setting of completion.commands, for example.
* "git mergetool" learned to offer Sublime Merge (smerge) as one of
its backends.
* A new hook "post-index-change" is called when the on-disk index
file changes, which can help e.g. a virtualized working tree
implementation.
* "git difftool" can now run outside a repository.
* "git checkout -m <other>" was about carrying the differences
between HEAD and the working-tree files forward while checking out
another branch, and ignored the differences between HEAD and the
index. The command has been taught to abort when the index and the
HEAD are different.
* A progress indicator has been added to the "index-pack" step, which
often makes users wait for completion during "git clone".
* "git submodule" learns "set-branch" subcommand that allows the
submodule.*.branch settings to be modified.
* "git merge-recursive" backend recently learned a new heuristics to
infer file movement based on how other files in the same directory
moved. As this is inherently less robust heuristics than the one
based on the content similarity of the file itself (rather than
based on what its neighbours are doing), it sometimes gives an
outcome unexpected by the end users. This has been toned down to
leave the renamed paths in higher/conflicted stages in the index so
that the user can examine and confirm the result.
* "git tag" learned to give an advice suggesting it might be a
mistake when creating an annotated or signed tag that points at
another tag.
* The "git pack-objects" command learned to report the number of
objects it packed via the trace2 mechanism.
* The list of conflicted paths shown in the editor while concluding a
conflicted merge was shown above the scissors line when the
clean-up mode is set to "scissors", even though it was commented
out just like the list of updated paths and other information to
help the user explain the merge better.
* The trace2 tracing facility learned to auto-generate a filename
when told to log to a directory.
* "git clone" learned a new --server-option option when talking over
the protocol version 2.
* The connectivity bitmaps are created by default in bare
repositories now; also the pathname hash-cache is created by
default to avoid making crappy deltas when repacking.
* "git branch new A...B" and "git checkout -b new A...B" have been
taught that in their contexts, the notation A...B means "the merge
base between these two commits", just like "git checkout A...B"
detaches HEAD at that commit.
* Update "git difftool" and "git mergetool" so that the combinations
of {diff,merge}.{tool,guitool} configuration variables serve as
fallback settings of each other in a sensible order.
* The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
mode; they are now explicitly marked as mutually incompatible.
Performance, Internal Implementation, Development Support etc.
* The diff machinery, one of the oldest parts of the system, which
long predates the parse-options API, uses fairly long and complex
handcrafted option parser. This is being rewritten to use the
parse-options API.
* The implementation of pack-redundant has been updated for
performance in a repository with many packfiles.
* A more structured way to obtain execution trace has been added.
* "git prune" has been taught to take advantage of reachability
bitmap when able.
* The command line parser of "git commit-tree" has been rewritten to
use the parse-options API.
* Suggest GitGitGadget instead of submitGit as a way to submit
patches based on GitHub PR to us.
* The test framework has been updated to help developers by making it
easier to run most of the tests under different versions of
over-the-wire protocols.
* Dev support update to make it easier to compare two formatted
results from our documentation.
* The scripted "git rebase" implementation has been retired.
* "git multi-pack-index verify" did not scale well with the number of
packfiles, which is being improved.
* "git stash" has been rewritten in C.
* The "check-docs" Makefile target to support developers has been
updated.
* The tests have been updated not to rely on the abbreviated option
names the parse-options API offers, to protect us from an
abbreviated form of an option that used to be unique within the
command getting non-unique when a new option that share the same
prefix is added.
* The scripted version of "git rebase -i" wrote and rewrote the todo
list many times during a single step of its operation, and the
recent C-rewrite made a faithful conversion of the logic to C. The
implementation has been updated to carry necessary information
around in-core to avoid rewriting the same file over and over
unnecessarily.
* Test framework update to more robustly clean up leftover files and
processes after tests are done.
* Conversion from unsigned char[20] to struct object_id continues.
* While running "git diff" in a lazy clone, we can upfront know which
missing blobs we will need, instead of waiting for the on-demand
machinery to discover them one by one. The code learned to aim to
achieve better performance by batching the request for these
promised blobs.
* During an initial "git clone --depth=..." partial clone, it is
pointless to spend cycles for a large portion of the connectivity
check that enumerates and skips promisor objects (which by
definition is all objects fetched from the other side). This has
been optimized out.
* Mechanically and systematically drop "extern" from function
declaration.
* The script to aggregate perf result unconditionally depended on
libjson-perl even though it did not have to, which has been
corrected.
* The internal implementation of "git rebase -i" has been updated to
avoid forking a separate "rebase--interactive" process.
* Allow DEP and ASLR for Windows build to for security hardening.
* Performance test framework has been broken and measured the version
of Git that happens to be on $PATH, not the specified one to
measure, for a while, which has been corrected.
* Optionally "make coccicheck" can feed multiple source files to
spatch, gaining performance while spending more memory.
* Attempt to use an abbreviated option in "git clone --recurs" is
responded by a request to disambiguate between --recursive and
--recurse-submodules, which is bad because these two are synonyms.
The parse-options API has been extended to define such synonyms
more easily and not produce an unnecessary failure.
* A pair of private functions in http.c that had names similar to
fread/fwrite did not return the number of elements, which was found
to be confusing.
* Update collision-detecting SHA-1 code to build properly on HP-UX.
Fixes since v2.21
-----------------
* "git prune-packed" did not notice and complain against excess
arguments given from the command line, which now it does.
(merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
* Split-index fix.
(merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
* "git diff --no-index" may still want to access Git goodies like
--ext-diff and --textconv, but so far these have been ignored,
which has been corrected.
(merge 287ab28bfa jk/diff-no-index-initialize later to maint).
* Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
a bug in the latter (lack of authentication retry) and generally
improves the code base.
(merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
* The include file compat/bswap.h has been updated so that it is safe
to (accidentally) include it more than once.
(merge 33aa579a55 jk/guard-bswap-header later to maint).
* The set of header files used by "make hdr-check" unconditionally
included sha256/gcrypt.h, even when it is not used, causing the
make target to fail. We now skip it when GCRYPT_SHA256 is not in
use.
(merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
* The Makefile uses 'find' utility to enumerate all the *.h header
files, which is expensive on platforms with slow filesystems; it
now optionally uses "ls-files" if working within a repository,
which is a trick similar to how all sources are enumerated to run
ETAGS on.
(merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
* "git rebase" that was reimplemented in C did not set ORIG_HEAD
correctly, which has been corrected.
(merge cbd29ead92 js/rebase-orig-head-fix later to maint).
* Dev support.
(merge f545737144 js/stress-test-ui-tweak later to maint).
* CFLAGS now can be tweaked when invoking Make while using
DEVELOPER=YesPlease; this did not work well before.
(merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
* "git fsck --connectivity-only" omits computation necessary to sift
the objects that are not reachable from any of the refs into
unreachable and dangling. This is now enabled when dangling
objects are requested (which is done by default, but can be
overridden with the "--no-dangling" option).
(merge 8d8c2a5aef jk/fsck-doc later to maint).
* On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
the upload-pack that runs on the other end that hangs up after
detecting an error could cause "git fetch" to die with a signal,
which led to a flaky test. "git fetch" now ignores SIGPIPE during
the network portion of its operation (this is not a problem as we
check the return status from our write(2)s).
(merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
* A recent update broke "is this object available to us?" check for
well-known objects like an empty tree (which should yield "yes",
even when there is no on-disk object for an empty tree), which has
been corrected.
(merge f06ab027ef jk/virtual-objects-do-exist later to maint).
* The setup code has been cleaned up to avoid leaks around the
repository_format structure.
(merge e8805af1c3 ma/clear-repository-format later to maint).
* "git config --type=color ..." is meant to replace "git config --get-color"
but there is a slight difference that wasn't documented, which is
now fixed.
(merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
* When the "clean" filter can reduce the size of a huge file in the
working tree down to a small "token" (a la Git LFS), there is no
point in allocating a huge scratch area upfront, but the buffer is
sized based on the original file size. The convert mechanism now
allocates very minimum and reallocates as it receives the output
from the clean filter process.
(merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
* "git rebase" uses the refs/rewritten/ hierarchy to store its
intermediate states, which inherently makes the hierarchy per
worktree, but it didn't quite work well.
(merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
* "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
output as it should. This has been corrected.
(merge 05314efaea jk/line-log-with-patch later to maint).
* "git worktree add" used to do a "find an available name with stat
and then mkdir", which is race-prone. This has been fixed by using
mkdir and reacting to EEXIST in a loop.
(merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
* Build update for SHA-1 with collision detection.
(merge 07a20f569b jk/sha1dc later to maint).
* Build procedure has been fixed around use of asciidoctor instead of
asciidoc.
(merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
* remote-http transport did not anonymize URLs reported in its error
messages at places.
(merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
* Error messages given from the http transport have been updated so
that they can be localized.
(merge ed8b4132c8 js/remote-curl-i18n later to maint).
* "git init" forgot to read platform-specific repository
configuration, which made Windows port to ignore settings of
core.hidedotfiles, for example.
* A corner-case object name ambiguity while the sequencer machinery
is working (e.g. "rebase -i -x") has been fixed.
* "git format-patch" did not diagnose an error while opening the
output file for the cover-letter, which has been corrected.
(merge 2fe95f494c jc/format-patch-error-check later to maint).
* "git checkout -f <branch>" while the index has an unmerged path
incorrectly left some paths in an unmerged state, which has been
corrected.
* A corner case bug in the refs API has been corrected.
(merge d3322eb28b jk/refs-double-abort later to maint).
* Unicode update.
(merge 584b62c37b bb/unicode-12 later to maint).
* dumb-http walker has been updated to share more error recovery
strategy with the normal codepath.
* A buglet in configuration parser has been fixed.
(merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
* The documentation for "git read-tree --reset -u" has been updated.
(merge b5a0bd694c nd/read-tree-reset-doc later to maint).
* Code clean-up around a much-less-important-than-it-used-to-be
update_server_info() function.
(merge b3223761c8 jk/server-info-rabbit-hole later to maint).
* The message given when "git commit -a <paths>" errors out has been
updated.
(merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
* "git cherry-pick --options A..B", after giving control back to the
user to ask help resolving a conflicted step, did not honor the
options it originally received, which has been corrected.
* Various glitches in "git gc" around reflog handling have been fixed.
* The code to read from commit-graph file has been cleanup with more
careful error checking before using data read from it.
* Performance fix around "git fetch" that grabs many refs.
(merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
* Protocol v2 support in "git fetch-pack" of shallow clones has been
corrected.
* Performance fix around "git blame", especially in a linear history
(which is the norm we should optimize for).
(merge f892014943 dk/blame-keep-origin-blob later to maint).
* Performance fix for "rev-list --parents -- pathspec".
(merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
* Updating the display with progress message has been cleaned up to
deal better with overlong messages.
(merge 545dc345eb sg/overlong-progress-fix later to maint).
* "git blame -- path" in a non-bare repository starts blaming from
the working tree, and the same command in a bare repository errors
out because there is no working tree by definition. The command
has been taught to instead start blaming from the commit at HEAD,
which is more useful.
(merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
* An underallocation in the code to read the untracked cache
extension has been corrected.
(merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
* The code is updated to check the result of memory allocation before
it is used in more places, by using xmalloc and/or xcalloc calls.
(merge 999b951b28 jk/xmalloc later to maint).
* The GETTEXT_POISON test option has been quite broken ever since it
was made runtime-tunable, which has been fixed.
(merge f88b9cb603 jc/gettext-test-fix later to maint).
* Test fix on APFS that is incapable of store paths in Latin-1.
(merge 3889149619 js/iso8895-test-on-apfs later to maint).
* "git submodule foreach <command> --quiet" did not pass the option
down correctly, which has been corrected.
(merge a282f5a906 nd/submodule-foreach-quiet later to maint).
* "git send-email" has been taught to use quoted-printable when the
payload contains carriage-return. The use of the mechanism is in
line with the design originally added the codepath that chooses QP
when the payload has overly long lines.
(merge 74d76a1701 bc/send-email-qp-cr later to maint).
* The recently added feature to add addresses that are on
anything-by: trailers in 'git send-email' was found to be way too
eager and considered nonsense strings as if they can be legitimate
beginning of *-by: trailer. This has been tightened.
* Builds with gettext broke on recent macOS w/ Homebrew, which
seems to have stopped including from /usr/local/include; this
has been corrected.
(merge 92a1377a2a js/macos-gettext-build later to maint).
* Running "git add" on a repository created inside the current
repository is an explicit indication that the user wants to add it
as a submodule, but when the HEAD of the inner repository is on an
unborn branch, it cannot be added as a submodule. Worse, the files
in its working tree can be added as if they are a part of the outer
repository, which is not what the user wants. These problems are
being addressed.
(merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
* "git cherry-pick" run with the "-x" or the "--signoff" option used
to (and more importantly, ought to) clean up the commit log message
with the --cleanup=space option by default, but this has been
broken since late 2017. This has been fixed.
* When given a tag that points at a commit-ish, "git replace --graft"
failed to peel the tag before writing a replace ref, which did not
make sense because the old graft mechanism the feature wants to
mimic only allowed to replace one commit object with another.
This has been fixed.
(merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
* Code tightening against a "wrong" object appearing where an object
of a different type is expected, instead of blindly assuming that
the connection between objects are correctly made.
(merge 97dd512af7 tb/unexpected later to maint).
* An earlier update for MinGW and Cygwin accidentally broke MSVC build,
which has been fixed.
(merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
* %(push:track) token used in the --format option to "git
for-each-ref" and friends was not showing the right branch, which
has been fixed.
(merge c646d0934e dr/ref-filter-push-track-fix later to maint).
* "make check-docs", "git help -a", etc. did not account for cases
where a particular build may deliberately omit some subcommands,
which has been corrected.
* The logic to tell if a Git repository has a working tree protects
"git branch -D" from removing the branch that is currently checked
out by mistake. The implementation of this logic was broken for
repositories with unusual name, which unfortunately is the norm for
submodules these days. This has been fixed.
(merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
* AIX shared the same build issues with other BSDs around fileno(fp),
which has been corrected.
(merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
* The autoconf generated configure script failed to use the right
gettext() implementations from -libintl by ignoring useless stub
implementations shipped in some C library, which has been
corrected.
(merge b71e56a683 vk/autoconf-gettext later to maint).
* Fix index-pack perf test so that the repeated invocations always
run in an empty repository, which emulates the initial clone
situation better.
(merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
* A "ls-files" that emulates "find" to enumerate files in the working
tree resulted in duplicated Makefile rules that caused the build to
issue an unnecessary warning during a trial build after merge
conflicts are resolved in working tree *.h files but before the
resolved results are added to the index. This has been corrected.
* "git cherry-pick" (and "revert" that shares the same runtime engine)
that deals with multiple commits got confused when the final step
gets stopped with a conflict and the user concluded the sequence
with "git commit". Attempt to fix it by cleaning up the state
files used by these commands in such a situation.
(merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
* On a filesystem like HFS+, the names of the refs stored as filesystem
entities may become different from what the end-user expects, just
like files in the working tree get "renamed". Work around the
mismatch by paying attention to the core.precomposeUnicode
configuration.
(merge 8e712ef6fc en/unicode-in-refnames later to maint).
* The code to generate the multi-pack idx file was not prepared to
see too many packfiles and ran out of open file descriptor, which
has been corrected.
* To run tests for Git SVN, our scripts for CI used to install the
git-svn package (in the hope that it would bring in the right
dependencies). This has been updated to install the more direct
dependency, namely, libsvn-perl.
(merge db864306cf sg/ci-libsvn-perl later to maint).
* "git cvsexportcommit" running on msys did not expect cvsnt showed
"cvs status" output with CRLF line endings.
* The fsmonitor interface got out of sync after the in-core index
file gets discarded, which has been corrected.
(merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
* "git status" did not know that the "label" instruction in the
todo-list "rebase -i -r" uses should not be shown as a hex object
name.
* A prerequisite check in the test suite to see if a working jgit is
available was made more robust.
(merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
* The codepath to parse :<path> that obtains the object name for an
indexed object has been made more robust.
* Code cleanup, docfix, build fix, etc.
(merge 11f470aee7 jc/test-yes-doc later to maint).
(merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
(merge 5c326d1252 jk/unused-params later to maint).
(merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
(merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
(merge 1ede45e44b en/merge-options-doc later to maint).
(merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
(merge c271dc28fd nd/no-more-check-racy later to maint).
(merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
(merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
(merge 716a5af812 rd/gc-prune-doc-fix later to maint).
(merge 50b206371d js/untravis-windows later to maint).
(merge dbf47215e3 js/rebase-recreate-merge later to maint).
(merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
(merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
(merge af91b0230c dl/ignore-docs later to maint).
(merge 59a06e947b ra/t3600-test-path-funcs later to maint).
(merge e041d0781b ar/t4150-remove-cruft later to maint).
(merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
(merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
(merge ed31851fa6 ab/doc-misc-typofixes later to maint).
(merge a7256debd4 nd/checkout-m-doc-update later to maint).
(merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
(merge 0b918b75af sg/t5318-cleanup later to maint).
(merge 68ed71b53c cb/doco-mono later to maint).
(merge a34dca2451 nd/interpret-trailers-docfix later to maint).
(merge cf7b857a77 en/fast-import-parsing-fix later to maint).
(merge fe61ccbc35 po/rerere-doc-fmt later to maint).
(merge ffea0248bf po/describe-not-necessarily-7 later to maint).
(merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
(merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
(merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
(merge d8083e4180 km/t3000-retitle later to maint).
(merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
(merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
(merge 6804ba3a58 cw/diff-highlight later to maint).
(merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
(merge d9ef573837 jk/apache-lsan later to maint).
(merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
(merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
(merge 397a46db78 js/t5580-unc-alternate-test later to maint).
(merge d4907720a2 cm/notes-comment-fix later to maint).
(merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
(merge 4c785c0edc js/rebase-config-bitfix later to maint).
(merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
----------------------------------------------------------------
Changes since v2.21.0 are as follows:
Alban Gruin (18):
sequencer: changes in parse_insn_buffer()
sequencer: make the todo_list structure public
sequencer: remove the 'arg' field from todo_item
sequencer: refactor transform_todos() to work on a todo_list
sequencer: introduce todo_list_write_to_file()
sequencer: refactor check_todo_list() to work on a todo_list
sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
sequencer: refactor rearrange_squash() to work on a todo_list
sequencer: make sequencer_make_script() write its script to a strbuf
sequencer: change complete_action() to use the refactored functions
rebase--interactive: move sequencer_add_exec_commands()
rebase--interactive: move rearrange_squash_in_todo_file()
sequencer: refactor skip_unnecessary_picks() to work on a todo_list
rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
rebase-interactive: append_todo_help() changes
rebase-interactive: rewrite edit_todo_list() to handle the initial edit
sequencer: use edit_todo_list() in complete_action()
rebase--interactive: move transform_todo_file()
Alessandro Menti (1):
l10n: it.po: Updated Italian translation
Alexander Blesius (1):
doc: fix typos in man pages
Alexander Shopov (4):
gitk: Update Bulgarian translation (317t)
l10n: bg.po: Updated Bulgarian translation (4577t)
l10n: bg.po: Updated Bulgarian translation (4580t)
l10n: bg.po: Updated Bulgarian translation (4581t)
Anders Waldenborg (7):
doc: group pretty-format.txt placeholders descriptions
pretty: allow %(trailers) options with explicit value
pretty: single return path in %(trailers) handling
pretty: allow showing specific trailers
pretty: add support for "valueonly" option in %(trailers)
strbuf: separate callback for strbuf_expand:ing literals
pretty: add support for separator option in %(trailers)
Andreas Heiduk (1):
revisions.txt: remove ambibuity between <rev>:<path> and :<path>
Andrei Rybak (1):
t4150: remove unused variable
Baruch Siach (1):
send-email: don't cc *-by lines with '-' prefix
Beat Bolli (1):
unicode: update the width tables to Unicode 12
Ben Peart (1):
read-cache: add post-index-change hook
Boxuan Li (1):
t4253-am-keep-cr-dos: avoid using pipes
Brandon Richardson (1):
commit-tree: utilize parse-options api
Carlo Marcelo Arenas Belón (1):
http-push: prevent format overflow warning with gcc >= 9
Chris Mayo (1):
notes: correct documentation of format_display_notes()
Chris. Webster (1):
diff-highlight: use correct /dev/null for UNIX and Windows
Christian Couder (5):
t6050: use test_line_count instead of wc -l
t6050: redirect expected error output to a file
replace: peel tag when passing a tag as parent to --graft
replace: peel tag when passing a tag first to --graft
list-objects-filter: disable 'sparse:path' filters
Christopher Díaz Riveros (3):
l10n: es: 2.22.0 round 1
l10n: es: 2.22.0 round 2
l10n: es: 2.22.0 round 3
Clément Chigot (2):
Makefile: use fileno macro work around on AIX
git-compat-util: work around for access(X_OK) under root
Corentin BOMPARD (2):
doc/CodingGuidelines: URLs and paths as monospace
doc: format pathnames and URLs as monospace.
Cédric Malard (1):
l10n: fr.po: Review French translation
Damien Robert (1):
ref-filter: use correct branch for %(push:track)
Daniels Umanovskis (1):
branch: introduce --show-current display option
David Aguilar (2):
mergetools: add support for smerge (Sublime Merge)
contrib/completion: add smerge to the mergetool completion candidates
David Kastrup (1):
blame.c: don't drop origin blobs as eagerly
Denton Liu (38):
completion: complete git submodule absorbgitdirs
git-submodule.txt: "--branch <branch>" option defaults to 'master'
submodule--helper: teach config subcommand --unset
submodule: document default behavior
git-reset.txt: clarify documentation
git-clean.txt: clarify ignore pattern files
docs: move core.excludesFile from git-add to gitignore
contrib/subtree: ensure only one rev is provided
midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
tag: fix formatting
submodule: teach set-branch subcommand
tag: advise on nested tags
t7600: clean up style
t3507: clean up style
t7604: clean up style
t7502: clean up style
commit: extract cleanup_mode functions to sequencer
parse-options.h: extract common --cleanup option
merge: cleanup messages like commit
merge: add scissors line on merge conflict
cherry-pick/revert: add scissors line on merge conflict
t7610: unsuppress output
t7610: add mergetool --gui tests
*.[ch]: remove extern from function declarations using spatch
*.[ch]: remove extern from function declarations using sed
*.[ch]: manually align parameter lists
t2018: cleanup in current test
branch: make create_branch accept a merge base rev
revisions.txt: change "rev" to "<rev>"
revisions.txt: mark optional rev arguments with []
revisions.txt: mention <rev>~ form
tag: fix typo in nested tagging hint
mergetool: use get_merge_tool function
mergetool--lib: create gui_mode function
mergetool: fallback to tool when guitool unavailable
difftool: make --gui, --tool and --extcmd mutually exclusive
difftool: fallback on merge.guitool
Derrick Stolee (4):
trace2:data: pack-objects: add trace2 regions
midx: pass a repository pointer
midx: add packs to packed_git linked list
trace2: add variable description to git.txt
Dustin Spicuzza (1):
cvsexportcommit: force crlf translation
Elijah Newren (24):
log,diff-tree: add --combined-all-paths option
merge-options.txt: correct wording of --no-commit option
t9300: demonstrate bug with get-mark and empty orphan commits
git-fast-import.txt: fix wording about where ls command can appear
fast-import: check most prominent commands first
fast-import: only allow cat-blob requests where it makes sense
fast-import: fix erroneous handling of get-mark with empty orphan commits
Use 'unsigned short' for mode, like diff_filespec does
merge-recursive: rename merge_options argument from 'o' to 'opt'
merge-recursive: rename diff_filespec 'one' to 'o'
merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
merge-recursive: use 'ci' for rename_conflict_info variable name
merge-recursive: move some struct declarations together
merge-recursive: shrink rename_conflict_info
merge-recursive: remove ren[12]_other fields from rename_conflict_info
merge-recursive: track branch where rename occurred in rename struct
merge-recursive: cleanup handle_rename_* function signatures
merge-recursive: switch from (oid,mode) pairs to a diff_filespec
t6043: fix copied test description to match its purpose
merge-recursive: track information associated with directory renames
merge-recursive: give callers of handle_content_merge() access to contents
merge-recursive: switch directory rename detection default
Honor core.precomposeUnicode in more places
merge-recursive: restore accidentally dropped setting of path
Emily Shaffer (1):
gitsubmodules: align html and nroff lists
Eric Sunshine (1):
check-non-portable-shell: support Perl versions older than 5.10
Eric Wong (1):
repack: enable bitmaps by default on bare repos
Fangyi Zhou (1):
l10n: zh_CN: Revision for git v2.22.0 l10n
Jean-Noël Avila (6):
l10n: fr.po remove obsolete entries
Doc: fix misleading asciidoc formating
l10n: fr.po v2.22.0.rnd1
diff: fix mistake in translatable strings
l10n: fr.po v2.22.0 round 2
l10n: fr v2.22.0 rnd 3
Jeff Hostetler (30):
trace2: Documentation/technical/api-trace2.txt
trace2: create new combined trace facility
trace2: collect Windows-specific process information
trace2:data: add trace2 regions to wt-status
trace2:data: add editor/pager child classification
trace2:data: add trace2 sub-process classification
trace2:data: add trace2 transport child classification
trace2:data: add subverb to checkout command
trace2:data: add subverb to reset command
trace2:data: add trace2 hook classification
trace2:data: add subverb for rebase
trace2:data: add trace2 instrumentation to index read/write
trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
trace2: add for_each macros to clang-format
progress: add sparse mode to force 100% complete message
trace2:data: add trace2 data to midx
midx: add progress indicators in multi-pack-index verify
midx: during verify group objects by packfile to speed verification
config: initialize opts structure in repo_read_config()
trace2: refactor setting process starting time
trace2: add absolute elapsed time to start event
trace2: find exec-dir before trace2 initialization
config: add read_very_early_config()
trace2: use system/global config for default trace2 settings
trace2: report peak memory usage of the process
trace2: clarify UTC datetime formatting
trace2: make SIDs more unique
trace2: update docs to describe system/global config settings
trace2: fixup access problem on /etc/gitconfig in read_very_early_config
trace2: fix tracing when NO_PTHREADS is defined
Jeff King (92):
prune: lazily perform reachability traversal
prune: use bitmaps for reachability traversal
prune: check SEEN flag for reachability
t5304: rename "sha1" variables to "oid"
diff: drop options parameter from diffcore_fix_diff_index()
diff: drop unused color reset parameters
diff: drop unused emit data parameter from sane_truncate_line()
diff: drop complete_rewrite parameter from run_external_diff()
merge-recursive: drop several unused parameters
pack-objects: drop unused parameter from oe_map_new_pack()
files-backend: drop refs parameter from split_symref_update()
ref-filter: drop unused buf/sz pairs
ref-filter: drop unused "obj" parameters
ref-filter: drop unused "sz" parameters
diff: reuse diff setup for --no-index case
bisect: use string arguments to feed internal diff-tree
bisect: fix internal diff-tree config loading
bisect: make diff-tree output prettier
fetch: avoid calling write_or_die()
fetch: ignore SIGPIPE during network operation
rev-list: allow cached objects in existence check
doc/fsck: clarify --connectivity-only behavior
fsck: always compute USED flags for unreachable objects
compat/bswap: add include header guards
config: document --type=color output is a complete line
line-log: suppress diff output with "-s"
line-log: detect unsupported formats
point pull requesters to GitGitGadget
Makefile: fix unaligned loads in sha1dc with UBSan
t5310: correctly remove bitmaps for jgit test
pack-objects: default to writing bitmap hash-cache
perf-lib.sh: rely on test-lib.sh for --tee handling
revision: drop some unused "revs" parameters
log: drop unused rev_info from early output
log: drop unused "len" from show_tagger()
update-index: drop unused prefix_length parameter from do_reupdate()
test-date: drop unused "now" parameter from parse_dates()
unpack-trees: drop name_entry from traverse_by_cache_tree()
unpack-trees: drop unused error_type parameters
report_path_error(): drop unused prefix parameter
fetch_pack(): drop unused parameters
parse-options: drop unused ctx parameter from show_gitcomp()
pretty: drop unused "type" parameter in needs_rfc2047_encoding()
pretty: drop unused strbuf from parse_padding_placeholder()
git: read local config in --list-cmds
completion: fix multiple command removals
parse_opt_ref_sorting: always use with NONEG flag
refs/files-backend: handle packed transaction prepare failure
refs/files-backend: don't look at an aborted transaction
http: factor out curl result code normalization
http: normalize curl results for dumb loose and alternates fetches
http: use normalize_curl_result() instead of manual conversion
revision: use a prio_queue to hold rewritten parents
get_commit_tree(): return NULL for broken tree
rev-list: let traversal die when --missing is not in use
rev-list: detect broken root trees
test-prio-queue: use xmalloc
xdiff: use git-compat-util
xdiff: use xmalloc/xrealloc
progress: use xmalloc/xcalloc
t5516: drop ok=sigpipe from unreachable-want tests
t5530: check protocol response for "not our ref"
upload-pack: send ERR packet for non-tip objects
pkt-line: prepare buffer before handling ERR packets
fetch: use free_refs()
remote.c: make singular free_ref() public
fetch: do not consider peeled tags as advertised tips
packfile.h: drop extern from function declarations
pack-revindex: open index if necessary
t5319: fix bogus cat-file argument
t5319: drop useless --buffer from cat-file
midx: check both pack and index names for containment
packfile: fix pack basename computation
http: simplify parsing of remote objects/info/packs
server-info: fix blind pointer arithmetic
server-info: simplify cleanup in parse_pack_def()
server-info: use strbuf to read old info/packs file
server-info: drop nr_alloc struct member
server-info: drop objdirlen pointer arithmetic
update_info_refs(): drop unused force parameter
t5304: add a test for pruning with bitmaps
untracked-cache: be defensive about missing NULs in index
untracked-cache: simplify parsing by dropping "next"
untracked-cache: simplify parsing by dropping "len"
p5302: create the repo in each index-pack test
doc/ls-files: put nested list for "-t" option into block
t/perf: depend on perl JSON only when using --codespeed
t/perf: add perf script for partial clones
coccicheck: optionally batch spatch invocations
t/lib-httpd: pass LSAN_OPTIONS through apache
coccicheck: make batch size of 0 mean "unlimited"
get_oid: handle NULL repo->index
Jiang Xin (9):
t5323: test cases for git-pack-redundant
pack-redundant: delay creation of unique_objects
pack-redundant: rename pack_list.all_objects
pack-redundant: consistent sort method
l10n: git.pot: v2.22.0 round 1 (270 new, 56 removed)
l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
i18n: fix typos found during l10n for git 2.22.0
l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
l10n: zh_CN: for git v2.22.0 l10n round 1~3
Joel Teichroeb (5):
stash: improve option parsing test coverage
stash: convert apply to builtin
stash: convert drop and clear to builtin
stash: convert branch to builtin
stash: convert pop to builtin
Joey Hess (1):
convert: avoid malloc of original file size
Johannes Schindelin (67):
ident: add the ability to provide a "fallback identity"
travis: remove the hack to build the Windows job on Azure Pipelines
tests: let --stress-limit=<N> imply --stress
tests: introduce --stress-jobs=<N>
built-in rebase: no need to check out `onto` twice
built-in rebase: use the correct reflog when switching branches
built-in rebase: demonstrate that ORIG_HEAD is not set correctly
built-in rebase: set ORIG_HEAD just once, before the rebase
Makefile: use `git ls-files` to list header files, if possible
curl: anonymize URLs in error messages and warnings
remote-curl: mark all error messages for translation
stash: add back the original, scripted `git stash`
stash: optionally use the scripted version again
tests: add a special setup where stash.useBuiltin is off
legacy stash: fix "rudimentary backport of -q"
built-in stash: handle :(glob) pathspecs again
mingw: drop MakeMaker reference
mingw: allow building with an MSYS2 runtime v3.x
rebase: deprecate --preserve-merges
mingw: respect core.hidedotfiles = false in git-init again
test-lib: introduce 'test_atexit'
git-daemon: use 'test_atexit` to stop 'git-daemon'
git p4 test: use 'test_atexit' to kill p4d and the watchdog process
rebase -i: demonstrate obscure loose object cache bug
sequencer: improve error message when an OID could not be parsed
sequencer: move stale comment into correct location
get_oid(): when an object was not found, try harder
difftool: remove obsolete (and misleading) comment
parse-options: make OPT_ARGUMENT() more useful
difftool: allow running outside Git worktrees with --no-index
docs: move gitremote-helpers into section 7
docs: do not document the `git remote-testgit` command
check-docs: really look at the documented commands again
check-docs: do not expect guide pages to correspond to commands
check-docs: fix for setups where executables have an extension
tests (rebase): spell out the `--keep-empty` option
tests (rebase): spell out the `--force-rebase` option
t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
t5531: avoid using an abbreviated option
tests (push): do not abbreviate the `--follow-tags` option
tests (status): spell out the `--find-renames` option in full
tests (pack-objects): use the full, unabbreviated `--revs` option
t3301: fix false negative
untracked cache: fix off-by-one
tests: disallow the use of abbreviated options (by default)
t9822: skip tests if file names cannot be ISO-8859-1 encoded
macOS: make sure that gettext is found
remote-testgit: move it into the support directory for t5801
Makefile: drop the NO_INSTALL variable
help -a: do not list commands that are excluded from the build
check-docs: allow command-list.txt to contain excluded commands
docs: exclude documentation for commands that have been excluded
check-docs: do not bother checking for legacy scripts' documentation
test-tool: handle the `-C <directory>` option just like `git`
Turn `git serve` into a test helper
t5580: verify that alternates can be UNC paths
fsmonitor: demonstrate that it is not refreshed after discard_index()
fsmonitor: force a refresh after the index was discarded
t6500(mingw): use the Windows PID of the shell
difftool --no-index: error out on --dir-diff (and don't crash)
status: fix display of rebase -ir's `label` command
parse-options: adjust `parse_opt_unknown_cb()`s declared return type
stash: document stash.useBuiltin
rebase: replace incorrect logical negation by correct bitwise one
tests: mark a couple more test cases as requiring `rebase -p`
docs: say that `--rebase=preserve` is deprecated
rebase docs: recommend `-r` over `-p`
Jonathan Tan (25):
remote-curl: reduce scope of rpc_state.argv
remote-curl: reduce scope of rpc_state.stdin_preamble
remote-curl: reduce scope of rpc_state.result
remote-curl: refactor reading into rpc_state's buf
remote-curl: use post_rpc() for protocol v2 also
tests: define GIT_TEST_PROTOCOL_VERSION
t5601: check ssh command only with protocol v0
tests: always test fetch of unreachable with v0
t5503: fix overspecification of trace expectation
t5512: compensate for v0 only sending HEAD symrefs
t5700: only run with protocol version 1
tests: fix protocol version for overspecifications
t5552: compensate for v2 filtering ref adv.
submodule: explain first attempt failure clearly
t5551: mark half-auth no-op fetch test as v0-only
fetch-pack: call prepare_shallow_info only if v0
fetch-pack: respect --no-update-shallow in v2
sha1-file: support OBJECT_INFO_FOR_PREFETCH
fetch-pack: binary search when storing wanted-refs
diff: batch fetching of missing blobs
pack-objects: write objects packed to trace2
transport: die if server options are unsupported
clone: send server options when using protocol v2
worktree: update is_bare heuristics
fetch-pack: send server options after command
Jordi Mas (2):
l10n: Fixes to Catalan translation
l10n: Update Catalan translation
Josh Steadmon (5):
protocol-capabilities.txt: document symref
trace2: write to directory targets
clone: do faster object check for partial clones
trace2: fix incorrect function pointer check
commit-graph: fix memory leak
Junio C Hamano (19):
test: caution on our version of 'yes'
builtin/log: downcase the beginning of error messages
format-patch: notice failure to open cover letter for writing
Start 2.22 cycle
The second batch
The third batch
The fourth batch
gettext tests: export the restored GIT_TEST_GETTEXT_POISON
The fifth batch
The sixth batch
Makefile: dedup list of files obtained from ls-files
The seventh batch
The eighth batch
Git 2.22-rc0
pkt-line: drop 'const'-ness of a param to set_packet_header()
Git 2.22-rc1
Git 2.22-rc2
Git 2.22-rc3
Git 2.22
Kyle Meyer (5):
rebase docs: fix "gitlink" typo
submodule: refuse to add repository with no commits
dir: do not traverse repositories with no commits
add: error appropriately on repository with no commits
t3000 (ls-files -o): widen description to reflect current tests
Martin Ågren (14):
setup: free old value before setting `work_tree`
setup: fix memory leaks with `struct repository_format`
config/diff.txt: drop spurious backtick
config/fsck.txt: avoid starting line with dash
git.txt: remove empty line before list continuation
git-svn.txt: drop escaping '\' that ends up being rendered
Documentation: turn middle-of-line tabs into spaces
Documentation/Makefile: add missing xsl dependencies for manpages
Documentation/Makefile: add missing dependency on asciidoctor-extensions
asciidoctor-extensions: fix spurious space after linkgit
Doc: auto-detect changed build flags
doc-diff: let `render_tree()` take an explicit directory name
doc-diff: support diffing from/to AsciiDoc(tor)
doc-diff: add `--cut-header-footer`
Matthew Kraai (1):
t3903: add test for --intent-to-add file
Matthias Rüster (2):
l10n: TEAMS: Change German translation team leader
l10n: de.po: Update German translation
Michal Suchanek (1):
worktree: fix worktree add race
Mike Hommey (2):
fix pack protocol example client/server communication
Make fread/fwrite-like functions in http.c more like fread/fwrite.
Nguyễn Thái Ngọc Duy (129):
parse-options.h: remove extern on function prototypes
parse-options: add one-shot mode
parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: add OPT_BITOP()
parse-options: stop abusing 'callback' for lowlevel callbacks
parse-options: avoid magic return codes
parse-options: allow ll_callback with OPTION_CALLBACK
diff.h: keep forward struct declarations sorted
diff.h: avoid bit fields in struct diff_flags
diff.c: prepare to use parse_options() for parsing
diff.c: convert -u|-p|--patch
diff.c: convert -U|--unified
diff.c: convert -W|--[no-]function-context
diff.c: convert --raw
read-cache.c: fix writing "link" index ext with null base oid
completion: add more parameter value completion
diff-parseopt: convert --patch-with-raw
diff-parseopt: convert --numstat and --shortstat
diff-parseopt: convert --dirstat and friends
diff-parseopt: convert --check
diff-parseopt: convert --summary
diff-parseopt: convert --patch-with-stat
diff-parseopt: convert --name-only
diff-parseopt: convert --name-status
diff-parseopt: convert -s|--no-patch
diff-parseopt: convert --stat*
diff-parseopt: convert --[no-]compact-summary
diff-parseopt: convert --output-*
diff-parseopt: convert -B|--break-rewrites
diff-parseopt: convert -M|--find-renames
diff-parseopt: convert -D|--irreversible-delete
diff-parseopt: convert -C|--find-copies
diff-parseopt: convert --find-copies-harder
diff-parseopt: convert --no-renames|--[no--rename-empty
diff-parseopt: convert --relative
diff-parseopt: convert --[no-]minimal
diff-parseopt: convert --ignore-some-changes
Delete check-racy.c
diff-parseopt: convert --[no-]indent-heuristic
diff-parseopt: convert --patience
diff-parseopt: convert --histogram
diff-parseopt: convert --diff-algorithm
diff-parseopt: convert --anchored
diff-parseopt: convert --binary
diff-parseopt: convert --full-index
diff-parseopt: convert -a|--text
diff-parseopt: convert -R
diff-parseopt: convert --[no-]follow
diff-parseopt: convert --[no-]color
diff-parseopt: convert --word-diff
diff-parseopt: convert --word-diff-regex
diff-parseopt: convert --color-words
diff-parseopt: convert --exit-code
diff-parseopt: convert --quiet
diff-parseopt: convert --ext-diff
diff-parseopt: convert --textconv
diff-parseopt: convert --ignore-submodules
diff-parseopt: convert --submodule
files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
Make sure refs/rewritten/ is per-worktree
unpack-trees: fix oneway_merge accidentally carry over stage index
checkout.txt: note about losing staged changes with --merge
commit: improve error message in "-a <paths>" case
unpack-trees: keep gently check inside add_rejected_path
unpack-trees: rename "gently" flag to "quiet"
read-tree: add --quiet
checkout: prevent losing staged changes with --merge
diff-parseopt: convert --ws-error-highlight
diff-parseopt: convert --ita-[in]visible-in-index
diff-parseopt: convert -z
diff-parseopt: convert -l
diff-parseopt: convert -S|-G
diff-parseopt: convert --pickaxe-all|--pickaxe-regex
diff-parseopt: convert -O
diff-parseopt: convert --find-object
diff-parseopt: convert --diff-filter
diff-parseopt: convert --[no-]abbrev
diff-parseopt: convert --[src|dst]-prefix
diff-parseopt: convert --line-prefix
diff-parseopt: convert --no-prefix
diff-parseopt: convert --inter-hunk-context
diff-parseopt: convert --[no-]color-moved
diff-parseopt: convert --color-moved-ws
diff.c: allow --no-color-moved-ws
range-diff: use parse_options() instead of diff_opt_parse()
diff --no-index: use parse_options() instead of diff_opt_parse()
am: avoid diff_opt_parse()
config: correct '**' matching in includeIf patterns
interpret-trailers.txt: start the desc line with a capital letter
read-tree.txt: clarify --reset and worktree changes
packfile.c: add repo_approximate_object_count()
refs.c: add refs_ref_exists()
refs.c: add refs_shorten_unambiguous_ref()
refs.c: remove the_repo from substitute_branch_name()
refs.c: remove the_repo from expand_ref()
refs.c: add repo_dwim_ref()
refs.c: add repo_dwim_log()
refs.c: remove the_repo from read_ref_at()
submodule foreach: fix "<command> --quiet" not being respected
commit.cocci: refactor code, avoid double rewrite
commit.c: add repo_get_commit_tree()
sha1-name.c: remove the_repo from sort_ambiguous()
sha1-name.c: remove the_repo from find_abbrev_len_packed()
sha1-name.c: add repo_find_unique_abbrev_r()
sha1-name.c: store and use repo in struct disambiguate_state
sha1-name.c: add repo_for_each_abbrev()
sha1-name.c: remove the_repo from get_short_oid()
sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
sha1-name.c: remove the_repo from interpret_branch_mark()
sha1-name.c: add repo_interpret_branch_name()
sha1-name.c: remove the_repo from get_oid_oneline()
sha1-name.c: remove the_repo from get_describe_name()
sha1-name.c: remove the_repo from get_oid_basic()
sha1-name.c: remove the_repo from get_oid_1()
sha1-name.c: remove the_repo from handle_one_ref()
sha1-name.c: remove the_repo from diagnose_invalid_index_path()
sha1-name.c: remove the_repo from resolve_relative_path()
sha1-name.c: remove the_repo from get_oid_with_context_1()
sha1-name.c: add repo_get_oid()
submodule-config.c: use repo_get_oid for reading .gitmodules
sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
sha1-name.c: remove the_repo from other get_oid_*
sha1-name.c: remove the_repo from get_oid_mb()
parse-options: don't emit "ambiguous option" for aliases
submodule--helper: add a missing \n
diff-parseopt: correct variable types that are used by parseopt
diff-parseopt: restore -U (no argument) behavior
parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
Paul-Sebastian Ungureanu (17):
sha1-name.c: add `get_oidf()` which acts like `get_oid()`
strbuf.c: add `strbuf_join_argv()`
strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
t3903: modernize style
stash: rename test cases to be more descriptive
stash: add tests for `git stash show` config
stash: mention options in `show` synopsis
stash: convert list to builtin
stash: convert show to builtin
stash: convert store to builtin
stash: convert create to builtin
stash: convert push to builtin
stash: make push -q quiet
stash: convert save to builtin
stash: optimize `get_untracked_files()` and `check_changes()`
stash: replace all `write-tree` child processes with API calls
stash: convert `stash--helper.c` into `stash.c`
Peter Krefting (2):
l10n: sv.po: Update Swedish translation
l10n: sv.po: Update Swedish translation (4577t0f0u)
Philip Oakley (2):
rerere doc: quote `rerere.enabled`
describe doc: remove '7-char' abbreviation reference
Phillip Wood (21):
am/cherry-pick/rebase/revert: document --rerere-autoupdate
merge: tweak --rerere-autoupdate documentation
sequencer: break some long lines
cherry-pick: demonstrate option amnesia
cherry-pick --continue: remember options
commit/reset: try to clean up sequencer state
fix cherry-pick/revert status after commit
sequencer: fix cleanup with --signoff and -x
sequencer.c: save and restore cleanup mode
sequencer: always discard index after checkout
rebase: don't translate trace strings
rebase: rename write_basic_state()
rebase: use OPT_RERERE_AUTOUPDATE()
rebase -i: combine rebase--interactive.c with rebase.c
rebase -i: remove duplication
rebase -i: use struct commit when parsing options
rebase -i: use struct object_id for squash_onto
rebase -i: use struct rebase_options to parse args
rebase -i: use struct rebase_options in do_interactive_rebase()
rebase: use a common action enum
rebase -i: run without forking rebase--interactive
Ralf Thielow (1):
l10n: de.po: improve description of 'git reset --quiet'
Ramsay Jones (2):
prune-packed: check for too many arguments
Makefile: fix 'hdr-check' when GCRYPT not installed
René Scharfe (1):
get-tar-commit-id: parse comment record
Robert P. J. Day (3):
mention use of "hooks.allownonascii" in "man githooks"
docs/git-gc: fix typo "--prune=all" to "--prune=now"
attr.c: ".gitattribute" -> ".gitattributes" (comments)
Rohit Ashiwal (3):
test functions: add function `test_file_not_empty`
t3600: modernize style
t3600: use helpers to replace test -d/f/e/s <path>
SZEDER Gábor (27):
test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
t/lib-git-daemon: make sure to kill the 'git-daemon' process
tests: use 'test_atexit' to stop httpd
t0301-credential-cache: use 'test_atexit' to stop the credentials helper
git p4 test: clean up the p4d cleanup functions
git p4 test: simplify timeout handling
git p4 test: disable '-x' tracing in the p4d watchdog loop
t9811-git-p4-label-import: fix pipeline negation
t5318-commit-graph: remove unused variable
Documentation/git-diff-tree.txt: fix formatting
Documentation/technical/api-config.txt: fix formatting
Documentation/technical/protocol-v2.txt: fix formatting
ci: install Asciidoctor in 'ci/install-dependencies.sh'
index-pack: show progress while checking objects
ci: stick with Asciidoctor v1.5.8 for now
ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
progress: make display_progress() return void
progress: assemble percentage and counters in a strbuf before printing
blame: default to HEAD in a bare repo when no start commit is given
builtin rebase: use FREE_AND_NULL
builtin rebase: use oideq()
progress: clear previous progress update dynamically
progress: break too long progress bar lines
ci: install 'libsvn-perl' instead of 'git-svn'
trace2: rename environment variables to GIT_TRACE2*
trace2: document the supported values of GIT_TRACE2* env variables
progress: avoid empty line when breaking the progress line
Sun Chao (2):
pack-redundant: delete redundant code
pack-redundant: new algorithm to find min packs
Sven Strickroth (1):
MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
Tanushree Tumane (1):
mingw: remove obsolete IPv6-related code
Taylor Blau (4):
t: move 'hex2oct' into test-lib-functions.sh
t: introduce tests for unexpected object types
list-objects.c: handle unexpected non-blob entries
list-objects.c: handle unexpected non-tree entries
Thomas Gummerer (15):
move worktree tests to t24*
entry: factor out unlink_entry function
entry: support CE_WT_REMOVE flag in checkout_entry
read-cache: add invalidate parameter to remove_marked_cache_entries
checkout: clarify comment
checkout: factor out mark_cache_entry_for_checkout function
checkout: introduce --{,no-}overlay option
checkout: introduce checkout.overlayMode config
revert "checkout: introduce checkout.overlayMode config"
ident: don't require calling prepare_fallback_ident first
stash: drop unused parameter
stash: pass pathspec as pointer
glossary: add definition for overlay
stash: setup default diff output format if necessary
ls-files: use correct format string
Todd Zullinger (9):
t4038-diff-combined: quote paths with whitespace
t9902: test multiple removals via completion.commands
completion: use __git when calling --list-cmds
Documentation/rev-list-options: wrap --date=<format> block with "--"
Documentation/git-status: fix titles in porcelain v2 section
Documentation/git-svn: improve asciidoctor compatibility
Documentation/git-show-branch: avoid literal {apostrophe}
test-lib: try harder to ensure a working jgit
RelNotes: minor typo fixes in 2.22.0 draft
Torsten Bögershausen (1):
trace2: NULL is not allowed for va_list
Trần Ngọc Quân (4):
l10n: Updated Vietnamese translation for v2.21 rd2
l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1
l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3
Vadim Kochan (1):
autoconf: #include <libintl.h> when checking for gettext()
William Hubbs (1):
config: allow giving separate author and committer idents
Yash Bhatambare (1):
gitattributes.txt: fix typo
brian m. carlson (35):
t/lib-submodule-update: use appropriate length constant
khash: move oid hash table definition
pack-bitmap: make bitmap header handling hash agnostic
pack-bitmap: convert struct stored_bitmap to object_id
pack-bitmap: replace sha1_to_hex
pack-bitmap: switch hard-coded constants to the_hash_algo
pack-bitmap: switch hash tables to use struct object_id
submodule: avoid hard-coded constants
notes-merge: switch to use the_hash_algo
notes: make hash size independent
notes: replace sha1_to_hex
object-store: rename and expand packed_git's sha1 member
builtin/name-rev: make hash-size independent
fast-import: make hash-size independent
fast-import: replace sha1_to_hex
builtin/am: make hash size independent
builtin/pull: make hash-size independent
http-push: convert to use the_hash_algo
http-backend: allow 64-character hex names
http-push: remove remaining uses of sha1_to_hex
http-walker: replace sha1_to_hex
http: replace hard-coded constant with the_hash_algo
http: compute hash of downloaded objects using the_hash_algo
http: replace sha1_to_hex
remote-curl: make hash size independent
hash: add a function to lookup hash algorithm by length
builtin/get-tar-commit-id: make hash size independent
archive: convert struct archiver_args to object_id
refspec: make hash size independent
builtin/difftool: use parse_oid_hex
dir: make untracked cache extension hash size independent
read-cache: read data in a hash-independent way
Git.pm: make hash size independent
gitweb: make hash size independent
send-email: default to quoted-printable when CR is present
Ævar Arnfjörð Bjarmason (44):
receive-pack: fix use-after-free bug
commit-graph tests: split up corrupt_graph_and_verify()
commit-graph tests: test a graph that's too small
Makefile: remove an out-of-date comment
Makefile: move "strip" assignment down from flags
Makefile: add/remove comments at top and tweak whitespace
Makefile: Move *_LIBS assignment into its own section
Makefile: move the setting of *FLAGS closer to "include"
Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
gc: remove redundant check for gc_auto_threshold
gc: convert to using the_hash_algo
gc: refactor a "call me once" pattern
reflog tests: make use of "test_config" idiom
reflog tests: test for the "points nowhere" warning
rebase: remove the rebase.useBuiltin setting
gc docs: modernize the advice for manually running "gc"
gc docs: stop noting "repack" flags
gc docs: clean grammar for "gc.bigPackThreshold"
commit-graph: fix segfault on e.g. "git status"
commit-graph: don't early exit(1) on e.g. "git status"
commit-graph: don't pass filename to load_commit_graph_one_fd_st()
commit-graph verify: detect inability to read the graph
commit-graph write: don't die if the existing graph is corrupt
commit-graph: improve & i18n error messages
reflog tests: assert lack of early exit with expiry="never"
gc: handle & check gc.reflogExpire config
test-lib: whitelist GIT_TR2_* in the environment
gc docs: include the "gc.*" section from "config" in "gc"
gc docs: re-flow the "gc.*" section in "config"
gc docs: fix formatting for "gc.writeCommitGraph"
gc docs: note how --aggressive impacts --window & --depth
gc docs: downplay the usefulness of --aggressive
gc docs: note "gc --aggressive" in "fast-import"
gc docs: clarify that "gc" doesn't throw away referenced objects
gc docs: remove incorrect reference to gc.auto=0
perf README: correct docs for 3c8f12c96c regression
perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
perf-lib.sh: make "./run <revisions>" use the correct gits
perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
perf tests: add "bindir" prefix to git tree test results
perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
trace2: fix up a missing "leave" entry point
trace2: fix up a missing "leave" entry point
sha1dc: update from upstream
İsmail Dönmez (2):
mingw: do not let ld strip relocations
mingw: enable DEP and ASLR
^ permalink raw reply [relevance 2%]
* Git for Windows v2.22.0-rc3, was Re: [ANNOUNCE] Git v2.22.0-rc3
2019-06-03 20:23 2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
2019-06-04 1:32 0% ` Ben Humphreys
2019-06-04 1:47 0% ` Bhaskar Chowdhury
@ 2019-06-04 14:45 0% ` Johannes Schindelin
2 siblings, 0 replies; 162+ results
From: Johannes Schindelin @ 2019-06-04 14:45 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, git-for-windows, git-packagers
[-- Attachment #1: Type: text/plain, Size: 73951 bytes --]
Team,
I was a bit too tired last night to wait for the trusty Azure Pipelines to
finish publishing this preview, so with a bit of delay, here comes the
announcement:
https://github.com/git-for-windows/git/releases/tag/v2.22.0-rc3.windows.1
Thanks,
Johannes
On Mon, 3 Jun 2019, Junio C Hamano wrote:
> A release candidate Git v2.22.0-rc3 is now available for testing
> at the usual places. It is comprised of 718 non-merge commits
> since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
> Hopefully, this will be the last -rc during this cycle.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
> The following public repositories all have a copy of the
> 'v2.22.0-rc3' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
> New contributors whose contributions weren't in v2.21.0 are as follows.
> Welcome to the Git development community!
>
> Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
> Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
> Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
> Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
> Yash Bhatambare.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
> Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
> Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
> Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
> David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
> Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
> Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
> Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
> Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
> Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
> Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
> Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
> Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
> Trần Ngọc Quân.
>
> ----------------------------------------------------------------
>
> Git 2.22 Release Notes (draft)
> ==============================
>
> Updates since v2.21
> -------------------
>
> Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
> create a lazy/partial clone has been removed. Using a blob that is
> part of the project as sparse specification is still supported with
> the "--filter=sparse:oid=<blob>" option.
>
> UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
> checking out paths out of the tree-ish, that allows paths that
> match the pathspec that are in the current index and working tree
> and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..." now allows to
> optionally pick trailers selectively by keyword, show only values,
> etc.
>
> * Four new configuration variables {author,committer}.{name,email}
> have been introduced to override user.{name,email} in more specific
> cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
> "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
> merge involved renames. A new option adds the paths in the
> original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
> complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
> culprit using a raw "diff-tree", with which there is no output for
> a merge commit. This has been updated to use a more modern and
> human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
> option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
> been updated.
>
> * The completion helper code now pays attention to repository-local
> configuration (when available), which allows --list-cmds to honour
> a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
> its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
> file changes, which can help e.g. a virtualized working tree
> implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
> between HEAD and the working-tree files forward while checking out
> another branch, and ignored the differences between HEAD and the
> index. The command has been taught to abort when the index and the
> HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
> often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
> submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
> infer file movement based on how other files in the same directory
> moved. As this is inherently less robust heuristics than the one
> based on the content similarity of the file itself (rather than
> based on what its neighbours are doing), it sometimes gives an
> outcome unexpected by the end users. This has been toned down to
> leave the renamed paths in higher/conflicted stages in the index so
> that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
> mistake when creating an annotated or signed tag that points at
> another tag.
>
> * The "git pack-objects" command learned to report the number of
> objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
> conflicted merge was shown above the scissors line when the
> clean-up mode is set to "scissors", even though it was commented
> out just like the list of updated paths and other information to
> help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
> when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
> the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
> repositories now; also the pathname hash-cache is created by
> default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
> taught that in their contexts, the notation A...B means "the merge
> base between these two commits", just like "git checkout A...B"
> detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
> of {diff,merge}.{tool,guitool} configuration variables serve as
> fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
> mode; they are now explicitly marked as mutually incompatible.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
> long predates the parse-options API, uses fairly long and complex
> handcrafted option parser. This is being rewritten to use the
> parse-options API.
>
> * The implementation of pack-redundant has been updated for
> performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
> bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
> use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
> patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
> easier to run most of the tests under different versions of
> over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
> results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
> packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
> updated.
>
> * The tests have been updated not to rely on the abbreviated option
> names the parse-options API offers, to protect us from an
> abbreviated form of an option that used to be unique within the
> command getting non-unique when a new option that share the same
> prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
> list many times during a single step of its operation, and the
> recent C-rewrite made a faithful conversion of the logic to C. The
> implementation has been updated to carry necessary information
> around in-core to avoid rewriting the same file over and over
> unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
> processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
> missing blobs we will need, instead of waiting for the on-demand
> machinery to discover them one by one. The code learned to aim to
> achieve better performance by batching the request for these
> promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
> pointless to spend cycles for a large portion of the connectivity
> check that enumerates and skips promisor objects (which by
> definition is all objects fetched from the other side). This has
> been optimized out.
>
> * Mechanically and systematically drop "extern" from function
> declaration.
>
> * The script to aggregate perf result unconditionally depended on
> libjson-perl even though it did not have to, which has been
> corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
> avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
> of Git that happens to be on $PATH, not the specified one to
> measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
> spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
> responded by a request to disambiguate between --recursive and
> --recurse-submodules, which is bad because these two are synonyms.
> The parse-options API has been extended to define such synonyms
> more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
> fread/fwrite did not return the number of elements, which was found
> to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
> Fixes since v2.21
> -----------------
>
> * "git prune-packed" did not notice and complain against excess
> arguments given from the command line, which now it does.
> (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
> (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
> --ext-diff and --textconv, but so far these have been ignored,
> which has been corrected.
> (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
> a bug in the latter (lack of authentication retry) and generally
> improves the code base.
> (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
> to (accidentally) include it more than once.
> (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
> included sha256/gcrypt.h, even when it is not used, causing the
> make target to fail. We now skip it when GCRYPT_SHA256 is not in
> use.
> (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
> files, which is expensive on platforms with slow filesystems; it
> now optionally uses "ls-files" if working within a repository,
> which is a trick similar to how all sources are enumerated to run
> ETAGS on.
> (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
> correctly, which has been corrected.
> (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
> (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
> DEVELOPER=YesPlease; this did not work well before.
> (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
> the objects that are not reachable from any of the refs into
> unreachable and dangling. This is now enabled when dangling
> objects are requested (which is done by default, but can be
> overridden with the "--no-dangling" option).
> (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
> the upload-pack that runs on the other end that hangs up after
> detecting an error could cause "git fetch" to die with a signal,
> which led to a flaky test. "git fetch" now ignores SIGPIPE during
> the network portion of its operation (this is not a problem as we
> check the return status from our write(2)s).
> (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
> well-known objects like an empty tree (which should yield "yes",
> even when there is no on-disk object for an empty tree), which has
> been corrected.
> (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
> repository_format structure.
> (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
> but there is a slight difference that wasn't documented, which is
> now fixed.
> (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
> working tree down to a small "token" (a la Git LFS), there is no
> point in allocating a huge scratch area upfront, but the buffer is
> sized based on the original file size. The convert mechanism now
> allocates very minimum and reallocates as it receives the output
> from the clean filter process.
> (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
> intermediate states, which inherently makes the hierarchy per
> worktree, but it didn't quite work well.
> (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
> output as it should. This has been corrected.
> (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
> and then mkdir", which is race-prone. This has been fixed by using
> mkdir and reacting to EEXIST in a loop.
> (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
> (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
> asciidoc.
> (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
> messages at places.
> (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
> that they can be localized.
> (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
> configuration, which made Windows port to ignore settings of
> core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
> is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
> output file for the cover-letter, which has been corrected.
> (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
> incorrectly left some paths in an unmerged state, which has been
> corrected.
>
> * A corner case bug in the refs API has been corrected.
> (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
> (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
> strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
> (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
> (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
> update_server_info() function.
> (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
> updated.
> (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
> user to ask help resolving a conflicted step, did not honor the
> options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
> careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
> (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
> corrected.
>
> * Performance fix around "git blame", especially in a linear history
> (which is the norm we should optimize for).
> (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
> (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
> deal better with overlong messages.
> (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
> the working tree, and the same command in a bare repository errors
> out because there is no working tree by definition. The command
> has been taught to instead start blaming from the commit at HEAD,
> which is more useful.
> (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
> extension has been corrected.
> (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
> it is used in more places, by using xmalloc and/or xcalloc calls.
> (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
> was made runtime-tunable, which has been fixed.
> (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
> (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
> down correctly, which has been corrected.
> (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
> payload contains carriage-return. The use of the mechanism is in
> line with the design originally added the codepath that chooses QP
> when the payload has overly long lines.
> (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
> anything-by: trailers in 'git send-email' was found to be way too
> eager and considered nonsense strings as if they can be legitimate
> beginning of *-by: trailer. This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
> seems to have stopped including from /usr/local/include; this
> has been corrected.
> (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
> repository is an explicit indication that the user wants to add it
> as a submodule, but when the HEAD of the inner repository is on an
> unborn branch, it cannot be added as a submodule. Worse, the files
> in its working tree can be added as if they are a part of the outer
> repository, which is not what the user wants. These problems are
> being addressed.
> (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
> to (and more importantly, ought to) clean up the commit log message
> with the --cleanup=space option by default, but this has been
> broken since late 2017. This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
> failed to peel the tag before writing a replace ref, which did not
> make sense because the old graft mechanism the feature wants to
> mimic only allowed to replace one commit object with another.
> This has been fixed.
> (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
> of a different type is expected, instead of blindly assuming that
> the connection between objects are correctly made.
> (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
> which has been fixed.
> (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
> for-each-ref" and friends was not showing the right branch, which
> has been fixed.
> (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
> where a particular build may deliberately omit some subcommands,
> which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
> "git branch -D" from removing the branch that is currently checked
> out by mistake. The implementation of this logic was broken for
> repositories with unusual name, which unfortunately is the norm for
> submodules these days. This has been fixed.
> (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
> which has been corrected.
> (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
> gettext() implementations from -libintl by ignoring useless stub
> implementations shipped in some C library, which has been
> corrected.
> (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
> run in an empty repository, which emulates the initial clone
> situation better.
> (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
> tree resulted in duplicated Makefile rules that caused the build to
> issue an unnecessary warning during a trial build after merge
> conflicts are resolved in working tree *.h files but before the
> resolved results are added to the index. This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
> that deals with multiple commits got confused when the final step
> gets stopped with a conflict and the user concluded the sequence
> with "git commit". Attempt to fix it by cleaning up the state
> files used by these commands in such a situation.
> (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
> entities may become different from what the end-user expects, just
> like files in the working tree get "renamed". Work around the
> mismatch by paying attention to the core.precomposeUnicode
> configuration.
> (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
> see too many packfiles and ran out of open file descriptor, which
> has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
> git-svn package (in the hope that it would bring in the right
> dependencies). This has been updated to install the more direct
> dependency, namely, libsvn-perl.
> (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
> "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
> file gets discarded, which has been corrected.
> (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
> todo-list "rebase -i -r" uses should not be shown as a hex object
> name.
>
> * A prerequisite check in the test suite to see if a working jgit is
> available was made more robust.
> (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
> indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
> (merge 11f470aee7 jc/test-yes-doc later to maint).
> (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
> (merge 5c326d1252 jk/unused-params later to maint).
> (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
> (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
> (merge 1ede45e44b en/merge-options-doc later to maint).
> (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
> (merge c271dc28fd nd/no-more-check-racy later to maint).
> (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
> (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
> (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
> (merge 50b206371d js/untravis-windows later to maint).
> (merge dbf47215e3 js/rebase-recreate-merge later to maint).
> (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
> (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
> (merge af91b0230c dl/ignore-docs later to maint).
> (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
> (merge e041d0781b ar/t4150-remove-cruft later to maint).
> (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
> (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
> (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
> (merge a7256debd4 nd/checkout-m-doc-update later to maint).
> (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
> (merge 0b918b75af sg/t5318-cleanup later to maint).
> (merge 68ed71b53c cb/doco-mono later to maint).
> (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
> (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
> (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
> (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
> (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
> (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
> (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
> (merge d8083e4180 km/t3000-retitle later to maint).
> (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
> (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
> (merge 6804ba3a58 cw/diff-highlight later to maint).
> (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
> (merge d9ef573837 jk/apache-lsan later to maint).
> (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
> (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
> (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
> (merge d4907720a2 cm/notes-comment-fix later to maint).
> (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
> (merge 4c785c0edc js/rebase-config-bitfix later to maint).
> (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.21.0 are as follows:
>
> Alban Gruin (18):
> sequencer: changes in parse_insn_buffer()
> sequencer: make the todo_list structure public
> sequencer: remove the 'arg' field from todo_item
> sequencer: refactor transform_todos() to work on a todo_list
> sequencer: introduce todo_list_write_to_file()
> sequencer: refactor check_todo_list() to work on a todo_list
> sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
> sequencer: refactor rearrange_squash() to work on a todo_list
> sequencer: make sequencer_make_script() write its script to a strbuf
> sequencer: change complete_action() to use the refactored functions
> rebase--interactive: move sequencer_add_exec_commands()
> rebase--interactive: move rearrange_squash_in_todo_file()
> sequencer: refactor skip_unnecessary_picks() to work on a todo_list
> rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
> rebase-interactive: append_todo_help() changes
> rebase-interactive: rewrite edit_todo_list() to handle the initial edit
> sequencer: use edit_todo_list() in complete_action()
> rebase--interactive: move transform_todo_file()
>
> Alexander Blesius (1):
> doc: fix typos in man pages
>
> Alexander Shopov (1):
> gitk: Update Bulgarian translation (317t)
>
> Anders Waldenborg (7):
> doc: group pretty-format.txt placeholders descriptions
> pretty: allow %(trailers) options with explicit value
> pretty: single return path in %(trailers) handling
> pretty: allow showing specific trailers
> pretty: add support for "valueonly" option in %(trailers)
> strbuf: separate callback for strbuf_expand:ing literals
> pretty: add support for separator option in %(trailers)
>
> Andreas Heiduk (1):
> revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
> Andrei Rybak (1):
> t4150: remove unused variable
>
> Baruch Siach (1):
> send-email: don't cc *-by lines with '-' prefix
>
> Beat Bolli (1):
> unicode: update the width tables to Unicode 12
>
> Ben Peart (1):
> read-cache: add post-index-change hook
>
> Boxuan Li (1):
> t4253-am-keep-cr-dos: avoid using pipes
>
> Brandon Richardson (1):
> commit-tree: utilize parse-options api
>
> Carlo Marcelo Arenas Belón (1):
> http-push: prevent format overflow warning with gcc >= 9
>
> Chris Mayo (1):
> notes: correct documentation of format_display_notes()
>
> Chris. Webster (1):
> diff-highlight: use correct /dev/null for UNIX and Windows
>
> Christian Couder (5):
> t6050: use test_line_count instead of wc -l
> t6050: redirect expected error output to a file
> replace: peel tag when passing a tag as parent to --graft
> replace: peel tag when passing a tag first to --graft
> list-objects-filter: disable 'sparse:path' filters
>
> Clément Chigot (2):
> Makefile: use fileno macro work around on AIX
> git-compat-util: work around for access(X_OK) under root
>
> Corentin BOMPARD (2):
> doc/CodingGuidelines: URLs and paths as monospace
> doc: format pathnames and URLs as monospace.
>
> Damien Robert (1):
> ref-filter: use correct branch for %(push:track)
>
> Daniels Umanovskis (1):
> branch: introduce --show-current display option
>
> David Aguilar (2):
> mergetools: add support for smerge (Sublime Merge)
> contrib/completion: add smerge to the mergetool completion candidates
>
> David Kastrup (1):
> blame.c: don't drop origin blobs as eagerly
>
> Denton Liu (38):
> completion: complete git submodule absorbgitdirs
> git-submodule.txt: "--branch <branch>" option defaults to 'master'
> submodule--helper: teach config subcommand --unset
> submodule: document default behavior
> git-reset.txt: clarify documentation
> git-clean.txt: clarify ignore pattern files
> docs: move core.excludesFile from git-add to gitignore
> contrib/subtree: ensure only one rev is provided
> midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> tag: fix formatting
> submodule: teach set-branch subcommand
> tag: advise on nested tags
> t7600: clean up style
> t3507: clean up style
> t7604: clean up style
> t7502: clean up style
> commit: extract cleanup_mode functions to sequencer
> parse-options.h: extract common --cleanup option
> merge: cleanup messages like commit
> merge: add scissors line on merge conflict
> cherry-pick/revert: add scissors line on merge conflict
> t7610: unsuppress output
> t7610: add mergetool --gui tests
> *.[ch]: remove extern from function declarations using spatch
> *.[ch]: remove extern from function declarations using sed
> *.[ch]: manually align parameter lists
> t2018: cleanup in current test
> branch: make create_branch accept a merge base rev
> revisions.txt: change "rev" to "<rev>"
> revisions.txt: mark optional rev arguments with []
> revisions.txt: mention <rev>~ form
> tag: fix typo in nested tagging hint
> mergetool: use get_merge_tool function
> mergetool--lib: create gui_mode function
> mergetool: fallback to tool when guitool unavailable
> difftool: make --gui, --tool and --extcmd mutually exclusive
> difftool: fallback on merge.guitool
>
> Derrick Stolee (4):
> trace2:data: pack-objects: add trace2 regions
> midx: pass a repository pointer
> midx: add packs to packed_git linked list
> trace2: add variable description to git.txt
>
> Dustin Spicuzza (1):
> cvsexportcommit: force crlf translation
>
> Elijah Newren (23):
> log,diff-tree: add --combined-all-paths option
> merge-options.txt: correct wording of --no-commit option
> t9300: demonstrate bug with get-mark and empty orphan commits
> git-fast-import.txt: fix wording about where ls command can appear
> fast-import: check most prominent commands first
> fast-import: only allow cat-blob requests where it makes sense
> fast-import: fix erroneous handling of get-mark with empty orphan commits
> Use 'unsigned short' for mode, like diff_filespec does
> merge-recursive: rename merge_options argument from 'o' to 'opt'
> merge-recursive: rename diff_filespec 'one' to 'o'
> merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
> merge-recursive: use 'ci' for rename_conflict_info variable name
> merge-recursive: move some struct declarations together
> merge-recursive: shrink rename_conflict_info
> merge-recursive: remove ren[12]_other fields from rename_conflict_info
> merge-recursive: track branch where rename occurred in rename struct
> merge-recursive: cleanup handle_rename_* function signatures
> merge-recursive: switch from (oid,mode) pairs to a diff_filespec
> t6043: fix copied test description to match its purpose
> merge-recursive: track information associated with directory renames
> merge-recursive: give callers of handle_content_merge() access to contents
> merge-recursive: switch directory rename detection default
> Honor core.precomposeUnicode in more places
>
> Emily Shaffer (1):
> gitsubmodules: align html and nroff lists
>
> Eric Sunshine (1):
> check-non-portable-shell: support Perl versions older than 5.10
>
> Eric Wong (1):
> repack: enable bitmaps by default on bare repos
>
> Jean-Noël Avila (3):
> l10n: fr.po remove obsolete entries
> Doc: fix misleading asciidoc formating
> diff: fix mistake in translatable strings
>
> Jeff Hostetler (30):
> trace2: Documentation/technical/api-trace2.txt
> trace2: create new combined trace facility
> trace2: collect Windows-specific process information
> trace2:data: add trace2 regions to wt-status
> trace2:data: add editor/pager child classification
> trace2:data: add trace2 sub-process classification
> trace2:data: add trace2 transport child classification
> trace2:data: add subverb to checkout command
> trace2:data: add subverb to reset command
> trace2:data: add trace2 hook classification
> trace2:data: add subverb for rebase
> trace2:data: add trace2 instrumentation to index read/write
> trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
> trace2: add for_each macros to clang-format
> progress: add sparse mode to force 100% complete message
> trace2:data: add trace2 data to midx
> midx: add progress indicators in multi-pack-index verify
> midx: during verify group objects by packfile to speed verification
> config: initialize opts structure in repo_read_config()
> trace2: refactor setting process starting time
> trace2: add absolute elapsed time to start event
> trace2: find exec-dir before trace2 initialization
> config: add read_very_early_config()
> trace2: use system/global config for default trace2 settings
> trace2: report peak memory usage of the process
> trace2: clarify UTC datetime formatting
> trace2: make SIDs more unique
> trace2: update docs to describe system/global config settings
> trace2: fixup access problem on /etc/gitconfig in read_very_early_config
> trace2: fix tracing when NO_PTHREADS is defined
>
> Jeff King (92):
> prune: lazily perform reachability traversal
> prune: use bitmaps for reachability traversal
> prune: check SEEN flag for reachability
> t5304: rename "sha1" variables to "oid"
> diff: drop options parameter from diffcore_fix_diff_index()
> diff: drop unused color reset parameters
> diff: drop unused emit data parameter from sane_truncate_line()
> diff: drop complete_rewrite parameter from run_external_diff()
> merge-recursive: drop several unused parameters
> pack-objects: drop unused parameter from oe_map_new_pack()
> files-backend: drop refs parameter from split_symref_update()
> ref-filter: drop unused buf/sz pairs
> ref-filter: drop unused "obj" parameters
> ref-filter: drop unused "sz" parameters
> diff: reuse diff setup for --no-index case
> bisect: use string arguments to feed internal diff-tree
> bisect: fix internal diff-tree config loading
> bisect: make diff-tree output prettier
> fetch: avoid calling write_or_die()
> fetch: ignore SIGPIPE during network operation
> rev-list: allow cached objects in existence check
> doc/fsck: clarify --connectivity-only behavior
> fsck: always compute USED flags for unreachable objects
> compat/bswap: add include header guards
> config: document --type=color output is a complete line
> line-log: suppress diff output with "-s"
> line-log: detect unsupported formats
> point pull requesters to GitGitGadget
> Makefile: fix unaligned loads in sha1dc with UBSan
> t5310: correctly remove bitmaps for jgit test
> pack-objects: default to writing bitmap hash-cache
> perf-lib.sh: rely on test-lib.sh for --tee handling
> revision: drop some unused "revs" parameters
> log: drop unused rev_info from early output
> log: drop unused "len" from show_tagger()
> update-index: drop unused prefix_length parameter from do_reupdate()
> test-date: drop unused "now" parameter from parse_dates()
> unpack-trees: drop name_entry from traverse_by_cache_tree()
> unpack-trees: drop unused error_type parameters
> report_path_error(): drop unused prefix parameter
> fetch_pack(): drop unused parameters
> parse-options: drop unused ctx parameter from show_gitcomp()
> pretty: drop unused "type" parameter in needs_rfc2047_encoding()
> pretty: drop unused strbuf from parse_padding_placeholder()
> git: read local config in --list-cmds
> completion: fix multiple command removals
> parse_opt_ref_sorting: always use with NONEG flag
> refs/files-backend: handle packed transaction prepare failure
> refs/files-backend: don't look at an aborted transaction
> http: factor out curl result code normalization
> http: normalize curl results for dumb loose and alternates fetches
> http: use normalize_curl_result() instead of manual conversion
> revision: use a prio_queue to hold rewritten parents
> get_commit_tree(): return NULL for broken tree
> rev-list: let traversal die when --missing is not in use
> rev-list: detect broken root trees
> test-prio-queue: use xmalloc
> xdiff: use git-compat-util
> xdiff: use xmalloc/xrealloc
> progress: use xmalloc/xcalloc
> t5516: drop ok=sigpipe from unreachable-want tests
> t5530: check protocol response for "not our ref"
> upload-pack: send ERR packet for non-tip objects
> pkt-line: prepare buffer before handling ERR packets
> fetch: use free_refs()
> remote.c: make singular free_ref() public
> fetch: do not consider peeled tags as advertised tips
> packfile.h: drop extern from function declarations
> pack-revindex: open index if necessary
> t5319: fix bogus cat-file argument
> t5319: drop useless --buffer from cat-file
> midx: check both pack and index names for containment
> packfile: fix pack basename computation
> http: simplify parsing of remote objects/info/packs
> server-info: fix blind pointer arithmetic
> server-info: simplify cleanup in parse_pack_def()
> server-info: use strbuf to read old info/packs file
> server-info: drop nr_alloc struct member
> server-info: drop objdirlen pointer arithmetic
> update_info_refs(): drop unused force parameter
> t5304: add a test for pruning with bitmaps
> untracked-cache: be defensive about missing NULs in index
> untracked-cache: simplify parsing by dropping "next"
> untracked-cache: simplify parsing by dropping "len"
> p5302: create the repo in each index-pack test
> doc/ls-files: put nested list for "-t" option into block
> t/perf: depend on perl JSON only when using --codespeed
> t/perf: add perf script for partial clones
> coccicheck: optionally batch spatch invocations
> t/lib-httpd: pass LSAN_OPTIONS through apache
> coccicheck: make batch size of 0 mean "unlimited"
> get_oid: handle NULL repo->index
>
> Jiang Xin (5):
> t5323: test cases for git-pack-redundant
> pack-redundant: delay creation of unique_objects
> pack-redundant: rename pack_list.all_objects
> pack-redundant: consistent sort method
> i18n: fix typos found during l10n for git 2.22.0
>
> Joel Teichroeb (5):
> stash: improve option parsing test coverage
> stash: convert apply to builtin
> stash: convert drop and clear to builtin
> stash: convert branch to builtin
> stash: convert pop to builtin
>
> Joey Hess (1):
> convert: avoid malloc of original file size
>
> Johannes Schindelin (67):
> ident: add the ability to provide a "fallback identity"
> travis: remove the hack to build the Windows job on Azure Pipelines
> tests: let --stress-limit=<N> imply --stress
> tests: introduce --stress-jobs=<N>
> built-in rebase: no need to check out `onto` twice
> built-in rebase: use the correct reflog when switching branches
> built-in rebase: demonstrate that ORIG_HEAD is not set correctly
> built-in rebase: set ORIG_HEAD just once, before the rebase
> Makefile: use `git ls-files` to list header files, if possible
> curl: anonymize URLs in error messages and warnings
> remote-curl: mark all error messages for translation
> stash: add back the original, scripted `git stash`
> stash: optionally use the scripted version again
> tests: add a special setup where stash.useBuiltin is off
> legacy stash: fix "rudimentary backport of -q"
> built-in stash: handle :(glob) pathspecs again
> mingw: drop MakeMaker reference
> mingw: allow building with an MSYS2 runtime v3.x
> rebase: deprecate --preserve-merges
> mingw: respect core.hidedotfiles = false in git-init again
> test-lib: introduce 'test_atexit'
> git-daemon: use 'test_atexit` to stop 'git-daemon'
> git p4 test: use 'test_atexit' to kill p4d and the watchdog process
> rebase -i: demonstrate obscure loose object cache bug
> sequencer: improve error message when an OID could not be parsed
> sequencer: move stale comment into correct location
> get_oid(): when an object was not found, try harder
> difftool: remove obsolete (and misleading) comment
> parse-options: make OPT_ARGUMENT() more useful
> difftool: allow running outside Git worktrees with --no-index
> docs: move gitremote-helpers into section 7
> docs: do not document the `git remote-testgit` command
> check-docs: really look at the documented commands again
> check-docs: do not expect guide pages to correspond to commands
> check-docs: fix for setups where executables have an extension
> tests (rebase): spell out the `--keep-empty` option
> tests (rebase): spell out the `--force-rebase` option
> t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
> t5531: avoid using an abbreviated option
> tests (push): do not abbreviate the `--follow-tags` option
> tests (status): spell out the `--find-renames` option in full
> tests (pack-objects): use the full, unabbreviated `--revs` option
> t3301: fix false negative
> untracked cache: fix off-by-one
> tests: disallow the use of abbreviated options (by default)
> t9822: skip tests if file names cannot be ISO-8859-1 encoded
> macOS: make sure that gettext is found
> remote-testgit: move it into the support directory for t5801
> Makefile: drop the NO_INSTALL variable
> help -a: do not list commands that are excluded from the build
> check-docs: allow command-list.txt to contain excluded commands
> docs: exclude documentation for commands that have been excluded
> check-docs: do not bother checking for legacy scripts' documentation
> test-tool: handle the `-C <directory>` option just like `git`
> Turn `git serve` into a test helper
> t5580: verify that alternates can be UNC paths
> fsmonitor: demonstrate that it is not refreshed after discard_index()
> fsmonitor: force a refresh after the index was discarded
> t6500(mingw): use the Windows PID of the shell
> difftool --no-index: error out on --dir-diff (and don't crash)
> status: fix display of rebase -ir's `label` command
> parse-options: adjust `parse_opt_unknown_cb()`s declared return type
> stash: document stash.useBuiltin
> rebase: replace incorrect logical negation by correct bitwise one
> tests: mark a couple more test cases as requiring `rebase -p`
> docs: say that `--rebase=preserve` is deprecated
> rebase docs: recommend `-r` over `-p`
>
> Jonathan Tan (25):
> remote-curl: reduce scope of rpc_state.argv
> remote-curl: reduce scope of rpc_state.stdin_preamble
> remote-curl: reduce scope of rpc_state.result
> remote-curl: refactor reading into rpc_state's buf
> remote-curl: use post_rpc() for protocol v2 also
> tests: define GIT_TEST_PROTOCOL_VERSION
> t5601: check ssh command only with protocol v0
> tests: always test fetch of unreachable with v0
> t5503: fix overspecification of trace expectation
> t5512: compensate for v0 only sending HEAD symrefs
> t5700: only run with protocol version 1
> tests: fix protocol version for overspecifications
> t5552: compensate for v2 filtering ref adv.
> submodule: explain first attempt failure clearly
> t5551: mark half-auth no-op fetch test as v0-only
> fetch-pack: call prepare_shallow_info only if v0
> fetch-pack: respect --no-update-shallow in v2
> sha1-file: support OBJECT_INFO_FOR_PREFETCH
> fetch-pack: binary search when storing wanted-refs
> diff: batch fetching of missing blobs
> pack-objects: write objects packed to trace2
> transport: die if server options are unsupported
> clone: send server options when using protocol v2
> worktree: update is_bare heuristics
> fetch-pack: send server options after command
>
> Jordi Mas (1):
> l10n: Fixes to Catalan translation
>
> Josh Steadmon (5):
> protocol-capabilities.txt: document symref
> trace2: write to directory targets
> clone: do faster object check for partial clones
> trace2: fix incorrect function pointer check
> commit-graph: fix memory leak
>
> Junio C Hamano (18):
> test: caution on our version of 'yes'
> builtin/log: downcase the beginning of error messages
> format-patch: notice failure to open cover letter for writing
> Start 2.22 cycle
> The second batch
> The third batch
> The fourth batch
> gettext tests: export the restored GIT_TEST_GETTEXT_POISON
> The fifth batch
> The sixth batch
> Makefile: dedup list of files obtained from ls-files
> The seventh batch
> The eighth batch
> Git 2.22-rc0
> pkt-line: drop 'const'-ness of a param to set_packet_header()
> Git 2.22-rc1
> Git 2.22-rc2
> Git 2.22-rc3
>
> Kyle Meyer (5):
> rebase docs: fix "gitlink" typo
> submodule: refuse to add repository with no commits
> dir: do not traverse repositories with no commits
> add: error appropriately on repository with no commits
> t3000 (ls-files -o): widen description to reflect current tests
>
> Martin Ågren (14):
> setup: free old value before setting `work_tree`
> setup: fix memory leaks with `struct repository_format`
> config/diff.txt: drop spurious backtick
> config/fsck.txt: avoid starting line with dash
> git.txt: remove empty line before list continuation
> git-svn.txt: drop escaping '\' that ends up being rendered
> Documentation: turn middle-of-line tabs into spaces
> Documentation/Makefile: add missing xsl dependencies for manpages
> Documentation/Makefile: add missing dependency on asciidoctor-extensions
> asciidoctor-extensions: fix spurious space after linkgit
> Doc: auto-detect changed build flags
> doc-diff: let `render_tree()` take an explicit directory name
> doc-diff: support diffing from/to AsciiDoc(tor)
> doc-diff: add `--cut-header-footer`
>
> Matthew Kraai (1):
> t3903: add test for --intent-to-add file
>
> Michal Suchanek (1):
> worktree: fix worktree add race
>
> Mike Hommey (2):
> fix pack protocol example client/server communication
> Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
> Nguyễn Thái Ngọc Duy (129):
> parse-options.h: remove extern on function prototypes
> parse-options: add one-shot mode
> parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
> parse-options: add OPT_BITOP()
> parse-options: stop abusing 'callback' for lowlevel callbacks
> parse-options: avoid magic return codes
> parse-options: allow ll_callback with OPTION_CALLBACK
> diff.h: keep forward struct declarations sorted
> diff.h: avoid bit fields in struct diff_flags
> diff.c: prepare to use parse_options() for parsing
> diff.c: convert -u|-p|--patch
> diff.c: convert -U|--unified
> diff.c: convert -W|--[no-]function-context
> diff.c: convert --raw
> read-cache.c: fix writing "link" index ext with null base oid
> completion: add more parameter value completion
> diff-parseopt: convert --patch-with-raw
> diff-parseopt: convert --numstat and --shortstat
> diff-parseopt: convert --dirstat and friends
> diff-parseopt: convert --check
> diff-parseopt: convert --summary
> diff-parseopt: convert --patch-with-stat
> diff-parseopt: convert --name-only
> diff-parseopt: convert --name-status
> diff-parseopt: convert -s|--no-patch
> diff-parseopt: convert --stat*
> diff-parseopt: convert --[no-]compact-summary
> diff-parseopt: convert --output-*
> diff-parseopt: convert -B|--break-rewrites
> diff-parseopt: convert -M|--find-renames
> diff-parseopt: convert -D|--irreversible-delete
> diff-parseopt: convert -C|--find-copies
> diff-parseopt: convert --find-copies-harder
> diff-parseopt: convert --no-renames|--[no--rename-empty
> diff-parseopt: convert --relative
> diff-parseopt: convert --[no-]minimal
> diff-parseopt: convert --ignore-some-changes
> Delete check-racy.c
> diff-parseopt: convert --[no-]indent-heuristic
> diff-parseopt: convert --patience
> diff-parseopt: convert --histogram
> diff-parseopt: convert --diff-algorithm
> diff-parseopt: convert --anchored
> diff-parseopt: convert --binary
> diff-parseopt: convert --full-index
> diff-parseopt: convert -a|--text
> diff-parseopt: convert -R
> diff-parseopt: convert --[no-]follow
> diff-parseopt: convert --[no-]color
> diff-parseopt: convert --word-diff
> diff-parseopt: convert --word-diff-regex
> diff-parseopt: convert --color-words
> diff-parseopt: convert --exit-code
> diff-parseopt: convert --quiet
> diff-parseopt: convert --ext-diff
> diff-parseopt: convert --textconv
> diff-parseopt: convert --ignore-submodules
> diff-parseopt: convert --submodule
> files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
> files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
> Make sure refs/rewritten/ is per-worktree
> unpack-trees: fix oneway_merge accidentally carry over stage index
> checkout.txt: note about losing staged changes with --merge
> commit: improve error message in "-a <paths>" case
> unpack-trees: keep gently check inside add_rejected_path
> unpack-trees: rename "gently" flag to "quiet"
> read-tree: add --quiet
> checkout: prevent losing staged changes with --merge
> diff-parseopt: convert --ws-error-highlight
> diff-parseopt: convert --ita-[in]visible-in-index
> diff-parseopt: convert -z
> diff-parseopt: convert -l
> diff-parseopt: convert -S|-G
> diff-parseopt: convert --pickaxe-all|--pickaxe-regex
> diff-parseopt: convert -O
> diff-parseopt: convert --find-object
> diff-parseopt: convert --diff-filter
> diff-parseopt: convert --[no-]abbrev
> diff-parseopt: convert --[src|dst]-prefix
> diff-parseopt: convert --line-prefix
> diff-parseopt: convert --no-prefix
> diff-parseopt: convert --inter-hunk-context
> diff-parseopt: convert --[no-]color-moved
> diff-parseopt: convert --color-moved-ws
> diff.c: allow --no-color-moved-ws
> range-diff: use parse_options() instead of diff_opt_parse()
> diff --no-index: use parse_options() instead of diff_opt_parse()
> am: avoid diff_opt_parse()
> config: correct '**' matching in includeIf patterns
> interpret-trailers.txt: start the desc line with a capital letter
> read-tree.txt: clarify --reset and worktree changes
> packfile.c: add repo_approximate_object_count()
> refs.c: add refs_ref_exists()
> refs.c: add refs_shorten_unambiguous_ref()
> refs.c: remove the_repo from substitute_branch_name()
> refs.c: remove the_repo from expand_ref()
> refs.c: add repo_dwim_ref()
> refs.c: add repo_dwim_log()
> refs.c: remove the_repo from read_ref_at()
> submodule foreach: fix "<command> --quiet" not being respected
> commit.cocci: refactor code, avoid double rewrite
> commit.c: add repo_get_commit_tree()
> sha1-name.c: remove the_repo from sort_ambiguous()
> sha1-name.c: remove the_repo from find_abbrev_len_packed()
> sha1-name.c: add repo_find_unique_abbrev_r()
> sha1-name.c: store and use repo in struct disambiguate_state
> sha1-name.c: add repo_for_each_abbrev()
> sha1-name.c: remove the_repo from get_short_oid()
> sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
> sha1-name.c: remove the_repo from interpret_branch_mark()
> sha1-name.c: add repo_interpret_branch_name()
> sha1-name.c: remove the_repo from get_oid_oneline()
> sha1-name.c: remove the_repo from get_describe_name()
> sha1-name.c: remove the_repo from get_oid_basic()
> sha1-name.c: remove the_repo from get_oid_1()
> sha1-name.c: remove the_repo from handle_one_ref()
> sha1-name.c: remove the_repo from diagnose_invalid_index_path()
> sha1-name.c: remove the_repo from resolve_relative_path()
> sha1-name.c: remove the_repo from get_oid_with_context_1()
> sha1-name.c: add repo_get_oid()
> submodule-config.c: use repo_get_oid for reading .gitmodules
> sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
> sha1-name.c: remove the_repo from other get_oid_*
> sha1-name.c: remove the_repo from get_oid_mb()
> parse-options: don't emit "ambiguous option" for aliases
> submodule--helper: add a missing \n
> diff-parseopt: correct variable types that are used by parseopt
> diff-parseopt: restore -U (no argument) behavior
> parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
> Paul-Sebastian Ungureanu (17):
> sha1-name.c: add `get_oidf()` which acts like `get_oid()`
> strbuf.c: add `strbuf_join_argv()`
> strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
> t3903: modernize style
> stash: rename test cases to be more descriptive
> stash: add tests for `git stash show` config
> stash: mention options in `show` synopsis
> stash: convert list to builtin
> stash: convert show to builtin
> stash: convert store to builtin
> stash: convert create to builtin
> stash: convert push to builtin
> stash: make push -q quiet
> stash: convert save to builtin
> stash: optimize `get_untracked_files()` and `check_changes()`
> stash: replace all `write-tree` child processes with API calls
> stash: convert `stash--helper.c` into `stash.c`
>
> Philip Oakley (2):
> rerere doc: quote `rerere.enabled`
> describe doc: remove '7-char' abbreviation reference
>
> Phillip Wood (21):
> am/cherry-pick/rebase/revert: document --rerere-autoupdate
> merge: tweak --rerere-autoupdate documentation
> sequencer: break some long lines
> cherry-pick: demonstrate option amnesia
> cherry-pick --continue: remember options
> commit/reset: try to clean up sequencer state
> fix cherry-pick/revert status after commit
> sequencer: fix cleanup with --signoff and -x
> sequencer.c: save and restore cleanup mode
> sequencer: always discard index after checkout
> rebase: don't translate trace strings
> rebase: rename write_basic_state()
> rebase: use OPT_RERERE_AUTOUPDATE()
> rebase -i: combine rebase--interactive.c with rebase.c
> rebase -i: remove duplication
> rebase -i: use struct commit when parsing options
> rebase -i: use struct object_id for squash_onto
> rebase -i: use struct rebase_options to parse args
> rebase -i: use struct rebase_options in do_interactive_rebase()
> rebase: use a common action enum
> rebase -i: run without forking rebase--interactive
>
> Ramsay Jones (2):
> prune-packed: check for too many arguments
> Makefile: fix 'hdr-check' when GCRYPT not installed
>
> René Scharfe (1):
> get-tar-commit-id: parse comment record
>
> Robert P. J. Day (3):
> mention use of "hooks.allownonascii" in "man githooks"
> docs/git-gc: fix typo "--prune=all" to "--prune=now"
> attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
> Rohit Ashiwal (3):
> test functions: add function `test_file_not_empty`
> t3600: modernize style
> t3600: use helpers to replace test -d/f/e/s <path>
>
> SZEDER Gábor (27):
> test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
> t/lib-git-daemon: make sure to kill the 'git-daemon' process
> tests: use 'test_atexit' to stop httpd
> t0301-credential-cache: use 'test_atexit' to stop the credentials helper
> git p4 test: clean up the p4d cleanup functions
> git p4 test: simplify timeout handling
> git p4 test: disable '-x' tracing in the p4d watchdog loop
> t9811-git-p4-label-import: fix pipeline negation
> t5318-commit-graph: remove unused variable
> Documentation/git-diff-tree.txt: fix formatting
> Documentation/technical/api-config.txt: fix formatting
> Documentation/technical/protocol-v2.txt: fix formatting
> ci: install Asciidoctor in 'ci/install-dependencies.sh'
> index-pack: show progress while checking objects
> ci: stick with Asciidoctor v1.5.8 for now
> ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
> progress: make display_progress() return void
> progress: assemble percentage and counters in a strbuf before printing
> blame: default to HEAD in a bare repo when no start commit is given
> builtin rebase: use FREE_AND_NULL
> builtin rebase: use oideq()
> progress: clear previous progress update dynamically
> progress: break too long progress bar lines
> ci: install 'libsvn-perl' instead of 'git-svn'
> trace2: rename environment variables to GIT_TRACE2*
> trace2: document the supported values of GIT_TRACE2* env variables
> progress: avoid empty line when breaking the progress line
>
> Sun Chao (2):
> pack-redundant: delete redundant code
> pack-redundant: new algorithm to find min packs
>
> Sven Strickroth (1):
> MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
> Tanushree Tumane (1):
> mingw: remove obsolete IPv6-related code
>
> Taylor Blau (4):
> t: move 'hex2oct' into test-lib-functions.sh
> t: introduce tests for unexpected object types
> list-objects.c: handle unexpected non-blob entries
> list-objects.c: handle unexpected non-tree entries
>
> Thomas Gummerer (15):
> move worktree tests to t24*
> entry: factor out unlink_entry function
> entry: support CE_WT_REMOVE flag in checkout_entry
> read-cache: add invalidate parameter to remove_marked_cache_entries
> checkout: clarify comment
> checkout: factor out mark_cache_entry_for_checkout function
> checkout: introduce --{,no-}overlay option
> checkout: introduce checkout.overlayMode config
> revert "checkout: introduce checkout.overlayMode config"
> ident: don't require calling prepare_fallback_ident first
> stash: drop unused parameter
> stash: pass pathspec as pointer
> glossary: add definition for overlay
> stash: setup default diff output format if necessary
> ls-files: use correct format string
>
> Todd Zullinger (9):
> t4038-diff-combined: quote paths with whitespace
> t9902: test multiple removals via completion.commands
> completion: use __git when calling --list-cmds
> Documentation/rev-list-options: wrap --date=<format> block with "--"
> Documentation/git-status: fix titles in porcelain v2 section
> Documentation/git-svn: improve asciidoctor compatibility
> Documentation/git-show-branch: avoid literal {apostrophe}
> test-lib: try harder to ensure a working jgit
> RelNotes: minor typo fixes in 2.22.0 draft
>
> Torsten Bögershausen (1):
> trace2: NULL is not allowed for va_list
>
> Trần Ngọc Quân (1):
> l10n: Updated Vietnamese translation for v2.21 rd2
>
> Vadim Kochan (1):
> autoconf: #include <libintl.h> when checking for gettext()
>
> William Hubbs (1):
> config: allow giving separate author and committer idents
>
> Yash Bhatambare (1):
> gitattributes.txt: fix typo
>
> brian m. carlson (35):
> t/lib-submodule-update: use appropriate length constant
> khash: move oid hash table definition
> pack-bitmap: make bitmap header handling hash agnostic
> pack-bitmap: convert struct stored_bitmap to object_id
> pack-bitmap: replace sha1_to_hex
> pack-bitmap: switch hard-coded constants to the_hash_algo
> pack-bitmap: switch hash tables to use struct object_id
> submodule: avoid hard-coded constants
> notes-merge: switch to use the_hash_algo
> notes: make hash size independent
> notes: replace sha1_to_hex
> object-store: rename and expand packed_git's sha1 member
> builtin/name-rev: make hash-size independent
> fast-import: make hash-size independent
> fast-import: replace sha1_to_hex
> builtin/am: make hash size independent
> builtin/pull: make hash-size independent
> http-push: convert to use the_hash_algo
> http-backend: allow 64-character hex names
> http-push: remove remaining uses of sha1_to_hex
> http-walker: replace sha1_to_hex
> http: replace hard-coded constant with the_hash_algo
> http: compute hash of downloaded objects using the_hash_algo
> http: replace sha1_to_hex
> remote-curl: make hash size independent
> hash: add a function to lookup hash algorithm by length
> builtin/get-tar-commit-id: make hash size independent
> archive: convert struct archiver_args to object_id
> refspec: make hash size independent
> builtin/difftool: use parse_oid_hex
> dir: make untracked cache extension hash size independent
> read-cache: read data in a hash-independent way
> Git.pm: make hash size independent
> gitweb: make hash size independent
> send-email: default to quoted-printable when CR is present
>
> Ævar Arnfjörð Bjarmason (44):
> receive-pack: fix use-after-free bug
> commit-graph tests: split up corrupt_graph_and_verify()
> commit-graph tests: test a graph that's too small
> Makefile: remove an out-of-date comment
> Makefile: move "strip" assignment down from flags
> Makefile: add/remove comments at top and tweak whitespace
> Makefile: Move *_LIBS assignment into its own section
> Makefile: move the setting of *FLAGS closer to "include"
> Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
> gc: remove redundant check for gc_auto_threshold
> gc: convert to using the_hash_algo
> gc: refactor a "call me once" pattern
> reflog tests: make use of "test_config" idiom
> reflog tests: test for the "points nowhere" warning
> rebase: remove the rebase.useBuiltin setting
> gc docs: modernize the advice for manually running "gc"
> gc docs: stop noting "repack" flags
> gc docs: clean grammar for "gc.bigPackThreshold"
> commit-graph: fix segfault on e.g. "git status"
> commit-graph: don't early exit(1) on e.g. "git status"
> commit-graph: don't pass filename to load_commit_graph_one_fd_st()
> commit-graph verify: detect inability to read the graph
> commit-graph write: don't die if the existing graph is corrupt
> commit-graph: improve & i18n error messages
> reflog tests: assert lack of early exit with expiry="never"
> gc: handle & check gc.reflogExpire config
> test-lib: whitelist GIT_TR2_* in the environment
> gc docs: include the "gc.*" section from "config" in "gc"
> gc docs: re-flow the "gc.*" section in "config"
> gc docs: fix formatting for "gc.writeCommitGraph"
> gc docs: note how --aggressive impacts --window & --depth
> gc docs: downplay the usefulness of --aggressive
> gc docs: note "gc --aggressive" in "fast-import"
> gc docs: clarify that "gc" doesn't throw away referenced objects
> gc docs: remove incorrect reference to gc.auto=0
> perf README: correct docs for 3c8f12c96c regression
> perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
> perf-lib.sh: make "./run <revisions>" use the correct gits
> perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
> perf tests: add "bindir" prefix to git tree test results
> perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
> trace2: fix up a missing "leave" entry point
> trace2: fix up a missing "leave" entry point
> sha1dc: update from upstream
>
> İsmail Dönmez (2):
> mingw: do not let ld strip relocations
> mingw: enable DEP and ASLR
>
> --
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqqlfyito3a.fsf%40gitster-ct.c.googlers.com.
> For more options, visit https://groups.google.com/d/optout.
>
^ permalink raw reply [relevance 0%]
* Re: [ANNOUNCE] Git v2.22.0-rc3
2019-06-03 20:23 2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
2019-06-04 1:32 0% ` Ben Humphreys
@ 2019-06-04 1:47 0% ` Bhaskar Chowdhury
2019-06-04 14:45 0% ` Git for Windows v2.22.0-rc3, was " Johannes Schindelin
2 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-06-04 1:47 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 71981 bytes --]
Thanks, a bunch Junio!
On 13:23 Mon 03 Jun , Junio C Hamano wrote:
>A release candidate Git v2.22.0-rc3 is now available for testing
>at the usual places. It is comprised of 718 non-merge commits
>since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
>Hopefully, this will be the last -rc during this cycle.
>
>The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
>The following public repositories all have a copy of the
>'v2.22.0-rc3' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
>New contributors whose contributions weren't in v2.21.0 are as follows.
>Welcome to the Git development community!
>
> Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
> Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
> Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
> Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
> Yash Bhatambare.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
> Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
> Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
> Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
> David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
> Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
> Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
> Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
> Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
> Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
> Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
> Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
> Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
> Trần Ngọc Quân.
>
>----------------------------------------------------------------
>
>Git 2.22 Release Notes (draft)
>==============================
>
>Updates since v2.21
>-------------------
>
>Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
> create a lazy/partial clone has been removed. Using a blob that is
> part of the project as sparse specification is still supported with
> the "--filter=sparse:oid=<blob>" option.
>
>UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
> checking out paths out of the tree-ish, that allows paths that
> match the pathspec that are in the current index and working tree
> and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..." now allows to
> optionally pick trailers selectively by keyword, show only values,
> etc.
>
> * Four new configuration variables {author,committer}.{name,email}
> have been introduced to override user.{name,email} in more specific
> cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
> "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
> merge involved renames. A new option adds the paths in the
> original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
> complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
> culprit using a raw "diff-tree", with which there is no output for
> a merge commit. This has been updated to use a more modern and
> human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
> option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
> been updated.
>
> * The completion helper code now pays attention to repository-local
> configuration (when available), which allows --list-cmds to honour
> a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
> its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
> file changes, which can help e.g. a virtualized working tree
> implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
> between HEAD and the working-tree files forward while checking out
> another branch, and ignored the differences between HEAD and the
> index. The command has been taught to abort when the index and the
> HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
> often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
> submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
> infer file movement based on how other files in the same directory
> moved. As this is inherently less robust heuristics than the one
> based on the content similarity of the file itself (rather than
> based on what its neighbours are doing), it sometimes gives an
> outcome unexpected by the end users. This has been toned down to
> leave the renamed paths in higher/conflicted stages in the index so
> that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
> mistake when creating an annotated or signed tag that points at
> another tag.
>
> * The "git pack-objects" command learned to report the number of
> objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
> conflicted merge was shown above the scissors line when the
> clean-up mode is set to "scissors", even though it was commented
> out just like the list of updated paths and other information to
> help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
> when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
> the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
> repositories now; also the pathname hash-cache is created by
> default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
> taught that in their contexts, the notation A...B means "the merge
> base between these two commits", just like "git checkout A...B"
> detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
> of {diff,merge}.{tool,guitool} configuration variables serve as
> fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
> mode; they are now explicitly marked as mutually incompatible.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
> long predates the parse-options API, uses fairly long and complex
> handcrafted option parser. This is being rewritten to use the
> parse-options API.
>
> * The implementation of pack-redundant has been updated for
> performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
> bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
> use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
> patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
> easier to run most of the tests under different versions of
> over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
> results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
> packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
> updated.
>
> * The tests have been updated not to rely on the abbreviated option
> names the parse-options API offers, to protect us from an
> abbreviated form of an option that used to be unique within the
> command getting non-unique when a new option that share the same
> prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
> list many times during a single step of its operation, and the
> recent C-rewrite made a faithful conversion of the logic to C. The
> implementation has been updated to carry necessary information
> around in-core to avoid rewriting the same file over and over
> unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
> processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
> missing blobs we will need, instead of waiting for the on-demand
> machinery to discover them one by one. The code learned to aim to
> achieve better performance by batching the request for these
> promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
> pointless to spend cycles for a large portion of the connectivity
> check that enumerates and skips promisor objects (which by
> definition is all objects fetched from the other side). This has
> been optimized out.
>
> * Mechanically and systematically drop "extern" from function
> declaration.
>
> * The script to aggregate perf result unconditionally depended on
> libjson-perl even though it did not have to, which has been
> corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
> avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
> of Git that happens to be on $PATH, not the specified one to
> measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
> spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
> responded by a request to disambiguate between --recursive and
> --recurse-submodules, which is bad because these two are synonyms.
> The parse-options API has been extended to define such synonyms
> more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
> fread/fwrite did not return the number of elements, which was found
> to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
>Fixes since v2.21
>-----------------
>
> * "git prune-packed" did not notice and complain against excess
> arguments given from the command line, which now it does.
> (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
> (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
> --ext-diff and --textconv, but so far these have been ignored,
> which has been corrected.
> (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
> a bug in the latter (lack of authentication retry) and generally
> improves the code base.
> (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
> to (accidentally) include it more than once.
> (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
> included sha256/gcrypt.h, even when it is not used, causing the
> make target to fail. We now skip it when GCRYPT_SHA256 is not in
> use.
> (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
> files, which is expensive on platforms with slow filesystems; it
> now optionally uses "ls-files" if working within a repository,
> which is a trick similar to how all sources are enumerated to run
> ETAGS on.
> (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
> correctly, which has been corrected.
> (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
> (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
> DEVELOPER=YesPlease; this did not work well before.
> (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
> the objects that are not reachable from any of the refs into
> unreachable and dangling. This is now enabled when dangling
> objects are requested (which is done by default, but can be
> overridden with the "--no-dangling" option).
> (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
> the upload-pack that runs on the other end that hangs up after
> detecting an error could cause "git fetch" to die with a signal,
> which led to a flaky test. "git fetch" now ignores SIGPIPE during
> the network portion of its operation (this is not a problem as we
> check the return status from our write(2)s).
> (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
> well-known objects like an empty tree (which should yield "yes",
> even when there is no on-disk object for an empty tree), which has
> been corrected.
> (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
> repository_format structure.
> (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
> but there is a slight difference that wasn't documented, which is
> now fixed.
> (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
> working tree down to a small "token" (a la Git LFS), there is no
> point in allocating a huge scratch area upfront, but the buffer is
> sized based on the original file size. The convert mechanism now
> allocates very minimum and reallocates as it receives the output
> from the clean filter process.
> (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
> intermediate states, which inherently makes the hierarchy per
> worktree, but it didn't quite work well.
> (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
> output as it should. This has been corrected.
> (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
> and then mkdir", which is race-prone. This has been fixed by using
> mkdir and reacting to EEXIST in a loop.
> (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
> (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
> asciidoc.
> (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
> messages at places.
> (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
> that they can be localized.
> (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
> configuration, which made Windows port to ignore settings of
> core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
> is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
> output file for the cover-letter, which has been corrected.
> (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
> incorrectly left some paths in an unmerged state, which has been
> corrected.
>
> * A corner case bug in the refs API has been corrected.
> (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
> (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
> strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
> (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
> (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
> update_server_info() function.
> (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
> updated.
> (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
> user to ask help resolving a conflicted step, did not honor the
> options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
> careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
> (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
> corrected.
>
> * Performance fix around "git blame", especially in a linear history
> (which is the norm we should optimize for).
> (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
> (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
> deal better with overlong messages.
> (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
> the working tree, and the same command in a bare repository errors
> out because there is no working tree by definition. The command
> has been taught to instead start blaming from the commit at HEAD,
> which is more useful.
> (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
> extension has been corrected.
> (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
> it is used in more places, by using xmalloc and/or xcalloc calls.
> (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
> was made runtime-tunable, which has been fixed.
> (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
> (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
> down correctly, which has been corrected.
> (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
> payload contains carriage-return. The use of the mechanism is in
> line with the design originally added the codepath that chooses QP
> when the payload has overly long lines.
> (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
> anything-by: trailers in 'git send-email' was found to be way too
> eager and considered nonsense strings as if they can be legitimate
> beginning of *-by: trailer. This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
> seems to have stopped including from /usr/local/include; this
> has been corrected.
> (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
> repository is an explicit indication that the user wants to add it
> as a submodule, but when the HEAD of the inner repository is on an
> unborn branch, it cannot be added as a submodule. Worse, the files
> in its working tree can be added as if they are a part of the outer
> repository, which is not what the user wants. These problems are
> being addressed.
> (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
> to (and more importantly, ought to) clean up the commit log message
> with the --cleanup=space option by default, but this has been
> broken since late 2017. This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
> failed to peel the tag before writing a replace ref, which did not
> make sense because the old graft mechanism the feature wants to
> mimic only allowed to replace one commit object with another.
> This has been fixed.
> (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
> of a different type is expected, instead of blindly assuming that
> the connection between objects are correctly made.
> (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
> which has been fixed.
> (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
> for-each-ref" and friends was not showing the right branch, which
> has been fixed.
> (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
> where a particular build may deliberately omit some subcommands,
> which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
> "git branch -D" from removing the branch that is currently checked
> out by mistake. The implementation of this logic was broken for
> repositories with unusual name, which unfortunately is the norm for
> submodules these days. This has been fixed.
> (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
> which has been corrected.
> (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
> gettext() implementations from -libintl by ignoring useless stub
> implementations shipped in some C library, which has been
> corrected.
> (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
> run in an empty repository, which emulates the initial clone
> situation better.
> (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
> tree resulted in duplicated Makefile rules that caused the build to
> issue an unnecessary warning during a trial build after merge
> conflicts are resolved in working tree *.h files but before the
> resolved results are added to the index. This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
> that deals with multiple commits got confused when the final step
> gets stopped with a conflict and the user concluded the sequence
> with "git commit". Attempt to fix it by cleaning up the state
> files used by these commands in such a situation.
> (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
> entities may become different from what the end-user expects, just
> like files in the working tree get "renamed". Work around the
> mismatch by paying attention to the core.precomposeUnicode
> configuration.
> (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
> see too many packfiles and ran out of open file descriptor, which
> has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
> git-svn package (in the hope that it would bring in the right
> dependencies). This has been updated to install the more direct
> dependency, namely, libsvn-perl.
> (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
> "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
> file gets discarded, which has been corrected.
> (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
> todo-list "rebase -i -r" uses should not be shown as a hex object
> name.
>
> * A prerequisite check in the test suite to see if a working jgit is
> available was made more robust.
> (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
> indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
> (merge 11f470aee7 jc/test-yes-doc later to maint).
> (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
> (merge 5c326d1252 jk/unused-params later to maint).
> (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
> (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
> (merge 1ede45e44b en/merge-options-doc later to maint).
> (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
> (merge c271dc28fd nd/no-more-check-racy later to maint).
> (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
> (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
> (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
> (merge 50b206371d js/untravis-windows later to maint).
> (merge dbf47215e3 js/rebase-recreate-merge later to maint).
> (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
> (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
> (merge af91b0230c dl/ignore-docs later to maint).
> (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
> (merge e041d0781b ar/t4150-remove-cruft later to maint).
> (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
> (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
> (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
> (merge a7256debd4 nd/checkout-m-doc-update later to maint).
> (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
> (merge 0b918b75af sg/t5318-cleanup later to maint).
> (merge 68ed71b53c cb/doco-mono later to maint).
> (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
> (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
> (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
> (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
> (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
> (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
> (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
> (merge d8083e4180 km/t3000-retitle later to maint).
> (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
> (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
> (merge 6804ba3a58 cw/diff-highlight later to maint).
> (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
> (merge d9ef573837 jk/apache-lsan later to maint).
> (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
> (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
> (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
> (merge d4907720a2 cm/notes-comment-fix later to maint).
> (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
> (merge 4c785c0edc js/rebase-config-bitfix later to maint).
> (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.21.0 are as follows:
>
>Alban Gruin (18):
> sequencer: changes in parse_insn_buffer()
> sequencer: make the todo_list structure public
> sequencer: remove the 'arg' field from todo_item
> sequencer: refactor transform_todos() to work on a todo_list
> sequencer: introduce todo_list_write_to_file()
> sequencer: refactor check_todo_list() to work on a todo_list
> sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
> sequencer: refactor rearrange_squash() to work on a todo_list
> sequencer: make sequencer_make_script() write its script to a strbuf
> sequencer: change complete_action() to use the refactored functions
> rebase--interactive: move sequencer_add_exec_commands()
> rebase--interactive: move rearrange_squash_in_todo_file()
> sequencer: refactor skip_unnecessary_picks() to work on a todo_list
> rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
> rebase-interactive: append_todo_help() changes
> rebase-interactive: rewrite edit_todo_list() to handle the initial edit
> sequencer: use edit_todo_list() in complete_action()
> rebase--interactive: move transform_todo_file()
>
>Alexander Blesius (1):
> doc: fix typos in man pages
>
>Alexander Shopov (1):
> gitk: Update Bulgarian translation (317t)
>
>Anders Waldenborg (7):
> doc: group pretty-format.txt placeholders descriptions
> pretty: allow %(trailers) options with explicit value
> pretty: single return path in %(trailers) handling
> pretty: allow showing specific trailers
> pretty: add support for "valueonly" option in %(trailers)
> strbuf: separate callback for strbuf_expand:ing literals
> pretty: add support for separator option in %(trailers)
>
>Andreas Heiduk (1):
> revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
>Andrei Rybak (1):
> t4150: remove unused variable
>
>Baruch Siach (1):
> send-email: don't cc *-by lines with '-' prefix
>
>Beat Bolli (1):
> unicode: update the width tables to Unicode 12
>
>Ben Peart (1):
> read-cache: add post-index-change hook
>
>Boxuan Li (1):
> t4253-am-keep-cr-dos: avoid using pipes
>
>Brandon Richardson (1):
> commit-tree: utilize parse-options api
>
>Carlo Marcelo Arenas Belón (1):
> http-push: prevent format overflow warning with gcc >= 9
>
>Chris Mayo (1):
> notes: correct documentation of format_display_notes()
>
>Chris. Webster (1):
> diff-highlight: use correct /dev/null for UNIX and Windows
>
>Christian Couder (5):
> t6050: use test_line_count instead of wc -l
> t6050: redirect expected error output to a file
> replace: peel tag when passing a tag as parent to --graft
> replace: peel tag when passing a tag first to --graft
> list-objects-filter: disable 'sparse:path' filters
>
>Clément Chigot (2):
> Makefile: use fileno macro work around on AIX
> git-compat-util: work around for access(X_OK) under root
>
>Corentin BOMPARD (2):
> doc/CodingGuidelines: URLs and paths as monospace
> doc: format pathnames and URLs as monospace.
>
>Damien Robert (1):
> ref-filter: use correct branch for %(push:track)
>
>Daniels Umanovskis (1):
> branch: introduce --show-current display option
>
>David Aguilar (2):
> mergetools: add support for smerge (Sublime Merge)
> contrib/completion: add smerge to the mergetool completion candidates
>
>David Kastrup (1):
> blame.c: don't drop origin blobs as eagerly
>
>Denton Liu (38):
> completion: complete git submodule absorbgitdirs
> git-submodule.txt: "--branch <branch>" option defaults to 'master'
> submodule--helper: teach config subcommand --unset
> submodule: document default behavior
> git-reset.txt: clarify documentation
> git-clean.txt: clarify ignore pattern files
> docs: move core.excludesFile from git-add to gitignore
> contrib/subtree: ensure only one rev is provided
> midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> tag: fix formatting
> submodule: teach set-branch subcommand
> tag: advise on nested tags
> t7600: clean up style
> t3507: clean up style
> t7604: clean up style
> t7502: clean up style
> commit: extract cleanup_mode functions to sequencer
> parse-options.h: extract common --cleanup option
> merge: cleanup messages like commit
> merge: add scissors line on merge conflict
> cherry-pick/revert: add scissors line on merge conflict
> t7610: unsuppress output
> t7610: add mergetool --gui tests
> *.[ch]: remove extern from function declarations using spatch
> *.[ch]: remove extern from function declarations using sed
> *.[ch]: manually align parameter lists
> t2018: cleanup in current test
> branch: make create_branch accept a merge base rev
> revisions.txt: change "rev" to "<rev>"
> revisions.txt: mark optional rev arguments with []
> revisions.txt: mention <rev>~ form
> tag: fix typo in nested tagging hint
> mergetool: use get_merge_tool function
> mergetool--lib: create gui_mode function
> mergetool: fallback to tool when guitool unavailable
> difftool: make --gui, --tool and --extcmd mutually exclusive
> difftool: fallback on merge.guitool
>
>Derrick Stolee (4):
> trace2:data: pack-objects: add trace2 regions
> midx: pass a repository pointer
> midx: add packs to packed_git linked list
> trace2: add variable description to git.txt
>
>Dustin Spicuzza (1):
> cvsexportcommit: force crlf translation
>
>Elijah Newren (23):
> log,diff-tree: add --combined-all-paths option
> merge-options.txt: correct wording of --no-commit option
> t9300: demonstrate bug with get-mark and empty orphan commits
> git-fast-import.txt: fix wording about where ls command can appear
> fast-import: check most prominent commands first
> fast-import: only allow cat-blob requests where it makes sense
> fast-import: fix erroneous handling of get-mark with empty orphan commits
> Use 'unsigned short' for mode, like diff_filespec does
> merge-recursive: rename merge_options argument from 'o' to 'opt'
> merge-recursive: rename diff_filespec 'one' to 'o'
> merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
> merge-recursive: use 'ci' for rename_conflict_info variable name
> merge-recursive: move some struct declarations together
> merge-recursive: shrink rename_conflict_info
> merge-recursive: remove ren[12]_other fields from rename_conflict_info
> merge-recursive: track branch where rename occurred in rename struct
> merge-recursive: cleanup handle_rename_* function signatures
> merge-recursive: switch from (oid,mode) pairs to a diff_filespec
> t6043: fix copied test description to match its purpose
> merge-recursive: track information associated with directory renames
> merge-recursive: give callers of handle_content_merge() access to contents
> merge-recursive: switch directory rename detection default
> Honor core.precomposeUnicode in more places
>
>Emily Shaffer (1):
> gitsubmodules: align html and nroff lists
>
>Eric Sunshine (1):
> check-non-portable-shell: support Perl versions older than 5.10
>
>Eric Wong (1):
> repack: enable bitmaps by default on bare repos
>
>Jean-Noël Avila (3):
> l10n: fr.po remove obsolete entries
> Doc: fix misleading asciidoc formating
> diff: fix mistake in translatable strings
>
>Jeff Hostetler (30):
> trace2: Documentation/technical/api-trace2.txt
> trace2: create new combined trace facility
> trace2: collect Windows-specific process information
> trace2:data: add trace2 regions to wt-status
> trace2:data: add editor/pager child classification
> trace2:data: add trace2 sub-process classification
> trace2:data: add trace2 transport child classification
> trace2:data: add subverb to checkout command
> trace2:data: add subverb to reset command
> trace2:data: add trace2 hook classification
> trace2:data: add subverb for rebase
> trace2:data: add trace2 instrumentation to index read/write
> trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
> trace2: add for_each macros to clang-format
> progress: add sparse mode to force 100% complete message
> trace2:data: add trace2 data to midx
> midx: add progress indicators in multi-pack-index verify
> midx: during verify group objects by packfile to speed verification
> config: initialize opts structure in repo_read_config()
> trace2: refactor setting process starting time
> trace2: add absolute elapsed time to start event
> trace2: find exec-dir before trace2 initialization
> config: add read_very_early_config()
> trace2: use system/global config for default trace2 settings
> trace2: report peak memory usage of the process
> trace2: clarify UTC datetime formatting
> trace2: make SIDs more unique
> trace2: update docs to describe system/global config settings
> trace2: fixup access problem on /etc/gitconfig in read_very_early_config
> trace2: fix tracing when NO_PTHREADS is defined
>
>Jeff King (92):
> prune: lazily perform reachability traversal
> prune: use bitmaps for reachability traversal
> prune: check SEEN flag for reachability
> t5304: rename "sha1" variables to "oid"
> diff: drop options parameter from diffcore_fix_diff_index()
> diff: drop unused color reset parameters
> diff: drop unused emit data parameter from sane_truncate_line()
> diff: drop complete_rewrite parameter from run_external_diff()
> merge-recursive: drop several unused parameters
> pack-objects: drop unused parameter from oe_map_new_pack()
> files-backend: drop refs parameter from split_symref_update()
> ref-filter: drop unused buf/sz pairs
> ref-filter: drop unused "obj" parameters
> ref-filter: drop unused "sz" parameters
> diff: reuse diff setup for --no-index case
> bisect: use string arguments to feed internal diff-tree
> bisect: fix internal diff-tree config loading
> bisect: make diff-tree output prettier
> fetch: avoid calling write_or_die()
> fetch: ignore SIGPIPE during network operation
> rev-list: allow cached objects in existence check
> doc/fsck: clarify --connectivity-only behavior
> fsck: always compute USED flags for unreachable objects
> compat/bswap: add include header guards
> config: document --type=color output is a complete line
> line-log: suppress diff output with "-s"
> line-log: detect unsupported formats
> point pull requesters to GitGitGadget
> Makefile: fix unaligned loads in sha1dc with UBSan
> t5310: correctly remove bitmaps for jgit test
> pack-objects: default to writing bitmap hash-cache
> perf-lib.sh: rely on test-lib.sh for --tee handling
> revision: drop some unused "revs" parameters
> log: drop unused rev_info from early output
> log: drop unused "len" from show_tagger()
> update-index: drop unused prefix_length parameter from do_reupdate()
> test-date: drop unused "now" parameter from parse_dates()
> unpack-trees: drop name_entry from traverse_by_cache_tree()
> unpack-trees: drop unused error_type parameters
> report_path_error(): drop unused prefix parameter
> fetch_pack(): drop unused parameters
> parse-options: drop unused ctx parameter from show_gitcomp()
> pretty: drop unused "type" parameter in needs_rfc2047_encoding()
> pretty: drop unused strbuf from parse_padding_placeholder()
> git: read local config in --list-cmds
> completion: fix multiple command removals
> parse_opt_ref_sorting: always use with NONEG flag
> refs/files-backend: handle packed transaction prepare failure
> refs/files-backend: don't look at an aborted transaction
> http: factor out curl result code normalization
> http: normalize curl results for dumb loose and alternates fetches
> http: use normalize_curl_result() instead of manual conversion
> revision: use a prio_queue to hold rewritten parents
> get_commit_tree(): return NULL for broken tree
> rev-list: let traversal die when --missing is not in use
> rev-list: detect broken root trees
> test-prio-queue: use xmalloc
> xdiff: use git-compat-util
> xdiff: use xmalloc/xrealloc
> progress: use xmalloc/xcalloc
> t5516: drop ok=sigpipe from unreachable-want tests
> t5530: check protocol response for "not our ref"
> upload-pack: send ERR packet for non-tip objects
> pkt-line: prepare buffer before handling ERR packets
> fetch: use free_refs()
> remote.c: make singular free_ref() public
> fetch: do not consider peeled tags as advertised tips
> packfile.h: drop extern from function declarations
> pack-revindex: open index if necessary
> t5319: fix bogus cat-file argument
> t5319: drop useless --buffer from cat-file
> midx: check both pack and index names for containment
> packfile: fix pack basename computation
> http: simplify parsing of remote objects/info/packs
> server-info: fix blind pointer arithmetic
> server-info: simplify cleanup in parse_pack_def()
> server-info: use strbuf to read old info/packs file
> server-info: drop nr_alloc struct member
> server-info: drop objdirlen pointer arithmetic
> update_info_refs(): drop unused force parameter
> t5304: add a test for pruning with bitmaps
> untracked-cache: be defensive about missing NULs in index
> untracked-cache: simplify parsing by dropping "next"
> untracked-cache: simplify parsing by dropping "len"
> p5302: create the repo in each index-pack test
> doc/ls-files: put nested list for "-t" option into block
> t/perf: depend on perl JSON only when using --codespeed
> t/perf: add perf script for partial clones
> coccicheck: optionally batch spatch invocations
> t/lib-httpd: pass LSAN_OPTIONS through apache
> coccicheck: make batch size of 0 mean "unlimited"
> get_oid: handle NULL repo->index
>
>Jiang Xin (5):
> t5323: test cases for git-pack-redundant
> pack-redundant: delay creation of unique_objects
> pack-redundant: rename pack_list.all_objects
> pack-redundant: consistent sort method
> i18n: fix typos found during l10n for git 2.22.0
>
>Joel Teichroeb (5):
> stash: improve option parsing test coverage
> stash: convert apply to builtin
> stash: convert drop and clear to builtin
> stash: convert branch to builtin
> stash: convert pop to builtin
>
>Joey Hess (1):
> convert: avoid malloc of original file size
>
>Johannes Schindelin (67):
> ident: add the ability to provide a "fallback identity"
> travis: remove the hack to build the Windows job on Azure Pipelines
> tests: let --stress-limit=<N> imply --stress
> tests: introduce --stress-jobs=<N>
> built-in rebase: no need to check out `onto` twice
> built-in rebase: use the correct reflog when switching branches
> built-in rebase: demonstrate that ORIG_HEAD is not set correctly
> built-in rebase: set ORIG_HEAD just once, before the rebase
> Makefile: use `git ls-files` to list header files, if possible
> curl: anonymize URLs in error messages and warnings
> remote-curl: mark all error messages for translation
> stash: add back the original, scripted `git stash`
> stash: optionally use the scripted version again
> tests: add a special setup where stash.useBuiltin is off
> legacy stash: fix "rudimentary backport of -q"
> built-in stash: handle :(glob) pathspecs again
> mingw: drop MakeMaker reference
> mingw: allow building with an MSYS2 runtime v3.x
> rebase: deprecate --preserve-merges
> mingw: respect core.hidedotfiles = false in git-init again
> test-lib: introduce 'test_atexit'
> git-daemon: use 'test_atexit` to stop 'git-daemon'
> git p4 test: use 'test_atexit' to kill p4d and the watchdog process
> rebase -i: demonstrate obscure loose object cache bug
> sequencer: improve error message when an OID could not be parsed
> sequencer: move stale comment into correct location
> get_oid(): when an object was not found, try harder
> difftool: remove obsolete (and misleading) comment
> parse-options: make OPT_ARGUMENT() more useful
> difftool: allow running outside Git worktrees with --no-index
> docs: move gitremote-helpers into section 7
> docs: do not document the `git remote-testgit` command
> check-docs: really look at the documented commands again
> check-docs: do not expect guide pages to correspond to commands
> check-docs: fix for setups where executables have an extension
> tests (rebase): spell out the `--keep-empty` option
> tests (rebase): spell out the `--force-rebase` option
> t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
> t5531: avoid using an abbreviated option
> tests (push): do not abbreviate the `--follow-tags` option
> tests (status): spell out the `--find-renames` option in full
> tests (pack-objects): use the full, unabbreviated `--revs` option
> t3301: fix false negative
> untracked cache: fix off-by-one
> tests: disallow the use of abbreviated options (by default)
> t9822: skip tests if file names cannot be ISO-8859-1 encoded
> macOS: make sure that gettext is found
> remote-testgit: move it into the support directory for t5801
> Makefile: drop the NO_INSTALL variable
> help -a: do not list commands that are excluded from the build
> check-docs: allow command-list.txt to contain excluded commands
> docs: exclude documentation for commands that have been excluded
> check-docs: do not bother checking for legacy scripts' documentation
> test-tool: handle the `-C <directory>` option just like `git`
> Turn `git serve` into a test helper
> t5580: verify that alternates can be UNC paths
> fsmonitor: demonstrate that it is not refreshed after discard_index()
> fsmonitor: force a refresh after the index was discarded
> t6500(mingw): use the Windows PID of the shell
> difftool --no-index: error out on --dir-diff (and don't crash)
> status: fix display of rebase -ir's `label` command
> parse-options: adjust `parse_opt_unknown_cb()`s declared return type
> stash: document stash.useBuiltin
> rebase: replace incorrect logical negation by correct bitwise one
> tests: mark a couple more test cases as requiring `rebase -p`
> docs: say that `--rebase=preserve` is deprecated
> rebase docs: recommend `-r` over `-p`
>
>Jonathan Tan (25):
> remote-curl: reduce scope of rpc_state.argv
> remote-curl: reduce scope of rpc_state.stdin_preamble
> remote-curl: reduce scope of rpc_state.result
> remote-curl: refactor reading into rpc_state's buf
> remote-curl: use post_rpc() for protocol v2 also
> tests: define GIT_TEST_PROTOCOL_VERSION
> t5601: check ssh command only with protocol v0
> tests: always test fetch of unreachable with v0
> t5503: fix overspecification of trace expectation
> t5512: compensate for v0 only sending HEAD symrefs
> t5700: only run with protocol version 1
> tests: fix protocol version for overspecifications
> t5552: compensate for v2 filtering ref adv.
> submodule: explain first attempt failure clearly
> t5551: mark half-auth no-op fetch test as v0-only
> fetch-pack: call prepare_shallow_info only if v0
> fetch-pack: respect --no-update-shallow in v2
> sha1-file: support OBJECT_INFO_FOR_PREFETCH
> fetch-pack: binary search when storing wanted-refs
> diff: batch fetching of missing blobs
> pack-objects: write objects packed to trace2
> transport: die if server options are unsupported
> clone: send server options when using protocol v2
> worktree: update is_bare heuristics
> fetch-pack: send server options after command
>
>Jordi Mas (1):
> l10n: Fixes to Catalan translation
>
>Josh Steadmon (5):
> protocol-capabilities.txt: document symref
> trace2: write to directory targets
> clone: do faster object check for partial clones
> trace2: fix incorrect function pointer check
> commit-graph: fix memory leak
>
>Junio C Hamano (18):
> test: caution on our version of 'yes'
> builtin/log: downcase the beginning of error messages
> format-patch: notice failure to open cover letter for writing
> Start 2.22 cycle
> The second batch
> The third batch
> The fourth batch
> gettext tests: export the restored GIT_TEST_GETTEXT_POISON
> The fifth batch
> The sixth batch
> Makefile: dedup list of files obtained from ls-files
> The seventh batch
> The eighth batch
> Git 2.22-rc0
> pkt-line: drop 'const'-ness of a param to set_packet_header()
> Git 2.22-rc1
> Git 2.22-rc2
> Git 2.22-rc3
>
>Kyle Meyer (5):
> rebase docs: fix "gitlink" typo
> submodule: refuse to add repository with no commits
> dir: do not traverse repositories with no commits
> add: error appropriately on repository with no commits
> t3000 (ls-files -o): widen description to reflect current tests
>
>Martin Ågren (14):
> setup: free old value before setting `work_tree`
> setup: fix memory leaks with `struct repository_format`
> config/diff.txt: drop spurious backtick
> config/fsck.txt: avoid starting line with dash
> git.txt: remove empty line before list continuation
> git-svn.txt: drop escaping '\' that ends up being rendered
> Documentation: turn middle-of-line tabs into spaces
> Documentation/Makefile: add missing xsl dependencies for manpages
> Documentation/Makefile: add missing dependency on asciidoctor-extensions
> asciidoctor-extensions: fix spurious space after linkgit
> Doc: auto-detect changed build flags
> doc-diff: let `render_tree()` take an explicit directory name
> doc-diff: support diffing from/to AsciiDoc(tor)
> doc-diff: add `--cut-header-footer`
>
>Matthew Kraai (1):
> t3903: add test for --intent-to-add file
>
>Michal Suchanek (1):
> worktree: fix worktree add race
>
>Mike Hommey (2):
> fix pack protocol example client/server communication
> Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
>Nguyễn Thái Ngọc Duy (129):
> parse-options.h: remove extern on function prototypes
> parse-options: add one-shot mode
> parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
> parse-options: add OPT_BITOP()
> parse-options: stop abusing 'callback' for lowlevel callbacks
> parse-options: avoid magic return codes
> parse-options: allow ll_callback with OPTION_CALLBACK
> diff.h: keep forward struct declarations sorted
> diff.h: avoid bit fields in struct diff_flags
> diff.c: prepare to use parse_options() for parsing
> diff.c: convert -u|-p|--patch
> diff.c: convert -U|--unified
> diff.c: convert -W|--[no-]function-context
> diff.c: convert --raw
> read-cache.c: fix writing "link" index ext with null base oid
> completion: add more parameter value completion
> diff-parseopt: convert --patch-with-raw
> diff-parseopt: convert --numstat and --shortstat
> diff-parseopt: convert --dirstat and friends
> diff-parseopt: convert --check
> diff-parseopt: convert --summary
> diff-parseopt: convert --patch-with-stat
> diff-parseopt: convert --name-only
> diff-parseopt: convert --name-status
> diff-parseopt: convert -s|--no-patch
> diff-parseopt: convert --stat*
> diff-parseopt: convert --[no-]compact-summary
> diff-parseopt: convert --output-*
> diff-parseopt: convert -B|--break-rewrites
> diff-parseopt: convert -M|--find-renames
> diff-parseopt: convert -D|--irreversible-delete
> diff-parseopt: convert -C|--find-copies
> diff-parseopt: convert --find-copies-harder
> diff-parseopt: convert --no-renames|--[no--rename-empty
> diff-parseopt: convert --relative
> diff-parseopt: convert --[no-]minimal
> diff-parseopt: convert --ignore-some-changes
> Delete check-racy.c
> diff-parseopt: convert --[no-]indent-heuristic
> diff-parseopt: convert --patience
> diff-parseopt: convert --histogram
> diff-parseopt: convert --diff-algorithm
> diff-parseopt: convert --anchored
> diff-parseopt: convert --binary
> diff-parseopt: convert --full-index
> diff-parseopt: convert -a|--text
> diff-parseopt: convert -R
> diff-parseopt: convert --[no-]follow
> diff-parseopt: convert --[no-]color
> diff-parseopt: convert --word-diff
> diff-parseopt: convert --word-diff-regex
> diff-parseopt: convert --color-words
> diff-parseopt: convert --exit-code
> diff-parseopt: convert --quiet
> diff-parseopt: convert --ext-diff
> diff-parseopt: convert --textconv
> diff-parseopt: convert --ignore-submodules
> diff-parseopt: convert --submodule
> files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
> files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
> Make sure refs/rewritten/ is per-worktree
> unpack-trees: fix oneway_merge accidentally carry over stage index
> checkout.txt: note about losing staged changes with --merge
> commit: improve error message in "-a <paths>" case
> unpack-trees: keep gently check inside add_rejected_path
> unpack-trees: rename "gently" flag to "quiet"
> read-tree: add --quiet
> checkout: prevent losing staged changes with --merge
> diff-parseopt: convert --ws-error-highlight
> diff-parseopt: convert --ita-[in]visible-in-index
> diff-parseopt: convert -z
> diff-parseopt: convert -l
> diff-parseopt: convert -S|-G
> diff-parseopt: convert --pickaxe-all|--pickaxe-regex
> diff-parseopt: convert -O
> diff-parseopt: convert --find-object
> diff-parseopt: convert --diff-filter
> diff-parseopt: convert --[no-]abbrev
> diff-parseopt: convert --[src|dst]-prefix
> diff-parseopt: convert --line-prefix
> diff-parseopt: convert --no-prefix
> diff-parseopt: convert --inter-hunk-context
> diff-parseopt: convert --[no-]color-moved
> diff-parseopt: convert --color-moved-ws
> diff.c: allow --no-color-moved-ws
> range-diff: use parse_options() instead of diff_opt_parse()
> diff --no-index: use parse_options() instead of diff_opt_parse()
> am: avoid diff_opt_parse()
> config: correct '**' matching in includeIf patterns
> interpret-trailers.txt: start the desc line with a capital letter
> read-tree.txt: clarify --reset and worktree changes
> packfile.c: add repo_approximate_object_count()
> refs.c: add refs_ref_exists()
> refs.c: add refs_shorten_unambiguous_ref()
> refs.c: remove the_repo from substitute_branch_name()
> refs.c: remove the_repo from expand_ref()
> refs.c: add repo_dwim_ref()
> refs.c: add repo_dwim_log()
> refs.c: remove the_repo from read_ref_at()
> submodule foreach: fix "<command> --quiet" not being respected
> commit.cocci: refactor code, avoid double rewrite
> commit.c: add repo_get_commit_tree()
> sha1-name.c: remove the_repo from sort_ambiguous()
> sha1-name.c: remove the_repo from find_abbrev_len_packed()
> sha1-name.c: add repo_find_unique_abbrev_r()
> sha1-name.c: store and use repo in struct disambiguate_state
> sha1-name.c: add repo_for_each_abbrev()
> sha1-name.c: remove the_repo from get_short_oid()
> sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
> sha1-name.c: remove the_repo from interpret_branch_mark()
> sha1-name.c: add repo_interpret_branch_name()
> sha1-name.c: remove the_repo from get_oid_oneline()
> sha1-name.c: remove the_repo from get_describe_name()
> sha1-name.c: remove the_repo from get_oid_basic()
> sha1-name.c: remove the_repo from get_oid_1()
> sha1-name.c: remove the_repo from handle_one_ref()
> sha1-name.c: remove the_repo from diagnose_invalid_index_path()
> sha1-name.c: remove the_repo from resolve_relative_path()
> sha1-name.c: remove the_repo from get_oid_with_context_1()
> sha1-name.c: add repo_get_oid()
> submodule-config.c: use repo_get_oid for reading .gitmodules
> sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
> sha1-name.c: remove the_repo from other get_oid_*
> sha1-name.c: remove the_repo from get_oid_mb()
> parse-options: don't emit "ambiguous option" for aliases
> submodule--helper: add a missing \n
> diff-parseopt: correct variable types that are used by parseopt
> diff-parseopt: restore -U (no argument) behavior
> parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
>Paul-Sebastian Ungureanu (17):
> sha1-name.c: add `get_oidf()` which acts like `get_oid()`
> strbuf.c: add `strbuf_join_argv()`
> strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
> t3903: modernize style
> stash: rename test cases to be more descriptive
> stash: add tests for `git stash show` config
> stash: mention options in `show` synopsis
> stash: convert list to builtin
> stash: convert show to builtin
> stash: convert store to builtin
> stash: convert create to builtin
> stash: convert push to builtin
> stash: make push -q quiet
> stash: convert save to builtin
> stash: optimize `get_untracked_files()` and `check_changes()`
> stash: replace all `write-tree` child processes with API calls
> stash: convert `stash--helper.c` into `stash.c`
>
>Philip Oakley (2):
> rerere doc: quote `rerere.enabled`
> describe doc: remove '7-char' abbreviation reference
>
>Phillip Wood (21):
> am/cherry-pick/rebase/revert: document --rerere-autoupdate
> merge: tweak --rerere-autoupdate documentation
> sequencer: break some long lines
> cherry-pick: demonstrate option amnesia
> cherry-pick --continue: remember options
> commit/reset: try to clean up sequencer state
> fix cherry-pick/revert status after commit
> sequencer: fix cleanup with --signoff and -x
> sequencer.c: save and restore cleanup mode
> sequencer: always discard index after checkout
> rebase: don't translate trace strings
> rebase: rename write_basic_state()
> rebase: use OPT_RERERE_AUTOUPDATE()
> rebase -i: combine rebase--interactive.c with rebase.c
> rebase -i: remove duplication
> rebase -i: use struct commit when parsing options
> rebase -i: use struct object_id for squash_onto
> rebase -i: use struct rebase_options to parse args
> rebase -i: use struct rebase_options in do_interactive_rebase()
> rebase: use a common action enum
> rebase -i: run without forking rebase--interactive
>
>Ramsay Jones (2):
> prune-packed: check for too many arguments
> Makefile: fix 'hdr-check' when GCRYPT not installed
>
>René Scharfe (1):
> get-tar-commit-id: parse comment record
>
>Robert P. J. Day (3):
> mention use of "hooks.allownonascii" in "man githooks"
> docs/git-gc: fix typo "--prune=all" to "--prune=now"
> attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
>Rohit Ashiwal (3):
> test functions: add function `test_file_not_empty`
> t3600: modernize style
> t3600: use helpers to replace test -d/f/e/s <path>
>
>SZEDER Gábor (27):
> test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
> t/lib-git-daemon: make sure to kill the 'git-daemon' process
> tests: use 'test_atexit' to stop httpd
> t0301-credential-cache: use 'test_atexit' to stop the credentials helper
> git p4 test: clean up the p4d cleanup functions
> git p4 test: simplify timeout handling
> git p4 test: disable '-x' tracing in the p4d watchdog loop
> t9811-git-p4-label-import: fix pipeline negation
> t5318-commit-graph: remove unused variable
> Documentation/git-diff-tree.txt: fix formatting
> Documentation/technical/api-config.txt: fix formatting
> Documentation/technical/protocol-v2.txt: fix formatting
> ci: install Asciidoctor in 'ci/install-dependencies.sh'
> index-pack: show progress while checking objects
> ci: stick with Asciidoctor v1.5.8 for now
> ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
> progress: make display_progress() return void
> progress: assemble percentage and counters in a strbuf before printing
> blame: default to HEAD in a bare repo when no start commit is given
> builtin rebase: use FREE_AND_NULL
> builtin rebase: use oideq()
> progress: clear previous progress update dynamically
> progress: break too long progress bar lines
> ci: install 'libsvn-perl' instead of 'git-svn'
> trace2: rename environment variables to GIT_TRACE2*
> trace2: document the supported values of GIT_TRACE2* env variables
> progress: avoid empty line when breaking the progress line
>
>Sun Chao (2):
> pack-redundant: delete redundant code
> pack-redundant: new algorithm to find min packs
>
>Sven Strickroth (1):
> MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
>Tanushree Tumane (1):
> mingw: remove obsolete IPv6-related code
>
>Taylor Blau (4):
> t: move 'hex2oct' into test-lib-functions.sh
> t: introduce tests for unexpected object types
> list-objects.c: handle unexpected non-blob entries
> list-objects.c: handle unexpected non-tree entries
>
>Thomas Gummerer (15):
> move worktree tests to t24*
> entry: factor out unlink_entry function
> entry: support CE_WT_REMOVE flag in checkout_entry
> read-cache: add invalidate parameter to remove_marked_cache_entries
> checkout: clarify comment
> checkout: factor out mark_cache_entry_for_checkout function
> checkout: introduce --{,no-}overlay option
> checkout: introduce checkout.overlayMode config
> revert "checkout: introduce checkout.overlayMode config"
> ident: don't require calling prepare_fallback_ident first
> stash: drop unused parameter
> stash: pass pathspec as pointer
> glossary: add definition for overlay
> stash: setup default diff output format if necessary
> ls-files: use correct format string
>
>Todd Zullinger (9):
> t4038-diff-combined: quote paths with whitespace
> t9902: test multiple removals via completion.commands
> completion: use __git when calling --list-cmds
> Documentation/rev-list-options: wrap --date=<format> block with "--"
> Documentation/git-status: fix titles in porcelain v2 section
> Documentation/git-svn: improve asciidoctor compatibility
> Documentation/git-show-branch: avoid literal {apostrophe}
> test-lib: try harder to ensure a working jgit
> RelNotes: minor typo fixes in 2.22.0 draft
>
>Torsten Bögershausen (1):
> trace2: NULL is not allowed for va_list
>
>Trần Ngọc Quân (1):
> l10n: Updated Vietnamese translation for v2.21 rd2
>
>Vadim Kochan (1):
> autoconf: #include <libintl.h> when checking for gettext()
>
>William Hubbs (1):
> config: allow giving separate author and committer idents
>
>Yash Bhatambare (1):
> gitattributes.txt: fix typo
>
>brian m. carlson (35):
> t/lib-submodule-update: use appropriate length constant
> khash: move oid hash table definition
> pack-bitmap: make bitmap header handling hash agnostic
> pack-bitmap: convert struct stored_bitmap to object_id
> pack-bitmap: replace sha1_to_hex
> pack-bitmap: switch hard-coded constants to the_hash_algo
> pack-bitmap: switch hash tables to use struct object_id
> submodule: avoid hard-coded constants
> notes-merge: switch to use the_hash_algo
> notes: make hash size independent
> notes: replace sha1_to_hex
> object-store: rename and expand packed_git's sha1 member
> builtin/name-rev: make hash-size independent
> fast-import: make hash-size independent
> fast-import: replace sha1_to_hex
> builtin/am: make hash size independent
> builtin/pull: make hash-size independent
> http-push: convert to use the_hash_algo
> http-backend: allow 64-character hex names
> http-push: remove remaining uses of sha1_to_hex
> http-walker: replace sha1_to_hex
> http: replace hard-coded constant with the_hash_algo
> http: compute hash of downloaded objects using the_hash_algo
> http: replace sha1_to_hex
> remote-curl: make hash size independent
> hash: add a function to lookup hash algorithm by length
> builtin/get-tar-commit-id: make hash size independent
> archive: convert struct archiver_args to object_id
> refspec: make hash size independent
> builtin/difftool: use parse_oid_hex
> dir: make untracked cache extension hash size independent
> read-cache: read data in a hash-independent way
> Git.pm: make hash size independent
> gitweb: make hash size independent
> send-email: default to quoted-printable when CR is present
>
>Ævar Arnfjörð Bjarmason (44):
> receive-pack: fix use-after-free bug
> commit-graph tests: split up corrupt_graph_and_verify()
> commit-graph tests: test a graph that's too small
> Makefile: remove an out-of-date comment
> Makefile: move "strip" assignment down from flags
> Makefile: add/remove comments at top and tweak whitespace
> Makefile: Move *_LIBS assignment into its own section
> Makefile: move the setting of *FLAGS closer to "include"
> Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
> gc: remove redundant check for gc_auto_threshold
> gc: convert to using the_hash_algo
> gc: refactor a "call me once" pattern
> reflog tests: make use of "test_config" idiom
> reflog tests: test for the "points nowhere" warning
> rebase: remove the rebase.useBuiltin setting
> gc docs: modernize the advice for manually running "gc"
> gc docs: stop noting "repack" flags
> gc docs: clean grammar for "gc.bigPackThreshold"
> commit-graph: fix segfault on e.g. "git status"
> commit-graph: don't early exit(1) on e.g. "git status"
> commit-graph: don't pass filename to load_commit_graph_one_fd_st()
> commit-graph verify: detect inability to read the graph
> commit-graph write: don't die if the existing graph is corrupt
> commit-graph: improve & i18n error messages
> reflog tests: assert lack of early exit with expiry="never"
> gc: handle & check gc.reflogExpire config
> test-lib: whitelist GIT_TR2_* in the environment
> gc docs: include the "gc.*" section from "config" in "gc"
> gc docs: re-flow the "gc.*" section in "config"
> gc docs: fix formatting for "gc.writeCommitGraph"
> gc docs: note how --aggressive impacts --window & --depth
> gc docs: downplay the usefulness of --aggressive
> gc docs: note "gc --aggressive" in "fast-import"
> gc docs: clarify that "gc" doesn't throw away referenced objects
> gc docs: remove incorrect reference to gc.auto=0
> perf README: correct docs for 3c8f12c96c regression
> perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
> perf-lib.sh: make "./run <revisions>" use the correct gits
> perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
> perf tests: add "bindir" prefix to git tree test results
> perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
> trace2: fix up a missing "leave" entry point
> trace2: fix up a missing "leave" entry point
> sha1dc: update from upstream
>
>İsmail Dönmez (2):
> mingw: do not let ld strip relocations
> mingw: enable DEP and ASLR
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* Re: [ANNOUNCE] Git v2.22.0-rc3
2019-06-03 20:23 2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
@ 2019-06-04 1:32 0% ` Ben Humphreys
2019-06-04 1:47 0% ` Bhaskar Chowdhury
2019-06-04 14:45 0% ` Git for Windows v2.22.0-rc3, was " Johannes Schindelin
2 siblings, 0 replies; 162+ results
From: Ben Humphreys @ 2019-06-04 1:32 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Hi folks,
I’m one of the Bitbucket Server developers and I just wanted to let
you know of one of our test cases that is now failing on the 2.22.0
release candidates (tested rc2 and rc3). I’m still looking into it,
but figure the release is probably imminent so worth reporting sooner
than later.
The problem seems to be related to some recent changes in
merge-recursive.c. I’ve made available our test dataset and the
following steps will reproduce the problem:
$ git --version
git version 2.22.0.rc3
$ git clone https://bitbucket.org/ben_humphreys/merge-dataset.git
$ cd merge-dataset
$ git checkout branch_that_has_rename_add_triggering_content_conflict_trgt
$ git merge origin/branch_that_has_rename_add_triggering_content_conflict_src
Assertion failed: (a->path && b->path), function merge_3way, file
merge-recursive.c, line 1044.
Abort trap: 6
The assertion is failing because b->path is null:
(lldb) print a->path
(char *const) $2 = 0x00007f8e177025f8 "count.txt"
(lldb) print b->path
(char *const) $3 = 0x0000000000000000 <no value available>
On Git 2.21.0 the merge succeeds (with conflicts as expected):
$ git merge origin/branch_that_has_rename_add_triggering_content_conflict_src
CONFLICT (rename/add): Rename numbers.txt->count.txt in
origin/branch_that_has_rename_add_triggering_content_conflict_src.
Added count.txt in HEAD
Auto-merging version of count.txt from numbers.txt
Auto-merging count.txt
Automatic merge failed; fix conflicts and then commit the result.
I’ll let you know if I get any further investigating this.
Best Regards,
Ben Humphreys
On Tue, Jun 4, 2019 at 6:23 AM Junio C Hamano <gitster@pobox.com> wrote:
>
> A release candidate Git v2.22.0-rc3 is now available for testing
> at the usual places. It is comprised of 718 non-merge commits
> since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
> Hopefully, this will be the last -rc during this cycle.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
> The following public repositories all have a copy of the
> 'v2.22.0-rc3' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
> New contributors whose contributions weren't in v2.21.0 are as follows.
> Welcome to the Git development community!
>
> Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
> Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
> Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
> Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
> Yash Bhatambare.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
> Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
> Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
> Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
> David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
> Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
> Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
> Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
> Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
> Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
> Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
> Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
> Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
> Trần Ngọc Quân.
>
> ----------------------------------------------------------------
>
> Git 2.22 Release Notes (draft)
> ==============================
>
> Updates since v2.21
> -------------------
>
> Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
> create a lazy/partial clone has been removed. Using a blob that is
> part of the project as sparse specification is still supported with
> the "--filter=sparse:oid=<blob>" option.
>
> UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
> checking out paths out of the tree-ish, that allows paths that
> match the pathspec that are in the current index and working tree
> and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..." now allows to
> optionally pick trailers selectively by keyword, show only values,
> etc.
>
> * Four new configuration variables {author,committer}.{name,email}
> have been introduced to override user.{name,email} in more specific
> cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
> "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
> merge involved renames. A new option adds the paths in the
> original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
> complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
> culprit using a raw "diff-tree", with which there is no output for
> a merge commit. This has been updated to use a more modern and
> human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
> option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
> been updated.
>
> * The completion helper code now pays attention to repository-local
> configuration (when available), which allows --list-cmds to honour
> a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
> its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
> file changes, which can help e.g. a virtualized working tree
> implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
> between HEAD and the working-tree files forward while checking out
> another branch, and ignored the differences between HEAD and the
> index. The command has been taught to abort when the index and the
> HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
> often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
> submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
> infer file movement based on how other files in the same directory
> moved. As this is inherently less robust heuristics than the one
> based on the content similarity of the file itself (rather than
> based on what its neighbours are doing), it sometimes gives an
> outcome unexpected by the end users. This has been toned down to
> leave the renamed paths in higher/conflicted stages in the index so
> that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
> mistake when creating an annotated or signed tag that points at
> another tag.
>
> * The "git pack-objects" command learned to report the number of
> objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
> conflicted merge was shown above the scissors line when the
> clean-up mode is set to "scissors", even though it was commented
> out just like the list of updated paths and other information to
> help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
> when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
> the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
> repositories now; also the pathname hash-cache is created by
> default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
> taught that in their contexts, the notation A...B means "the merge
> base between these two commits", just like "git checkout A...B"
> detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
> of {diff,merge}.{tool,guitool} configuration variables serve as
> fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
> mode; they are now explicitly marked as mutually incompatible.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
> long predates the parse-options API, uses fairly long and complex
> handcrafted option parser. This is being rewritten to use the
> parse-options API.
>
> * The implementation of pack-redundant has been updated for
> performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
> bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
> use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
> patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
> easier to run most of the tests under different versions of
> over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
> results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
> packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
> updated.
>
> * The tests have been updated not to rely on the abbreviated option
> names the parse-options API offers, to protect us from an
> abbreviated form of an option that used to be unique within the
> command getting non-unique when a new option that share the same
> prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
> list many times during a single step of its operation, and the
> recent C-rewrite made a faithful conversion of the logic to C. The
> implementation has been updated to carry necessary information
> around in-core to avoid rewriting the same file over and over
> unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
> processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
> missing blobs we will need, instead of waiting for the on-demand
> machinery to discover them one by one. The code learned to aim to
> achieve better performance by batching the request for these
> promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
> pointless to spend cycles for a large portion of the connectivity
> check that enumerates and skips promisor objects (which by
> definition is all objects fetched from the other side). This has
> been optimized out.
>
> * Mechanically and systematically drop "extern" from function
> declaration.
>
> * The script to aggregate perf result unconditionally depended on
> libjson-perl even though it did not have to, which has been
> corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
> avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
> of Git that happens to be on $PATH, not the specified one to
> measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
> spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
> responded by a request to disambiguate between --recursive and
> --recurse-submodules, which is bad because these two are synonyms.
> The parse-options API has been extended to define such synonyms
> more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
> fread/fwrite did not return the number of elements, which was found
> to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
> Fixes since v2.21
> -----------------
>
> * "git prune-packed" did not notice and complain against excess
> arguments given from the command line, which now it does.
> (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
> (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
> --ext-diff and --textconv, but so far these have been ignored,
> which has been corrected.
> (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
> a bug in the latter (lack of authentication retry) and generally
> improves the code base.
> (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
> to (accidentally) include it more than once.
> (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
> included sha256/gcrypt.h, even when it is not used, causing the
> make target to fail. We now skip it when GCRYPT_SHA256 is not in
> use.
> (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
> files, which is expensive on platforms with slow filesystems; it
> now optionally uses "ls-files" if working within a repository,
> which is a trick similar to how all sources are enumerated to run
> ETAGS on.
> (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
> correctly, which has been corrected.
> (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
> (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
> DEVELOPER=YesPlease; this did not work well before.
> (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
> the objects that are not reachable from any of the refs into
> unreachable and dangling. This is now enabled when dangling
> objects are requested (which is done by default, but can be
> overridden with the "--no-dangling" option).
> (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
> the upload-pack that runs on the other end that hangs up after
> detecting an error could cause "git fetch" to die with a signal,
> which led to a flaky test. "git fetch" now ignores SIGPIPE during
> the network portion of its operation (this is not a problem as we
> check the return status from our write(2)s).
> (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
> well-known objects like an empty tree (which should yield "yes",
> even when there is no on-disk object for an empty tree), which has
> been corrected.
> (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
> repository_format structure.
> (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
> but there is a slight difference that wasn't documented, which is
> now fixed.
> (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
> working tree down to a small "token" (a la Git LFS), there is no
> point in allocating a huge scratch area upfront, but the buffer is
> sized based on the original file size. The convert mechanism now
> allocates very minimum and reallocates as it receives the output
> from the clean filter process.
> (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
> intermediate states, which inherently makes the hierarchy per
> worktree, but it didn't quite work well.
> (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
> output as it should. This has been corrected.
> (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
> and then mkdir", which is race-prone. This has been fixed by using
> mkdir and reacting to EEXIST in a loop.
> (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
> (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
> asciidoc.
> (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
> messages at places.
> (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
> that they can be localized.
> (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
> configuration, which made Windows port to ignore settings of
> core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
> is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
> output file for the cover-letter, which has been corrected.
> (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
> incorrectly left some paths in an unmerged state, which has been
> corrected.
>
> * A corner case bug in the refs API has been corrected.
> (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
> (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
> strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
> (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
> (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
> update_server_info() function.
> (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
> updated.
> (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
> user to ask help resolving a conflicted step, did not honor the
> options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
> careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
> (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
> corrected.
>
> * Performance fix around "git blame", especially in a linear history
> (which is the norm we should optimize for).
> (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
> (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
> deal better with overlong messages.
> (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
> the working tree, and the same command in a bare repository errors
> out because there is no working tree by definition. The command
> has been taught to instead start blaming from the commit at HEAD,
> which is more useful.
> (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
> extension has been corrected.
> (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
> it is used in more places, by using xmalloc and/or xcalloc calls.
> (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
> was made runtime-tunable, which has been fixed.
> (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
> (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
> down correctly, which has been corrected.
> (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
> payload contains carriage-return. The use of the mechanism is in
> line with the design originally added the codepath that chooses QP
> when the payload has overly long lines.
> (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
> anything-by: trailers in 'git send-email' was found to be way too
> eager and considered nonsense strings as if they can be legitimate
> beginning of *-by: trailer. This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
> seems to have stopped including from /usr/local/include; this
> has been corrected.
> (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
> repository is an explicit indication that the user wants to add it
> as a submodule, but when the HEAD of the inner repository is on an
> unborn branch, it cannot be added as a submodule. Worse, the files
> in its working tree can be added as if they are a part of the outer
> repository, which is not what the user wants. These problems are
> being addressed.
> (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
> to (and more importantly, ought to) clean up the commit log message
> with the --cleanup=space option by default, but this has been
> broken since late 2017. This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
> failed to peel the tag before writing a replace ref, which did not
> make sense because the old graft mechanism the feature wants to
> mimic only allowed to replace one commit object with another.
> This has been fixed.
> (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
> of a different type is expected, instead of blindly assuming that
> the connection between objects are correctly made.
> (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
> which has been fixed.
> (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
> for-each-ref" and friends was not showing the right branch, which
> has been fixed.
> (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
> where a particular build may deliberately omit some subcommands,
> which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
> "git branch -D" from removing the branch that is currently checked
> out by mistake. The implementation of this logic was broken for
> repositories with unusual name, which unfortunately is the norm for
> submodules these days. This has been fixed.
> (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
> which has been corrected.
> (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
> gettext() implementations from -libintl by ignoring useless stub
> implementations shipped in some C library, which has been
> corrected.
> (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
> run in an empty repository, which emulates the initial clone
> situation better.
> (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
> tree resulted in duplicated Makefile rules that caused the build to
> issue an unnecessary warning during a trial build after merge
> conflicts are resolved in working tree *.h files but before the
> resolved results are added to the index. This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
> that deals with multiple commits got confused when the final step
> gets stopped with a conflict and the user concluded the sequence
> with "git commit". Attempt to fix it by cleaning up the state
> files used by these commands in such a situation.
> (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
> entities may become different from what the end-user expects, just
> like files in the working tree get "renamed". Work around the
> mismatch by paying attention to the core.precomposeUnicode
> configuration.
> (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
> see too many packfiles and ran out of open file descriptor, which
> has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
> git-svn package (in the hope that it would bring in the right
> dependencies). This has been updated to install the more direct
> dependency, namely, libsvn-perl.
> (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
> "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
> file gets discarded, which has been corrected.
> (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
> todo-list "rebase -i -r" uses should not be shown as a hex object
> name.
>
> * A prerequisite check in the test suite to see if a working jgit is
> available was made more robust.
> (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
> indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
> (merge 11f470aee7 jc/test-yes-doc later to maint).
> (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
> (merge 5c326d1252 jk/unused-params later to maint).
> (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
> (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
> (merge 1ede45e44b en/merge-options-doc later to maint).
> (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
> (merge c271dc28fd nd/no-more-check-racy later to maint).
> (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
> (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
> (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
> (merge 50b206371d js/untravis-windows later to maint).
> (merge dbf47215e3 js/rebase-recreate-merge later to maint).
> (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
> (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
> (merge af91b0230c dl/ignore-docs later to maint).
> (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
> (merge e041d0781b ar/t4150-remove-cruft later to maint).
> (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
> (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
> (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
> (merge a7256debd4 nd/checkout-m-doc-update later to maint).
> (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
> (merge 0b918b75af sg/t5318-cleanup later to maint).
> (merge 68ed71b53c cb/doco-mono later to maint).
> (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
> (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
> (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
> (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
> (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
> (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
> (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
> (merge d8083e4180 km/t3000-retitle later to maint).
> (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
> (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
> (merge 6804ba3a58 cw/diff-highlight later to maint).
> (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
> (merge d9ef573837 jk/apache-lsan later to maint).
> (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
> (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
> (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
> (merge d4907720a2 cm/notes-comment-fix later to maint).
> (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
> (merge 4c785c0edc js/rebase-config-bitfix later to maint).
> (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.21.0 are as follows:
>
> Alban Gruin (18):
> sequencer: changes in parse_insn_buffer()
> sequencer: make the todo_list structure public
> sequencer: remove the 'arg' field from todo_item
> sequencer: refactor transform_todos() to work on a todo_list
> sequencer: introduce todo_list_write_to_file()
> sequencer: refactor check_todo_list() to work on a todo_list
> sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
> sequencer: refactor rearrange_squash() to work on a todo_list
> sequencer: make sequencer_make_script() write its script to a strbuf
> sequencer: change complete_action() to use the refactored functions
> rebase--interactive: move sequencer_add_exec_commands()
> rebase--interactive: move rearrange_squash_in_todo_file()
> sequencer: refactor skip_unnecessary_picks() to work on a todo_list
> rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
> rebase-interactive: append_todo_help() changes
> rebase-interactive: rewrite edit_todo_list() to handle the initial edit
> sequencer: use edit_todo_list() in complete_action()
> rebase--interactive: move transform_todo_file()
>
> Alexander Blesius (1):
> doc: fix typos in man pages
>
> Alexander Shopov (1):
> gitk: Update Bulgarian translation (317t)
>
> Anders Waldenborg (7):
> doc: group pretty-format.txt placeholders descriptions
> pretty: allow %(trailers) options with explicit value
> pretty: single return path in %(trailers) handling
> pretty: allow showing specific trailers
> pretty: add support for "valueonly" option in %(trailers)
> strbuf: separate callback for strbuf_expand:ing literals
> pretty: add support for separator option in %(trailers)
>
> Andreas Heiduk (1):
> revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
> Andrei Rybak (1):
> t4150: remove unused variable
>
> Baruch Siach (1):
> send-email: don't cc *-by lines with '-' prefix
>
> Beat Bolli (1):
> unicode: update the width tables to Unicode 12
>
> Ben Peart (1):
> read-cache: add post-index-change hook
>
> Boxuan Li (1):
> t4253-am-keep-cr-dos: avoid using pipes
>
> Brandon Richardson (1):
> commit-tree: utilize parse-options api
>
> Carlo Marcelo Arenas Belón (1):
> http-push: prevent format overflow warning with gcc >= 9
>
> Chris Mayo (1):
> notes: correct documentation of format_display_notes()
>
> Chris. Webster (1):
> diff-highlight: use correct /dev/null for UNIX and Windows
>
> Christian Couder (5):
> t6050: use test_line_count instead of wc -l
> t6050: redirect expected error output to a file
> replace: peel tag when passing a tag as parent to --graft
> replace: peel tag when passing a tag first to --graft
> list-objects-filter: disable 'sparse:path' filters
>
> Clément Chigot (2):
> Makefile: use fileno macro work around on AIX
> git-compat-util: work around for access(X_OK) under root
>
> Corentin BOMPARD (2):
> doc/CodingGuidelines: URLs and paths as monospace
> doc: format pathnames and URLs as monospace.
>
> Damien Robert (1):
> ref-filter: use correct branch for %(push:track)
>
> Daniels Umanovskis (1):
> branch: introduce --show-current display option
>
> David Aguilar (2):
> mergetools: add support for smerge (Sublime Merge)
> contrib/completion: add smerge to the mergetool completion candidates
>
> David Kastrup (1):
> blame.c: don't drop origin blobs as eagerly
>
> Denton Liu (38):
> completion: complete git submodule absorbgitdirs
> git-submodule.txt: "--branch <branch>" option defaults to 'master'
> submodule--helper: teach config subcommand --unset
> submodule: document default behavior
> git-reset.txt: clarify documentation
> git-clean.txt: clarify ignore pattern files
> docs: move core.excludesFile from git-add to gitignore
> contrib/subtree: ensure only one rev is provided
> midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> tag: fix formatting
> submodule: teach set-branch subcommand
> tag: advise on nested tags
> t7600: clean up style
> t3507: clean up style
> t7604: clean up style
> t7502: clean up style
> commit: extract cleanup_mode functions to sequencer
> parse-options.h: extract common --cleanup option
> merge: cleanup messages like commit
> merge: add scissors line on merge conflict
> cherry-pick/revert: add scissors line on merge conflict
> t7610: unsuppress output
> t7610: add mergetool --gui tests
> *.[ch]: remove extern from function declarations using spatch
> *.[ch]: remove extern from function declarations using sed
> *.[ch]: manually align parameter lists
> t2018: cleanup in current test
> branch: make create_branch accept a merge base rev
> revisions.txt: change "rev" to "<rev>"
> revisions.txt: mark optional rev arguments with []
> revisions.txt: mention <rev>~ form
> tag: fix typo in nested tagging hint
> mergetool: use get_merge_tool function
> mergetool--lib: create gui_mode function
> mergetool: fallback to tool when guitool unavailable
> difftool: make --gui, --tool and --extcmd mutually exclusive
> difftool: fallback on merge.guitool
>
> Derrick Stolee (4):
> trace2:data: pack-objects: add trace2 regions
> midx: pass a repository pointer
> midx: add packs to packed_git linked list
> trace2: add variable description to git.txt
>
> Dustin Spicuzza (1):
> cvsexportcommit: force crlf translation
>
> Elijah Newren (23):
> log,diff-tree: add --combined-all-paths option
> merge-options.txt: correct wording of --no-commit option
> t9300: demonstrate bug with get-mark and empty orphan commits
> git-fast-import.txt: fix wording about where ls command can appear
> fast-import: check most prominent commands first
> fast-import: only allow cat-blob requests where it makes sense
> fast-import: fix erroneous handling of get-mark with empty orphan commits
> Use 'unsigned short' for mode, like diff_filespec does
> merge-recursive: rename merge_options argument from 'o' to 'opt'
> merge-recursive: rename diff_filespec 'one' to 'o'
> merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
> merge-recursive: use 'ci' for rename_conflict_info variable name
> merge-recursive: move some struct declarations together
> merge-recursive: shrink rename_conflict_info
> merge-recursive: remove ren[12]_other fields from rename_conflict_info
> merge-recursive: track branch where rename occurred in rename struct
> merge-recursive: cleanup handle_rename_* function signatures
> merge-recursive: switch from (oid,mode) pairs to a diff_filespec
> t6043: fix copied test description to match its purpose
> merge-recursive: track information associated with directory renames
> merge-recursive: give callers of handle_content_merge() access to contents
> merge-recursive: switch directory rename detection default
> Honor core.precomposeUnicode in more places
>
> Emily Shaffer (1):
> gitsubmodules: align html and nroff lists
>
> Eric Sunshine (1):
> check-non-portable-shell: support Perl versions older than 5.10
>
> Eric Wong (1):
> repack: enable bitmaps by default on bare repos
>
> Jean-Noël Avila (3):
> l10n: fr.po remove obsolete entries
> Doc: fix misleading asciidoc formating
> diff: fix mistake in translatable strings
>
> Jeff Hostetler (30):
> trace2: Documentation/technical/api-trace2.txt
> trace2: create new combined trace facility
> trace2: collect Windows-specific process information
> trace2:data: add trace2 regions to wt-status
> trace2:data: add editor/pager child classification
> trace2:data: add trace2 sub-process classification
> trace2:data: add trace2 transport child classification
> trace2:data: add subverb to checkout command
> trace2:data: add subverb to reset command
> trace2:data: add trace2 hook classification
> trace2:data: add subverb for rebase
> trace2:data: add trace2 instrumentation to index read/write
> trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
> trace2: add for_each macros to clang-format
> progress: add sparse mode to force 100% complete message
> trace2:data: add trace2 data to midx
> midx: add progress indicators in multi-pack-index verify
> midx: during verify group objects by packfile to speed verification
> config: initialize opts structure in repo_read_config()
> trace2: refactor setting process starting time
> trace2: add absolute elapsed time to start event
> trace2: find exec-dir before trace2 initialization
> config: add read_very_early_config()
> trace2: use system/global config for default trace2 settings
> trace2: report peak memory usage of the process
> trace2: clarify UTC datetime formatting
> trace2: make SIDs more unique
> trace2: update docs to describe system/global config settings
> trace2: fixup access problem on /etc/gitconfig in read_very_early_config
> trace2: fix tracing when NO_PTHREADS is defined
>
> Jeff King (92):
> prune: lazily perform reachability traversal
> prune: use bitmaps for reachability traversal
> prune: check SEEN flag for reachability
> t5304: rename "sha1" variables to "oid"
> diff: drop options parameter from diffcore_fix_diff_index()
> diff: drop unused color reset parameters
> diff: drop unused emit data parameter from sane_truncate_line()
> diff: drop complete_rewrite parameter from run_external_diff()
> merge-recursive: drop several unused parameters
> pack-objects: drop unused parameter from oe_map_new_pack()
> files-backend: drop refs parameter from split_symref_update()
> ref-filter: drop unused buf/sz pairs
> ref-filter: drop unused "obj" parameters
> ref-filter: drop unused "sz" parameters
> diff: reuse diff setup for --no-index case
> bisect: use string arguments to feed internal diff-tree
> bisect: fix internal diff-tree config loading
> bisect: make diff-tree output prettier
> fetch: avoid calling write_or_die()
> fetch: ignore SIGPIPE during network operation
> rev-list: allow cached objects in existence check
> doc/fsck: clarify --connectivity-only behavior
> fsck: always compute USED flags for unreachable objects
> compat/bswap: add include header guards
> config: document --type=color output is a complete line
> line-log: suppress diff output with "-s"
> line-log: detect unsupported formats
> point pull requesters to GitGitGadget
> Makefile: fix unaligned loads in sha1dc with UBSan
> t5310: correctly remove bitmaps for jgit test
> pack-objects: default to writing bitmap hash-cache
> perf-lib.sh: rely on test-lib.sh for --tee handling
> revision: drop some unused "revs" parameters
> log: drop unused rev_info from early output
> log: drop unused "len" from show_tagger()
> update-index: drop unused prefix_length parameter from do_reupdate()
> test-date: drop unused "now" parameter from parse_dates()
> unpack-trees: drop name_entry from traverse_by_cache_tree()
> unpack-trees: drop unused error_type parameters
> report_path_error(): drop unused prefix parameter
> fetch_pack(): drop unused parameters
> parse-options: drop unused ctx parameter from show_gitcomp()
> pretty: drop unused "type" parameter in needs_rfc2047_encoding()
> pretty: drop unused strbuf from parse_padding_placeholder()
> git: read local config in --list-cmds
> completion: fix multiple command removals
> parse_opt_ref_sorting: always use with NONEG flag
> refs/files-backend: handle packed transaction prepare failure
> refs/files-backend: don't look at an aborted transaction
> http: factor out curl result code normalization
> http: normalize curl results for dumb loose and alternates fetches
> http: use normalize_curl_result() instead of manual conversion
> revision: use a prio_queue to hold rewritten parents
> get_commit_tree(): return NULL for broken tree
> rev-list: let traversal die when --missing is not in use
> rev-list: detect broken root trees
> test-prio-queue: use xmalloc
> xdiff: use git-compat-util
> xdiff: use xmalloc/xrealloc
> progress: use xmalloc/xcalloc
> t5516: drop ok=sigpipe from unreachable-want tests
> t5530: check protocol response for "not our ref"
> upload-pack: send ERR packet for non-tip objects
> pkt-line: prepare buffer before handling ERR packets
> fetch: use free_refs()
> remote.c: make singular free_ref() public
> fetch: do not consider peeled tags as advertised tips
> packfile.h: drop extern from function declarations
> pack-revindex: open index if necessary
> t5319: fix bogus cat-file argument
> t5319: drop useless --buffer from cat-file
> midx: check both pack and index names for containment
> packfile: fix pack basename computation
> http: simplify parsing of remote objects/info/packs
> server-info: fix blind pointer arithmetic
> server-info: simplify cleanup in parse_pack_def()
> server-info: use strbuf to read old info/packs file
> server-info: drop nr_alloc struct member
> server-info: drop objdirlen pointer arithmetic
> update_info_refs(): drop unused force parameter
> t5304: add a test for pruning with bitmaps
> untracked-cache: be defensive about missing NULs in index
> untracked-cache: simplify parsing by dropping "next"
> untracked-cache: simplify parsing by dropping "len"
> p5302: create the repo in each index-pack test
> doc/ls-files: put nested list for "-t" option into block
> t/perf: depend on perl JSON only when using --codespeed
> t/perf: add perf script for partial clones
> coccicheck: optionally batch spatch invocations
> t/lib-httpd: pass LSAN_OPTIONS through apache
> coccicheck: make batch size of 0 mean "unlimited"
> get_oid: handle NULL repo->index
>
> Jiang Xin (5):
> t5323: test cases for git-pack-redundant
> pack-redundant: delay creation of unique_objects
> pack-redundant: rename pack_list.all_objects
> pack-redundant: consistent sort method
> i18n: fix typos found during l10n for git 2.22.0
>
> Joel Teichroeb (5):
> stash: improve option parsing test coverage
> stash: convert apply to builtin
> stash: convert drop and clear to builtin
> stash: convert branch to builtin
> stash: convert pop to builtin
>
> Joey Hess (1):
> convert: avoid malloc of original file size
>
> Johannes Schindelin (67):
> ident: add the ability to provide a "fallback identity"
> travis: remove the hack to build the Windows job on Azure Pipelines
> tests: let --stress-limit=<N> imply --stress
> tests: introduce --stress-jobs=<N>
> built-in rebase: no need to check out `onto` twice
> built-in rebase: use the correct reflog when switching branches
> built-in rebase: demonstrate that ORIG_HEAD is not set correctly
> built-in rebase: set ORIG_HEAD just once, before the rebase
> Makefile: use `git ls-files` to list header files, if possible
> curl: anonymize URLs in error messages and warnings
> remote-curl: mark all error messages for translation
> stash: add back the original, scripted `git stash`
> stash: optionally use the scripted version again
> tests: add a special setup where stash.useBuiltin is off
> legacy stash: fix "rudimentary backport of -q"
> built-in stash: handle :(glob) pathspecs again
> mingw: drop MakeMaker reference
> mingw: allow building with an MSYS2 runtime v3.x
> rebase: deprecate --preserve-merges
> mingw: respect core.hidedotfiles = false in git-init again
> test-lib: introduce 'test_atexit'
> git-daemon: use 'test_atexit` to stop 'git-daemon'
> git p4 test: use 'test_atexit' to kill p4d and the watchdog process
> rebase -i: demonstrate obscure loose object cache bug
> sequencer: improve error message when an OID could not be parsed
> sequencer: move stale comment into correct location
> get_oid(): when an object was not found, try harder
> difftool: remove obsolete (and misleading) comment
> parse-options: make OPT_ARGUMENT() more useful
> difftool: allow running outside Git worktrees with --no-index
> docs: move gitremote-helpers into section 7
> docs: do not document the `git remote-testgit` command
> check-docs: really look at the documented commands again
> check-docs: do not expect guide pages to correspond to commands
> check-docs: fix for setups where executables have an extension
> tests (rebase): spell out the `--keep-empty` option
> tests (rebase): spell out the `--force-rebase` option
> t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
> t5531: avoid using an abbreviated option
> tests (push): do not abbreviate the `--follow-tags` option
> tests (status): spell out the `--find-renames` option in full
> tests (pack-objects): use the full, unabbreviated `--revs` option
> t3301: fix false negative
> untracked cache: fix off-by-one
> tests: disallow the use of abbreviated options (by default)
> t9822: skip tests if file names cannot be ISO-8859-1 encoded
> macOS: make sure that gettext is found
> remote-testgit: move it into the support directory for t5801
> Makefile: drop the NO_INSTALL variable
> help -a: do not list commands that are excluded from the build
> check-docs: allow command-list.txt to contain excluded commands
> docs: exclude documentation for commands that have been excluded
> check-docs: do not bother checking for legacy scripts' documentation
> test-tool: handle the `-C <directory>` option just like `git`
> Turn `git serve` into a test helper
> t5580: verify that alternates can be UNC paths
> fsmonitor: demonstrate that it is not refreshed after discard_index()
> fsmonitor: force a refresh after the index was discarded
> t6500(mingw): use the Windows PID of the shell
> difftool --no-index: error out on --dir-diff (and don't crash)
> status: fix display of rebase -ir's `label` command
> parse-options: adjust `parse_opt_unknown_cb()`s declared return type
> stash: document stash.useBuiltin
> rebase: replace incorrect logical negation by correct bitwise one
> tests: mark a couple more test cases as requiring `rebase -p`
> docs: say that `--rebase=preserve` is deprecated
> rebase docs: recommend `-r` over `-p`
>
> Jonathan Tan (25):
> remote-curl: reduce scope of rpc_state.argv
> remote-curl: reduce scope of rpc_state.stdin_preamble
> remote-curl: reduce scope of rpc_state.result
> remote-curl: refactor reading into rpc_state's buf
> remote-curl: use post_rpc() for protocol v2 also
> tests: define GIT_TEST_PROTOCOL_VERSION
> t5601: check ssh command only with protocol v0
> tests: always test fetch of unreachable with v0
> t5503: fix overspecification of trace expectation
> t5512: compensate for v0 only sending HEAD symrefs
> t5700: only run with protocol version 1
> tests: fix protocol version for overspecifications
> t5552: compensate for v2 filtering ref adv.
> submodule: explain first attempt failure clearly
> t5551: mark half-auth no-op fetch test as v0-only
> fetch-pack: call prepare_shallow_info only if v0
> fetch-pack: respect --no-update-shallow in v2
> sha1-file: support OBJECT_INFO_FOR_PREFETCH
> fetch-pack: binary search when storing wanted-refs
> diff: batch fetching of missing blobs
> pack-objects: write objects packed to trace2
> transport: die if server options are unsupported
> clone: send server options when using protocol v2
> worktree: update is_bare heuristics
> fetch-pack: send server options after command
>
> Jordi Mas (1):
> l10n: Fixes to Catalan translation
>
> Josh Steadmon (5):
> protocol-capabilities.txt: document symref
> trace2: write to directory targets
> clone: do faster object check for partial clones
> trace2: fix incorrect function pointer check
> commit-graph: fix memory leak
>
> Junio C Hamano (18):
> test: caution on our version of 'yes'
> builtin/log: downcase the beginning of error messages
> format-patch: notice failure to open cover letter for writing
> Start 2.22 cycle
> The second batch
> The third batch
> The fourth batch
> gettext tests: export the restored GIT_TEST_GETTEXT_POISON
> The fifth batch
> The sixth batch
> Makefile: dedup list of files obtained from ls-files
> The seventh batch
> The eighth batch
> Git 2.22-rc0
> pkt-line: drop 'const'-ness of a param to set_packet_header()
> Git 2.22-rc1
> Git 2.22-rc2
> Git 2.22-rc3
>
> Kyle Meyer (5):
> rebase docs: fix "gitlink" typo
> submodule: refuse to add repository with no commits
> dir: do not traverse repositories with no commits
> add: error appropriately on repository with no commits
> t3000 (ls-files -o): widen description to reflect current tests
>
> Martin Ågren (14):
> setup: free old value before setting `work_tree`
> setup: fix memory leaks with `struct repository_format`
> config/diff.txt: drop spurious backtick
> config/fsck.txt: avoid starting line with dash
> git.txt: remove empty line before list continuation
> git-svn.txt: drop escaping '\' that ends up being rendered
> Documentation: turn middle-of-line tabs into spaces
> Documentation/Makefile: add missing xsl dependencies for manpages
> Documentation/Makefile: add missing dependency on asciidoctor-extensions
> asciidoctor-extensions: fix spurious space after linkgit
> Doc: auto-detect changed build flags
> doc-diff: let `render_tree()` take an explicit directory name
> doc-diff: support diffing from/to AsciiDoc(tor)
> doc-diff: add `--cut-header-footer`
>
> Matthew Kraai (1):
> t3903: add test for --intent-to-add file
>
> Michal Suchanek (1):
> worktree: fix worktree add race
>
> Mike Hommey (2):
> fix pack protocol example client/server communication
> Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
> Nguyễn Thái Ngọc Duy (129):
> parse-options.h: remove extern on function prototypes
> parse-options: add one-shot mode
> parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
> parse-options: add OPT_BITOP()
> parse-options: stop abusing 'callback' for lowlevel callbacks
> parse-options: avoid magic return codes
> parse-options: allow ll_callback with OPTION_CALLBACK
> diff.h: keep forward struct declarations sorted
> diff.h: avoid bit fields in struct diff_flags
> diff.c: prepare to use parse_options() for parsing
> diff.c: convert -u|-p|--patch
> diff.c: convert -U|--unified
> diff.c: convert -W|--[no-]function-context
> diff.c: convert --raw
> read-cache.c: fix writing "link" index ext with null base oid
> completion: add more parameter value completion
> diff-parseopt: convert --patch-with-raw
> diff-parseopt: convert --numstat and --shortstat
> diff-parseopt: convert --dirstat and friends
> diff-parseopt: convert --check
> diff-parseopt: convert --summary
> diff-parseopt: convert --patch-with-stat
> diff-parseopt: convert --name-only
> diff-parseopt: convert --name-status
> diff-parseopt: convert -s|--no-patch
> diff-parseopt: convert --stat*
> diff-parseopt: convert --[no-]compact-summary
> diff-parseopt: convert --output-*
> diff-parseopt: convert -B|--break-rewrites
> diff-parseopt: convert -M|--find-renames
> diff-parseopt: convert -D|--irreversible-delete
> diff-parseopt: convert -C|--find-copies
> diff-parseopt: convert --find-copies-harder
> diff-parseopt: convert --no-renames|--[no--rename-empty
> diff-parseopt: convert --relative
> diff-parseopt: convert --[no-]minimal
> diff-parseopt: convert --ignore-some-changes
> Delete check-racy.c
> diff-parseopt: convert --[no-]indent-heuristic
> diff-parseopt: convert --patience
> diff-parseopt: convert --histogram
> diff-parseopt: convert --diff-algorithm
> diff-parseopt: convert --anchored
> diff-parseopt: convert --binary
> diff-parseopt: convert --full-index
> diff-parseopt: convert -a|--text
> diff-parseopt: convert -R
> diff-parseopt: convert --[no-]follow
> diff-parseopt: convert --[no-]color
> diff-parseopt: convert --word-diff
> diff-parseopt: convert --word-diff-regex
> diff-parseopt: convert --color-words
> diff-parseopt: convert --exit-code
> diff-parseopt: convert --quiet
> diff-parseopt: convert --ext-diff
> diff-parseopt: convert --textconv
> diff-parseopt: convert --ignore-submodules
> diff-parseopt: convert --submodule
> files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
> files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
> Make sure refs/rewritten/ is per-worktree
> unpack-trees: fix oneway_merge accidentally carry over stage index
> checkout.txt: note about losing staged changes with --merge
> commit: improve error message in "-a <paths>" case
> unpack-trees: keep gently check inside add_rejected_path
> unpack-trees: rename "gently" flag to "quiet"
> read-tree: add --quiet
> checkout: prevent losing staged changes with --merge
> diff-parseopt: convert --ws-error-highlight
> diff-parseopt: convert --ita-[in]visible-in-index
> diff-parseopt: convert -z
> diff-parseopt: convert -l
> diff-parseopt: convert -S|-G
> diff-parseopt: convert --pickaxe-all|--pickaxe-regex
> diff-parseopt: convert -O
> diff-parseopt: convert --find-object
> diff-parseopt: convert --diff-filter
> diff-parseopt: convert --[no-]abbrev
> diff-parseopt: convert --[src|dst]-prefix
> diff-parseopt: convert --line-prefix
> diff-parseopt: convert --no-prefix
> diff-parseopt: convert --inter-hunk-context
> diff-parseopt: convert --[no-]color-moved
> diff-parseopt: convert --color-moved-ws
> diff.c: allow --no-color-moved-ws
> range-diff: use parse_options() instead of diff_opt_parse()
> diff --no-index: use parse_options() instead of diff_opt_parse()
> am: avoid diff_opt_parse()
> config: correct '**' matching in includeIf patterns
> interpret-trailers.txt: start the desc line with a capital letter
> read-tree.txt: clarify --reset and worktree changes
> packfile.c: add repo_approximate_object_count()
> refs.c: add refs_ref_exists()
> refs.c: add refs_shorten_unambiguous_ref()
> refs.c: remove the_repo from substitute_branch_name()
> refs.c: remove the_repo from expand_ref()
> refs.c: add repo_dwim_ref()
> refs.c: add repo_dwim_log()
> refs.c: remove the_repo from read_ref_at()
> submodule foreach: fix "<command> --quiet" not being respected
> commit.cocci: refactor code, avoid double rewrite
> commit.c: add repo_get_commit_tree()
> sha1-name.c: remove the_repo from sort_ambiguous()
> sha1-name.c: remove the_repo from find_abbrev_len_packed()
> sha1-name.c: add repo_find_unique_abbrev_r()
> sha1-name.c: store and use repo in struct disambiguate_state
> sha1-name.c: add repo_for_each_abbrev()
> sha1-name.c: remove the_repo from get_short_oid()
> sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
> sha1-name.c: remove the_repo from interpret_branch_mark()
> sha1-name.c: add repo_interpret_branch_name()
> sha1-name.c: remove the_repo from get_oid_oneline()
> sha1-name.c: remove the_repo from get_describe_name()
> sha1-name.c: remove the_repo from get_oid_basic()
> sha1-name.c: remove the_repo from get_oid_1()
> sha1-name.c: remove the_repo from handle_one_ref()
> sha1-name.c: remove the_repo from diagnose_invalid_index_path()
> sha1-name.c: remove the_repo from resolve_relative_path()
> sha1-name.c: remove the_repo from get_oid_with_context_1()
> sha1-name.c: add repo_get_oid()
> submodule-config.c: use repo_get_oid for reading .gitmodules
> sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
> sha1-name.c: remove the_repo from other get_oid_*
> sha1-name.c: remove the_repo from get_oid_mb()
> parse-options: don't emit "ambiguous option" for aliases
> submodule--helper: add a missing \n
> diff-parseopt: correct variable types that are used by parseopt
> diff-parseopt: restore -U (no argument) behavior
> parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
> Paul-Sebastian Ungureanu (17):
> sha1-name.c: add `get_oidf()` which acts like `get_oid()`
> strbuf.c: add `strbuf_join_argv()`
> strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
> t3903: modernize style
> stash: rename test cases to be more descriptive
> stash: add tests for `git stash show` config
> stash: mention options in `show` synopsis
> stash: convert list to builtin
> stash: convert show to builtin
> stash: convert store to builtin
> stash: convert create to builtin
> stash: convert push to builtin
> stash: make push -q quiet
> stash: convert save to builtin
> stash: optimize `get_untracked_files()` and `check_changes()`
> stash: replace all `write-tree` child processes with API calls
> stash: convert `stash--helper.c` into `stash.c`
>
> Philip Oakley (2):
> rerere doc: quote `rerere.enabled`
> describe doc: remove '7-char' abbreviation reference
>
> Phillip Wood (21):
> am/cherry-pick/rebase/revert: document --rerere-autoupdate
> merge: tweak --rerere-autoupdate documentation
> sequencer: break some long lines
> cherry-pick: demonstrate option amnesia
> cherry-pick --continue: remember options
> commit/reset: try to clean up sequencer state
> fix cherry-pick/revert status after commit
> sequencer: fix cleanup with --signoff and -x
> sequencer.c: save and restore cleanup mode
> sequencer: always discard index after checkout
> rebase: don't translate trace strings
> rebase: rename write_basic_state()
> rebase: use OPT_RERERE_AUTOUPDATE()
> rebase -i: combine rebase--interactive.c with rebase.c
> rebase -i: remove duplication
> rebase -i: use struct commit when parsing options
> rebase -i: use struct object_id for squash_onto
> rebase -i: use struct rebase_options to parse args
> rebase -i: use struct rebase_options in do_interactive_rebase()
> rebase: use a common action enum
> rebase -i: run without forking rebase--interactive
>
> Ramsay Jones (2):
> prune-packed: check for too many arguments
> Makefile: fix 'hdr-check' when GCRYPT not installed
>
> René Scharfe (1):
> get-tar-commit-id: parse comment record
>
> Robert P. J. Day (3):
> mention use of "hooks.allownonascii" in "man githooks"
> docs/git-gc: fix typo "--prune=all" to "--prune=now"
> attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
> Rohit Ashiwal (3):
> test functions: add function `test_file_not_empty`
> t3600: modernize style
> t3600: use helpers to replace test -d/f/e/s <path>
>
> SZEDER Gábor (27):
> test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
> t/lib-git-daemon: make sure to kill the 'git-daemon' process
> tests: use 'test_atexit' to stop httpd
> t0301-credential-cache: use 'test_atexit' to stop the credentials helper
> git p4 test: clean up the p4d cleanup functions
> git p4 test: simplify timeout handling
> git p4 test: disable '-x' tracing in the p4d watchdog loop
> t9811-git-p4-label-import: fix pipeline negation
> t5318-commit-graph: remove unused variable
> Documentation/git-diff-tree.txt: fix formatting
> Documentation/technical/api-config.txt: fix formatting
> Documentation/technical/protocol-v2.txt: fix formatting
> ci: install Asciidoctor in 'ci/install-dependencies.sh'
> index-pack: show progress while checking objects
> ci: stick with Asciidoctor v1.5.8 for now
> ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
> progress: make display_progress() return void
> progress: assemble percentage and counters in a strbuf before printing
> blame: default to HEAD in a bare repo when no start commit is given
> builtin rebase: use FREE_AND_NULL
> builtin rebase: use oideq()
> progress: clear previous progress update dynamically
> progress: break too long progress bar lines
> ci: install 'libsvn-perl' instead of 'git-svn'
> trace2: rename environment variables to GIT_TRACE2*
> trace2: document the supported values of GIT_TRACE2* env variables
> progress: avoid empty line when breaking the progress line
>
> Sun Chao (2):
> pack-redundant: delete redundant code
> pack-redundant: new algorithm to find min packs
>
> Sven Strickroth (1):
> MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
> Tanushree Tumane (1):
> mingw: remove obsolete IPv6-related code
>
> Taylor Blau (4):
> t: move 'hex2oct' into test-lib-functions.sh
> t: introduce tests for unexpected object types
> list-objects.c: handle unexpected non-blob entries
> list-objects.c: handle unexpected non-tree entries
>
> Thomas Gummerer (15):
> move worktree tests to t24*
> entry: factor out unlink_entry function
> entry: support CE_WT_REMOVE flag in checkout_entry
> read-cache: add invalidate parameter to remove_marked_cache_entries
> checkout: clarify comment
> checkout: factor out mark_cache_entry_for_checkout function
> checkout: introduce --{,no-}overlay option
> checkout: introduce checkout.overlayMode config
> revert "checkout: introduce checkout.overlayMode config"
> ident: don't require calling prepare_fallback_ident first
> stash: drop unused parameter
> stash: pass pathspec as pointer
> glossary: add definition for overlay
> stash: setup default diff output format if necessary
> ls-files: use correct format string
>
> Todd Zullinger (9):
> t4038-diff-combined: quote paths with whitespace
> t9902: test multiple removals via completion.commands
> completion: use __git when calling --list-cmds
> Documentation/rev-list-options: wrap --date=<format> block with "--"
> Documentation/git-status: fix titles in porcelain v2 section
> Documentation/git-svn: improve asciidoctor compatibility
> Documentation/git-show-branch: avoid literal {apostrophe}
> test-lib: try harder to ensure a working jgit
> RelNotes: minor typo fixes in 2.22.0 draft
>
> Torsten Bögershausen (1):
> trace2: NULL is not allowed for va_list
>
> Trần Ngọc Quân (1):
> l10n: Updated Vietnamese translation for v2.21 rd2
>
> Vadim Kochan (1):
> autoconf: #include <libintl.h> when checking for gettext()
>
> William Hubbs (1):
> config: allow giving separate author and committer idents
>
> Yash Bhatambare (1):
> gitattributes.txt: fix typo
>
> brian m. carlson (35):
> t/lib-submodule-update: use appropriate length constant
> khash: move oid hash table definition
> pack-bitmap: make bitmap header handling hash agnostic
> pack-bitmap: convert struct stored_bitmap to object_id
> pack-bitmap: replace sha1_to_hex
> pack-bitmap: switch hard-coded constants to the_hash_algo
> pack-bitmap: switch hash tables to use struct object_id
> submodule: avoid hard-coded constants
> notes-merge: switch to use the_hash_algo
> notes: make hash size independent
> notes: replace sha1_to_hex
> object-store: rename and expand packed_git's sha1 member
> builtin/name-rev: make hash-size independent
> fast-import: make hash-size independent
> fast-import: replace sha1_to_hex
> builtin/am: make hash size independent
> builtin/pull: make hash-size independent
> http-push: convert to use the_hash_algo
> http-backend: allow 64-character hex names
> http-push: remove remaining uses of sha1_to_hex
> http-walker: replace sha1_to_hex
> http: replace hard-coded constant with the_hash_algo
> http: compute hash of downloaded objects using the_hash_algo
> http: replace sha1_to_hex
> remote-curl: make hash size independent
> hash: add a function to lookup hash algorithm by length
> builtin/get-tar-commit-id: make hash size independent
> archive: convert struct archiver_args to object_id
> refspec: make hash size independent
> builtin/difftool: use parse_oid_hex
> dir: make untracked cache extension hash size independent
> read-cache: read data in a hash-independent way
> Git.pm: make hash size independent
> gitweb: make hash size independent
> send-email: default to quoted-printable when CR is present
>
> Ævar Arnfjörð Bjarmason (44):
> receive-pack: fix use-after-free bug
> commit-graph tests: split up corrupt_graph_and_verify()
> commit-graph tests: test a graph that's too small
> Makefile: remove an out-of-date comment
> Makefile: move "strip" assignment down from flags
> Makefile: add/remove comments at top and tweak whitespace
> Makefile: Move *_LIBS assignment into its own section
> Makefile: move the setting of *FLAGS closer to "include"
> Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
> gc: remove redundant check for gc_auto_threshold
> gc: convert to using the_hash_algo
> gc: refactor a "call me once" pattern
> reflog tests: make use of "test_config" idiom
> reflog tests: test for the "points nowhere" warning
> rebase: remove the rebase.useBuiltin setting
> gc docs: modernize the advice for manually running "gc"
> gc docs: stop noting "repack" flags
> gc docs: clean grammar for "gc.bigPackThreshold"
> commit-graph: fix segfault on e.g. "git status"
> commit-graph: don't early exit(1) on e.g. "git status"
> commit-graph: don't pass filename to load_commit_graph_one_fd_st()
> commit-graph verify: detect inability to read the graph
> commit-graph write: don't die if the existing graph is corrupt
> commit-graph: improve & i18n error messages
> reflog tests: assert lack of early exit with expiry="never"
> gc: handle & check gc.reflogExpire config
> test-lib: whitelist GIT_TR2_* in the environment
> gc docs: include the "gc.*" section from "config" in "gc"
> gc docs: re-flow the "gc.*" section in "config"
> gc docs: fix formatting for "gc.writeCommitGraph"
> gc docs: note how --aggressive impacts --window & --depth
> gc docs: downplay the usefulness of --aggressive
> gc docs: note "gc --aggressive" in "fast-import"
> gc docs: clarify that "gc" doesn't throw away referenced objects
> gc docs: remove incorrect reference to gc.auto=0
> perf README: correct docs for 3c8f12c96c regression
> perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
> perf-lib.sh: make "./run <revisions>" use the correct gits
> perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
> perf tests: add "bindir" prefix to git tree test results
> perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
> trace2: fix up a missing "leave" entry point
> trace2: fix up a missing "leave" entry point
> sha1dc: update from upstream
>
> İsmail Dönmez (2):
> mingw: do not let ld strip relocations
> mingw: enable DEP and ASLR
>
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.22.0-rc3
@ 2019-06-03 20:23 2% Junio C Hamano
2019-06-04 1:32 0% ` Ben Humphreys
` (2 more replies)
0 siblings, 3 replies; 162+ results
From: Junio C Hamano @ 2019-06-03 20:23 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.22.0-rc3 is now available for testing
at the usual places. It is comprised of 718 non-merge commits
since v2.21.0, contributed by 67 people, 17 of which are new faces.
Hopefully, this will be the last -rc during this cycle.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.22.0-rc3' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.21.0 are as follows.
Welcome to the Git development community!
Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
Yash Bhatambare.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.22 Release Notes (draft)
==============================
Updates since v2.21
-------------------
Backward compatibility note
* The filter specification "--filter=sparse:path=<path>" used to
create a lazy/partial clone has been removed. Using a blob that is
part of the project as sparse specification is still supported with
the "--filter=sparse:oid=<blob>" option.
UI, Workflows & Features
* "git checkout --no-overlay" can be used to trigger a new mode of
checking out paths out of the tree-ish, that allows paths that
match the pathspec that are in the current index and working tree
and are not in the tree-ish.
* The %(trailers) formatter in "git log --format=..." now allows to
optionally pick trailers selectively by keyword, show only values,
etc.
* Four new configuration variables {author,committer}.{name,email}
have been introduced to override user.{name,email} in more specific
cases.
* Command-line completion (in contrib/) learned to tab-complete the
"git submodule absorbgitdirs" subcommand.
* "git branch" learned a new subcommand "--show-current".
* Output from "diff --cc" did not show the original paths when the
merge involved renames. A new option adds the paths in the
original trees to the output.
* The command line completion (in contrib/) has been taught to
complete more subcommand parameters.
* The final report from "git bisect" used to show the suspected
culprit using a raw "diff-tree", with which there is no output for
a merge commit. This has been updated to use a more modern and
human readable output that still is concise enough.
* "git rebase --rebase-merges" replaces its old "--preserve-merges"
option; the latter is now marked as deprecated.
* Error message given while cloning with --recurse-submodules has
been updated.
* The completion helper code now pays attention to repository-local
configuration (when available), which allows --list-cmds to honour
a repository specific setting of completion.commands, for example.
* "git mergetool" learned to offer Sublime Merge (smerge) as one of
its backends.
* A new hook "post-index-change" is called when the on-disk index
file changes, which can help e.g. a virtualized working tree
implementation.
* "git difftool" can now run outside a repository.
* "git checkout -m <other>" was about carrying the differences
between HEAD and the working-tree files forward while checking out
another branch, and ignored the differences between HEAD and the
index. The command has been taught to abort when the index and the
HEAD are different.
* A progress indicator has been added to the "index-pack" step, which
often makes users wait for completion during "git clone".
* "git submodule" learns "set-branch" subcommand that allows the
submodule.*.branch settings to be modified.
* "git merge-recursive" backend recently learned a new heuristics to
infer file movement based on how other files in the same directory
moved. As this is inherently less robust heuristics than the one
based on the content similarity of the file itself (rather than
based on what its neighbours are doing), it sometimes gives an
outcome unexpected by the end users. This has been toned down to
leave the renamed paths in higher/conflicted stages in the index so
that the user can examine and confirm the result.
* "git tag" learned to give an advice suggesting it might be a
mistake when creating an annotated or signed tag that points at
another tag.
* The "git pack-objects" command learned to report the number of
objects it packed via the trace2 mechanism.
* The list of conflicted paths shown in the editor while concluding a
conflicted merge was shown above the scissors line when the
clean-up mode is set to "scissors", even though it was commented
out just like the list of updated paths and other information to
help the user explain the merge better.
* The trace2 tracing facility learned to auto-generate a filename
when told to log to a directory.
* "git clone" learned a new --server-option option when talking over
the protocol version 2.
* The connectivity bitmaps are created by default in bare
repositories now; also the pathname hash-cache is created by
default to avoid making crappy deltas when repacking.
* "git branch new A...B" and "git checkout -b new A...B" have been
taught that in their contexts, the notation A...B means "the merge
base between these two commits", just like "git checkout A...B"
detaches HEAD at that commit.
* Update "git difftool" and "git mergetool" so that the combinations
of {diff,merge}.{tool,guitool} configuration variables serve as
fallback settings of each other in a sensible order.
* The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
mode; they are now explicitly marked as mutually incompatible.
Performance, Internal Implementation, Development Support etc.
* The diff machinery, one of the oldest parts of the system, which
long predates the parse-options API, uses fairly long and complex
handcrafted option parser. This is being rewritten to use the
parse-options API.
* The implementation of pack-redundant has been updated for
performance in a repository with many packfiles.
* A more structured way to obtain execution trace has been added.
* "git prune" has been taught to take advantage of reachability
bitmap when able.
* The command line parser of "git commit-tree" has been rewritten to
use the parse-options API.
* Suggest GitGitGadget instead of submitGit as a way to submit
patches based on GitHub PR to us.
* The test framework has been updated to help developers by making it
easier to run most of the tests under different versions of
over-the-wire protocols.
* Dev support update to make it easier to compare two formatted
results from our documentation.
* The scripted "git rebase" implementation has been retired.
* "git multi-pack-index verify" did not scale well with the number of
packfiles, which is being improved.
* "git stash" has been rewritten in C.
* The "check-docs" Makefile target to support developers has been
updated.
* The tests have been updated not to rely on the abbreviated option
names the parse-options API offers, to protect us from an
abbreviated form of an option that used to be unique within the
command getting non-unique when a new option that share the same
prefix is added.
* The scripted version of "git rebase -i" wrote and rewrote the todo
list many times during a single step of its operation, and the
recent C-rewrite made a faithful conversion of the logic to C. The
implementation has been updated to carry necessary information
around in-core to avoid rewriting the same file over and over
unnecessarily.
* Test framework update to more robustly clean up leftover files and
processes after tests are done.
* Conversion from unsigned char[20] to struct object_id continues.
* While running "git diff" in a lazy clone, we can upfront know which
missing blobs we will need, instead of waiting for the on-demand
machinery to discover them one by one. The code learned to aim to
achieve better performance by batching the request for these
promised blobs.
* During an initial "git clone --depth=..." partial clone, it is
pointless to spend cycles for a large portion of the connectivity
check that enumerates and skips promisor objects (which by
definition is all objects fetched from the other side). This has
been optimized out.
* Mechanically and systematically drop "extern" from function
declaration.
* The script to aggregate perf result unconditionally depended on
libjson-perl even though it did not have to, which has been
corrected.
* The internal implementation of "git rebase -i" has been updated to
avoid forking a separate "rebase--interactive" process.
* Allow DEP and ASLR for Windows build to for security hardening.
* Performance test framework has been broken and measured the version
of Git that happens to be on $PATH, not the specified one to
measure, for a while, which has been corrected.
* Optionally "make coccicheck" can feed multiple source files to
spatch, gaining performance while spending more memory.
* Attempt to use an abbreviated option in "git clone --recurs" is
responded by a request to disambiguate between --recursive and
--recurse-submodules, which is bad because these two are synonyms.
The parse-options API has been extended to define such synonyms
more easily and not produce an unnecessary failure.
* A pair of private functions in http.c that had names similar to
fread/fwrite did not return the number of elements, which was found
to be confusing.
* Update collision-detecting SHA-1 code to build properly on HP-UX.
Fixes since v2.21
-----------------
* "git prune-packed" did not notice and complain against excess
arguments given from the command line, which now it does.
(merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
* Split-index fix.
(merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
* "git diff --no-index" may still want to access Git goodies like
--ext-diff and --textconv, but so far these have been ignored,
which has been corrected.
(merge 287ab28bfa jk/diff-no-index-initialize later to maint).
* Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
a bug in the latter (lack of authentication retry) and generally
improves the code base.
(merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
* The include file compat/bswap.h has been updated so that it is safe
to (accidentally) include it more than once.
(merge 33aa579a55 jk/guard-bswap-header later to maint).
* The set of header files used by "make hdr-check" unconditionally
included sha256/gcrypt.h, even when it is not used, causing the
make target to fail. We now skip it when GCRYPT_SHA256 is not in
use.
(merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
* The Makefile uses 'find' utility to enumerate all the *.h header
files, which is expensive on platforms with slow filesystems; it
now optionally uses "ls-files" if working within a repository,
which is a trick similar to how all sources are enumerated to run
ETAGS on.
(merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
* "git rebase" that was reimplemented in C did not set ORIG_HEAD
correctly, which has been corrected.
(merge cbd29ead92 js/rebase-orig-head-fix later to maint).
* Dev support.
(merge f545737144 js/stress-test-ui-tweak later to maint).
* CFLAGS now can be tweaked when invoking Make while using
DEVELOPER=YesPlease; this did not work well before.
(merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
* "git fsck --connectivity-only" omits computation necessary to sift
the objects that are not reachable from any of the refs into
unreachable and dangling. This is now enabled when dangling
objects are requested (which is done by default, but can be
overridden with the "--no-dangling" option).
(merge 8d8c2a5aef jk/fsck-doc later to maint).
* On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
the upload-pack that runs on the other end that hangs up after
detecting an error could cause "git fetch" to die with a signal,
which led to a flaky test. "git fetch" now ignores SIGPIPE during
the network portion of its operation (this is not a problem as we
check the return status from our write(2)s).
(merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
* A recent update broke "is this object available to us?" check for
well-known objects like an empty tree (which should yield "yes",
even when there is no on-disk object for an empty tree), which has
been corrected.
(merge f06ab027ef jk/virtual-objects-do-exist later to maint).
* The setup code has been cleaned up to avoid leaks around the
repository_format structure.
(merge e8805af1c3 ma/clear-repository-format later to maint).
* "git config --type=color ..." is meant to replace "git config --get-color"
but there is a slight difference that wasn't documented, which is
now fixed.
(merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
* When the "clean" filter can reduce the size of a huge file in the
working tree down to a small "token" (a la Git LFS), there is no
point in allocating a huge scratch area upfront, but the buffer is
sized based on the original file size. The convert mechanism now
allocates very minimum and reallocates as it receives the output
from the clean filter process.
(merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
* "git rebase" uses the refs/rewritten/ hierarchy to store its
intermediate states, which inherently makes the hierarchy per
worktree, but it didn't quite work well.
(merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
* "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
output as it should. This has been corrected.
(merge 05314efaea jk/line-log-with-patch later to maint).
* "git worktree add" used to do a "find an available name with stat
and then mkdir", which is race-prone. This has been fixed by using
mkdir and reacting to EEXIST in a loop.
(merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
* Build update for SHA-1 with collision detection.
(merge 07a20f569b jk/sha1dc later to maint).
* Build procedure has been fixed around use of asciidoctor instead of
asciidoc.
(merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
* remote-http transport did not anonymize URLs reported in its error
messages at places.
(merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
* Error messages given from the http transport have been updated so
that they can be localized.
(merge ed8b4132c8 js/remote-curl-i18n later to maint).
* "git init" forgot to read platform-specific repository
configuration, which made Windows port to ignore settings of
core.hidedotfiles, for example.
* A corner-case object name ambiguity while the sequencer machinery
is working (e.g. "rebase -i -x") has been fixed.
* "git format-patch" did not diagnose an error while opening the
output file for the cover-letter, which has been corrected.
(merge 2fe95f494c jc/format-patch-error-check later to maint).
* "git checkout -f <branch>" while the index has an unmerged path
incorrectly left some paths in an unmerged state, which has been
corrected.
* A corner case bug in the refs API has been corrected.
(merge d3322eb28b jk/refs-double-abort later to maint).
* Unicode update.
(merge 584b62c37b bb/unicode-12 later to maint).
* dumb-http walker has been updated to share more error recovery
strategy with the normal codepath.
* A buglet in configuration parser has been fixed.
(merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
* The documentation for "git read-tree --reset -u" has been updated.
(merge b5a0bd694c nd/read-tree-reset-doc later to maint).
* Code clean-up around a much-less-important-than-it-used-to-be
update_server_info() function.
(merge b3223761c8 jk/server-info-rabbit-hole later to maint).
* The message given when "git commit -a <paths>" errors out has been
updated.
(merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
* "git cherry-pick --options A..B", after giving control back to the
user to ask help resolving a conflicted step, did not honor the
options it originally received, which has been corrected.
* Various glitches in "git gc" around reflog handling have been fixed.
* The code to read from commit-graph file has been cleanup with more
careful error checking before using data read from it.
* Performance fix around "git fetch" that grabs many refs.
(merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
* Protocol v2 support in "git fetch-pack" of shallow clones has been
corrected.
* Performance fix around "git blame", especially in a linear history
(which is the norm we should optimize for).
(merge f892014943 dk/blame-keep-origin-blob later to maint).
* Performance fix for "rev-list --parents -- pathspec".
(merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
* Updating the display with progress message has been cleaned up to
deal better with overlong messages.
(merge 545dc345eb sg/overlong-progress-fix later to maint).
* "git blame -- path" in a non-bare repository starts blaming from
the working tree, and the same command in a bare repository errors
out because there is no working tree by definition. The command
has been taught to instead start blaming from the commit at HEAD,
which is more useful.
(merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
* An underallocation in the code to read the untracked cache
extension has been corrected.
(merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
* The code is updated to check the result of memory allocation before
it is used in more places, by using xmalloc and/or xcalloc calls.
(merge 999b951b28 jk/xmalloc later to maint).
* The GETTEXT_POISON test option has been quite broken ever since it
was made runtime-tunable, which has been fixed.
(merge f88b9cb603 jc/gettext-test-fix later to maint).
* Test fix on APFS that is incapable of store paths in Latin-1.
(merge 3889149619 js/iso8895-test-on-apfs later to maint).
* "git submodule foreach <command> --quiet" did not pass the option
down correctly, which has been corrected.
(merge a282f5a906 nd/submodule-foreach-quiet later to maint).
* "git send-email" has been taught to use quoted-printable when the
payload contains carriage-return. The use of the mechanism is in
line with the design originally added the codepath that chooses QP
when the payload has overly long lines.
(merge 74d76a1701 bc/send-email-qp-cr later to maint).
* The recently added feature to add addresses that are on
anything-by: trailers in 'git send-email' was found to be way too
eager and considered nonsense strings as if they can be legitimate
beginning of *-by: trailer. This has been tightened.
* Builds with gettext broke on recent macOS w/ Homebrew, which
seems to have stopped including from /usr/local/include; this
has been corrected.
(merge 92a1377a2a js/macos-gettext-build later to maint).
* Running "git add" on a repository created inside the current
repository is an explicit indication that the user wants to add it
as a submodule, but when the HEAD of the inner repository is on an
unborn branch, it cannot be added as a submodule. Worse, the files
in its working tree can be added as if they are a part of the outer
repository, which is not what the user wants. These problems are
being addressed.
(merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
* "git cherry-pick" run with the "-x" or the "--signoff" option used
to (and more importantly, ought to) clean up the commit log message
with the --cleanup=space option by default, but this has been
broken since late 2017. This has been fixed.
* When given a tag that points at a commit-ish, "git replace --graft"
failed to peel the tag before writing a replace ref, which did not
make sense because the old graft mechanism the feature wants to
mimic only allowed to replace one commit object with another.
This has been fixed.
(merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
* Code tightening against a "wrong" object appearing where an object
of a different type is expected, instead of blindly assuming that
the connection between objects are correctly made.
(merge 97dd512af7 tb/unexpected later to maint).
* An earlier update for MinGW and Cygwin accidentally broke MSVC build,
which has been fixed.
(merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
* %(push:track) token used in the --format option to "git
for-each-ref" and friends was not showing the right branch, which
has been fixed.
(merge c646d0934e dr/ref-filter-push-track-fix later to maint).
* "make check-docs", "git help -a", etc. did not account for cases
where a particular build may deliberately omit some subcommands,
which has been corrected.
* The logic to tell if a Git repository has a working tree protects
"git branch -D" from removing the branch that is currently checked
out by mistake. The implementation of this logic was broken for
repositories with unusual name, which unfortunately is the norm for
submodules these days. This has been fixed.
(merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
* AIX shared the same build issues with other BSDs around fileno(fp),
which has been corrected.
(merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
* The autoconf generated configure script failed to use the right
gettext() implementations from -libintl by ignoring useless stub
implementations shipped in some C library, which has been
corrected.
(merge b71e56a683 vk/autoconf-gettext later to maint).
* Fix index-pack perf test so that the repeated invocations always
run in an empty repository, which emulates the initial clone
situation better.
(merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
* A "ls-files" that emulates "find" to enumerate files in the working
tree resulted in duplicated Makefile rules that caused the build to
issue an unnecessary warning during a trial build after merge
conflicts are resolved in working tree *.h files but before the
resolved results are added to the index. This has been corrected.
* "git cherry-pick" (and "revert" that shares the same runtime engine)
that deals with multiple commits got confused when the final step
gets stopped with a conflict and the user concluded the sequence
with "git commit". Attempt to fix it by cleaning up the state
files used by these commands in such a situation.
(merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
* On a filesystem like HFS+, the names of the refs stored as filesystem
entities may become different from what the end-user expects, just
like files in the working tree get "renamed". Work around the
mismatch by paying attention to the core.precomposeUnicode
configuration.
(merge 8e712ef6fc en/unicode-in-refnames later to maint).
* The code to generate the multi-pack idx file was not prepared to
see too many packfiles and ran out of open file descriptor, which
has been corrected.
* To run tests for Git SVN, our scripts for CI used to install the
git-svn package (in the hope that it would bring in the right
dependencies). This has been updated to install the more direct
dependency, namely, libsvn-perl.
(merge db864306cf sg/ci-libsvn-perl later to maint).
* "git cvsexportcommit" running on msys did not expect cvsnt showed
"cvs status" output with CRLF line endings.
* The fsmonitor interface got out of sync after the in-core index
file gets discarded, which has been corrected.
(merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
* "git status" did not know that the "label" instruction in the
todo-list "rebase -i -r" uses should not be shown as a hex object
name.
* A prerequisite check in the test suite to see if a working jgit is
available was made more robust.
(merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
* The codepath to parse :<path> that obtains the object name for an
indexed object has been made more robust.
* Code cleanup, docfix, build fix, etc.
(merge 11f470aee7 jc/test-yes-doc later to maint).
(merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
(merge 5c326d1252 jk/unused-params later to maint).
(merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
(merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
(merge 1ede45e44b en/merge-options-doc later to maint).
(merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
(merge c271dc28fd nd/no-more-check-racy later to maint).
(merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
(merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
(merge 716a5af812 rd/gc-prune-doc-fix later to maint).
(merge 50b206371d js/untravis-windows later to maint).
(merge dbf47215e3 js/rebase-recreate-merge later to maint).
(merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
(merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
(merge af91b0230c dl/ignore-docs later to maint).
(merge 59a06e947b ra/t3600-test-path-funcs later to maint).
(merge e041d0781b ar/t4150-remove-cruft later to maint).
(merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
(merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
(merge ed31851fa6 ab/doc-misc-typofixes later to maint).
(merge a7256debd4 nd/checkout-m-doc-update later to maint).
(merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
(merge 0b918b75af sg/t5318-cleanup later to maint).
(merge 68ed71b53c cb/doco-mono later to maint).
(merge a34dca2451 nd/interpret-trailers-docfix later to maint).
(merge cf7b857a77 en/fast-import-parsing-fix later to maint).
(merge fe61ccbc35 po/rerere-doc-fmt later to maint).
(merge ffea0248bf po/describe-not-necessarily-7 later to maint).
(merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
(merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
(merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
(merge d8083e4180 km/t3000-retitle later to maint).
(merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
(merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
(merge 6804ba3a58 cw/diff-highlight later to maint).
(merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
(merge d9ef573837 jk/apache-lsan later to maint).
(merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
(merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
(merge 397a46db78 js/t5580-unc-alternate-test later to maint).
(merge d4907720a2 cm/notes-comment-fix later to maint).
(merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
(merge 4c785c0edc js/rebase-config-bitfix later to maint).
(merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
----------------------------------------------------------------
Changes since v2.21.0 are as follows:
Alban Gruin (18):
sequencer: changes in parse_insn_buffer()
sequencer: make the todo_list structure public
sequencer: remove the 'arg' field from todo_item
sequencer: refactor transform_todos() to work on a todo_list
sequencer: introduce todo_list_write_to_file()
sequencer: refactor check_todo_list() to work on a todo_list
sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
sequencer: refactor rearrange_squash() to work on a todo_list
sequencer: make sequencer_make_script() write its script to a strbuf
sequencer: change complete_action() to use the refactored functions
rebase--interactive: move sequencer_add_exec_commands()
rebase--interactive: move rearrange_squash_in_todo_file()
sequencer: refactor skip_unnecessary_picks() to work on a todo_list
rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
rebase-interactive: append_todo_help() changes
rebase-interactive: rewrite edit_todo_list() to handle the initial edit
sequencer: use edit_todo_list() in complete_action()
rebase--interactive: move transform_todo_file()
Alexander Blesius (1):
doc: fix typos in man pages
Alexander Shopov (1):
gitk: Update Bulgarian translation (317t)
Anders Waldenborg (7):
doc: group pretty-format.txt placeholders descriptions
pretty: allow %(trailers) options with explicit value
pretty: single return path in %(trailers) handling
pretty: allow showing specific trailers
pretty: add support for "valueonly" option in %(trailers)
strbuf: separate callback for strbuf_expand:ing literals
pretty: add support for separator option in %(trailers)
Andreas Heiduk (1):
revisions.txt: remove ambibuity between <rev>:<path> and :<path>
Andrei Rybak (1):
t4150: remove unused variable
Baruch Siach (1):
send-email: don't cc *-by lines with '-' prefix
Beat Bolli (1):
unicode: update the width tables to Unicode 12
Ben Peart (1):
read-cache: add post-index-change hook
Boxuan Li (1):
t4253-am-keep-cr-dos: avoid using pipes
Brandon Richardson (1):
commit-tree: utilize parse-options api
Carlo Marcelo Arenas Belón (1):
http-push: prevent format overflow warning with gcc >= 9
Chris Mayo (1):
notes: correct documentation of format_display_notes()
Chris. Webster (1):
diff-highlight: use correct /dev/null for UNIX and Windows
Christian Couder (5):
t6050: use test_line_count instead of wc -l
t6050: redirect expected error output to a file
replace: peel tag when passing a tag as parent to --graft
replace: peel tag when passing a tag first to --graft
list-objects-filter: disable 'sparse:path' filters
Clément Chigot (2):
Makefile: use fileno macro work around on AIX
git-compat-util: work around for access(X_OK) under root
Corentin BOMPARD (2):
doc/CodingGuidelines: URLs and paths as monospace
doc: format pathnames and URLs as monospace.
Damien Robert (1):
ref-filter: use correct branch for %(push:track)
Daniels Umanovskis (1):
branch: introduce --show-current display option
David Aguilar (2):
mergetools: add support for smerge (Sublime Merge)
contrib/completion: add smerge to the mergetool completion candidates
David Kastrup (1):
blame.c: don't drop origin blobs as eagerly
Denton Liu (38):
completion: complete git submodule absorbgitdirs
git-submodule.txt: "--branch <branch>" option defaults to 'master'
submodule--helper: teach config subcommand --unset
submodule: document default behavior
git-reset.txt: clarify documentation
git-clean.txt: clarify ignore pattern files
docs: move core.excludesFile from git-add to gitignore
contrib/subtree: ensure only one rev is provided
midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
tag: fix formatting
submodule: teach set-branch subcommand
tag: advise on nested tags
t7600: clean up style
t3507: clean up style
t7604: clean up style
t7502: clean up style
commit: extract cleanup_mode functions to sequencer
parse-options.h: extract common --cleanup option
merge: cleanup messages like commit
merge: add scissors line on merge conflict
cherry-pick/revert: add scissors line on merge conflict
t7610: unsuppress output
t7610: add mergetool --gui tests
*.[ch]: remove extern from function declarations using spatch
*.[ch]: remove extern from function declarations using sed
*.[ch]: manually align parameter lists
t2018: cleanup in current test
branch: make create_branch accept a merge base rev
revisions.txt: change "rev" to "<rev>"
revisions.txt: mark optional rev arguments with []
revisions.txt: mention <rev>~ form
tag: fix typo in nested tagging hint
mergetool: use get_merge_tool function
mergetool--lib: create gui_mode function
mergetool: fallback to tool when guitool unavailable
difftool: make --gui, --tool and --extcmd mutually exclusive
difftool: fallback on merge.guitool
Derrick Stolee (4):
trace2:data: pack-objects: add trace2 regions
midx: pass a repository pointer
midx: add packs to packed_git linked list
trace2: add variable description to git.txt
Dustin Spicuzza (1):
cvsexportcommit: force crlf translation
Elijah Newren (23):
log,diff-tree: add --combined-all-paths option
merge-options.txt: correct wording of --no-commit option
t9300: demonstrate bug with get-mark and empty orphan commits
git-fast-import.txt: fix wording about where ls command can appear
fast-import: check most prominent commands first
fast-import: only allow cat-blob requests where it makes sense
fast-import: fix erroneous handling of get-mark with empty orphan commits
Use 'unsigned short' for mode, like diff_filespec does
merge-recursive: rename merge_options argument from 'o' to 'opt'
merge-recursive: rename diff_filespec 'one' to 'o'
merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
merge-recursive: use 'ci' for rename_conflict_info variable name
merge-recursive: move some struct declarations together
merge-recursive: shrink rename_conflict_info
merge-recursive: remove ren[12]_other fields from rename_conflict_info
merge-recursive: track branch where rename occurred in rename struct
merge-recursive: cleanup handle_rename_* function signatures
merge-recursive: switch from (oid,mode) pairs to a diff_filespec
t6043: fix copied test description to match its purpose
merge-recursive: track information associated with directory renames
merge-recursive: give callers of handle_content_merge() access to contents
merge-recursive: switch directory rename detection default
Honor core.precomposeUnicode in more places
Emily Shaffer (1):
gitsubmodules: align html and nroff lists
Eric Sunshine (1):
check-non-portable-shell: support Perl versions older than 5.10
Eric Wong (1):
repack: enable bitmaps by default on bare repos
Jean-Noël Avila (3):
l10n: fr.po remove obsolete entries
Doc: fix misleading asciidoc formating
diff: fix mistake in translatable strings
Jeff Hostetler (30):
trace2: Documentation/technical/api-trace2.txt
trace2: create new combined trace facility
trace2: collect Windows-specific process information
trace2:data: add trace2 regions to wt-status
trace2:data: add editor/pager child classification
trace2:data: add trace2 sub-process classification
trace2:data: add trace2 transport child classification
trace2:data: add subverb to checkout command
trace2:data: add subverb to reset command
trace2:data: add trace2 hook classification
trace2:data: add subverb for rebase
trace2:data: add trace2 instrumentation to index read/write
trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
trace2: add for_each macros to clang-format
progress: add sparse mode to force 100% complete message
trace2:data: add trace2 data to midx
midx: add progress indicators in multi-pack-index verify
midx: during verify group objects by packfile to speed verification
config: initialize opts structure in repo_read_config()
trace2: refactor setting process starting time
trace2: add absolute elapsed time to start event
trace2: find exec-dir before trace2 initialization
config: add read_very_early_config()
trace2: use system/global config for default trace2 settings
trace2: report peak memory usage of the process
trace2: clarify UTC datetime formatting
trace2: make SIDs more unique
trace2: update docs to describe system/global config settings
trace2: fixup access problem on /etc/gitconfig in read_very_early_config
trace2: fix tracing when NO_PTHREADS is defined
Jeff King (92):
prune: lazily perform reachability traversal
prune: use bitmaps for reachability traversal
prune: check SEEN flag for reachability
t5304: rename "sha1" variables to "oid"
diff: drop options parameter from diffcore_fix_diff_index()
diff: drop unused color reset parameters
diff: drop unused emit data parameter from sane_truncate_line()
diff: drop complete_rewrite parameter from run_external_diff()
merge-recursive: drop several unused parameters
pack-objects: drop unused parameter from oe_map_new_pack()
files-backend: drop refs parameter from split_symref_update()
ref-filter: drop unused buf/sz pairs
ref-filter: drop unused "obj" parameters
ref-filter: drop unused "sz" parameters
diff: reuse diff setup for --no-index case
bisect: use string arguments to feed internal diff-tree
bisect: fix internal diff-tree config loading
bisect: make diff-tree output prettier
fetch: avoid calling write_or_die()
fetch: ignore SIGPIPE during network operation
rev-list: allow cached objects in existence check
doc/fsck: clarify --connectivity-only behavior
fsck: always compute USED flags for unreachable objects
compat/bswap: add include header guards
config: document --type=color output is a complete line
line-log: suppress diff output with "-s"
line-log: detect unsupported formats
point pull requesters to GitGitGadget
Makefile: fix unaligned loads in sha1dc with UBSan
t5310: correctly remove bitmaps for jgit test
pack-objects: default to writing bitmap hash-cache
perf-lib.sh: rely on test-lib.sh for --tee handling
revision: drop some unused "revs" parameters
log: drop unused rev_info from early output
log: drop unused "len" from show_tagger()
update-index: drop unused prefix_length parameter from do_reupdate()
test-date: drop unused "now" parameter from parse_dates()
unpack-trees: drop name_entry from traverse_by_cache_tree()
unpack-trees: drop unused error_type parameters
report_path_error(): drop unused prefix parameter
fetch_pack(): drop unused parameters
parse-options: drop unused ctx parameter from show_gitcomp()
pretty: drop unused "type" parameter in needs_rfc2047_encoding()
pretty: drop unused strbuf from parse_padding_placeholder()
git: read local config in --list-cmds
completion: fix multiple command removals
parse_opt_ref_sorting: always use with NONEG flag
refs/files-backend: handle packed transaction prepare failure
refs/files-backend: don't look at an aborted transaction
http: factor out curl result code normalization
http: normalize curl results for dumb loose and alternates fetches
http: use normalize_curl_result() instead of manual conversion
revision: use a prio_queue to hold rewritten parents
get_commit_tree(): return NULL for broken tree
rev-list: let traversal die when --missing is not in use
rev-list: detect broken root trees
test-prio-queue: use xmalloc
xdiff: use git-compat-util
xdiff: use xmalloc/xrealloc
progress: use xmalloc/xcalloc
t5516: drop ok=sigpipe from unreachable-want tests
t5530: check protocol response for "not our ref"
upload-pack: send ERR packet for non-tip objects
pkt-line: prepare buffer before handling ERR packets
fetch: use free_refs()
remote.c: make singular free_ref() public
fetch: do not consider peeled tags as advertised tips
packfile.h: drop extern from function declarations
pack-revindex: open index if necessary
t5319: fix bogus cat-file argument
t5319: drop useless --buffer from cat-file
midx: check both pack and index names for containment
packfile: fix pack basename computation
http: simplify parsing of remote objects/info/packs
server-info: fix blind pointer arithmetic
server-info: simplify cleanup in parse_pack_def()
server-info: use strbuf to read old info/packs file
server-info: drop nr_alloc struct member
server-info: drop objdirlen pointer arithmetic
update_info_refs(): drop unused force parameter
t5304: add a test for pruning with bitmaps
untracked-cache: be defensive about missing NULs in index
untracked-cache: simplify parsing by dropping "next"
untracked-cache: simplify parsing by dropping "len"
p5302: create the repo in each index-pack test
doc/ls-files: put nested list for "-t" option into block
t/perf: depend on perl JSON only when using --codespeed
t/perf: add perf script for partial clones
coccicheck: optionally batch spatch invocations
t/lib-httpd: pass LSAN_OPTIONS through apache
coccicheck: make batch size of 0 mean "unlimited"
get_oid: handle NULL repo->index
Jiang Xin (5):
t5323: test cases for git-pack-redundant
pack-redundant: delay creation of unique_objects
pack-redundant: rename pack_list.all_objects
pack-redundant: consistent sort method
i18n: fix typos found during l10n for git 2.22.0
Joel Teichroeb (5):
stash: improve option parsing test coverage
stash: convert apply to builtin
stash: convert drop and clear to builtin
stash: convert branch to builtin
stash: convert pop to builtin
Joey Hess (1):
convert: avoid malloc of original file size
Johannes Schindelin (67):
ident: add the ability to provide a "fallback identity"
travis: remove the hack to build the Windows job on Azure Pipelines
tests: let --stress-limit=<N> imply --stress
tests: introduce --stress-jobs=<N>
built-in rebase: no need to check out `onto` twice
built-in rebase: use the correct reflog when switching branches
built-in rebase: demonstrate that ORIG_HEAD is not set correctly
built-in rebase: set ORIG_HEAD just once, before the rebase
Makefile: use `git ls-files` to list header files, if possible
curl: anonymize URLs in error messages and warnings
remote-curl: mark all error messages for translation
stash: add back the original, scripted `git stash`
stash: optionally use the scripted version again
tests: add a special setup where stash.useBuiltin is off
legacy stash: fix "rudimentary backport of -q"
built-in stash: handle :(glob) pathspecs again
mingw: drop MakeMaker reference
mingw: allow building with an MSYS2 runtime v3.x
rebase: deprecate --preserve-merges
mingw: respect core.hidedotfiles = false in git-init again
test-lib: introduce 'test_atexit'
git-daemon: use 'test_atexit` to stop 'git-daemon'
git p4 test: use 'test_atexit' to kill p4d and the watchdog process
rebase -i: demonstrate obscure loose object cache bug
sequencer: improve error message when an OID could not be parsed
sequencer: move stale comment into correct location
get_oid(): when an object was not found, try harder
difftool: remove obsolete (and misleading) comment
parse-options: make OPT_ARGUMENT() more useful
difftool: allow running outside Git worktrees with --no-index
docs: move gitremote-helpers into section 7
docs: do not document the `git remote-testgit` command
check-docs: really look at the documented commands again
check-docs: do not expect guide pages to correspond to commands
check-docs: fix for setups where executables have an extension
tests (rebase): spell out the `--keep-empty` option
tests (rebase): spell out the `--force-rebase` option
t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
t5531: avoid using an abbreviated option
tests (push): do not abbreviate the `--follow-tags` option
tests (status): spell out the `--find-renames` option in full
tests (pack-objects): use the full, unabbreviated `--revs` option
t3301: fix false negative
untracked cache: fix off-by-one
tests: disallow the use of abbreviated options (by default)
t9822: skip tests if file names cannot be ISO-8859-1 encoded
macOS: make sure that gettext is found
remote-testgit: move it into the support directory for t5801
Makefile: drop the NO_INSTALL variable
help -a: do not list commands that are excluded from the build
check-docs: allow command-list.txt to contain excluded commands
docs: exclude documentation for commands that have been excluded
check-docs: do not bother checking for legacy scripts' documentation
test-tool: handle the `-C <directory>` option just like `git`
Turn `git serve` into a test helper
t5580: verify that alternates can be UNC paths
fsmonitor: demonstrate that it is not refreshed after discard_index()
fsmonitor: force a refresh after the index was discarded
t6500(mingw): use the Windows PID of the shell
difftool --no-index: error out on --dir-diff (and don't crash)
status: fix display of rebase -ir's `label` command
parse-options: adjust `parse_opt_unknown_cb()`s declared return type
stash: document stash.useBuiltin
rebase: replace incorrect logical negation by correct bitwise one
tests: mark a couple more test cases as requiring `rebase -p`
docs: say that `--rebase=preserve` is deprecated
rebase docs: recommend `-r` over `-p`
Jonathan Tan (25):
remote-curl: reduce scope of rpc_state.argv
remote-curl: reduce scope of rpc_state.stdin_preamble
remote-curl: reduce scope of rpc_state.result
remote-curl: refactor reading into rpc_state's buf
remote-curl: use post_rpc() for protocol v2 also
tests: define GIT_TEST_PROTOCOL_VERSION
t5601: check ssh command only with protocol v0
tests: always test fetch of unreachable with v0
t5503: fix overspecification of trace expectation
t5512: compensate for v0 only sending HEAD symrefs
t5700: only run with protocol version 1
tests: fix protocol version for overspecifications
t5552: compensate for v2 filtering ref adv.
submodule: explain first attempt failure clearly
t5551: mark half-auth no-op fetch test as v0-only
fetch-pack: call prepare_shallow_info only if v0
fetch-pack: respect --no-update-shallow in v2
sha1-file: support OBJECT_INFO_FOR_PREFETCH
fetch-pack: binary search when storing wanted-refs
diff: batch fetching of missing blobs
pack-objects: write objects packed to trace2
transport: die if server options are unsupported
clone: send server options when using protocol v2
worktree: update is_bare heuristics
fetch-pack: send server options after command
Jordi Mas (1):
l10n: Fixes to Catalan translation
Josh Steadmon (5):
protocol-capabilities.txt: document symref
trace2: write to directory targets
clone: do faster object check for partial clones
trace2: fix incorrect function pointer check
commit-graph: fix memory leak
Junio C Hamano (18):
test: caution on our version of 'yes'
builtin/log: downcase the beginning of error messages
format-patch: notice failure to open cover letter for writing
Start 2.22 cycle
The second batch
The third batch
The fourth batch
gettext tests: export the restored GIT_TEST_GETTEXT_POISON
The fifth batch
The sixth batch
Makefile: dedup list of files obtained from ls-files
The seventh batch
The eighth batch
Git 2.22-rc0
pkt-line: drop 'const'-ness of a param to set_packet_header()
Git 2.22-rc1
Git 2.22-rc2
Git 2.22-rc3
Kyle Meyer (5):
rebase docs: fix "gitlink" typo
submodule: refuse to add repository with no commits
dir: do not traverse repositories with no commits
add: error appropriately on repository with no commits
t3000 (ls-files -o): widen description to reflect current tests
Martin Ågren (14):
setup: free old value before setting `work_tree`
setup: fix memory leaks with `struct repository_format`
config/diff.txt: drop spurious backtick
config/fsck.txt: avoid starting line with dash
git.txt: remove empty line before list continuation
git-svn.txt: drop escaping '\' that ends up being rendered
Documentation: turn middle-of-line tabs into spaces
Documentation/Makefile: add missing xsl dependencies for manpages
Documentation/Makefile: add missing dependency on asciidoctor-extensions
asciidoctor-extensions: fix spurious space after linkgit
Doc: auto-detect changed build flags
doc-diff: let `render_tree()` take an explicit directory name
doc-diff: support diffing from/to AsciiDoc(tor)
doc-diff: add `--cut-header-footer`
Matthew Kraai (1):
t3903: add test for --intent-to-add file
Michal Suchanek (1):
worktree: fix worktree add race
Mike Hommey (2):
fix pack protocol example client/server communication
Make fread/fwrite-like functions in http.c more like fread/fwrite.
Nguyễn Thái Ngọc Duy (129):
parse-options.h: remove extern on function prototypes
parse-options: add one-shot mode
parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: add OPT_BITOP()
parse-options: stop abusing 'callback' for lowlevel callbacks
parse-options: avoid magic return codes
parse-options: allow ll_callback with OPTION_CALLBACK
diff.h: keep forward struct declarations sorted
diff.h: avoid bit fields in struct diff_flags
diff.c: prepare to use parse_options() for parsing
diff.c: convert -u|-p|--patch
diff.c: convert -U|--unified
diff.c: convert -W|--[no-]function-context
diff.c: convert --raw
read-cache.c: fix writing "link" index ext with null base oid
completion: add more parameter value completion
diff-parseopt: convert --patch-with-raw
diff-parseopt: convert --numstat and --shortstat
diff-parseopt: convert --dirstat and friends
diff-parseopt: convert --check
diff-parseopt: convert --summary
diff-parseopt: convert --patch-with-stat
diff-parseopt: convert --name-only
diff-parseopt: convert --name-status
diff-parseopt: convert -s|--no-patch
diff-parseopt: convert --stat*
diff-parseopt: convert --[no-]compact-summary
diff-parseopt: convert --output-*
diff-parseopt: convert -B|--break-rewrites
diff-parseopt: convert -M|--find-renames
diff-parseopt: convert -D|--irreversible-delete
diff-parseopt: convert -C|--find-copies
diff-parseopt: convert --find-copies-harder
diff-parseopt: convert --no-renames|--[no--rename-empty
diff-parseopt: convert --relative
diff-parseopt: convert --[no-]minimal
diff-parseopt: convert --ignore-some-changes
Delete check-racy.c
diff-parseopt: convert --[no-]indent-heuristic
diff-parseopt: convert --patience
diff-parseopt: convert --histogram
diff-parseopt: convert --diff-algorithm
diff-parseopt: convert --anchored
diff-parseopt: convert --binary
diff-parseopt: convert --full-index
diff-parseopt: convert -a|--text
diff-parseopt: convert -R
diff-parseopt: convert --[no-]follow
diff-parseopt: convert --[no-]color
diff-parseopt: convert --word-diff
diff-parseopt: convert --word-diff-regex
diff-parseopt: convert --color-words
diff-parseopt: convert --exit-code
diff-parseopt: convert --quiet
diff-parseopt: convert --ext-diff
diff-parseopt: convert --textconv
diff-parseopt: convert --ignore-submodules
diff-parseopt: convert --submodule
files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
Make sure refs/rewritten/ is per-worktree
unpack-trees: fix oneway_merge accidentally carry over stage index
checkout.txt: note about losing staged changes with --merge
commit: improve error message in "-a <paths>" case
unpack-trees: keep gently check inside add_rejected_path
unpack-trees: rename "gently" flag to "quiet"
read-tree: add --quiet
checkout: prevent losing staged changes with --merge
diff-parseopt: convert --ws-error-highlight
diff-parseopt: convert --ita-[in]visible-in-index
diff-parseopt: convert -z
diff-parseopt: convert -l
diff-parseopt: convert -S|-G
diff-parseopt: convert --pickaxe-all|--pickaxe-regex
diff-parseopt: convert -O
diff-parseopt: convert --find-object
diff-parseopt: convert --diff-filter
diff-parseopt: convert --[no-]abbrev
diff-parseopt: convert --[src|dst]-prefix
diff-parseopt: convert --line-prefix
diff-parseopt: convert --no-prefix
diff-parseopt: convert --inter-hunk-context
diff-parseopt: convert --[no-]color-moved
diff-parseopt: convert --color-moved-ws
diff.c: allow --no-color-moved-ws
range-diff: use parse_options() instead of diff_opt_parse()
diff --no-index: use parse_options() instead of diff_opt_parse()
am: avoid diff_opt_parse()
config: correct '**' matching in includeIf patterns
interpret-trailers.txt: start the desc line with a capital letter
read-tree.txt: clarify --reset and worktree changes
packfile.c: add repo_approximate_object_count()
refs.c: add refs_ref_exists()
refs.c: add refs_shorten_unambiguous_ref()
refs.c: remove the_repo from substitute_branch_name()
refs.c: remove the_repo from expand_ref()
refs.c: add repo_dwim_ref()
refs.c: add repo_dwim_log()
refs.c: remove the_repo from read_ref_at()
submodule foreach: fix "<command> --quiet" not being respected
commit.cocci: refactor code, avoid double rewrite
commit.c: add repo_get_commit_tree()
sha1-name.c: remove the_repo from sort_ambiguous()
sha1-name.c: remove the_repo from find_abbrev_len_packed()
sha1-name.c: add repo_find_unique_abbrev_r()
sha1-name.c: store and use repo in struct disambiguate_state
sha1-name.c: add repo_for_each_abbrev()
sha1-name.c: remove the_repo from get_short_oid()
sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
sha1-name.c: remove the_repo from interpret_branch_mark()
sha1-name.c: add repo_interpret_branch_name()
sha1-name.c: remove the_repo from get_oid_oneline()
sha1-name.c: remove the_repo from get_describe_name()
sha1-name.c: remove the_repo from get_oid_basic()
sha1-name.c: remove the_repo from get_oid_1()
sha1-name.c: remove the_repo from handle_one_ref()
sha1-name.c: remove the_repo from diagnose_invalid_index_path()
sha1-name.c: remove the_repo from resolve_relative_path()
sha1-name.c: remove the_repo from get_oid_with_context_1()
sha1-name.c: add repo_get_oid()
submodule-config.c: use repo_get_oid for reading .gitmodules
sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
sha1-name.c: remove the_repo from other get_oid_*
sha1-name.c: remove the_repo from get_oid_mb()
parse-options: don't emit "ambiguous option" for aliases
submodule--helper: add a missing \n
diff-parseopt: correct variable types that are used by parseopt
diff-parseopt: restore -U (no argument) behavior
parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
Paul-Sebastian Ungureanu (17):
sha1-name.c: add `get_oidf()` which acts like `get_oid()`
strbuf.c: add `strbuf_join_argv()`
strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
t3903: modernize style
stash: rename test cases to be more descriptive
stash: add tests for `git stash show` config
stash: mention options in `show` synopsis
stash: convert list to builtin
stash: convert show to builtin
stash: convert store to builtin
stash: convert create to builtin
stash: convert push to builtin
stash: make push -q quiet
stash: convert save to builtin
stash: optimize `get_untracked_files()` and `check_changes()`
stash: replace all `write-tree` child processes with API calls
stash: convert `stash--helper.c` into `stash.c`
Philip Oakley (2):
rerere doc: quote `rerere.enabled`
describe doc: remove '7-char' abbreviation reference
Phillip Wood (21):
am/cherry-pick/rebase/revert: document --rerere-autoupdate
merge: tweak --rerere-autoupdate documentation
sequencer: break some long lines
cherry-pick: demonstrate option amnesia
cherry-pick --continue: remember options
commit/reset: try to clean up sequencer state
fix cherry-pick/revert status after commit
sequencer: fix cleanup with --signoff and -x
sequencer.c: save and restore cleanup mode
sequencer: always discard index after checkout
rebase: don't translate trace strings
rebase: rename write_basic_state()
rebase: use OPT_RERERE_AUTOUPDATE()
rebase -i: combine rebase--interactive.c with rebase.c
rebase -i: remove duplication
rebase -i: use struct commit when parsing options
rebase -i: use struct object_id for squash_onto
rebase -i: use struct rebase_options to parse args
rebase -i: use struct rebase_options in do_interactive_rebase()
rebase: use a common action enum
rebase -i: run without forking rebase--interactive
Ramsay Jones (2):
prune-packed: check for too many arguments
Makefile: fix 'hdr-check' when GCRYPT not installed
René Scharfe (1):
get-tar-commit-id: parse comment record
Robert P. J. Day (3):
mention use of "hooks.allownonascii" in "man githooks"
docs/git-gc: fix typo "--prune=all" to "--prune=now"
attr.c: ".gitattribute" -> ".gitattributes" (comments)
Rohit Ashiwal (3):
test functions: add function `test_file_not_empty`
t3600: modernize style
t3600: use helpers to replace test -d/f/e/s <path>
SZEDER Gábor (27):
test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
t/lib-git-daemon: make sure to kill the 'git-daemon' process
tests: use 'test_atexit' to stop httpd
t0301-credential-cache: use 'test_atexit' to stop the credentials helper
git p4 test: clean up the p4d cleanup functions
git p4 test: simplify timeout handling
git p4 test: disable '-x' tracing in the p4d watchdog loop
t9811-git-p4-label-import: fix pipeline negation
t5318-commit-graph: remove unused variable
Documentation/git-diff-tree.txt: fix formatting
Documentation/technical/api-config.txt: fix formatting
Documentation/technical/protocol-v2.txt: fix formatting
ci: install Asciidoctor in 'ci/install-dependencies.sh'
index-pack: show progress while checking objects
ci: stick with Asciidoctor v1.5.8 for now
ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
progress: make display_progress() return void
progress: assemble percentage and counters in a strbuf before printing
blame: default to HEAD in a bare repo when no start commit is given
builtin rebase: use FREE_AND_NULL
builtin rebase: use oideq()
progress: clear previous progress update dynamically
progress: break too long progress bar lines
ci: install 'libsvn-perl' instead of 'git-svn'
trace2: rename environment variables to GIT_TRACE2*
trace2: document the supported values of GIT_TRACE2* env variables
progress: avoid empty line when breaking the progress line
Sun Chao (2):
pack-redundant: delete redundant code
pack-redundant: new algorithm to find min packs
Sven Strickroth (1):
MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
Tanushree Tumane (1):
mingw: remove obsolete IPv6-related code
Taylor Blau (4):
t: move 'hex2oct' into test-lib-functions.sh
t: introduce tests for unexpected object types
list-objects.c: handle unexpected non-blob entries
list-objects.c: handle unexpected non-tree entries
Thomas Gummerer (15):
move worktree tests to t24*
entry: factor out unlink_entry function
entry: support CE_WT_REMOVE flag in checkout_entry
read-cache: add invalidate parameter to remove_marked_cache_entries
checkout: clarify comment
checkout: factor out mark_cache_entry_for_checkout function
checkout: introduce --{,no-}overlay option
checkout: introduce checkout.overlayMode config
revert "checkout: introduce checkout.overlayMode config"
ident: don't require calling prepare_fallback_ident first
stash: drop unused parameter
stash: pass pathspec as pointer
glossary: add definition for overlay
stash: setup default diff output format if necessary
ls-files: use correct format string
Todd Zullinger (9):
t4038-diff-combined: quote paths with whitespace
t9902: test multiple removals via completion.commands
completion: use __git when calling --list-cmds
Documentation/rev-list-options: wrap --date=<format> block with "--"
Documentation/git-status: fix titles in porcelain v2 section
Documentation/git-svn: improve asciidoctor compatibility
Documentation/git-show-branch: avoid literal {apostrophe}
test-lib: try harder to ensure a working jgit
RelNotes: minor typo fixes in 2.22.0 draft
Torsten Bögershausen (1):
trace2: NULL is not allowed for va_list
Trần Ngọc Quân (1):
l10n: Updated Vietnamese translation for v2.21 rd2
Vadim Kochan (1):
autoconf: #include <libintl.h> when checking for gettext()
William Hubbs (1):
config: allow giving separate author and committer idents
Yash Bhatambare (1):
gitattributes.txt: fix typo
brian m. carlson (35):
t/lib-submodule-update: use appropriate length constant
khash: move oid hash table definition
pack-bitmap: make bitmap header handling hash agnostic
pack-bitmap: convert struct stored_bitmap to object_id
pack-bitmap: replace sha1_to_hex
pack-bitmap: switch hard-coded constants to the_hash_algo
pack-bitmap: switch hash tables to use struct object_id
submodule: avoid hard-coded constants
notes-merge: switch to use the_hash_algo
notes: make hash size independent
notes: replace sha1_to_hex
object-store: rename and expand packed_git's sha1 member
builtin/name-rev: make hash-size independent
fast-import: make hash-size independent
fast-import: replace sha1_to_hex
builtin/am: make hash size independent
builtin/pull: make hash-size independent
http-push: convert to use the_hash_algo
http-backend: allow 64-character hex names
http-push: remove remaining uses of sha1_to_hex
http-walker: replace sha1_to_hex
http: replace hard-coded constant with the_hash_algo
http: compute hash of downloaded objects using the_hash_algo
http: replace sha1_to_hex
remote-curl: make hash size independent
hash: add a function to lookup hash algorithm by length
builtin/get-tar-commit-id: make hash size independent
archive: convert struct archiver_args to object_id
refspec: make hash size independent
builtin/difftool: use parse_oid_hex
dir: make untracked cache extension hash size independent
read-cache: read data in a hash-independent way
Git.pm: make hash size independent
gitweb: make hash size independent
send-email: default to quoted-printable when CR is present
Ævar Arnfjörð Bjarmason (44):
receive-pack: fix use-after-free bug
commit-graph tests: split up corrupt_graph_and_verify()
commit-graph tests: test a graph that's too small
Makefile: remove an out-of-date comment
Makefile: move "strip" assignment down from flags
Makefile: add/remove comments at top and tweak whitespace
Makefile: Move *_LIBS assignment into its own section
Makefile: move the setting of *FLAGS closer to "include"
Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
gc: remove redundant check for gc_auto_threshold
gc: convert to using the_hash_algo
gc: refactor a "call me once" pattern
reflog tests: make use of "test_config" idiom
reflog tests: test for the "points nowhere" warning
rebase: remove the rebase.useBuiltin setting
gc docs: modernize the advice for manually running "gc"
gc docs: stop noting "repack" flags
gc docs: clean grammar for "gc.bigPackThreshold"
commit-graph: fix segfault on e.g. "git status"
commit-graph: don't early exit(1) on e.g. "git status"
commit-graph: don't pass filename to load_commit_graph_one_fd_st()
commit-graph verify: detect inability to read the graph
commit-graph write: don't die if the existing graph is corrupt
commit-graph: improve & i18n error messages
reflog tests: assert lack of early exit with expiry="never"
gc: handle & check gc.reflogExpire config
test-lib: whitelist GIT_TR2_* in the environment
gc docs: include the "gc.*" section from "config" in "gc"
gc docs: re-flow the "gc.*" section in "config"
gc docs: fix formatting for "gc.writeCommitGraph"
gc docs: note how --aggressive impacts --window & --depth
gc docs: downplay the usefulness of --aggressive
gc docs: note "gc --aggressive" in "fast-import"
gc docs: clarify that "gc" doesn't throw away referenced objects
gc docs: remove incorrect reference to gc.auto=0
perf README: correct docs for 3c8f12c96c regression
perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
perf-lib.sh: make "./run <revisions>" use the correct gits
perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
perf tests: add "bindir" prefix to git tree test results
perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
trace2: fix up a missing "leave" entry point
trace2: fix up a missing "leave" entry point
sha1dc: update from upstream
İsmail Dönmez (2):
mingw: do not let ld strip relocations
mingw: enable DEP and ASLR
^ permalink raw reply [relevance 2%]
* Re: [ANNOUNCE] Git v2.22.0-rc1
2019-05-19 9:04 2% [ANNOUNCE] Git v2.22.0-rc1 Junio C Hamano
@ 2019-05-19 20:30 0% ` Johannes Schindelin
0 siblings, 0 replies; 162+ results
From: Johannes Schindelin @ 2019-05-19 20:30 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, git-for-windows, git-packagers
[-- Attachment #1: Type: text/plain, Size: 71780 bytes --]
Team,
Git for Windows v2.22.0-rc1 is available here:
https://github.com/git-for-windows/git/releases/tag/v2.22.0-rc1.windows.1
Thanks,
Johannes
On Sun, 19 May 2019, Junio C Hamano wrote:
> A release candidate Git v2.22.0-rc1 is now available for testing
> at the usual places. It is comprised of 699 non-merge commits
> since v2.21.0, contributed by 66 people, 16 of which are new faces.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
> The following public repositories all have a copy of the
> 'v2.22.0-rc1' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
> New contributors whose contributions weren't in v2.21.0 are as follows.
> Welcome to the Git development community!
>
> Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
> Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien
> Robert, Dustin Spicuzza, Michal Suchanek, Rohit Ashiwal,
> Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
> Yash Bhatambare.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
> Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
> Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
> Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
> David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
> Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
> Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
> Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
> Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
> Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
> Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
> Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
> Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
> Trần Ngọc Quân.
>
> ----------------------------------------------------------------
>
> Git 2.22 Release Notes (draft)
> ==============================
>
> Updates since v2.21
> -------------------
>
> UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
> checking out paths out of the tree-ish, that allows paths that
> match the pathspec that are in the current index and working tree
> and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..." now allows to
> optionally pick trailers selectively by keyword, show only values,
> etc.
>
> * Four new configuration variables {author,committer}.{name,email}
> have been introduced to override user.{name,email} in more specific
> cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
> "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
> merge involved renames. A new option adds the paths in the
> original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
> complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
> culprit using a raw "diff-tree", with which there is no output for
> a merge commit. This has been updated to use a more modern and
> human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
> option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
> been updated.
>
> * The completion helper code now pays attention to repository-local
> configuration (when available), which allows --list-cmds to honour
> a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
> its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
> file changes, which can help e.g. a virtualized working tree
> implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
> between HEAD and the working-tree files forward while checking out
> another branch, and ignored the differences between HEAD and the
> index. The command has been taught to abort when the index and the
> HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
> often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
> submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
> infer file movement based on how other files in the same directory
> moved. As this is inherently less robust heuristics than the one
> based on the content similarity of the file itself (rather than
> based on what its neighbours are doing), it sometimes gives an
> outcome unexpected by the end users. This has been toned down to
> leave the renamed paths in higher/conflicted stages in the index so
> that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
> mistake when creating an annotated or signed tag that points at
> another tag.
>
> * The "git pack-objects" command learned to report the number of
> objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
> conflicted merge was shown above the scissors line when the
> clean-up mode is set to "scissors", even though it was commented
> out just like the list of updated paths and other information to
> help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
> when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
> the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
> repositories now; also the pathname hash-cache is created by
> default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
> taught that in their contexts, the notation A...B means "the merge
> base between these two commits", just like "git checkout A...B"
> detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
> of {diff,merge}.{tool,guitool} configuration variables serve as
> fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
> mode; they are now explicitly marked as mutually incompatible.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
> long predates the parse-options API, uses fairly long and complex
> handcrafted option parser. This is being rewritten to use the
> parse-options API.
>
> * The implementation of pack-redundant has been updated for
> performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
> bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
> use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
> patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
> easier to run most of the tests under different versions of
> over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
> results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
> packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
> updated.
>
> * The tests have been updated not to rely on the abbreviated option
> names the parse-options API offers, to protect us from an
> abbreviated form of an option that used to be unique within the
> command getting non-unique when a new option that share the same
> prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
> list many times during a single step of its operation, and the
> recent C-rewrite made a faithful conversion of the logic to C. The
> implementation has been updated to carry necessary information
> around in-core to avoid rewriting the same file over and over
> unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
> processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
> missing blobs we will need, instead of waiting for the on-demand
> machinery to discover them one by one. The code learned to aim to
> achieve better performance by batching the request for these
> promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
> pointless to spend cycles for a large portion of the connectivity
> check that enumerates and skips promisor objects (which by
> definition is all objects fetched from the other side). This has
> been optimized out.
>
> * Mechanically and systematically drop "extern" from function
> declarlation.
>
> * The script to aggregate perf result unconditionally depended on
> libjson-perl even though it did not have to, which has been
> corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
> avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
> of Git that happens to be on $PATH, not the specified one to
> measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
> spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
> responded by a request to disambiguate between --recursive and
> --recurse-submodules, which is bad because these two are synonyms.
> The parse-options API has been extended to define such synonyms
> more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
> fread/fwrite did not return the number of elements, which was found
> to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
> Fixes since v2.21
> -----------------
>
> * "git prune-packed" did not notice and complain against excess
> arguments given from the command line, which now it does.
> (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
> (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
> --ext-diff and --textconv, but so far these have been ignored,
> which has been corrected.
> (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
> a bug in the latter (lack of authentication retry) and generally
> improves the code base.
> (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
> to (accidentally) include it more than once.
> (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
> included sha256/gcrypt.h, even when it is not used, causing the
> make target to fail. We now skip it when GCRYPT_SHA256 is not in
> use.
> (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
> files, which is expensive on platforms with slow filesystems; it
> now optionally uses "ls-files" if working within a repository,
> which is a trick similar to how all sources are enumerated to run
> ETAGS on.
> (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
> correctly, which has been corrected.
> (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
> (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
> DEVELOPER=YesPlease; this did not work well before.
> (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
> the objects that are not reachable from any of the refs into
> unreachable and dangling. This is now enabled when dangling
> objects are requested (which is done by default, but can be
> overridden with the "--no-dangling" option).
> (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
> the upload-pack that runs on the other end that hangs up after
> detecting an error could cause "git fetch" to die with a signal,
> which led to a flakey test. "git fetch" now ignores SIGPIPE during
> the network portion of its operation (this is not a problem as we
> check the return status from our write(2)s).
> (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
> well-known objects like an empty tree (which should yield "yes",
> even when there is no on-disk object for an empty tree), which has
> been corrected.
> (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
> repository_format structure.
> (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
> but there is a slight difference that wasn't documented, which is
> now fixed.
> (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
> working tree down to a small "token" (a la Git LFS), there is no
> point in allocating a huge scratch area upfront, but the buffer is
> sized based on the original file size. The convert mechanism now
> allocates very minimum and reallocates as it receives the output
> from the clean filter process.
> (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
> intermediate states, which inherently makes the hierarchy per
> worktree, but it didn't quite work well.
> (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
> output as it should. This has been corrected.
> (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
> and then mkdir", which is race-prone. This has been fixed by using
> mkdir and reacting to EEXIST in a loop.
> (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
> (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
> asciidoc.
> (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
> messages at places.
> (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
> that they can be localized.
> (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
> configuration, which made Windows port to ignore settings of
> core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
> is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
> output file for the cover-letter, which has been corrected.
> (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
> incorrectly left some paths in an unmerged state, which has been
> corrected.
>
> * A corner case bug in the refs API has been corrected.
> (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
> (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
> strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
> (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
> (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
> update_server_info() funtion.
> (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
> updated.
> (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
> user to ask help resolving a conflicted step, did not honor the
> options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
> careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
> (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
> corrected.
>
> * Performance fix around "git blame", especially in a linear history
> (which is the norm we should optimize for).
> (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
> (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
> deal better with overlong messages.
> (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
> the working tree, and the same command in a bare repository errors
> out because there is no working tree by definition. The command
> has been taught to instead start blaming from the commit at HEAD,
> which is more useful.
> (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
> extension has been corrected.
> (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
> it is used in more places, by using xmalloc and/or xcalloc calls.
> (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
> was made runtime-tunable, which has been fixed.
> (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
> (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
> down correctly, which has been corrected.
> (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
> payload contains carriage-return. The use of the mechanism is in
> line with the design originally added the codepath that chooses QP
> when the payload has overly long lines.
> (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
> anything-by: trailers in 'git send-email' was found to be way too
> eager and considered nonsense strings as if they can be legitimate
> beginning of *-by: trailer. This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
> seems to have stopped including from /usr/local/include; this
> has been corrected.
> (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
> repository is an explicit indication that the user wants to add it
> as a submodule, but when the HEAD of the inner repository is on an
> unborn branch, it cannot be added as a submodule. Worse, the files
> in its working tree can be added as if they are a part of the outer
> repository, which is not what the user wants. These problems are
> being addressed.
> (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
> to (and more importantly, ought to) clean up the commit log message
> with the --cleanup=space option by default, but this has been
> broken since late 2017. This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
> failed to peel the tag before writing a replace ref, which did not
> make sense because the old graft mechanism the feature wants to
> mimick only allowed to replace one commit object with another.
> This has been fixed.
> (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
> of a different type is expected, instead of blindly assuming that
> the connection between objects are correctly made.
> (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
> which has been fixed.
> (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
> for-each-ref" and friends was not showing the right branch, which
> has been fixed.
> (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
> where a particular build may deliberately omit some subcommands,
> which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
> "git branch -D" from removing the branch that is currently checked
> out by mistake. The implementation of this logic was broken for
> repositories with unusual name, which unfortunately is the norm for
> submodules these days. This has been fixed.
> (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
> which has been corrected.
> (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
> gettext() implementations from -libintl by ignoring useless stub
> implementations shipped in some C library, which has been
> corrected.
> (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
> run in an empty repository, which emulates the initial clone
> situation better.
> (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
> tree resulted in duplicated Makefile rules that caused the build to
> issue an unnecessary warning during a trial build after merge
> conflicts are resolved in working tree *.h files but before the
> resolved results are added to the index. This has been corrected.
>
> * "git chery-pick" (and "revert" that shares the same runtime engine)
> that deals with multiple commits got confused when the final step
> gets stopped with a conflict and the user concluded the sequence
> with "git commit". Attempt to fix it by cleaning up the state
> files used by these commands in such a situation.
> (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
> entities may become different from what the end-user expects, just
> like files in the working tree get "renamed". Work around the
> mismatch by paying attention to the core.precomposeUnicode
> configuration.
> (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
> see too many packfiles and ran out of open file descriptor, which
> has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
> git-svn package (in the hope that it would bring in the right
> dependencies). This has been updated to install the more direct
> dependency, namely, libsvn-perl.
> (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
> "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
> file gets discarded, which has been corrected.
> (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
> todo-list "rebase -i -r" uses should not be shown as a hex object
> name.
>
> * A prerequiste check in the test suite to see if a working jgit is
> available was made more robust.
> (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
> indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
> (merge 11f470aee7 jc/test-yes-doc later to maint).
> (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
> (merge 5c326d1252 jk/unused-params later to maint).
> (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
> (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
> (merge 1ede45e44b en/merge-options-doc later to maint).
> (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
> (merge c271dc28fd nd/no-more-check-racy later to maint).
> (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
> (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
> (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
> (merge 50b206371d js/untravis-windows later to maint).
> (merge dbf47215e3 js/rebase-recreate-merge later to maint).
> (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
> (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
> (merge af91b0230c dl/ignore-docs later to maint).
> (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
> (merge e041d0781b ar/t4150-remove-cruft later to maint).
> (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
> (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
> (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
> (merge a7256debd4 nd/checkout-m-doc-update later to maint).
> (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
> (merge 0b918b75af sg/t5318-cleanup later to maint).
> (merge 68ed71b53c cb/doco-mono later to maint).
> (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
> (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
> (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
> (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
> (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
> (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
> (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
> (merge d8083e4180 km/t3000-retitle later to maint).
> (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
> (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
> (merge 6804ba3a58 cw/diff-highlight later to maint).
> (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
> (merge d9ef573837 jk/apache-lsan later to maint).
> (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
> (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
> (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
> (merge d4907720a2 cm/notes-comment-fix later to maint).
> (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.21.0 are as follows:
>
> Alban Gruin (18):
> sequencer: changes in parse_insn_buffer()
> sequencer: make the todo_list structure public
> sequencer: remove the 'arg' field from todo_item
> sequencer: refactor transform_todos() to work on a todo_list
> sequencer: introduce todo_list_write_to_file()
> sequencer: refactor check_todo_list() to work on a todo_list
> sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
> sequencer: refactor rearrange_squash() to work on a todo_list
> sequencer: make sequencer_make_script() write its script to a strbuf
> sequencer: change complete_action() to use the refactored functions
> rebase--interactive: move sequencer_add_exec_commands()
> rebase--interactive: move rearrange_squash_in_todo_file()
> sequencer: refactor skip_unnecessary_picks() to work on a todo_list
> rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
> rebase-interactive: append_todo_help() changes
> rebase-interactive: rewrite edit_todo_list() to handle the initial edit
> sequencer: use edit_todo_list() in complete_action()
> rebase--interactive: move transform_todo_file()
>
> Alexander Blesius (1):
> doc: fix typos in man pages
>
> Alexander Shopov (1):
> gitk: Update Bulgarian translation (317t)
>
> Anders Waldenborg (7):
> doc: group pretty-format.txt placeholders descriptions
> pretty: allow %(trailers) options with explicit value
> pretty: single return path in %(trailers) handling
> pretty: allow showing specific trailers
> pretty: add support for "valueonly" option in %(trailers)
> strbuf: separate callback for strbuf_expand:ing literals
> pretty: add support for separator option in %(trailers)
>
> Andreas Heiduk (1):
> revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
> Andrei Rybak (1):
> t4150: remove unused variable
>
> Baruch Siach (1):
> send-email: don't cc *-by lines with '-' prefix
>
> Beat Bolli (1):
> unicode: update the width tables to Unicode 12
>
> Ben Peart (1):
> read-cache: add post-index-change hook
>
> Boxuan Li (1):
> t4253-am-keep-cr-dos: avoid using pipes
>
> Brandon Richardson (1):
> commit-tree: utilize parse-options api
>
> Carlo Marcelo Arenas Belón (1):
> http-push: prevent format overflow warning with gcc >= 9
>
> Chris Mayo (1):
> notes: correct documentation of format_display_notes()
>
> Chris. Webster (1):
> diff-highlight: use correct /dev/null for UNIX and Windows
>
> Christian Couder (4):
> t6050: use test_line_count instead of wc -l
> t6050: redirect expected error output to a file
> replace: peel tag when passing a tag as parent to --graft
> replace: peel tag when passing a tag first to --graft
>
> Clément Chigot (2):
> Makefile: use fileno macro work around on AIX
> git-compat-util: work around for access(X_OK) under root
>
> Corentin BOMPARD (2):
> doc/CodingGuidelines: URLs and paths as monospace
> doc: format pathnames and URLs as monospace.
>
> Damien Robert (1):
> ref-filter: use correct branch for %(push:track)
>
> Daniels Umanovskis (1):
> branch: introduce --show-current display option
>
> David Aguilar (2):
> mergetools: add support for smerge (Sublime Merge)
> contrib/completion: add smerge to the mergetool completion candidates
>
> David Kastrup (1):
> blame.c: don't drop origin blobs as eagerly
>
> Denton Liu (38):
> completion: complete git submodule absorbgitdirs
> git-submodule.txt: "--branch <branch>" option defaults to 'master'
> submodule--helper: teach config subcommand --unset
> submodule: document default behavior
> git-reset.txt: clarify documentation
> git-clean.txt: clarify ignore pattern files
> docs: move core.excludesFile from git-add to gitignore
> contrib/subtree: ensure only one rev is provided
> midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
> tag: fix formatting
> submodule: teach set-branch subcommand
> tag: advise on nested tags
> t7600: clean up style
> t3507: clean up style
> t7604: clean up style
> t7502: clean up style
> commit: extract cleanup_mode functions to sequencer
> parse-options.h: extract common --cleanup option
> merge: cleanup messages like commit
> merge: add scissors line on merge conflict
> cherry-pick/revert: add scissors line on merge conflict
> t7610: unsuppress output
> t7610: add mergetool --gui tests
> *.[ch]: remove extern from function declarations using spatch
> *.[ch]: remove extern from function declarations using sed
> *.[ch]: manually align parameter lists
> t2018: cleanup in current test
> branch: make create_branch accept a merge base rev
> revisions.txt: change "rev" to "<rev>"
> revisions.txt: mark optional rev arguments with []
> revisions.txt: mention <rev>~ form
> tag: fix typo in nested tagging hint
> mergetool: use get_merge_tool function
> mergetool--lib: create gui_mode function
> mergetool: fallback to tool when guitool unavailable
> difftool: make --gui, --tool and --extcmd mutually exclusive
> difftool: fallback on merge.guitool
>
> Derrick Stolee (4):
> trace2:data: pack-objects: add trace2 regions
> midx: pass a repository pointer
> midx: add packs to packed_git linked list
> trace2: add variable description to git.txt
>
> Dustin Spicuzza (1):
> cvsexportcommit: force crlf translation
>
> Elijah Newren (23):
> log,diff-tree: add --combined-all-paths option
> merge-options.txt: correct wording of --no-commit option
> t9300: demonstrate bug with get-mark and empty orphan commits
> git-fast-import.txt: fix wording about where ls command can appear
> fast-import: check most prominent commands first
> fast-import: only allow cat-blob requests where it makes sense
> fast-import: fix erroneous handling of get-mark with empty orphan commits
> Use 'unsigned short' for mode, like diff_filespec does
> merge-recursive: rename merge_options argument from 'o' to 'opt'
> merge-recursive: rename diff_filespec 'one' to 'o'
> merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
> merge-recursive: use 'ci' for rename_conflict_info variable name
> merge-recursive: move some struct declarations together
> merge-recursive: shrink rename_conflict_info
> merge-recursive: remove ren[12]_other fields from rename_conflict_info
> merge-recursive: track branch where rename occurred in rename struct
> merge-recursive: cleanup handle_rename_* function signatures
> merge-recursive: switch from (oid,mode) pairs to a diff_filespec
> t6043: fix copied test description to match its purpose
> merge-recursive: track information associated with directory renames
> merge-recursive: give callers of handle_content_merge() access to contents
> merge-recursive: switch directory rename detection default
> Honor core.precomposeUnicode in more places
>
> Eric Sunshine (1):
> check-non-portable-shell: support Perl versions older than 5.10
>
> Eric Wong (1):
> repack: enable bitmaps by default on bare repos
>
> Jean-Noël Avila (2):
> l10n: fr.po remove obsolete entries
> Doc: fix misleading asciidoc formating
>
> Jeff Hostetler (29):
> trace2: Documentation/technical/api-trace2.txt
> trace2: create new combined trace facility
> trace2: collect Windows-specific process information
> trace2:data: add trace2 regions to wt-status
> trace2:data: add editor/pager child classification
> trace2:data: add trace2 sub-process classification
> trace2:data: add trace2 transport child classification
> trace2:data: add subverb to checkout command
> trace2:data: add subverb to reset command
> trace2:data: add trace2 hook classification
> trace2:data: add subverb for rebase
> trace2:data: add trace2 instrumentation to index read/write
> trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
> trace2: add for_each macros to clang-format
> progress: add sparse mode to force 100% complete message
> trace2:data: add trace2 data to midx
> midx: add progress indicators in multi-pack-index verify
> midx: during verify group objects by packfile to speed verification
> config: initialize opts structure in repo_read_config()
> trace2: refactor setting process starting time
> trace2: add absolute elapsed time to start event
> trace2: find exec-dir before trace2 initialization
> config: add read_very_early_config()
> trace2: use system/global config for default trace2 settings
> trace2: report peak memory usage of the process
> trace2: clarify UTC datetime formatting
> trace2: make SIDs more unique
> trace2: update docs to describe system/global config settings
> trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>
> Jeff King (92):
> prune: lazily perform reachability traversal
> prune: use bitmaps for reachability traversal
> prune: check SEEN flag for reachability
> t5304: rename "sha1" variables to "oid"
> diff: drop options parameter from diffcore_fix_diff_index()
> diff: drop unused color reset parameters
> diff: drop unused emit data parameter from sane_truncate_line()
> diff: drop complete_rewrite parameter from run_external_diff()
> merge-recursive: drop several unused parameters
> pack-objects: drop unused parameter from oe_map_new_pack()
> files-backend: drop refs parameter from split_symref_update()
> ref-filter: drop unused buf/sz pairs
> ref-filter: drop unused "obj" parameters
> ref-filter: drop unused "sz" parameters
> diff: reuse diff setup for --no-index case
> bisect: use string arguments to feed internal diff-tree
> bisect: fix internal diff-tree config loading
> bisect: make diff-tree output prettier
> fetch: avoid calling write_or_die()
> fetch: ignore SIGPIPE during network operation
> rev-list: allow cached objects in existence check
> doc/fsck: clarify --connectivity-only behavior
> fsck: always compute USED flags for unreachable objects
> compat/bswap: add include header guards
> config: document --type=color output is a complete line
> line-log: suppress diff output with "-s"
> line-log: detect unsupported formats
> point pull requesters to GitGitGadget
> Makefile: fix unaligned loads in sha1dc with UBSan
> t5310: correctly remove bitmaps for jgit test
> pack-objects: default to writing bitmap hash-cache
> perf-lib.sh: rely on test-lib.sh for --tee handling
> revision: drop some unused "revs" parameters
> log: drop unused rev_info from early output
> log: drop unused "len" from show_tagger()
> update-index: drop unused prefix_length parameter from do_reupdate()
> test-date: drop unused "now" parameter from parse_dates()
> unpack-trees: drop name_entry from traverse_by_cache_tree()
> unpack-trees: drop unused error_type parameters
> report_path_error(): drop unused prefix parameter
> fetch_pack(): drop unused parameters
> parse-options: drop unused ctx parameter from show_gitcomp()
> pretty: drop unused "type" parameter in needs_rfc2047_encoding()
> pretty: drop unused strbuf from parse_padding_placeholder()
> git: read local config in --list-cmds
> completion: fix multiple command removals
> parse_opt_ref_sorting: always use with NONEG flag
> refs/files-backend: handle packed transaction prepare failure
> refs/files-backend: don't look at an aborted transaction
> http: factor out curl result code normalization
> http: normalize curl results for dumb loose and alternates fetches
> http: use normalize_curl_result() instead of manual conversion
> revision: use a prio_queue to hold rewritten parents
> get_commit_tree(): return NULL for broken tree
> rev-list: let traversal die when --missing is not in use
> rev-list: detect broken root trees
> test-prio-queue: use xmalloc
> xdiff: use git-compat-util
> xdiff: use xmalloc/xrealloc
> progress: use xmalloc/xcalloc
> t5516: drop ok=sigpipe from unreachable-want tests
> t5530: check protocol response for "not our ref"
> upload-pack: send ERR packet for non-tip objects
> pkt-line: prepare buffer before handling ERR packets
> fetch: use free_refs()
> remote.c: make singular free_ref() public
> fetch: do not consider peeled tags as advertised tips
> packfile.h: drop extern from function declarations
> pack-revindex: open index if necessary
> t5319: fix bogus cat-file argument
> t5319: drop useless --buffer from cat-file
> midx: check both pack and index names for containment
> packfile: fix pack basename computation
> http: simplify parsing of remote objects/info/packs
> server-info: fix blind pointer arithmetic
> server-info: simplify cleanup in parse_pack_def()
> server-info: use strbuf to read old info/packs file
> server-info: drop nr_alloc struct member
> server-info: drop objdirlen pointer arithmetic
> update_info_refs(): drop unused force parameter
> t5304: add a test for pruning with bitmaps
> untracked-cache: be defensive about missing NULs in index
> untracked-cache: simplify parsing by dropping "next"
> untracked-cache: simplify parsing by dropping "len"
> p5302: create the repo in each index-pack test
> doc/ls-files: put nested list for "-t" option into block
> t/perf: depend on perl JSON only when using --codespeed
> t/perf: add perf script for partial clones
> coccicheck: optionally batch spatch invocations
> t/lib-httpd: pass LSAN_OPTIONS through apache
> coccicheck: make batch size of 0 mean "unlimited"
> get_oid: handle NULL repo->index
>
> Jiang Xin (4):
> t5323: test cases for git-pack-redundant
> pack-redundant: delay creation of unique_objects
> pack-redundant: rename pack_list.all_objects
> pack-redundant: consistent sort method
>
> Joel Teichroeb (5):
> stash: improve option parsing test coverage
> stash: convert apply to builtin
> stash: convert drop and clear to builtin
> stash: convert branch to builtin
> stash: convert pop to builtin
>
> Joey Hess (1):
> convert: avoid malloc of original file size
>
> Johannes Schindelin (63):
> ident: add the ability to provide a "fallback identity"
> travis: remove the hack to build the Windows job on Azure Pipelines
> tests: let --stress-limit=<N> imply --stress
> tests: introduce --stress-jobs=<N>
> built-in rebase: no need to check out `onto` twice
> built-in rebase: use the correct reflog when switching branches
> built-in rebase: demonstrate that ORIG_HEAD is not set correctly
> built-in rebase: set ORIG_HEAD just once, before the rebase
> Makefile: use `git ls-files` to list header files, if possible
> curl: anonymize URLs in error messages and warnings
> remote-curl: mark all error messages for translation
> stash: add back the original, scripted `git stash`
> stash: optionally use the scripted version again
> tests: add a special setup where stash.useBuiltin is off
> legacy stash: fix "rudimentary backport of -q"
> built-in stash: handle :(glob) pathspecs again
> mingw: drop MakeMaker reference
> mingw: allow building with an MSYS2 runtime v3.x
> rebase: deprecate --preserve-merges
> mingw: respect core.hidedotfiles = false in git-init again
> test-lib: introduce 'test_atexit'
> git-daemon: use 'test_atexit` to stop 'git-daemon'
> git p4 test: use 'test_atexit' to kill p4d and the watchdog process
> rebase -i: demonstrate obscure loose object cache bug
> sequencer: improve error message when an OID could not be parsed
> sequencer: move stale comment into correct location
> get_oid(): when an object was not found, try harder
> difftool: remove obsolete (and misleading) comment
> parse-options: make OPT_ARGUMENT() more useful
> difftool: allow running outside Git worktrees with --no-index
> docs: move gitremote-helpers into section 7
> docs: do not document the `git remote-testgit` command
> check-docs: really look at the documented commands again
> check-docs: do not expect guide pages to correspond to commands
> check-docs: fix for setups where executables have an extension
> tests (rebase): spell out the `--keep-empty` option
> tests (rebase): spell out the `--force-rebase` option
> t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
> t5531: avoid using an abbreviated option
> tests (push): do not abbreviate the `--follow-tags` option
> tests (status): spell out the `--find-renames` option in full
> tests (pack-objects): use the full, unabbreviated `--revs` option
> t3301: fix false negative
> untracked cache: fix off-by-one
> tests: disallow the use of abbreviated options (by default)
> t9822: skip tests if file names cannot be ISO-8859-1 encoded
> macOS: make sure that gettext is found
> remote-testgit: move it into the support directory for t5801
> Makefile: drop the NO_INSTALL variable
> help -a: do not list commands that are excluded from the build
> check-docs: allow command-list.txt to contain excluded commands
> docs: exclude documentation for commands that have been excluded
> check-docs: do not bother checking for legacy scripts' documentation
> test-tool: handle the `-C <directory>` option just like `git`
> Turn `git serve` into a test helper
> t5580: verify that alternates can be UNC paths
> fsmonitor: demonstrate that it is not refreshed after discard_index()
> fsmonitor: force a refresh after the index was discarded
> t6500(mingw): use the Windows PID of the shell
> difftool --no-index: error out on --dir-diff (and don't crash)
> status: fix display of rebase -ir's `label` command
> parse-options: adjust `parse_opt_unknown_cb()`s declared return type
> stash: document stash.useBuiltin
>
> Jonathan Tan (24):
> remote-curl: reduce scope of rpc_state.argv
> remote-curl: reduce scope of rpc_state.stdin_preamble
> remote-curl: reduce scope of rpc_state.result
> remote-curl: refactor reading into rpc_state's buf
> remote-curl: use post_rpc() for protocol v2 also
> tests: define GIT_TEST_PROTOCOL_VERSION
> t5601: check ssh command only with protocol v0
> tests: always test fetch of unreachable with v0
> t5503: fix overspecification of trace expectation
> t5512: compensate for v0 only sending HEAD symrefs
> t5700: only run with protocol version 1
> tests: fix protocol version for overspecifications
> t5552: compensate for v2 filtering ref adv.
> submodule: explain first attempt failure clearly
> t5551: mark half-auth no-op fetch test as v0-only
> fetch-pack: call prepare_shallow_info only if v0
> fetch-pack: respect --no-update-shallow in v2
> sha1-file: support OBJECT_INFO_FOR_PREFETCH
> fetch-pack: binary search when storing wanted-refs
> diff: batch fetching of missing blobs
> pack-objects: write objects packed to trace2
> transport: die if server options are unsupported
> clone: send server options when using protocol v2
> worktree: update is_bare heuristics
>
> Jordi Mas (1):
> l10n: Fixes to Catalan translation
>
> Josh Steadmon (5):
> protocol-capabilities.txt: document symref
> trace2: write to directory targets
> clone: do faster object check for partial clones
> trace2: fix incorrect function pointer check
> commit-graph: fix memory leak
>
> Junio C Hamano (16):
> test: caution on our version of 'yes'
> builtin/log: downcase the beginning of error messages
> format-patch: notice failure to open cover letter for writing
> Start 2.22 cycle
> The second batch
> The third batch
> The fourth batch
> gettext tests: export the restored GIT_TEST_GETTEXT_POISON
> The fifth batch
> The sixth batch
> Makefile: dedup list of files obtained from ls-files
> The seventh batch
> The eighth batch
> Git 2.22-rc0
> pkt-line: drop 'const'-ness of a param to set_packet_header()
> Git 2.22-rc1
>
> Kyle Meyer (5):
> rebase docs: fix "gitlink" typo
> submodule: refuse to add repository with no commits
> dir: do not traverse repositories with no commits
> add: error appropriately on repository with no commits
> t3000 (ls-files -o): widen description to reflect current tests
>
> Martin Ågren (14):
> setup: free old value before setting `work_tree`
> setup: fix memory leaks with `struct repository_format`
> config/diff.txt: drop spurious backtick
> config/fsck.txt: avoid starting line with dash
> git.txt: remove empty line before list continuation
> git-svn.txt: drop escaping '\' that ends up being rendered
> Documentation: turn middle-of-line tabs into spaces
> Documentation/Makefile: add missing xsl dependencies for manpages
> Documentation/Makefile: add missing dependency on asciidoctor-extensions
> asciidoctor-extensions: fix spurious space after linkgit
> Doc: auto-detect changed build flags
> doc-diff: let `render_tree()` take an explicit directory name
> doc-diff: support diffing from/to AsciiDoc(tor)
> doc-diff: add `--cut-header-footer`
>
> Matthew Kraai (1):
> t3903: add test for --intent-to-add file
>
> Michal Suchanek (1):
> worktree: fix worktree add race
>
> Mike Hommey (2):
> fix pack protocol example client/server communication
> Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
> Nguyễn Thái Ngọc Duy (126):
> parse-options.h: remove extern on function prototypes
> parse-options: add one-shot mode
> parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
> parse-options: add OPT_BITOP()
> parse-options: stop abusing 'callback' for lowlevel callbacks
> parse-options: avoid magic return codes
> parse-options: allow ll_callback with OPTION_CALLBACK
> diff.h: keep forward struct declarations sorted
> diff.h: avoid bit fields in struct diff_flags
> diff.c: prepare to use parse_options() for parsing
> diff.c: convert -u|-p|--patch
> diff.c: convert -U|--unified
> diff.c: convert -W|--[no-]function-context
> diff.c: convert --raw
> read-cache.c: fix writing "link" index ext with null base oid
> completion: add more parameter value completion
> diff-parseopt: convert --patch-with-raw
> diff-parseopt: convert --numstat and --shortstat
> diff-parseopt: convert --dirstat and friends
> diff-parseopt: convert --check
> diff-parseopt: convert --summary
> diff-parseopt: convert --patch-with-stat
> diff-parseopt: convert --name-only
> diff-parseopt: convert --name-status
> diff-parseopt: convert -s|--no-patch
> diff-parseopt: convert --stat*
> diff-parseopt: convert --[no-]compact-summary
> diff-parseopt: convert --output-*
> diff-parseopt: convert -B|--break-rewrites
> diff-parseopt: convert -M|--find-renames
> diff-parseopt: convert -D|--irreversible-delete
> diff-parseopt: convert -C|--find-copies
> diff-parseopt: convert --find-copies-harder
> diff-parseopt: convert --no-renames|--[no--rename-empty
> diff-parseopt: convert --relative
> diff-parseopt: convert --[no-]minimal
> diff-parseopt: convert --ignore-some-changes
> Delete check-racy.c
> diff-parseopt: convert --[no-]indent-heuristic
> diff-parseopt: convert --patience
> diff-parseopt: convert --histogram
> diff-parseopt: convert --diff-algorithm
> diff-parseopt: convert --anchored
> diff-parseopt: convert --binary
> diff-parseopt: convert --full-index
> diff-parseopt: convert -a|--text
> diff-parseopt: convert -R
> diff-parseopt: convert --[no-]follow
> diff-parseopt: convert --[no-]color
> diff-parseopt: convert --word-diff
> diff-parseopt: convert --word-diff-regex
> diff-parseopt: convert --color-words
> diff-parseopt: convert --exit-code
> diff-parseopt: convert --quiet
> diff-parseopt: convert --ext-diff
> diff-parseopt: convert --textconv
> diff-parseopt: convert --ignore-submodules
> diff-parseopt: convert --submodule
> files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
> files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
> Make sure refs/rewritten/ is per-worktree
> unpack-trees: fix oneway_merge accidentally carry over stage index
> checkout.txt: note about losing staged changes with --merge
> commit: improve error message in "-a <paths>" case
> unpack-trees: keep gently check inside add_rejected_path
> unpack-trees: rename "gently" flag to "quiet"
> read-tree: add --quiet
> checkout: prevent losing staged changes with --merge
> diff-parseopt: convert --ws-error-highlight
> diff-parseopt: convert --ita-[in]visible-in-index
> diff-parseopt: convert -z
> diff-parseopt: convert -l
> diff-parseopt: convert -S|-G
> diff-parseopt: convert --pickaxe-all|--pickaxe-regex
> diff-parseopt: convert -O
> diff-parseopt: convert --find-object
> diff-parseopt: convert --diff-filter
> diff-parseopt: convert --[no-]abbrev
> diff-parseopt: convert --[src|dst]-prefix
> diff-parseopt: convert --line-prefix
> diff-parseopt: convert --no-prefix
> diff-parseopt: convert --inter-hunk-context
> diff-parseopt: convert --[no-]color-moved
> diff-parseopt: convert --color-moved-ws
> diff.c: allow --no-color-moved-ws
> range-diff: use parse_options() instead of diff_opt_parse()
> diff --no-index: use parse_options() instead of diff_opt_parse()
> am: avoid diff_opt_parse()
> config: correct '**' matching in includeIf patterns
> interpret-trailers.txt: start the desc line with a capital letter
> read-tree.txt: clarify --reset and worktree changes
> packfile.c: add repo_approximate_object_count()
> refs.c: add refs_ref_exists()
> refs.c: add refs_shorten_unambiguous_ref()
> refs.c: remove the_repo from substitute_branch_name()
> refs.c: remove the_repo from expand_ref()
> refs.c: add repo_dwim_ref()
> refs.c: add repo_dwim_log()
> refs.c: remove the_repo from read_ref_at()
> submodule foreach: fix "<command> --quiet" not being respected
> commit.cocci: refactor code, avoid double rewrite
> commit.c: add repo_get_commit_tree()
> sha1-name.c: remove the_repo from sort_ambiguous()
> sha1-name.c: remove the_repo from find_abbrev_len_packed()
> sha1-name.c: add repo_find_unique_abbrev_r()
> sha1-name.c: store and use repo in struct disambiguate_state
> sha1-name.c: add repo_for_each_abbrev()
> sha1-name.c: remove the_repo from get_short_oid()
> sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
> sha1-name.c: remove the_repo from interpret_branch_mark()
> sha1-name.c: add repo_interpret_branch_name()
> sha1-name.c: remove the_repo from get_oid_oneline()
> sha1-name.c: remove the_repo from get_describe_name()
> sha1-name.c: remove the_repo from get_oid_basic()
> sha1-name.c: remove the_repo from get_oid_1()
> sha1-name.c: remove the_repo from handle_one_ref()
> sha1-name.c: remove the_repo from diagnose_invalid_index_path()
> sha1-name.c: remove the_repo from resolve_relative_path()
> sha1-name.c: remove the_repo from get_oid_with_context_1()
> sha1-name.c: add repo_get_oid()
> submodule-config.c: use repo_get_oid for reading .gitmodules
> sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
> sha1-name.c: remove the_repo from other get_oid_*
> sha1-name.c: remove the_repo from get_oid_mb()
> parse-options: don't emit "ambiguous option" for aliases
> submodule--helper: add a missing \n
>
> Paul-Sebastian Ungureanu (17):
> sha1-name.c: add `get_oidf()` which acts like `get_oid()`
> strbuf.c: add `strbuf_join_argv()`
> strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
> t3903: modernize style
> stash: rename test cases to be more descriptive
> stash: add tests for `git stash show` config
> stash: mention options in `show` synopsis
> stash: convert list to builtin
> stash: convert show to builtin
> stash: convert store to builtin
> stash: convert create to builtin
> stash: convert push to builtin
> stash: make push -q quiet
> stash: convert save to builtin
> stash: optimize `get_untracked_files()` and `check_changes()`
> stash: replace all `write-tree` child processes with API calls
> stash: convert `stash--helper.c` into `stash.c`
>
> Philip Oakley (2):
> rerere doc: quote `rerere.enabled`
> describe doc: remove '7-char' abbreviation reference
>
> Phillip Wood (21):
> am/cherry-pick/rebase/revert: document --rerere-autoupdate
> merge: tweak --rerere-autoupdate documentation
> sequencer: break some long lines
> cherry-pick: demonstrate option amnesia
> cherry-pick --continue: remember options
> commit/reset: try to clean up sequencer state
> fix cherry-pick/revert status after commit
> sequencer: fix cleanup with --signoff and -x
> sequencer.c: save and restore cleanup mode
> sequencer: always discard index after checkout
> rebase: don't translate trace strings
> rebase: rename write_basic_state()
> rebase: use OPT_RERERE_AUTOUPDATE()
> rebase -i: combine rebase--interactive.c with rebase.c
> rebase -i: remove duplication
> rebase -i: use struct commit when parsing options
> rebase -i: use struct object_id for squash_onto
> rebase -i: use struct rebase_options to parse args
> rebase -i: use struct rebase_options in do_interactive_rebase()
> rebase: use a common action enum
> rebase -i: run without forking rebase--interactive
>
> Ramsay Jones (2):
> prune-packed: check for too many arguments
> Makefile: fix 'hdr-check' when GCRYPT not installed
>
> René Scharfe (1):
> get-tar-commit-id: parse comment record
>
> Robert P. J. Day (3):
> mention use of "hooks.allownonascii" in "man githooks"
> docs/git-gc: fix typo "--prune=all" to "--prune=now"
> attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
> Rohit Ashiwal (3):
> test functions: add function `test_file_not_empty`
> t3600: modernize style
> t3600: use helpers to replace test -d/f/e/s <path>
>
> SZEDER Gábor (24):
> test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
> t/lib-git-daemon: make sure to kill the 'git-daemon' process
> tests: use 'test_atexit' to stop httpd
> t0301-credential-cache: use 'test_atexit' to stop the credentials helper
> git p4 test: clean up the p4d cleanup functions
> git p4 test: simplify timeout handling
> git p4 test: disable '-x' tracing in the p4d watchdog loop
> t9811-git-p4-label-import: fix pipeline negation
> t5318-commit-graph: remove unused variable
> Documentation/git-diff-tree.txt: fix formatting
> Documentation/technical/api-config.txt: fix formatting
> Documentation/technical/protocol-v2.txt: fix formatting
> ci: install Asciidoctor in 'ci/install-dependencies.sh'
> index-pack: show progress while checking objects
> ci: stick with Asciidoctor v1.5.8 for now
> ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
> progress: make display_progress() return void
> progress: assemble percentage and counters in a strbuf before printing
> blame: default to HEAD in a bare repo when no start commit is given
> builtin rebase: use FREE_AND_NULL
> builtin rebase: use oideq()
> progress: clear previous progress update dynamically
> progress: break too long progress bar lines
> ci: install 'libsvn-perl' instead of 'git-svn'
>
> Sun Chao (2):
> pack-redundant: delete redundant code
> pack-redundant: new algorithm to find min packs
>
> Sven Strickroth (1):
> MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
> Tanushree Tumane (1):
> mingw: remove obsolete IPv6-related code
>
> Taylor Blau (4):
> t: move 'hex2oct' into test-lib-functions.sh
> t: introduce tests for unexpected object types
> list-objects.c: handle unexpected non-blob entries
> list-objects.c: handle unexpected non-tree entries
>
> Thomas Gummerer (15):
> move worktree tests to t24*
> entry: factor out unlink_entry function
> entry: support CE_WT_REMOVE flag in checkout_entry
> read-cache: add invalidate parameter to remove_marked_cache_entries
> checkout: clarify comment
> checkout: factor out mark_cache_entry_for_checkout function
> checkout: introduce --{,no-}overlay option
> checkout: introduce checkout.overlayMode config
> revert "checkout: introduce checkout.overlayMode config"
> ident: don't require calling prepare_fallback_ident first
> stash: drop unused parameter
> stash: pass pathspec as pointer
> glossary: add definition for overlay
> stash: setup default diff output format if necessary
> ls-files: use correct format string
>
> Todd Zullinger (8):
> t4038-diff-combined: quote paths with whitespace
> t9902: test multiple removals via completion.commands
> completion: use __git when calling --list-cmds
> Documentation/rev-list-options: wrap --date=<format> block with "--"
> Documentation/git-status: fix titles in porcelain v2 section
> Documentation/git-svn: improve asciidoctor compatibility
> Documentation/git-show-branch: avoid literal {apostrophe}
> test-lib: try harder to ensure a working jgit
>
> Torsten Bögershausen (1):
> trace2: NULL is not allowed for va_list
>
> Trần Ngọc Quân (1):
> l10n: Updated Vietnamese translation for v2.21 rd2
>
> Vadim Kochan (1):
> autoconf: #include <libintl.h> when checking for gettext()
>
> William Hubbs (1):
> config: allow giving separate author and committer idents
>
> Yash Bhatambare (1):
> gitattributes.txt: fix typo
>
> brian m. carlson (35):
> t/lib-submodule-update: use appropriate length constant
> khash: move oid hash table definition
> pack-bitmap: make bitmap header handling hash agnostic
> pack-bitmap: convert struct stored_bitmap to object_id
> pack-bitmap: replace sha1_to_hex
> pack-bitmap: switch hard-coded constants to the_hash_algo
> pack-bitmap: switch hash tables to use struct object_id
> submodule: avoid hard-coded constants
> notes-merge: switch to use the_hash_algo
> notes: make hash size independent
> notes: replace sha1_to_hex
> object-store: rename and expand packed_git's sha1 member
> builtin/name-rev: make hash-size independent
> fast-import: make hash-size independent
> fast-import: replace sha1_to_hex
> builtin/am: make hash size independent
> builtin/pull: make hash-size independent
> http-push: convert to use the_hash_algo
> http-backend: allow 64-character hex names
> http-push: remove remaining uses of sha1_to_hex
> http-walker: replace sha1_to_hex
> http: replace hard-coded constant with the_hash_algo
> http: compute hash of downloaded objects using the_hash_algo
> http: replace sha1_to_hex
> remote-curl: make hash size independent
> hash: add a function to lookup hash algorithm by length
> builtin/get-tar-commit-id: make hash size independent
> archive: convert struct archiver_args to object_id
> refspec: make hash size independent
> builtin/difftool: use parse_oid_hex
> dir: make untracked cache extension hash size independent
> read-cache: read data in a hash-independent way
> Git.pm: make hash size independent
> gitweb: make hash size independent
> send-email: default to quoted-printable when CR is present
>
> Ævar Arnfjörð Bjarmason (44):
> receive-pack: fix use-after-free bug
> commit-graph tests: split up corrupt_graph_and_verify()
> commit-graph tests: test a graph that's too small
> Makefile: remove an out-of-date comment
> Makefile: move "strip" assignment down from flags
> Makefile: add/remove comments at top and tweak whitespace
> Makefile: Move *_LIBS assignment into its own section
> Makefile: move the setting of *FLAGS closer to "include"
> Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
> gc: remove redundant check for gc_auto_threshold
> gc: convert to using the_hash_algo
> gc: refactor a "call me once" pattern
> reflog tests: make use of "test_config" idiom
> reflog tests: test for the "points nowhere" warning
> rebase: remove the rebase.useBuiltin setting
> gc docs: modernize the advice for manually running "gc"
> gc docs: stop noting "repack" flags
> gc docs: clean grammar for "gc.bigPackThreshold"
> commit-graph: fix segfault on e.g. "git status"
> commit-graph: don't early exit(1) on e.g. "git status"
> commit-graph: don't pass filename to load_commit_graph_one_fd_st()
> commit-graph verify: detect inability to read the graph
> commit-graph write: don't die if the existing graph is corrupt
> commit-graph: improve & i18n error messages
> reflog tests: assert lack of early exit with expiry="never"
> gc: handle & check gc.reflogExpire config
> test-lib: whitelist GIT_TR2_* in the environment
> gc docs: include the "gc.*" section from "config" in "gc"
> gc docs: re-flow the "gc.*" section in "config"
> gc docs: fix formatting for "gc.writeCommitGraph"
> gc docs: note how --aggressive impacts --window & --depth
> gc docs: downplay the usefulness of --aggressive
> gc docs: note "gc --aggressive" in "fast-import"
> gc docs: clarify that "gc" doesn't throw away referenced objects
> gc docs: remove incorrect reference to gc.auto=0
> perf README: correct docs for 3c8f12c96c regression
> perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
> perf-lib.sh: make "./run <revisions>" use the correct gits
> perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
> perf tests: add "bindir" prefix to git tree test results
> perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
> trace2: fix up a missing "leave" entry point
> trace2: fix up a missing "leave" entry point
> sha1dc: update from upstream
>
> İsmail Dönmez (2):
> mingw: do not let ld strip relocations
> mingw: enable DEP and ASLR
>
>
>
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.22.0-rc1
@ 2019-05-19 9:04 2% Junio C Hamano
2019-05-19 20:30 0% ` Johannes Schindelin
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-05-19 9:04 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.22.0-rc1 is now available for testing
at the usual places. It is comprised of 699 non-merge commits
since v2.21.0, contributed by 66 people, 16 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.22.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.21.0 are as follows.
Welcome to the Git development community!
Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien
Robert, Dustin Spicuzza, Michal Suchanek, Rohit Ashiwal,
Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
Yash Bhatambare.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.22 Release Notes (draft)
==============================
Updates since v2.21
-------------------
UI, Workflows & Features
* "git checkout --no-overlay" can be used to trigger a new mode of
checking out paths out of the tree-ish, that allows paths that
match the pathspec that are in the current index and working tree
and are not in the tree-ish.
* The %(trailers) formatter in "git log --format=..." now allows to
optionally pick trailers selectively by keyword, show only values,
etc.
* Four new configuration variables {author,committer}.{name,email}
have been introduced to override user.{name,email} in more specific
cases.
* Command-line completion (in contrib/) learned to tab-complete the
"git submodule absorbgitdirs" subcommand.
* "git branch" learned a new subcommand "--show-current".
* Output from "diff --cc" did not show the original paths when the
merge involved renames. A new option adds the paths in the
original trees to the output.
* The command line completion (in contrib/) has been taught to
complete more subcommand parameters.
* The final report from "git bisect" used to show the suspected
culprit using a raw "diff-tree", with which there is no output for
a merge commit. This has been updated to use a more modern and
human readable output that still is concise enough.
* "git rebase --rebase-merges" replaces its old "--preserve-merges"
option; the latter is now marked as deprecated.
* Error message given while cloning with --recurse-submodules has
been updated.
* The completion helper code now pays attention to repository-local
configuration (when available), which allows --list-cmds to honour
a repository specific setting of completion.commands, for example.
* "git mergetool" learned to offer Sublime Merge (smerge) as one of
its backends.
* A new hook "post-index-change" is called when the on-disk index
file changes, which can help e.g. a virtualized working tree
implementation.
* "git difftool" can now run outside a repository.
* "git checkout -m <other>" was about carrying the differences
between HEAD and the working-tree files forward while checking out
another branch, and ignored the differences between HEAD and the
index. The command has been taught to abort when the index and the
HEAD are different.
* A progress indicator has been added to the "index-pack" step, which
often makes users wait for completion during "git clone".
* "git submodule" learns "set-branch" subcommand that allows the
submodule.*.branch settings to be modified.
* "git merge-recursive" backend recently learned a new heuristics to
infer file movement based on how other files in the same directory
moved. As this is inherently less robust heuristics than the one
based on the content similarity of the file itself (rather than
based on what its neighbours are doing), it sometimes gives an
outcome unexpected by the end users. This has been toned down to
leave the renamed paths in higher/conflicted stages in the index so
that the user can examine and confirm the result.
* "git tag" learned to give an advice suggesting it might be a
mistake when creating an annotated or signed tag that points at
another tag.
* The "git pack-objects" command learned to report the number of
objects it packed via the trace2 mechanism.
* The list of conflicted paths shown in the editor while concluding a
conflicted merge was shown above the scissors line when the
clean-up mode is set to "scissors", even though it was commented
out just like the list of updated paths and other information to
help the user explain the merge better.
* The trace2 tracing facility learned to auto-generate a filename
when told to log to a directory.
* "git clone" learned a new --server-option option when talking over
the protocol version 2.
* The connectivity bitmaps are created by default in bare
repositories now; also the pathname hash-cache is created by
default to avoid making crappy deltas when repacking.
* "git branch new A...B" and "git checkout -b new A...B" have been
taught that in their contexts, the notation A...B means "the merge
base between these two commits", just like "git checkout A...B"
detaches HEAD at that commit.
* Update "git difftool" and "git mergetool" so that the combinations
of {diff,merge}.{tool,guitool} configuration variables serve as
fallback settings of each other in a sensible order.
* The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
mode; they are now explicitly marked as mutually incompatible.
Performance, Internal Implementation, Development Support etc.
* The diff machinery, one of the oldest parts of the system, which
long predates the parse-options API, uses fairly long and complex
handcrafted option parser. This is being rewritten to use the
parse-options API.
* The implementation of pack-redundant has been updated for
performance in a repository with many packfiles.
* A more structured way to obtain execution trace has been added.
* "git prune" has been taught to take advantage of reachability
bitmap when able.
* The command line parser of "git commit-tree" has been rewritten to
use the parse-options API.
* Suggest GitGitGadget instead of submitGit as a way to submit
patches based on GitHub PR to us.
* The test framework has been updated to help developers by making it
easier to run most of the tests under different versions of
over-the-wire protocols.
* Dev support update to make it easier to compare two formatted
results from our documentation.
* The scripted "git rebase" implementation has been retired.
* "git multi-pack-index verify" did not scale well with the number of
packfiles, which is being improved.
* "git stash" has been rewritten in C.
* The "check-docs" Makefile target to support developers has been
updated.
* The tests have been updated not to rely on the abbreviated option
names the parse-options API offers, to protect us from an
abbreviated form of an option that used to be unique within the
command getting non-unique when a new option that share the same
prefix is added.
* The scripted version of "git rebase -i" wrote and rewrote the todo
list many times during a single step of its operation, and the
recent C-rewrite made a faithful conversion of the logic to C. The
implementation has been updated to carry necessary information
around in-core to avoid rewriting the same file over and over
unnecessarily.
* Test framework update to more robustly clean up leftover files and
processes after tests are done.
* Conversion from unsigned char[20] to struct object_id continues.
* While running "git diff" in a lazy clone, we can upfront know which
missing blobs we will need, instead of waiting for the on-demand
machinery to discover them one by one. The code learned to aim to
achieve better performance by batching the request for these
promised blobs.
* During an initial "git clone --depth=..." partial clone, it is
pointless to spend cycles for a large portion of the connectivity
check that enumerates and skips promisor objects (which by
definition is all objects fetched from the other side). This has
been optimized out.
* Mechanically and systematically drop "extern" from function
declarlation.
* The script to aggregate perf result unconditionally depended on
libjson-perl even though it did not have to, which has been
corrected.
* The internal implementation of "git rebase -i" has been updated to
avoid forking a separate "rebase--interactive" process.
* Allow DEP and ASLR for Windows build to for security hardening.
* Performance test framework has been broken and measured the version
of Git that happens to be on $PATH, not the specified one to
measure, for a while, which has been corrected.
* Optionally "make coccicheck" can feed multiple source files to
spatch, gaining performance while spending more memory.
* Attempt to use an abbreviated option in "git clone --recurs" is
responded by a request to disambiguate between --recursive and
--recurse-submodules, which is bad because these two are synonyms.
The parse-options API has been extended to define such synonyms
more easily and not produce an unnecessary failure.
* A pair of private functions in http.c that had names similar to
fread/fwrite did not return the number of elements, which was found
to be confusing.
* Update collision-detecting SHA-1 code to build properly on HP-UX.
Fixes since v2.21
-----------------
* "git prune-packed" did not notice and complain against excess
arguments given from the command line, which now it does.
(merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
* Split-index fix.
(merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
* "git diff --no-index" may still want to access Git goodies like
--ext-diff and --textconv, but so far these have been ignored,
which has been corrected.
(merge 287ab28bfa jk/diff-no-index-initialize later to maint).
* Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
a bug in the latter (lack of authentication retry) and generally
improves the code base.
(merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
* The include file compat/bswap.h has been updated so that it is safe
to (accidentally) include it more than once.
(merge 33aa579a55 jk/guard-bswap-header later to maint).
* The set of header files used by "make hdr-check" unconditionally
included sha256/gcrypt.h, even when it is not used, causing the
make target to fail. We now skip it when GCRYPT_SHA256 is not in
use.
(merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
* The Makefile uses 'find' utility to enumerate all the *.h header
files, which is expensive on platforms with slow filesystems; it
now optionally uses "ls-files" if working within a repository,
which is a trick similar to how all sources are enumerated to run
ETAGS on.
(merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
* "git rebase" that was reimplemented in C did not set ORIG_HEAD
correctly, which has been corrected.
(merge cbd29ead92 js/rebase-orig-head-fix later to maint).
* Dev support.
(merge f545737144 js/stress-test-ui-tweak later to maint).
* CFLAGS now can be tweaked when invoking Make while using
DEVELOPER=YesPlease; this did not work well before.
(merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
* "git fsck --connectivity-only" omits computation necessary to sift
the objects that are not reachable from any of the refs into
unreachable and dangling. This is now enabled when dangling
objects are requested (which is done by default, but can be
overridden with the "--no-dangling" option).
(merge 8d8c2a5aef jk/fsck-doc later to maint).
* On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
the upload-pack that runs on the other end that hangs up after
detecting an error could cause "git fetch" to die with a signal,
which led to a flakey test. "git fetch" now ignores SIGPIPE during
the network portion of its operation (this is not a problem as we
check the return status from our write(2)s).
(merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
* A recent update broke "is this object available to us?" check for
well-known objects like an empty tree (which should yield "yes",
even when there is no on-disk object for an empty tree), which has
been corrected.
(merge f06ab027ef jk/virtual-objects-do-exist later to maint).
* The setup code has been cleaned up to avoid leaks around the
repository_format structure.
(merge e8805af1c3 ma/clear-repository-format later to maint).
* "git config --type=color ..." is meant to replace "git config --get-color"
but there is a slight difference that wasn't documented, which is
now fixed.
(merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
* When the "clean" filter can reduce the size of a huge file in the
working tree down to a small "token" (a la Git LFS), there is no
point in allocating a huge scratch area upfront, but the buffer is
sized based on the original file size. The convert mechanism now
allocates very minimum and reallocates as it receives the output
from the clean filter process.
(merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
* "git rebase" uses the refs/rewritten/ hierarchy to store its
intermediate states, which inherently makes the hierarchy per
worktree, but it didn't quite work well.
(merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
* "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
output as it should. This has been corrected.
(merge 05314efaea jk/line-log-with-patch later to maint).
* "git worktree add" used to do a "find an available name with stat
and then mkdir", which is race-prone. This has been fixed by using
mkdir and reacting to EEXIST in a loop.
(merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
* Build update for SHA-1 with collision detection.
(merge 07a20f569b jk/sha1dc later to maint).
* Build procedure has been fixed around use of asciidoctor instead of
asciidoc.
(merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
* remote-http transport did not anonymize URLs reported in its error
messages at places.
(merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
* Error messages given from the http transport have been updated so
that they can be localized.
(merge ed8b4132c8 js/remote-curl-i18n later to maint).
* "git init" forgot to read platform-specific repository
configuration, which made Windows port to ignore settings of
core.hidedotfiles, for example.
* A corner-case object name ambiguity while the sequencer machinery
is working (e.g. "rebase -i -x") has been fixed.
* "git format-patch" did not diagnose an error while opening the
output file for the cover-letter, which has been corrected.
(merge 2fe95f494c jc/format-patch-error-check later to maint).
* "git checkout -f <branch>" while the index has an unmerged path
incorrectly left some paths in an unmerged state, which has been
corrected.
* A corner case bug in the refs API has been corrected.
(merge d3322eb28b jk/refs-double-abort later to maint).
* Unicode update.
(merge 584b62c37b bb/unicode-12 later to maint).
* dumb-http walker has been updated to share more error recovery
strategy with the normal codepath.
* A buglet in configuration parser has been fixed.
(merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
* The documentation for "git read-tree --reset -u" has been updated.
(merge b5a0bd694c nd/read-tree-reset-doc later to maint).
* Code clean-up around a much-less-important-than-it-used-to-be
update_server_info() funtion.
(merge b3223761c8 jk/server-info-rabbit-hole later to maint).
* The message given when "git commit -a <paths>" errors out has been
updated.
(merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
* "git cherry-pick --options A..B", after giving control back to the
user to ask help resolving a conflicted step, did not honor the
options it originally received, which has been corrected.
* Various glitches in "git gc" around reflog handling have been fixed.
* The code to read from commit-graph file has been cleanup with more
careful error checking before using data read from it.
* Performance fix around "git fetch" that grabs many refs.
(merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
* Protocol v2 support in "git fetch-pack" of shallow clones has been
corrected.
* Performance fix around "git blame", especially in a linear history
(which is the norm we should optimize for).
(merge f892014943 dk/blame-keep-origin-blob later to maint).
* Performance fix for "rev-list --parents -- pathspec".
(merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
* Updating the display with progress message has been cleaned up to
deal better with overlong messages.
(merge 545dc345eb sg/overlong-progress-fix later to maint).
* "git blame -- path" in a non-bare repository starts blaming from
the working tree, and the same command in a bare repository errors
out because there is no working tree by definition. The command
has been taught to instead start blaming from the commit at HEAD,
which is more useful.
(merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
* An underallocation in the code to read the untracked cache
extension has been corrected.
(merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
* The code is updated to check the result of memory allocation before
it is used in more places, by using xmalloc and/or xcalloc calls.
(merge 999b951b28 jk/xmalloc later to maint).
* The GETTEXT_POISON test option has been quite broken ever since it
was made runtime-tunable, which has been fixed.
(merge f88b9cb603 jc/gettext-test-fix later to maint).
* Test fix on APFS that is incapable of store paths in Latin-1.
(merge 3889149619 js/iso8895-test-on-apfs later to maint).
* "git submodule foreach <command> --quiet" did not pass the option
down correctly, which has been corrected.
(merge a282f5a906 nd/submodule-foreach-quiet later to maint).
* "git send-email" has been taught to use quoted-printable when the
payload contains carriage-return. The use of the mechanism is in
line with the design originally added the codepath that chooses QP
when the payload has overly long lines.
(merge 74d76a1701 bc/send-email-qp-cr later to maint).
* The recently added feature to add addresses that are on
anything-by: trailers in 'git send-email' was found to be way too
eager and considered nonsense strings as if they can be legitimate
beginning of *-by: trailer. This has been tightened.
* Builds with gettext broke on recent macOS w/ Homebrew, which
seems to have stopped including from /usr/local/include; this
has been corrected.
(merge 92a1377a2a js/macos-gettext-build later to maint).
* Running "git add" on a repository created inside the current
repository is an explicit indication that the user wants to add it
as a submodule, but when the HEAD of the inner repository is on an
unborn branch, it cannot be added as a submodule. Worse, the files
in its working tree can be added as if they are a part of the outer
repository, which is not what the user wants. These problems are
being addressed.
(merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
* "git cherry-pick" run with the "-x" or the "--signoff" option used
to (and more importantly, ought to) clean up the commit log message
with the --cleanup=space option by default, but this has been
broken since late 2017. This has been fixed.
* When given a tag that points at a commit-ish, "git replace --graft"
failed to peel the tag before writing a replace ref, which did not
make sense because the old graft mechanism the feature wants to
mimick only allowed to replace one commit object with another.
This has been fixed.
(merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
* Code tightening against a "wrong" object appearing where an object
of a different type is expected, instead of blindly assuming that
the connection between objects are correctly made.
(merge 97dd512af7 tb/unexpected later to maint).
* An earlier update for MinGW and Cygwin accidentally broke MSVC build,
which has been fixed.
(merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
* %(push:track) token used in the --format option to "git
for-each-ref" and friends was not showing the right branch, which
has been fixed.
(merge c646d0934e dr/ref-filter-push-track-fix later to maint).
* "make check-docs", "git help -a", etc. did not account for cases
where a particular build may deliberately omit some subcommands,
which has been corrected.
* The logic to tell if a Git repository has a working tree protects
"git branch -D" from removing the branch that is currently checked
out by mistake. The implementation of this logic was broken for
repositories with unusual name, which unfortunately is the norm for
submodules these days. This has been fixed.
(merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
* AIX shared the same build issues with other BSDs around fileno(fp),
which has been corrected.
(merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
* The autoconf generated configure script failed to use the right
gettext() implementations from -libintl by ignoring useless stub
implementations shipped in some C library, which has been
corrected.
(merge b71e56a683 vk/autoconf-gettext later to maint).
* Fix index-pack perf test so that the repeated invocations always
run in an empty repository, which emulates the initial clone
situation better.
(merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
* A "ls-files" that emulates "find" to enumerate files in the working
tree resulted in duplicated Makefile rules that caused the build to
issue an unnecessary warning during a trial build after merge
conflicts are resolved in working tree *.h files but before the
resolved results are added to the index. This has been corrected.
* "git chery-pick" (and "revert" that shares the same runtime engine)
that deals with multiple commits got confused when the final step
gets stopped with a conflict and the user concluded the sequence
with "git commit". Attempt to fix it by cleaning up the state
files used by these commands in such a situation.
(merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
* On a filesystem like HFS+, the names of the refs stored as filesystem
entities may become different from what the end-user expects, just
like files in the working tree get "renamed". Work around the
mismatch by paying attention to the core.precomposeUnicode
configuration.
(merge 8e712ef6fc en/unicode-in-refnames later to maint).
* The code to generate the multi-pack idx file was not prepared to
see too many packfiles and ran out of open file descriptor, which
has been corrected.
* To run tests for Git SVN, our scripts for CI used to install the
git-svn package (in the hope that it would bring in the right
dependencies). This has been updated to install the more direct
dependency, namely, libsvn-perl.
(merge db864306cf sg/ci-libsvn-perl later to maint).
* "git cvsexportcommit" running on msys did not expect cvsnt showed
"cvs status" output with CRLF line endings.
* The fsmonitor interface got out of sync after the in-core index
file gets discarded, which has been corrected.
(merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
* "git status" did not know that the "label" instruction in the
todo-list "rebase -i -r" uses should not be shown as a hex object
name.
* A prerequiste check in the test suite to see if a working jgit is
available was made more robust.
(merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
* The codepath to parse :<path> that obtains the object name for an
indexed object has been made more robust.
* Code cleanup, docfix, build fix, etc.
(merge 11f470aee7 jc/test-yes-doc later to maint).
(merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
(merge 5c326d1252 jk/unused-params later to maint).
(merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
(merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
(merge 1ede45e44b en/merge-options-doc later to maint).
(merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
(merge c271dc28fd nd/no-more-check-racy later to maint).
(merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
(merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
(merge 716a5af812 rd/gc-prune-doc-fix later to maint).
(merge 50b206371d js/untravis-windows later to maint).
(merge dbf47215e3 js/rebase-recreate-merge later to maint).
(merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
(merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
(merge af91b0230c dl/ignore-docs later to maint).
(merge 59a06e947b ra/t3600-test-path-funcs later to maint).
(merge e041d0781b ar/t4150-remove-cruft later to maint).
(merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
(merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
(merge ed31851fa6 ab/doc-misc-typofixes later to maint).
(merge a7256debd4 nd/checkout-m-doc-update later to maint).
(merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
(merge 0b918b75af sg/t5318-cleanup later to maint).
(merge 68ed71b53c cb/doco-mono later to maint).
(merge a34dca2451 nd/interpret-trailers-docfix later to maint).
(merge cf7b857a77 en/fast-import-parsing-fix later to maint).
(merge fe61ccbc35 po/rerere-doc-fmt later to maint).
(merge ffea0248bf po/describe-not-necessarily-7 later to maint).
(merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
(merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
(merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
(merge d8083e4180 km/t3000-retitle later to maint).
(merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
(merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
(merge 6804ba3a58 cw/diff-highlight later to maint).
(merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
(merge d9ef573837 jk/apache-lsan later to maint).
(merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
(merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
(merge 397a46db78 js/t5580-unc-alternate-test later to maint).
(merge d4907720a2 cm/notes-comment-fix later to maint).
(merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
----------------------------------------------------------------
Changes since v2.21.0 are as follows:
Alban Gruin (18):
sequencer: changes in parse_insn_buffer()
sequencer: make the todo_list structure public
sequencer: remove the 'arg' field from todo_item
sequencer: refactor transform_todos() to work on a todo_list
sequencer: introduce todo_list_write_to_file()
sequencer: refactor check_todo_list() to work on a todo_list
sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
sequencer: refactor rearrange_squash() to work on a todo_list
sequencer: make sequencer_make_script() write its script to a strbuf
sequencer: change complete_action() to use the refactored functions
rebase--interactive: move sequencer_add_exec_commands()
rebase--interactive: move rearrange_squash_in_todo_file()
sequencer: refactor skip_unnecessary_picks() to work on a todo_list
rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
rebase-interactive: append_todo_help() changes
rebase-interactive: rewrite edit_todo_list() to handle the initial edit
sequencer: use edit_todo_list() in complete_action()
rebase--interactive: move transform_todo_file()
Alexander Blesius (1):
doc: fix typos in man pages
Alexander Shopov (1):
gitk: Update Bulgarian translation (317t)
Anders Waldenborg (7):
doc: group pretty-format.txt placeholders descriptions
pretty: allow %(trailers) options with explicit value
pretty: single return path in %(trailers) handling
pretty: allow showing specific trailers
pretty: add support for "valueonly" option in %(trailers)
strbuf: separate callback for strbuf_expand:ing literals
pretty: add support for separator option in %(trailers)
Andreas Heiduk (1):
revisions.txt: remove ambibuity between <rev>:<path> and :<path>
Andrei Rybak (1):
t4150: remove unused variable
Baruch Siach (1):
send-email: don't cc *-by lines with '-' prefix
Beat Bolli (1):
unicode: update the width tables to Unicode 12
Ben Peart (1):
read-cache: add post-index-change hook
Boxuan Li (1):
t4253-am-keep-cr-dos: avoid using pipes
Brandon Richardson (1):
commit-tree: utilize parse-options api
Carlo Marcelo Arenas Belón (1):
http-push: prevent format overflow warning with gcc >= 9
Chris Mayo (1):
notes: correct documentation of format_display_notes()
Chris. Webster (1):
diff-highlight: use correct /dev/null for UNIX and Windows
Christian Couder (4):
t6050: use test_line_count instead of wc -l
t6050: redirect expected error output to a file
replace: peel tag when passing a tag as parent to --graft
replace: peel tag when passing a tag first to --graft
Clément Chigot (2):
Makefile: use fileno macro work around on AIX
git-compat-util: work around for access(X_OK) under root
Corentin BOMPARD (2):
doc/CodingGuidelines: URLs and paths as monospace
doc: format pathnames and URLs as monospace.
Damien Robert (1):
ref-filter: use correct branch for %(push:track)
Daniels Umanovskis (1):
branch: introduce --show-current display option
David Aguilar (2):
mergetools: add support for smerge (Sublime Merge)
contrib/completion: add smerge to the mergetool completion candidates
David Kastrup (1):
blame.c: don't drop origin blobs as eagerly
Denton Liu (38):
completion: complete git submodule absorbgitdirs
git-submodule.txt: "--branch <branch>" option defaults to 'master'
submodule--helper: teach config subcommand --unset
submodule: document default behavior
git-reset.txt: clarify documentation
git-clean.txt: clarify ignore pattern files
docs: move core.excludesFile from git-add to gitignore
contrib/subtree: ensure only one rev is provided
midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
tag: fix formatting
submodule: teach set-branch subcommand
tag: advise on nested tags
t7600: clean up style
t3507: clean up style
t7604: clean up style
t7502: clean up style
commit: extract cleanup_mode functions to sequencer
parse-options.h: extract common --cleanup option
merge: cleanup messages like commit
merge: add scissors line on merge conflict
cherry-pick/revert: add scissors line on merge conflict
t7610: unsuppress output
t7610: add mergetool --gui tests
*.[ch]: remove extern from function declarations using spatch
*.[ch]: remove extern from function declarations using sed
*.[ch]: manually align parameter lists
t2018: cleanup in current test
branch: make create_branch accept a merge base rev
revisions.txt: change "rev" to "<rev>"
revisions.txt: mark optional rev arguments with []
revisions.txt: mention <rev>~ form
tag: fix typo in nested tagging hint
mergetool: use get_merge_tool function
mergetool--lib: create gui_mode function
mergetool: fallback to tool when guitool unavailable
difftool: make --gui, --tool and --extcmd mutually exclusive
difftool: fallback on merge.guitool
Derrick Stolee (4):
trace2:data: pack-objects: add trace2 regions
midx: pass a repository pointer
midx: add packs to packed_git linked list
trace2: add variable description to git.txt
Dustin Spicuzza (1):
cvsexportcommit: force crlf translation
Elijah Newren (23):
log,diff-tree: add --combined-all-paths option
merge-options.txt: correct wording of --no-commit option
t9300: demonstrate bug with get-mark and empty orphan commits
git-fast-import.txt: fix wording about where ls command can appear
fast-import: check most prominent commands first
fast-import: only allow cat-blob requests where it makes sense
fast-import: fix erroneous handling of get-mark with empty orphan commits
Use 'unsigned short' for mode, like diff_filespec does
merge-recursive: rename merge_options argument from 'o' to 'opt'
merge-recursive: rename diff_filespec 'one' to 'o'
merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
merge-recursive: use 'ci' for rename_conflict_info variable name
merge-recursive: move some struct declarations together
merge-recursive: shrink rename_conflict_info
merge-recursive: remove ren[12]_other fields from rename_conflict_info
merge-recursive: track branch where rename occurred in rename struct
merge-recursive: cleanup handle_rename_* function signatures
merge-recursive: switch from (oid,mode) pairs to a diff_filespec
t6043: fix copied test description to match its purpose
merge-recursive: track information associated with directory renames
merge-recursive: give callers of handle_content_merge() access to contents
merge-recursive: switch directory rename detection default
Honor core.precomposeUnicode in more places
Eric Sunshine (1):
check-non-portable-shell: support Perl versions older than 5.10
Eric Wong (1):
repack: enable bitmaps by default on bare repos
Jean-Noël Avila (2):
l10n: fr.po remove obsolete entries
Doc: fix misleading asciidoc formating
Jeff Hostetler (29):
trace2: Documentation/technical/api-trace2.txt
trace2: create new combined trace facility
trace2: collect Windows-specific process information
trace2:data: add trace2 regions to wt-status
trace2:data: add editor/pager child classification
trace2:data: add trace2 sub-process classification
trace2:data: add trace2 transport child classification
trace2:data: add subverb to checkout command
trace2:data: add subverb to reset command
trace2:data: add trace2 hook classification
trace2:data: add subverb for rebase
trace2:data: add trace2 instrumentation to index read/write
trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
trace2: add for_each macros to clang-format
progress: add sparse mode to force 100% complete message
trace2:data: add trace2 data to midx
midx: add progress indicators in multi-pack-index verify
midx: during verify group objects by packfile to speed verification
config: initialize opts structure in repo_read_config()
trace2: refactor setting process starting time
trace2: add absolute elapsed time to start event
trace2: find exec-dir before trace2 initialization
config: add read_very_early_config()
trace2: use system/global config for default trace2 settings
trace2: report peak memory usage of the process
trace2: clarify UTC datetime formatting
trace2: make SIDs more unique
trace2: update docs to describe system/global config settings
trace2: fixup access problem on /etc/gitconfig in read_very_early_config
Jeff King (92):
prune: lazily perform reachability traversal
prune: use bitmaps for reachability traversal
prune: check SEEN flag for reachability
t5304: rename "sha1" variables to "oid"
diff: drop options parameter from diffcore_fix_diff_index()
diff: drop unused color reset parameters
diff: drop unused emit data parameter from sane_truncate_line()
diff: drop complete_rewrite parameter from run_external_diff()
merge-recursive: drop several unused parameters
pack-objects: drop unused parameter from oe_map_new_pack()
files-backend: drop refs parameter from split_symref_update()
ref-filter: drop unused buf/sz pairs
ref-filter: drop unused "obj" parameters
ref-filter: drop unused "sz" parameters
diff: reuse diff setup for --no-index case
bisect: use string arguments to feed internal diff-tree
bisect: fix internal diff-tree config loading
bisect: make diff-tree output prettier
fetch: avoid calling write_or_die()
fetch: ignore SIGPIPE during network operation
rev-list: allow cached objects in existence check
doc/fsck: clarify --connectivity-only behavior
fsck: always compute USED flags for unreachable objects
compat/bswap: add include header guards
config: document --type=color output is a complete line
line-log: suppress diff output with "-s"
line-log: detect unsupported formats
point pull requesters to GitGitGadget
Makefile: fix unaligned loads in sha1dc with UBSan
t5310: correctly remove bitmaps for jgit test
pack-objects: default to writing bitmap hash-cache
perf-lib.sh: rely on test-lib.sh for --tee handling
revision: drop some unused "revs" parameters
log: drop unused rev_info from early output
log: drop unused "len" from show_tagger()
update-index: drop unused prefix_length parameter from do_reupdate()
test-date: drop unused "now" parameter from parse_dates()
unpack-trees: drop name_entry from traverse_by_cache_tree()
unpack-trees: drop unused error_type parameters
report_path_error(): drop unused prefix parameter
fetch_pack(): drop unused parameters
parse-options: drop unused ctx parameter from show_gitcomp()
pretty: drop unused "type" parameter in needs_rfc2047_encoding()
pretty: drop unused strbuf from parse_padding_placeholder()
git: read local config in --list-cmds
completion: fix multiple command removals
parse_opt_ref_sorting: always use with NONEG flag
refs/files-backend: handle packed transaction prepare failure
refs/files-backend: don't look at an aborted transaction
http: factor out curl result code normalization
http: normalize curl results for dumb loose and alternates fetches
http: use normalize_curl_result() instead of manual conversion
revision: use a prio_queue to hold rewritten parents
get_commit_tree(): return NULL for broken tree
rev-list: let traversal die when --missing is not in use
rev-list: detect broken root trees
test-prio-queue: use xmalloc
xdiff: use git-compat-util
xdiff: use xmalloc/xrealloc
progress: use xmalloc/xcalloc
t5516: drop ok=sigpipe from unreachable-want tests
t5530: check protocol response for "not our ref"
upload-pack: send ERR packet for non-tip objects
pkt-line: prepare buffer before handling ERR packets
fetch: use free_refs()
remote.c: make singular free_ref() public
fetch: do not consider peeled tags as advertised tips
packfile.h: drop extern from function declarations
pack-revindex: open index if necessary
t5319: fix bogus cat-file argument
t5319: drop useless --buffer from cat-file
midx: check both pack and index names for containment
packfile: fix pack basename computation
http: simplify parsing of remote objects/info/packs
server-info: fix blind pointer arithmetic
server-info: simplify cleanup in parse_pack_def()
server-info: use strbuf to read old info/packs file
server-info: drop nr_alloc struct member
server-info: drop objdirlen pointer arithmetic
update_info_refs(): drop unused force parameter
t5304: add a test for pruning with bitmaps
untracked-cache: be defensive about missing NULs in index
untracked-cache: simplify parsing by dropping "next"
untracked-cache: simplify parsing by dropping "len"
p5302: create the repo in each index-pack test
doc/ls-files: put nested list for "-t" option into block
t/perf: depend on perl JSON only when using --codespeed
t/perf: add perf script for partial clones
coccicheck: optionally batch spatch invocations
t/lib-httpd: pass LSAN_OPTIONS through apache
coccicheck: make batch size of 0 mean "unlimited"
get_oid: handle NULL repo->index
Jiang Xin (4):
t5323: test cases for git-pack-redundant
pack-redundant: delay creation of unique_objects
pack-redundant: rename pack_list.all_objects
pack-redundant: consistent sort method
Joel Teichroeb (5):
stash: improve option parsing test coverage
stash: convert apply to builtin
stash: convert drop and clear to builtin
stash: convert branch to builtin
stash: convert pop to builtin
Joey Hess (1):
convert: avoid malloc of original file size
Johannes Schindelin (63):
ident: add the ability to provide a "fallback identity"
travis: remove the hack to build the Windows job on Azure Pipelines
tests: let --stress-limit=<N> imply --stress
tests: introduce --stress-jobs=<N>
built-in rebase: no need to check out `onto` twice
built-in rebase: use the correct reflog when switching branches
built-in rebase: demonstrate that ORIG_HEAD is not set correctly
built-in rebase: set ORIG_HEAD just once, before the rebase
Makefile: use `git ls-files` to list header files, if possible
curl: anonymize URLs in error messages and warnings
remote-curl: mark all error messages for translation
stash: add back the original, scripted `git stash`
stash: optionally use the scripted version again
tests: add a special setup where stash.useBuiltin is off
legacy stash: fix "rudimentary backport of -q"
built-in stash: handle :(glob) pathspecs again
mingw: drop MakeMaker reference
mingw: allow building with an MSYS2 runtime v3.x
rebase: deprecate --preserve-merges
mingw: respect core.hidedotfiles = false in git-init again
test-lib: introduce 'test_atexit'
git-daemon: use 'test_atexit` to stop 'git-daemon'
git p4 test: use 'test_atexit' to kill p4d and the watchdog process
rebase -i: demonstrate obscure loose object cache bug
sequencer: improve error message when an OID could not be parsed
sequencer: move stale comment into correct location
get_oid(): when an object was not found, try harder
difftool: remove obsolete (and misleading) comment
parse-options: make OPT_ARGUMENT() more useful
difftool: allow running outside Git worktrees with --no-index
docs: move gitremote-helpers into section 7
docs: do not document the `git remote-testgit` command
check-docs: really look at the documented commands again
check-docs: do not expect guide pages to correspond to commands
check-docs: fix for setups where executables have an extension
tests (rebase): spell out the `--keep-empty` option
tests (rebase): spell out the `--force-rebase` option
t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
t5531: avoid using an abbreviated option
tests (push): do not abbreviate the `--follow-tags` option
tests (status): spell out the `--find-renames` option in full
tests (pack-objects): use the full, unabbreviated `--revs` option
t3301: fix false negative
untracked cache: fix off-by-one
tests: disallow the use of abbreviated options (by default)
t9822: skip tests if file names cannot be ISO-8859-1 encoded
macOS: make sure that gettext is found
remote-testgit: move it into the support directory for t5801
Makefile: drop the NO_INSTALL variable
help -a: do not list commands that are excluded from the build
check-docs: allow command-list.txt to contain excluded commands
docs: exclude documentation for commands that have been excluded
check-docs: do not bother checking for legacy scripts' documentation
test-tool: handle the `-C <directory>` option just like `git`
Turn `git serve` into a test helper
t5580: verify that alternates can be UNC paths
fsmonitor: demonstrate that it is not refreshed after discard_index()
fsmonitor: force a refresh after the index was discarded
t6500(mingw): use the Windows PID of the shell
difftool --no-index: error out on --dir-diff (and don't crash)
status: fix display of rebase -ir's `label` command
parse-options: adjust `parse_opt_unknown_cb()`s declared return type
stash: document stash.useBuiltin
Jonathan Tan (24):
remote-curl: reduce scope of rpc_state.argv
remote-curl: reduce scope of rpc_state.stdin_preamble
remote-curl: reduce scope of rpc_state.result
remote-curl: refactor reading into rpc_state's buf
remote-curl: use post_rpc() for protocol v2 also
tests: define GIT_TEST_PROTOCOL_VERSION
t5601: check ssh command only with protocol v0
tests: always test fetch of unreachable with v0
t5503: fix overspecification of trace expectation
t5512: compensate for v0 only sending HEAD symrefs
t5700: only run with protocol version 1
tests: fix protocol version for overspecifications
t5552: compensate for v2 filtering ref adv.
submodule: explain first attempt failure clearly
t5551: mark half-auth no-op fetch test as v0-only
fetch-pack: call prepare_shallow_info only if v0
fetch-pack: respect --no-update-shallow in v2
sha1-file: support OBJECT_INFO_FOR_PREFETCH
fetch-pack: binary search when storing wanted-refs
diff: batch fetching of missing blobs
pack-objects: write objects packed to trace2
transport: die if server options are unsupported
clone: send server options when using protocol v2
worktree: update is_bare heuristics
Jordi Mas (1):
l10n: Fixes to Catalan translation
Josh Steadmon (5):
protocol-capabilities.txt: document symref
trace2: write to directory targets
clone: do faster object check for partial clones
trace2: fix incorrect function pointer check
commit-graph: fix memory leak
Junio C Hamano (16):
test: caution on our version of 'yes'
builtin/log: downcase the beginning of error messages
format-patch: notice failure to open cover letter for writing
Start 2.22 cycle
The second batch
The third batch
The fourth batch
gettext tests: export the restored GIT_TEST_GETTEXT_POISON
The fifth batch
The sixth batch
Makefile: dedup list of files obtained from ls-files
The seventh batch
The eighth batch
Git 2.22-rc0
pkt-line: drop 'const'-ness of a param to set_packet_header()
Git 2.22-rc1
Kyle Meyer (5):
rebase docs: fix "gitlink" typo
submodule: refuse to add repository with no commits
dir: do not traverse repositories with no commits
add: error appropriately on repository with no commits
t3000 (ls-files -o): widen description to reflect current tests
Martin Ågren (14):
setup: free old value before setting `work_tree`
setup: fix memory leaks with `struct repository_format`
config/diff.txt: drop spurious backtick
config/fsck.txt: avoid starting line with dash
git.txt: remove empty line before list continuation
git-svn.txt: drop escaping '\' that ends up being rendered
Documentation: turn middle-of-line tabs into spaces
Documentation/Makefile: add missing xsl dependencies for manpages
Documentation/Makefile: add missing dependency on asciidoctor-extensions
asciidoctor-extensions: fix spurious space after linkgit
Doc: auto-detect changed build flags
doc-diff: let `render_tree()` take an explicit directory name
doc-diff: support diffing from/to AsciiDoc(tor)
doc-diff: add `--cut-header-footer`
Matthew Kraai (1):
t3903: add test for --intent-to-add file
Michal Suchanek (1):
worktree: fix worktree add race
Mike Hommey (2):
fix pack protocol example client/server communication
Make fread/fwrite-like functions in http.c more like fread/fwrite.
Nguyễn Thái Ngọc Duy (126):
parse-options.h: remove extern on function prototypes
parse-options: add one-shot mode
parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: add OPT_BITOP()
parse-options: stop abusing 'callback' for lowlevel callbacks
parse-options: avoid magic return codes
parse-options: allow ll_callback with OPTION_CALLBACK
diff.h: keep forward struct declarations sorted
diff.h: avoid bit fields in struct diff_flags
diff.c: prepare to use parse_options() for parsing
diff.c: convert -u|-p|--patch
diff.c: convert -U|--unified
diff.c: convert -W|--[no-]function-context
diff.c: convert --raw
read-cache.c: fix writing "link" index ext with null base oid
completion: add more parameter value completion
diff-parseopt: convert --patch-with-raw
diff-parseopt: convert --numstat and --shortstat
diff-parseopt: convert --dirstat and friends
diff-parseopt: convert --check
diff-parseopt: convert --summary
diff-parseopt: convert --patch-with-stat
diff-parseopt: convert --name-only
diff-parseopt: convert --name-status
diff-parseopt: convert -s|--no-patch
diff-parseopt: convert --stat*
diff-parseopt: convert --[no-]compact-summary
diff-parseopt: convert --output-*
diff-parseopt: convert -B|--break-rewrites
diff-parseopt: convert -M|--find-renames
diff-parseopt: convert -D|--irreversible-delete
diff-parseopt: convert -C|--find-copies
diff-parseopt: convert --find-copies-harder
diff-parseopt: convert --no-renames|--[no--rename-empty
diff-parseopt: convert --relative
diff-parseopt: convert --[no-]minimal
diff-parseopt: convert --ignore-some-changes
Delete check-racy.c
diff-parseopt: convert --[no-]indent-heuristic
diff-parseopt: convert --patience
diff-parseopt: convert --histogram
diff-parseopt: convert --diff-algorithm
diff-parseopt: convert --anchored
diff-parseopt: convert --binary
diff-parseopt: convert --full-index
diff-parseopt: convert -a|--text
diff-parseopt: convert -R
diff-parseopt: convert --[no-]follow
diff-parseopt: convert --[no-]color
diff-parseopt: convert --word-diff
diff-parseopt: convert --word-diff-regex
diff-parseopt: convert --color-words
diff-parseopt: convert --exit-code
diff-parseopt: convert --quiet
diff-parseopt: convert --ext-diff
diff-parseopt: convert --textconv
diff-parseopt: convert --ignore-submodules
diff-parseopt: convert --submodule
files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
Make sure refs/rewritten/ is per-worktree
unpack-trees: fix oneway_merge accidentally carry over stage index
checkout.txt: note about losing staged changes with --merge
commit: improve error message in "-a <paths>" case
unpack-trees: keep gently check inside add_rejected_path
unpack-trees: rename "gently" flag to "quiet"
read-tree: add --quiet
checkout: prevent losing staged changes with --merge
diff-parseopt: convert --ws-error-highlight
diff-parseopt: convert --ita-[in]visible-in-index
diff-parseopt: convert -z
diff-parseopt: convert -l
diff-parseopt: convert -S|-G
diff-parseopt: convert --pickaxe-all|--pickaxe-regex
diff-parseopt: convert -O
diff-parseopt: convert --find-object
diff-parseopt: convert --diff-filter
diff-parseopt: convert --[no-]abbrev
diff-parseopt: convert --[src|dst]-prefix
diff-parseopt: convert --line-prefix
diff-parseopt: convert --no-prefix
diff-parseopt: convert --inter-hunk-context
diff-parseopt: convert --[no-]color-moved
diff-parseopt: convert --color-moved-ws
diff.c: allow --no-color-moved-ws
range-diff: use parse_options() instead of diff_opt_parse()
diff --no-index: use parse_options() instead of diff_opt_parse()
am: avoid diff_opt_parse()
config: correct '**' matching in includeIf patterns
interpret-trailers.txt: start the desc line with a capital letter
read-tree.txt: clarify --reset and worktree changes
packfile.c: add repo_approximate_object_count()
refs.c: add refs_ref_exists()
refs.c: add refs_shorten_unambiguous_ref()
refs.c: remove the_repo from substitute_branch_name()
refs.c: remove the_repo from expand_ref()
refs.c: add repo_dwim_ref()
refs.c: add repo_dwim_log()
refs.c: remove the_repo from read_ref_at()
submodule foreach: fix "<command> --quiet" not being respected
commit.cocci: refactor code, avoid double rewrite
commit.c: add repo_get_commit_tree()
sha1-name.c: remove the_repo from sort_ambiguous()
sha1-name.c: remove the_repo from find_abbrev_len_packed()
sha1-name.c: add repo_find_unique_abbrev_r()
sha1-name.c: store and use repo in struct disambiguate_state
sha1-name.c: add repo_for_each_abbrev()
sha1-name.c: remove the_repo from get_short_oid()
sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
sha1-name.c: remove the_repo from interpret_branch_mark()
sha1-name.c: add repo_interpret_branch_name()
sha1-name.c: remove the_repo from get_oid_oneline()
sha1-name.c: remove the_repo from get_describe_name()
sha1-name.c: remove the_repo from get_oid_basic()
sha1-name.c: remove the_repo from get_oid_1()
sha1-name.c: remove the_repo from handle_one_ref()
sha1-name.c: remove the_repo from diagnose_invalid_index_path()
sha1-name.c: remove the_repo from resolve_relative_path()
sha1-name.c: remove the_repo from get_oid_with_context_1()
sha1-name.c: add repo_get_oid()
submodule-config.c: use repo_get_oid for reading .gitmodules
sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
sha1-name.c: remove the_repo from other get_oid_*
sha1-name.c: remove the_repo from get_oid_mb()
parse-options: don't emit "ambiguous option" for aliases
submodule--helper: add a missing \n
Paul-Sebastian Ungureanu (17):
sha1-name.c: add `get_oidf()` which acts like `get_oid()`
strbuf.c: add `strbuf_join_argv()`
strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
t3903: modernize style
stash: rename test cases to be more descriptive
stash: add tests for `git stash show` config
stash: mention options in `show` synopsis
stash: convert list to builtin
stash: convert show to builtin
stash: convert store to builtin
stash: convert create to builtin
stash: convert push to builtin
stash: make push -q quiet
stash: convert save to builtin
stash: optimize `get_untracked_files()` and `check_changes()`
stash: replace all `write-tree` child processes with API calls
stash: convert `stash--helper.c` into `stash.c`
Philip Oakley (2):
rerere doc: quote `rerere.enabled`
describe doc: remove '7-char' abbreviation reference
Phillip Wood (21):
am/cherry-pick/rebase/revert: document --rerere-autoupdate
merge: tweak --rerere-autoupdate documentation
sequencer: break some long lines
cherry-pick: demonstrate option amnesia
cherry-pick --continue: remember options
commit/reset: try to clean up sequencer state
fix cherry-pick/revert status after commit
sequencer: fix cleanup with --signoff and -x
sequencer.c: save and restore cleanup mode
sequencer: always discard index after checkout
rebase: don't translate trace strings
rebase: rename write_basic_state()
rebase: use OPT_RERERE_AUTOUPDATE()
rebase -i: combine rebase--interactive.c with rebase.c
rebase -i: remove duplication
rebase -i: use struct commit when parsing options
rebase -i: use struct object_id for squash_onto
rebase -i: use struct rebase_options to parse args
rebase -i: use struct rebase_options in do_interactive_rebase()
rebase: use a common action enum
rebase -i: run without forking rebase--interactive
Ramsay Jones (2):
prune-packed: check for too many arguments
Makefile: fix 'hdr-check' when GCRYPT not installed
René Scharfe (1):
get-tar-commit-id: parse comment record
Robert P. J. Day (3):
mention use of "hooks.allownonascii" in "man githooks"
docs/git-gc: fix typo "--prune=all" to "--prune=now"
attr.c: ".gitattribute" -> ".gitattributes" (comments)
Rohit Ashiwal (3):
test functions: add function `test_file_not_empty`
t3600: modernize style
t3600: use helpers to replace test -d/f/e/s <path>
SZEDER Gábor (24):
test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
t/lib-git-daemon: make sure to kill the 'git-daemon' process
tests: use 'test_atexit' to stop httpd
t0301-credential-cache: use 'test_atexit' to stop the credentials helper
git p4 test: clean up the p4d cleanup functions
git p4 test: simplify timeout handling
git p4 test: disable '-x' tracing in the p4d watchdog loop
t9811-git-p4-label-import: fix pipeline negation
t5318-commit-graph: remove unused variable
Documentation/git-diff-tree.txt: fix formatting
Documentation/technical/api-config.txt: fix formatting
Documentation/technical/protocol-v2.txt: fix formatting
ci: install Asciidoctor in 'ci/install-dependencies.sh'
index-pack: show progress while checking objects
ci: stick with Asciidoctor v1.5.8 for now
ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
progress: make display_progress() return void
progress: assemble percentage and counters in a strbuf before printing
blame: default to HEAD in a bare repo when no start commit is given
builtin rebase: use FREE_AND_NULL
builtin rebase: use oideq()
progress: clear previous progress update dynamically
progress: break too long progress bar lines
ci: install 'libsvn-perl' instead of 'git-svn'
Sun Chao (2):
pack-redundant: delete redundant code
pack-redundant: new algorithm to find min packs
Sven Strickroth (1):
MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
Tanushree Tumane (1):
mingw: remove obsolete IPv6-related code
Taylor Blau (4):
t: move 'hex2oct' into test-lib-functions.sh
t: introduce tests for unexpected object types
list-objects.c: handle unexpected non-blob entries
list-objects.c: handle unexpected non-tree entries
Thomas Gummerer (15):
move worktree tests to t24*
entry: factor out unlink_entry function
entry: support CE_WT_REMOVE flag in checkout_entry
read-cache: add invalidate parameter to remove_marked_cache_entries
checkout: clarify comment
checkout: factor out mark_cache_entry_for_checkout function
checkout: introduce --{,no-}overlay option
checkout: introduce checkout.overlayMode config
revert "checkout: introduce checkout.overlayMode config"
ident: don't require calling prepare_fallback_ident first
stash: drop unused parameter
stash: pass pathspec as pointer
glossary: add definition for overlay
stash: setup default diff output format if necessary
ls-files: use correct format string
Todd Zullinger (8):
t4038-diff-combined: quote paths with whitespace
t9902: test multiple removals via completion.commands
completion: use __git when calling --list-cmds
Documentation/rev-list-options: wrap --date=<format> block with "--"
Documentation/git-status: fix titles in porcelain v2 section
Documentation/git-svn: improve asciidoctor compatibility
Documentation/git-show-branch: avoid literal {apostrophe}
test-lib: try harder to ensure a working jgit
Torsten Bögershausen (1):
trace2: NULL is not allowed for va_list
Trần Ngọc Quân (1):
l10n: Updated Vietnamese translation for v2.21 rd2
Vadim Kochan (1):
autoconf: #include <libintl.h> when checking for gettext()
William Hubbs (1):
config: allow giving separate author and committer idents
Yash Bhatambare (1):
gitattributes.txt: fix typo
brian m. carlson (35):
t/lib-submodule-update: use appropriate length constant
khash: move oid hash table definition
pack-bitmap: make bitmap header handling hash agnostic
pack-bitmap: convert struct stored_bitmap to object_id
pack-bitmap: replace sha1_to_hex
pack-bitmap: switch hard-coded constants to the_hash_algo
pack-bitmap: switch hash tables to use struct object_id
submodule: avoid hard-coded constants
notes-merge: switch to use the_hash_algo
notes: make hash size independent
notes: replace sha1_to_hex
object-store: rename and expand packed_git's sha1 member
builtin/name-rev: make hash-size independent
fast-import: make hash-size independent
fast-import: replace sha1_to_hex
builtin/am: make hash size independent
builtin/pull: make hash-size independent
http-push: convert to use the_hash_algo
http-backend: allow 64-character hex names
http-push: remove remaining uses of sha1_to_hex
http-walker: replace sha1_to_hex
http: replace hard-coded constant with the_hash_algo
http: compute hash of downloaded objects using the_hash_algo
http: replace sha1_to_hex
remote-curl: make hash size independent
hash: add a function to lookup hash algorithm by length
builtin/get-tar-commit-id: make hash size independent
archive: convert struct archiver_args to object_id
refspec: make hash size independent
builtin/difftool: use parse_oid_hex
dir: make untracked cache extension hash size independent
read-cache: read data in a hash-independent way
Git.pm: make hash size independent
gitweb: make hash size independent
send-email: default to quoted-printable when CR is present
Ævar Arnfjörð Bjarmason (44):
receive-pack: fix use-after-free bug
commit-graph tests: split up corrupt_graph_and_verify()
commit-graph tests: test a graph that's too small
Makefile: remove an out-of-date comment
Makefile: move "strip" assignment down from flags
Makefile: add/remove comments at top and tweak whitespace
Makefile: Move *_LIBS assignment into its own section
Makefile: move the setting of *FLAGS closer to "include"
Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
gc: remove redundant check for gc_auto_threshold
gc: convert to using the_hash_algo
gc: refactor a "call me once" pattern
reflog tests: make use of "test_config" idiom
reflog tests: test for the "points nowhere" warning
rebase: remove the rebase.useBuiltin setting
gc docs: modernize the advice for manually running "gc"
gc docs: stop noting "repack" flags
gc docs: clean grammar for "gc.bigPackThreshold"
commit-graph: fix segfault on e.g. "git status"
commit-graph: don't early exit(1) on e.g. "git status"
commit-graph: don't pass filename to load_commit_graph_one_fd_st()
commit-graph verify: detect inability to read the graph
commit-graph write: don't die if the existing graph is corrupt
commit-graph: improve & i18n error messages
reflog tests: assert lack of early exit with expiry="never"
gc: handle & check gc.reflogExpire config
test-lib: whitelist GIT_TR2_* in the environment
gc docs: include the "gc.*" section from "config" in "gc"
gc docs: re-flow the "gc.*" section in "config"
gc docs: fix formatting for "gc.writeCommitGraph"
gc docs: note how --aggressive impacts --window & --depth
gc docs: downplay the usefulness of --aggressive
gc docs: note "gc --aggressive" in "fast-import"
gc docs: clarify that "gc" doesn't throw away referenced objects
gc docs: remove incorrect reference to gc.auto=0
perf README: correct docs for 3c8f12c96c regression
perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
perf-lib.sh: make "./run <revisions>" use the correct gits
perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
perf tests: add "bindir" prefix to git tree test results
perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
trace2: fix up a missing "leave" entry point
trace2: fix up a missing "leave" entry point
sha1dc: update from upstream
İsmail Dönmez (2):
mingw: do not let ld strip relocations
mingw: enable DEP and ASLR
^ permalink raw reply [relevance 2%]
* Re: [PATCH v10 00/10] Fix scissors bug during conflict
@ 2019-04-18 9:14 5% ` Phillip Wood
0 siblings, 0 replies; 162+ results
From: Phillip Wood @ 2019-04-18 9:14 UTC (permalink / raw)
To: Junio C Hamano
Cc: Denton Liu, Git Mailing List, Eric Sunshine, Ramsay Jones,
SZEDER Gábor, Phillip Wood
On 18/04/2019 06:19, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> With Denton's blessing I've rebased his patches on top of my patch to
>> fix the message cleanup with cherry-pick --signoff and -x [1]. I've
Note that the base is a merge of that patch (which is based on maint)
with 041f5ea1cf ("The third batch", 2019-03-20)
>> [1] https://public-inbox.org/git/20190329110842.30604-1-phillip.wood123@gmail.com/
>
> Hmph, I certainly saw that patch, but I do not recall seeing any
> in-depth review of it. How ready is it? Was it because it was
> trivially obvious that we didn't see much activity on the patch?
I think it is ready (it's a fairly simple change). Dscho said he was
happy with it [1].
[1]
https://public-inbox.org/git/nycvar.QRO.7.76.6.1903291651340.41@tvgsbejvaqbjf.bet/
Best Wishes
Phillip
^ permalink raw reply [relevance 5%]
* Re: [PATCH v3 0/4] rebase: teach rebase --keep-base
@ 2019-04-13 21:10 7% ` Ævar Arnfjörð Bjarmason
0 siblings, 0 replies; 162+ results
From: Ævar Arnfjörð Bjarmason @ 2019-04-13 21:10 UTC (permalink / raw)
To: Denton Liu
Cc: Git Mailing List, Eric Sunshine, Junio C Hamano,
Johannes Schindelin
On Sat, Apr 06 2019, Denton Liu wrote:
> On Sat, Apr 06, 2019 at 09:44:49PM +0200, Ævar Arnfjörð Bjarmason wrote:
>>
>> On Mon, Apr 01 2019, Denton Liu wrote:
>>
>> > Thanks again for your feedback, Ævar! I think we're both on the same page now.
>> > Hopefully I've addressed all of your high-level concerns with this patchset and
>> > we can move into a discussion on implementation detail.
>>
>> Late in replying to this, have been off-list. This also applies for your
>> v4.
>>
>> The current version you have still doesn't explain the "Why would we
>> redundantly rebase every time in this case..." question I had in
>> https://public-inbox.org/git/87tvfma8yt.fsf@evledraar.gmail.com/
>>
>> I *think* it's closer to "it was easier to implement this in terms of
>> --onto, which happens to behave that way now" than "it must work this
>> way for --keep-base", which is fair enough.
>
> Correct, the reason why --keep-base was not lazy initially was because
> "--onto did it that way". You are correct in that --keep-base should be
> lazily rebasing so I changed --onto's behaviour in 3/4 because it would
> also benefit from laziness. Thus, now --keep-base lazily rebases because
> --onto also does.
>
>>
>> Although I see when I forward-port my POC patch from that E-Mail that
>> one test fails now, which is good, that wasn't the case before, but it
>> looks like that might be testing something else than just the lazy
>> behavior.
>
> The test fails because the patch disables fork_point if --keep-base is
> set. So, with the patch applied, C is rebased even though it is excluded
> when fork_point is set.
>
>>
>> It would be good to know in terms of commit message or (better) explicit
>> tests so that if we teach these various rebase modes the same lazyness
>> --fork-point uses in the future it's clear if that's OK or not.
>
> Sorry, could you please clarify what you mean by the "lazyness
> --fork-point uses"? I don't understand what laziness is introduced by
> using --fork-point. Also, are the tests in t3432 not sufficient for
> testing fast-forwarding (aka lazy) behaviour?
Late reply, sorry. I mean if I do e.g. on git.git:
git checkout -b avar/test 041f5ea1cf
I.e. branch of Junio's "The third batch" (we're now on the 4th) and
then:
git branch --set-upstream-to origin/master
And commit a dummy change, I'm now:
On branch avar/test
Your branch and 'origin/master' have diverged,
and have 1 and 33 different commits each, respectively.
Then I run a --keep-base rebase twice:
$ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --keep-base; git rev-parse HEAD
fc3e916c5f foo
041f5ea1cf The third batch
First, rewinding head to replay your work on top of it...
Applying: foo
b10e672074dfee6b6e8b2901c9bb49f856a13708
$ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --keep-base; git rev-parse HEAD
b10e672074 foo
041f5ea1cf The third batch
First, rewinding head to replay your work on top of it...
Applying: foo
fd3029e73b89f5a799653ff17199d00f2a6ee2e2
I.e. I'll keep on getting a new commit, even though by any criteria I
can think of for this type of case there's no work to do. I.e. we're
already based on 041f5ea1cf, no need to rebase again.
Of course this is also currently the case with --fork-point without
argument, which'll settle on (note fourth, not third):
$ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --fork-point; git rev-parse HEAD
85a1861cec foo
e35b8cb8e2 The fourth batch
First, rewinding head to replay your work on top of it...
Applying: foo
c6046e97af29d71bf6270080acf188c095e0cb7c
$ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --fork-point; git rev-parse HEAD
c6046e97af foo
e35b8cb8e2 The fourth batch
First, rewinding head to replay your work on top of it...
Applying: foo
672d22d58e9aa9b6a28054531c21e1f1b598b013
Whereas a --keep-base in *this* case should be identical to:
$ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase $(git merge-base --fork-point origin/master HEAD); git rev-parse HEAD
fc3e916c5f foo
041f5ea1cf The third batch
Current branch avar/test is up to date.
fc3e916c5fc707cfc83f28b3faca81046306b305
The reason I'm asking is that as noted in the thread starting at
https://public-inbox.org/git/20190224101029.GA13438@sigill.intra.peff.net/
we used to in *some* cases do the same for:
rebase $(git merge-base --fork-point origin/master HEAD)
As for just:
rebase --fork-point
I.e. say "Current branch is up-to-date". I'm planning to loop back to
that and fix it for the --fork-point case. So I was wondering if you
could think of a reason for why --keep-base couldn't also do the same,
or if there was some intrinsic difference I'm missing.
Anyway. Don't worry about it. When I poke at it it'll likely shake out
of the respective tests.
I was just wondering if you having looked at many of the same things
recently could understand my ramblings and knew if this was a case of
"yup, we could add a bit more to that can_fast_forward(...) case and
make it lazy too", or "no, --keep-base is special for reasons you're
missing...".
^ permalink raw reply [relevance 7%]
* [PATCH 0/3] fix dumb-http fetch with alternates
2019-03-23 8:53 0% ` Jeff King
@ 2019-03-24 12:07 0% ` Jeff King
0 siblings, 0 replies; 162+ results
From: Jeff King @ 2019-03-24 12:07 UTC (permalink / raw)
To: Eric Wong
Cc: Wolfgang Denk, Heinrich Schuchardt, git, Junio C Hamano,
Takahiro Akashi
On Sat, Mar 23, 2019 at 04:53:41AM -0400, Jeff King wrote:
> On Fri, Mar 22, 2019 at 04:50:34PM +0000, Eric Wong wrote:
>
> > > Weird. I had set http.maxrequests to "1" to give more readable output
> > > from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
> > > default of 5. Which certainly seems like a bug, but one that has been
> > > there for a while (at least since v2.9.x, which I tested).
> >
> > I couldn't reproduce an error after porting your patch to
> > master (commit 041f5ea1cf987a40 "The third batch"):
> > https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
> >
> > So you might've hit an ephemeral error (bad connection,
> > HTTP server restarting, etc).
>
> No, it was quite reproducible. Curious, I decided to bisect. The problem
> started in ad75ebe5b3 (http: maintain curl sessions, 2009-11-27), but
> was later fixed by your 2abc848d54 (http: always remove curl easy from
> curlm session on release, 2016-09-13).
>
> So trying to build the fix directly on 17966c0a63d (which is in between
> those) will run into this unrelated bug. But forward-porting does work.
Here's the patch, forward-ported on top of the current master, with
actual commit messages, a test, and a few subtle tweaks around the
curl_errorstr handling.
[1/3]: http: factor out curl result code normalization
[2/3]: http: normalize curl results for dumb loose and alternates fetches
[3/3]: http: use normalize_curl_result() instead of manual conversion
http-walker.c | 21 ++++++++++-----------
http.c | 18 ++++++++++++------
http.h | 9 +++++++++
t/t5550-http-fetch-dumb.sh | 16 ++++++++++++++++
4 files changed, 47 insertions(+), 17 deletions(-)
^ permalink raw reply [relevance 0%]
* Re: [BUG] Cloning with git HEAD fails for some repositories
2019-03-22 16:50 5% ` Eric Wong
2019-03-22 17:42 0% ` Heinrich Schuchardt
@ 2019-03-23 8:53 0% ` Jeff King
2019-03-24 12:07 0% ` [PATCH 0/3] fix dumb-http fetch with alternates Jeff King
1 sibling, 1 reply; 162+ results
From: Jeff King @ 2019-03-23 8:53 UTC (permalink / raw)
To: Eric Wong
Cc: Wolfgang Denk, Heinrich Schuchardt, git, Junio C Hamano,
Takahiro Akashi
On Fri, Mar 22, 2019 at 04:50:34PM +0000, Eric Wong wrote:
> > Weird. I had set http.maxrequests to "1" to give more readable output
> > from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
> > default of 5. Which certainly seems like a bug, but one that has been
> > there for a while (at least since v2.9.x, which I tested).
>
> I couldn't reproduce an error after porting your patch to
> master (commit 041f5ea1cf987a40 "The third batch"):
> https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
>
> So you might've hit an ephemeral error (bad connection,
> HTTP server restarting, etc).
No, it was quite reproducible. Curious, I decided to bisect. The problem
started in ad75ebe5b3 (http: maintain curl sessions, 2009-11-27), but
was later fixed by your 2abc848d54 (http: always remove curl easy from
curlm session on release, 2016-09-13).
So trying to build the fix directly on 17966c0a63d (which is in between
those) will run into this unrelated bug. But forward-porting does work.
-Peff
^ permalink raw reply [relevance 0%]
* Re: [BUG] Cloning with git HEAD fails for some repositories
2019-03-22 18:09 0% ` Eric Wong
@ 2019-03-22 18:41 0% ` Heinrich Schuchardt
0 siblings, 0 replies; 162+ results
From: Heinrich Schuchardt @ 2019-03-22 18:41 UTC (permalink / raw)
To: Eric Wong; +Cc: Jeff King, Wolfgang Denk, git, Junio C Hamano, Takahiro Akashi
On 3/22/19 7:09 PM, Eric Wong wrote:
> Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>> On 3/22/19 5:50 PM, Eric Wong wrote:
>>> I couldn't reproduce an error after porting your patch to
>>> master (commit 041f5ea1cf987a40 "The third batch"):
>>> https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
>>>
>>> So you might've hit an ephemeral error (bad connection,
>>> HTTP server restarting, etc).
>>>
>>> GIT_CURL_VERBOSE=1 git \
>>> -c http.maxRequests=1 -c http.followRedirects=true clone \
>>> http://git.denx.de/u-boot-efi.git
>>>
>>
>> I applied the patch to https://github.com/git/git origin/HEAD.
>>
>> But unfortunately it does not solve the issue:
>>
>> $ git --version
>> git version 2.21.0.197.g3845f293e6
>> $ git clone http://git.denx.de/u-boot-efi.git
>> Cloning into 'u-boot-efi'...
>> warning: alternate disabled by http.followRedirects:
>
> It looks like you need to enable http.followRedirects
> (see the command-line I used above)
>
>> http://git.denx.de/u-boot.git/
>> error: Unable to find a00d15757d7a513e410f15f2f910cb52333361a3 under
>> http://git.denx.de/u-boot-efi.git
>> Cannot obtain needed object a00d15757d7a513e410f15f2f910cb52333361a3
>> error: fetch failed.
>>
>> In Wireshark I see a lot of '404 Not found' codes.
>
Yes, git HEAD + said patch works with this command:
git -c http.followRedirects=true clone http://git.denx.de/u-boot-efi.git
http.followRedirects is documented in man 1 git-config.
Why would git prior to 17966c0a63d25b1cc2dd1e98d30873e643bd581f~1 work
without this redirect parameter?
That following redirects is not secure is already described in
https://github.com/git/git/blob/master/Documentation/RelNotes/2.12.3.txt
Best regards
Heinrich
^ permalink raw reply [relevance 0%]
* Re: [BUG] Cloning with git HEAD fails for some repositories
2019-03-22 17:42 0% ` Heinrich Schuchardt
@ 2019-03-22 18:09 0% ` Eric Wong
2019-03-22 18:41 0% ` Heinrich Schuchardt
0 siblings, 1 reply; 162+ results
From: Eric Wong @ 2019-03-22 18:09 UTC (permalink / raw)
To: Heinrich Schuchardt
Cc: Jeff King, Wolfgang Denk, git, Junio C Hamano, Takahiro Akashi
Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> On 3/22/19 5:50 PM, Eric Wong wrote:
> > I couldn't reproduce an error after porting your patch to
> > master (commit 041f5ea1cf987a40 "The third batch"):
> > https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
> >
> > So you might've hit an ephemeral error (bad connection,
> > HTTP server restarting, etc).
> >
> > GIT_CURL_VERBOSE=1 git \
> > -c http.maxRequests=1 -c http.followRedirects=true clone \
> > http://git.denx.de/u-boot-efi.git
> >
>
> I applied the patch to https://github.com/git/git origin/HEAD.
>
> But unfortunately it does not solve the issue:
>
> $ git --version
> git version 2.21.0.197.g3845f293e6
> $ git clone http://git.denx.de/u-boot-efi.git
> Cloning into 'u-boot-efi'...
> warning: alternate disabled by http.followRedirects:
It looks like you need to enable http.followRedirects
(see the command-line I used above)
> http://git.denx.de/u-boot.git/
> error: Unable to find a00d15757d7a513e410f15f2f910cb52333361a3 under
> http://git.denx.de/u-boot-efi.git
> Cannot obtain needed object a00d15757d7a513e410f15f2f910cb52333361a3
> error: fetch failed.
>
> In Wireshark I see a lot of '404 Not found' codes.
^ permalink raw reply [relevance 0%]
* Re: [BUG] Cloning with git HEAD fails for some repositories
2019-03-22 16:50 5% ` Eric Wong
@ 2019-03-22 17:42 0% ` Heinrich Schuchardt
2019-03-22 18:09 0% ` Eric Wong
2019-03-23 8:53 0% ` Jeff King
1 sibling, 1 reply; 162+ results
From: Heinrich Schuchardt @ 2019-03-22 17:42 UTC (permalink / raw)
To: Eric Wong, Jeff King; +Cc: Wolfgang Denk, git, Junio C Hamano, Takahiro Akashi
On 3/22/19 5:50 PM, Eric Wong wrote:
> Jeff King <peff@peff.net> wrote:
>> On Fri, Mar 22, 2019 at 09:21:14AM +0100, Wolfgang Denk wrote:
>>
>>> Dear Jeff,
>>>
>>> In message <20190322071231.GA26114@sigill.intra.peff.net> you wrote:
>>>>
>>>> However, so does the parent of 17966c0a63d. So I don't know if the
>>>> u-boot-efi repo is just broken, or if there's some other different bug
>>>> at play.
>>>
>>> git fsck reports a number of dangling tags, but no other issues:
>>
>> Weird. I had set http.maxrequests to "1" to give more readable output
>> from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
>> default of 5. Which certainly seems like a bug, but one that has been
>> there for a while (at least since v2.9.x, which I tested).
>
> I couldn't reproduce an error after porting your patch to
> master (commit 041f5ea1cf987a40 "The third batch"):
> https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
>
> So you might've hit an ephemeral error (bad connection,
> HTTP server restarting, etc).
>
> GIT_CURL_VERBOSE=1 git \
> -c http.maxRequests=1 -c http.followRedirects=true clone \
> http://git.denx.de/u-boot-efi.git
>
I applied the patch to https://github.com/git/git origin/HEAD.
But unfortunately it does not solve the issue:
$ git --version
git version 2.21.0.197.g3845f293e6
$ git clone http://git.denx.de/u-boot-efi.git
Cloning into 'u-boot-efi'...
warning: alternate disabled by http.followRedirects:
http://git.denx.de/u-boot.git/
error: Unable to find a00d15757d7a513e410f15f2f910cb52333361a3 under
http://git.denx.de/u-boot-efi.git
Cannot obtain needed object a00d15757d7a513e410f15f2f910cb52333361a3
error: fetch failed.
In Wireshark I see a lot of '404 Not found' codes.
Best regards
Heinrich
^ permalink raw reply [relevance 0%]
* Re: [BUG] Cloning with git HEAD fails for some repositories
@ 2019-03-22 16:50 5% ` Eric Wong
2019-03-22 17:42 0% ` Heinrich Schuchardt
2019-03-23 8:53 0% ` Jeff King
0 siblings, 2 replies; 162+ results
From: Eric Wong @ 2019-03-22 16:50 UTC (permalink / raw)
To: Jeff King
Cc: Wolfgang Denk, Heinrich Schuchardt, git, Junio C Hamano,
Takahiro Akashi
Jeff King <peff@peff.net> wrote:
> On Fri, Mar 22, 2019 at 09:21:14AM +0100, Wolfgang Denk wrote:
>
> > Dear Jeff,
> >
> > In message <20190322071231.GA26114@sigill.intra.peff.net> you wrote:
> > >
> > > However, so does the parent of 17966c0a63d. So I don't know if the
> > > u-boot-efi repo is just broken, or if there's some other different bug
> > > at play.
> >
> > git fsck reports a number of dangling tags, but no other issues:
>
> Weird. I had set http.maxrequests to "1" to give more readable output
> from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
> default of 5. Which certainly seems like a bug, but one that has been
> there for a while (at least since v2.9.x, which I tested).
I couldn't reproduce an error after porting your patch to
master (commit 041f5ea1cf987a40 "The third batch"):
https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
So you might've hit an ephemeral error (bad connection,
HTTP server restarting, etc).
GIT_CURL_VERBOSE=1 git \
-c http.maxRequests=1 -c http.followRedirects=true clone \
http://git.denx.de/u-boot-efi.git
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Jan 2019, #03; Fri, 18)
@ 2019-01-18 23:20 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-01-18 23:20 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
A handful of topics graduated to 'master' as the third batch after
spending about a week or so in 'next', and another group of topics
are now in 'next' for their turn.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* cy/completion-typofix (2019-01-03) 1 commit
(merged to 'next' on 2019-01-08 at 6c6f01a07d)
+ completion: fix typo in git-completion.bash
Typofix.
* cy/zsh-completion-SP-in-path (2019-01-03) 2 commits
(merged to 'next' on 2019-01-08 at fee27de30b)
+ completion: treat results of git ls-tree as file paths
+ zsh: complete unquoted paths with spaces correctly
With zsh, "git cmd path<TAB>" was completed to "git cmd path name"
when the completed path has a special character like SP in it,
without any attempt to keep "path name" a single filename. This
has been fixed to complete it to "git cmd path\ name" just like
Bash completion does.
* ds/commit-graph-assert-missing-parents (2019-01-02) 1 commit
(merged to 'next' on 2019-01-08 at d141f063e0)
+ commit-graph: writing missing parents is a BUG
Tightening error checking in commit-graph writer.
* ds/gc-doc-typofix (2019-01-08) 1 commit
(merged to 'next' on 2019-01-08 at f21ffc83e0)
+ git-gc.txt: fix typo about gc.writeCommitGraph
Typofix.
* ed/simplify-setup-git-dir (2019-01-03) 1 commit
(merged to 'next' on 2019-01-08 at 8722c7c2ef)
+ Simplify handling of setup_git_directory_gently() failure cases.
Code simplification.
* en/show-ref-doc-fix (2019-01-10) 1 commit
(merged to 'next' on 2019-01-14 at f875bfb9a4)
+ git-show-ref.txt: fix order of flags
Doc update.
* es/doc-worktree-guessremote-config (2018-12-28) 1 commit
(merged to 'next' on 2019-01-08 at f1dc5e39a6)
+ doc/config: do a better job of introducing 'worktree.guessRemote'
Doc clarification.
* ew/ban-strncat (2019-01-02) 1 commit
(merged to 'next' on 2019-01-08 at 3bba2ae2bb)
+ banned.h: mark strncat() as banned
The "strncat()" function is now among the banned functions.
* jk/dev-build-format-security (2019-01-07) 1 commit
(merged to 'next' on 2019-01-08 at 3761ab7026)
+ config.mak.dev: add -Wall, primarily for -Wformat, to help autoconf users
Earlier we added "-Wformat-security" to developer builds, assuming
that "-Wall" (which includes "-Wformat" which in turn is required
to use "-Wformat-security") is always in effect. This is not true
when config.mak.autogen is in use, unfortunately. This has been
fixed by unconditionally adding "-Wall" to developer builds.
* jn/stripspace-wo-repository (2018-12-26) 1 commit
(merged to 'next' on 2019-01-08 at 81815821c9)
+ stripspace: allow -s/-c outside git repository
"git stripspace" should be usable outside a git repository, but
under the "-s" or "-c" mode, it didn't.
* js/gc-repack-close-before-remove (2019-01-11) 1 commit
(merged to 'next' on 2019-01-14 at 9daedfee40)
+ gc/repack: release packs when needed
"git gc" and "git repack" did not close the open packfiles that
they found unneeded before removing them, which didn't work on a
platform incapable of removing an open file. This has been
corrected.
* la/quiltimport-keep-non-patch (2019-01-07) 1 commit
(merged to 'next' on 2019-01-08 at 37cb490792)
+ git-quiltimport: add --keep-non-patch option
"git quiltimport" learned "--keep-non-patch" option.
* ma/asciidoctor (2018-12-26) 3 commits
(merged to 'next' on 2019-01-08 at 3cfd4ad6cb)
+ git-status.txt: render tables correctly under Asciidoctor
+ Documentation: do not nest open blocks
+ git-column.txt: fix section header
Some of the documentation pages formatted incorrectly with
Asciidoctor, which have been fixed.
* mm/multimail-1.5 (2019-01-07) 1 commit
(merged to 'next' on 2019-01-08 at 8c872af48e)
+ git-multimail: update to release 1.5.0
Update "git multimail" from the upstream.
* nd/style-opening-brace (2018-12-10) 1 commit
(merged to 'next' on 2019-01-08 at 80de026e14)
+ style: the opening '{' of a function is in a separate line
Code clean-up.
* nd/worktree-remove-with-uninitialized-submodules (2019-01-07) 1 commit
(merged to 'next' on 2019-01-08 at e19cfe8741)
+ worktree: allow to (re)move worktrees with uninitialized submodules
"git worktree remove" and "git worktree move" refused to work when
there is a submodule involved. This has been loosened to ignore
uninitialized submodules.
* ot/ref-filter-object-info (2019-01-10) 7 commits
(merged to 'next' on 2019-01-10 at 9e740568ce)
+ ref-filter: give uintmax_t to format with %PRIuMAX
(merged to 'next' on 2019-01-08 at 0a4d4ed36a)
+ ref-filter: add docs for new options
+ ref-filter: add tests for deltabase
+ ref-filter: add deltabase option
+ ref-filter: add tests for objectsize:disk
+ ref-filter: add check for negative file size
+ ref-filter: add objectsize:disk option
The "--format=<placeholder>" option of for-each-ref, branch and tag
learned to show a few more traits of objects that can be learned by
the object_info API.
* po/git-p4-wo-login (2019-01-07) 1 commit
(merged to 'next' on 2019-01-08 at a7cc58d6b9)
+ git-p4: fix problem when p4 login is not necessary
"git p4" update.
* rb/hpe (2019-01-03) 5 commits
(merged to 'next' on 2019-01-08 at 52d6995399)
+ compat/regex/regcomp.c: define intptr_t and uintptr_t on NonStop
+ git-compat-util.h: add FLOSS headers for HPE NonStop
+ config.mak.uname: support for modern HPE NonStop config.
+ transport-helper: drop read/write errno checks
+ transport-helper: use xread instead of read
Portability updates for the HPE NonStop platform.
* rs/loose-object-cache-perffix (2019-01-08) 4 commits
(merged to 'next' on 2019-01-08 at 36e355e099)
+ object-store: retire odb_load_loose_cache()
+ object-store: use one oid_array per subdirectory for loose cache
+ object-store: factor out odb_clear_loose_cache()
+ object-store: factor out odb_loose_cache()
(this branch is used by jk/loose-object-cache-oid.)
The loose object cache used to optimize existence look-up has been
updated.
* rs/sha1-file-close-mapped-file-on-error (2019-01-07) 1 commit
(merged to 'next' on 2019-01-08 at 5841cbc153)
+ sha1-file: close fd of empty file in map_sha1_file_1()
Code clean-up.
* sb/submodule-fetchjobs-default-to-one (2018-12-14) 1 commit
(merged to 'next' on 2019-01-08 at 97a522ef5e)
+ submodule update: run at most one fetch job unless otherwise set
"git submodule update" ought to use a single job unless asked, but
by mistake used multiple jobs, which has been fixed.
* sb/submodule-unset-core-worktree-when-worktree-is-lost (2018-12-26) 4 commits
(merged to 'next' on 2019-01-08 at 38f3175a2b)
+ submodule deinit: unset core.worktree
+ submodule--helper: fix BUG message in ensure_core_worktree
+ submodule: unset core.worktree if no working tree is present
+ submodule update: add regression test with old style setups
The core.worktree setting in a submodule repository should not be
pointing at a directory when the submodule loses its working tree
(e.g. getting deinit'ed), but the code did not properly maintain
this invariant.
* sg/stress-test (2019-01-07) 8 commits
(merged to 'next' on 2019-01-08 at 2a65cea5f9)
+ test-lib: add the '--stress' option to run a test repeatedly under load
+ test-lib-functions: introduce the 'test_set_port' helper function
+ test-lib: set $TRASH_DIRECTORY earlier
+ test-lib: consolidate naming of test-results paths
+ test-lib: parse command line options earlier
+ test-lib: parse options in a for loop to keep $@ intact
+ test-lib: extract Bash version check for '-x' tracing
+ test-lib: translate SIGTERM and SIGHUP to an exit
(this branch uses sg/test-bash-version-fix.)
Flaky tests can now be repeatedly run under load with the
"--stress" option.
* sg/test-bash-version-fix (2019-01-03) 2 commits
(merged to 'next' on 2019-01-08 at f83a0628a0)
+ Merge branch 'sg/test-bash-version-fix'
+ test-lib: check Bash version for '-x' without using shell arrays
(this branch is used by sg/stress-test.)
The test suite tried to see if it is run under bash, but the check
itself failed under some other implementations of shell (notably
under NetBSD). This has been corrected.
* so/cherry-pick-always-allow-m1 (2019-01-07) 4 commits
(merged to 'next' on 2019-01-08 at 2b790fec25)
+ t3506: validate '-m 1 -ff' is now accepted for non-merge commits
+ t3502: validate '-m 1' argument is now accepted for non-merge commits
+ cherry-pick: do not error on non-merge commits when '-m 1' is specified
+ t3510: stop using '-m 1' to force failure mid-sequence of cherry-picks
"git cherry-pick -m1" was forbidden when picking a non-merge
commit, even though there _is_ parent number 1 for such a commit.
This was done to avoid mistakes back when "cherry-pick" was about
picking a single commit, but is no longer useful with "cherry-pick"
that can pick a range of commits. Now the "-m$num" option is
allowed when picking any commit, as long as $num names an existing
parent of the commit.
Technically this is a backward incompatible change; hopefully
nobody is relying on the error-checking behaviour.
* tg/t5570-drop-racy-test (2019-01-07) 2 commits
(merged to 'next' on 2019-01-08 at 9fc753bbdc)
+ Revert "t/lib-git-daemon: record daemon log"
+ t5570: drop racy test
An inherently racy test that caused intermittent failures has been
removed.
--------------------------------------------------
[New Topics]
* ab/commit-graph-write-optim (2019-01-17) 1 commit
- commit-graph write: use pack order when finding commits
(this branch uses ab/commit-graph-write-progress.)
The codepath to write out commit-graph has been optimized by
following the usual pattern of visiting objects in in-pack order.
This is taken hostage of the other topic; it may be slightly better
if the dependency were the other way around, to allow this to
graduate faster without waiting for the other.
Needs sign-off.
* ab/commit-graph-write-progress (2019-01-17) 9 commits
- commit-graph write: emit a percentage for all progress
- commit-graph write: add itermediate progress
- commit-graph write: remove empty line for readability
- commit-graph write: add more descriptive progress output
- commit-graph write: show progress for object search
- commit-graph write: more descriptive "writing out" output
- commit-graph write: add "Writing out" progress output
- commit-graph: don't call write_graph_chunk_large_edges() unnecessarily
- commit-graph: rename 'num_extra_edges' variable to 'num_large_edges'
(this branch is used by ab/commit-graph-write-optim.)
The codepath to show progress meter while writing out commit-graph
file has been improved.
Proposed updates for the bottom two have been raised.
cf. <20190118170549.30403-1-szeder.dev@gmail.com>
* cc/test-ref-store-typofix (2019-01-17) 1 commit
- helper/test-ref-store: fix "new-sha1" vs "old-sha1" typo
An obvious typo in an assersion error message has been fixed.
Will merge to 'next'.
* jk/add-ignore-errors-bit-assignment-fix (2019-01-17) 1 commit
- add: use separate ADD_CACHE_RENORMALIZE flag
"git add --ignore-errors" did not work as advertised and instead
worked as an unintended synonym for "git add --renormalize", which
has been fixed.
Will merge to 'next'.
* js/mingw-unc-path-w-backslashes (2019-01-18) 2 commits
- mingw: special-case arguments to `sh`
- mingw (t5580): document bug when cloning from backslashed UNC paths
In Git for Windows, "git clone \\server\share\path" etc. that uses
UNC paths from command line had bad interaction with its shell
emulation.
Will merge to 'next'.
* js/t6042-timing-fix (2019-01-17) 1 commit
- t6042: work around speed optimization on Windows
Test update.
Will merge to 'next'.
* jt/namespaced-ls-refs-fix (2019-01-18) 1 commit
- ls-refs: filter refs using namespace-stripped name
Fix namespace support in protocol v2.
Will merge to 'next'.
* bp/checkout-new-branch-optim (2019-01-18) 2 commits
- checkout: fix regression in checkout -b on intitial checkout
- checkout: add test to demonstrate regression with checkout -b on initial commit
"git checkout -b <new> [HEAD]" to create a new branch from the
current commit and check it out ought to be a no-op in the index
and the working tree in normal cases, but there are corner cases
that does require updates to the index and the working tree.
Running it immediately after "git clone --no-checkout" is one of
these cases that an earlier optimization kicked in incorrectly,
which has been fixed.
Seems to break an existing test...
* br/blame-ignore (2019-01-18) 3 commits
- blame: add a config option to mark ignored lines
- blame: add the ability to ignore commits and their changes
- Move init_skiplist() outside of fsck
"git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* js/abspath-part-inside-repo (2019-01-18) 1 commit
- abspath_part_inside_repo: respect core.ignoreCase
On a case-insensntive filesystem, we failed to compare the part of
the path that is above the worktree directory in an absolute
pathname, which has been corrected.
Will merge to 'next'.
* nd/diff-parseopt (2019-01-18) 77 commits
- SQUASH???
- am: avoid diff_opt_parse()
- diff --no-index: use parse_options() instead of diff_opt_parse()
- range-diff: use parse_options() instead of diff_opt_parse()
- diff.c: allow --no-color-moved-ws
- diff.c: convert --color-moved-ws
- diff.c: convert --color-moved
- diff.c: convert --inter-hunk-context
- diff.c: convert --no-prefix
- diff.c: convert --line-prefix
- diff.c: convert --[src|dst]-prefix
- diff.c: convert --[no-]abbrev
- diff.c: convert --diff-filter
- diff.c: convert --find-object
- diff.c: convert -O
- diff.c: convert --pickaxe-all|--pickaxe-regex
- diff.c: convert -S|-G
- diff.c: convert -l
- diff.c: convert -z
- diff.c: convert --ita-[in]visible-in-index
- diff.c: convert --ws-error-highlight
- diff.c: convert --submodule
- diff.c: convert --ignore-submodules
- diff.c: convert --textconv
- diff.c: convert --ext-diff
- diff.c: convert --quiet
- diff.c: convert --exit-code
- diff.c: convert --color-words
- diff.c: convert --word-diff-regex
- diff.c: convert --word-diff
- diff.c: convert --[no-]color
- diff.c: convert --[no-]follow
- diff.c: convert -R
- diff.c: convert -a|--text
- diff.c: convert --full-index
- diff.c: convert --binary
- diff.c: convert --anchored
- diff.c: convert --diff-algorithm
- diff.c: convert --histogram
- diff.c: convert --patience
- diff.c: convert --[no-]indent-heuristic
- diff.c: convert --ignore-some-changes
- diff.c: convert --[no-]minimal
- diff.c: convert --relative
- diff.c: convert --no-renames|--[no--rename-empty
- diff.c: convert --find-copies-harder
- diff.c: convert -C|--find-copies
- diff.c: convert -D|--irreversible-delete
- diff.c: convert -M|--find-renames
- diff.c: convert -B|--break-rewrites
- diff.c: convert --output-*
- diff.c: convert --[no-]compact-summary
- diff.c: convert --stat*
- diff.c: convert -s|--no-patch
- diff.c: convert --name-status
- diff.c: convert --name-only
- diff.c: convert --patch-with-stat
- diff.c: convert --summary
- diff.c: convert --check
- diff.c: convert --dirstat and friends
- diff.c: convert --numstat and --shortstat
- diff.c: convert --patch-with-raw
- diff.c: convert --raw
- diff.c: convert -W|--[no-]function-context
- diff.c: convert -U|--unified
- diff.c: convert -u|-p|--patch
- diff.c: prepare to use parse_options() for parsing
- diff.h: avoid bit fields in struct diff_flags
- diff.h: keep forward struct declarations sorted
- parse-options: allow ll_callback with OPTION_CALLBACK
- parse-options: avoid magic return codes
- parse-options: stop abusing 'callback' for lowlevel callbacks
- parse-options: add OPT_BITOP()
- parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
- parse-options: allow keep-unknown + stop-at-non-opt combination
- parse-options: add one-shot mode
- parse-options.h: remove extern on function prototypes
The diff machinery, one of the oldest parts of the system, which
long predates the parse-options API, uses fairly long and complex
handcrafted option parser. This has been rewritten to use the
parse-options API.
--------------------------------------------------
[Cooking]
* sc/pack-redundant (2019-01-14) 5 commits
- pack-redundant: consistent sort method
- pack-redundant: rename pack_list.all_objects
- pack-redundant: remove unused functions
- pack-redundant: new algorithm to find min packs
- t5323: test cases for git-pack-redundant
Update the implementation of pack-redundant for performance in a
repository with many packfiles.
Comments?
* pw/diff-color-moved-ws-fix (2019-01-10) 9 commits
(merged to 'next' on 2019-01-18 at e19713c82f)
+ diff --color-moved-ws: handle blank lines
+ diff --color-moved-ws: modify allow-indentation-change
+ diff --color-moved-ws: optimize allow-indentation-change
+ diff --color-moved=zebra: be stricter with color alternation
+ diff --color-moved-ws: fix false positives
+ diff --color-moved-ws: demonstrate false positives
+ diff: allow --no-color-moved-ws
+ Use "whitespace" consistently
+ diff: document --no-color-moved
"git diff --color-moved-ws" updates.
Will merge to 'master'.
* it/log-format-source (2019-01-11) 1 commit
(merged to 'next' on 2019-01-18 at d660044e93)
+ log: add %S option (like --source) to log --format
Custom userformat "log --format" learned %S atom that stands for
the tip the traversal reached the commit from, i.e. --source.
Will merge to 'master'.
* js/filter-options-should-use-plain-int (2019-01-15) 1 commit
(merged to 'next' on 2019-01-18 at 6714547e6d)
+ filter-options: expand scaled numbers
(this branch uses md/list-objects-filter-by-depth and sb/more-repo-in-api; is tangled with jt/get-reference-with-commit-graph.)
Update the protocol message specification to allow only the limited
use of scaled quantities. This is ensure potential compatibility
issues will not go out of hand.
Will merge to 'master'.
* jt/upload-pack-deepen-relative-proto-v2 (2019-01-10) 2 commits
(merged to 'next' on 2019-01-18 at 1483ad21db)
+ upload-pack: teach deepen-relative in protocol v2
+ fetch-pack: do not take shallow lock unnecessarily
"git fetch --deepen=<more>" has been corrected to work over v2
protocol.
Will merge to 'master'.
* nd/config-move-to (2019-01-14) 7 commits
- config.h: fix hdr-check warnings
- config: add --move-to
- config: factor out set_config_source_file()
- config: use OPT_FILENAME()
- config.c: add repo_config_set_worktree_gently()
- worktree.c: add get_worktree_config()
- config.c: avoid git_path() in do_git_config_sequence()
Needs review.
* sg/travis-specific-cc (2019-01-17) 4 commits
- travis-ci: build with the right compiler
- travis-ci: switch to Xcode 10.1 macOS image
- travis-ci: don't be '--quiet' when running the tests
- .gitignore: ignore external debug symbols from GCC on macOS
The travis CI scripts have been corrected to build Git with the
compiler(s) of our choice.
Will merge to 'next'.
* sg/obstack-cast-function-type-fix (2019-01-17) 1 commit
- compat/obstack: fix -Wcast-function-type warnings
The compat/obstack code had casts that -Wcast-function-type
compilation option found questionable.
Will merge to 'next'.
* cc/fetch-error-message-fix (2019-01-14) 1 commit
(merged to 'next' on 2019-01-14 at 81078f86c0)
+ fetch: fix extensions.partialclone name in error message
Error message fix.
Will merge to 'master'.
* cc/parial-clone-doc-typofix (2019-01-14) 1 commit
(merged to 'next' on 2019-01-14 at 0395de767e)
+ partial-clone: add missing 'is' in doc
Doc fix.
Will merge to 'master'.
* jk/remote-insteadof-cleanup (2019-01-11) 1 commit
(merged to 'next' on 2019-01-18 at 112c93eef3)
+ remote: check config validity before creating rewrite struct
Code clean-up.
Will merge to 'master'.
* jk/save-getenv-result (2019-01-11) 6 commits
(merged to 'next' on 2019-01-18 at 429c77402a)
+ builtin_diff(): read $GIT_DIFF_OPTS closer to use
+ merge-recursive: copy $GITHEAD strings
+ init: make a copy of $GIT_DIR string
+ config: make a copy of $GIT_CONFIG string
+ commit: copy saved getenv() result
+ get_super_prefix(): copy getenv() result
There were many places the code relied on the string returned from
getenv() to be non-volatile, which is not true, that have been
corrected.
Will merge to 'master'.
* jt/fetch-v2-sideband (2019-01-17) 5 commits
- tests: define GIT_TEST_SIDEBAND_ALL
- {fetch,upload}-pack: sideband v2 fetch response
- sideband: reverse its dependency on pkt-line
- pkt-line: introduce struct packet_writer
- Merge branch 'ms/packet-err-check' into jt/fetch-v2-sideband
(this branch uses ms/packet-err-check.)
"git fetch" and "git upload-pack" learned to send all exchange over
the sideband channel while talking the v2 protocol.
Will merge to 'next'.
* kg/external-diff-save-env (2019-01-11) 1 commit
(merged to 'next' on 2019-01-14 at 8281bbd48b)
+ diff: ensure correct lifetime of external_diff_cmd
The code to drive GIT_EXTERNAL_DIFF command relied on the string
returned from getenv() to be non-volatile, which is not true, that
has been corrected.
Will merge to 'master'.
* ld/git-p4-shelve-update-fix (2019-01-18) 2 commits
- git-p4: handle update of moved/copied files when updating a shelve
- git-p4: add failing test for shelved CL update involving move/copy
"git p4" failed to update a shelved change when there were moved
files, which has been corrected.
Will merge to 'next'.
* ma/clear-repository-format (2019-01-14) 3 commits
- setup: add `clear_repository_format()`
- setup: do not use invalid `repository_format`
- setup: free old value before setting `work_tree`
The setup code has been cleaned up to avoid leaks around the
repository_format structure.
cf. <20190115193112.GE4886@sigill.intra.peff.net>
* nd/the-index-final (2019-01-14) 11 commits
- cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch
- read-cache.c: remove the_* from index_has_changes()
- merge-recursive.c: remove implicit dependency on the_repository
- merge-recursive.c: remove implicit dependency on the_index
- sha1-name.c: remove implicit dependency on the_index
- read-cache.c: replace update_index_if_able with repo_&
- read-cache.c: kill read_index()
- checkout: avoid the_index when possible
- repository.c: replace hold_locked_index() with repo_hold_locked_index()
- notes-utils.c: remove the_repository references
- grep: use grep_opt->repo instead of explict repo argument
The assumption to work on the single "in-core index" instance has
been reduced from the library-ish part of the codebase.
This obviously has fallouts with a few topics in flight, but
otherwise it seemed to be in good enough shape.
* bc/tree-walk-oid (2019-01-15) 5 commits
(merged to 'next' on 2019-01-18 at 60c38b9e4a)
+ cache: make oidcpy always copy GIT_MAX_RAWSZ bytes
+ tree-walk: store object_id in a separate member
+ match-trees: use hashcpy to splice trees
+ match-trees: compute buffer offset correctly when splicing
+ tree-walk: copy object ID before use
The code to walk tree objects has been taught that we may be
working with object names that are not computed with SHA-1.
Will merge to 'master'.
* js/add-e-clear-patch-before-stating (2019-01-15) 1 commit
(merged to 'next' on 2019-01-18 at 9ea7fc4b49)
+ add --edit: truncate the patch file
"git add -e" got confused when the change it wants to let the user
edit is smaller than the previous change that was left over in a
temporary file.
Will merge to 'master'.
* jt/fetch-pack-v2 (2019-01-10) 1 commit
(merged to 'next' on 2019-01-18 at 75ceb55ff8)
+ fetch-pack: support protocol version 2
"git fetch-pack" now can talk the version 2 protocol.
Will merge to 'master'.
* jp/author-committer-config (2019-01-02) 2 commits
- DONTMERGE
- Add author and committer configuration settings
Four new configuration variables {author,committer}.{name,email}
have been introduced to override user.{name,email} in more specific
cases.
Expecting a reroll.
cf. <xmqq1s5uk6qh.fsf@gitster-ct.c.googlers.com>
* js/rebase-am (2019-01-18) 4 commits
- built-in rebase: call `git am` directly
- rebase: teach `reset_head()` to optionally skip the worktree
- rebase: avoid double reflog entry when switching branches
- rebase: move `reset_head()` into a better spot
Instead of going through "git-rebase--am" scriptlet to use the "am"
backend, the built-in version of "git rebase" learned to drive the
"am" backend directly.
Waiting for a review response.
Looked almost ready.
* ms/packet-err-check (2019-01-02) 2 commits
- pack-protocol.txt: accept error packets in any context
- Use packet_reader instead of packet_read_line
(this branch is used by jt/fetch-v2-sideband.)
Error checking of data sent over the pack-protocol has been
revamped so that error packets are always diagnosed properly.
Will merge to 'next'.
* os/rebase-runs-post-checkout-hook (2019-01-02) 2 commits
(merged to 'next' on 2019-01-18 at a03d536318)
+ rebase: run post-checkout hook on checkout
+ t5403: simplify by using a single repository
"git rebase" internally runs "checkout" to switch between branches,
and the command used to call the post-checkout hook, but the
reimplementation stopped doing so, which is getting fixed.
Will merge to 'master'.
* ms/http-no-more-failonerror (2019-01-10) 5 commits
(merged to 'next' on 2019-01-18 at 8938d70b6d)
+ test: test GIT_CURL_VERBOSE=1 shows an error
+ remote-curl: unset CURLOPT_FAILONERROR
+ remote-curl: define struct for CURLOPT_WRITEFUNCTION
+ http: enable keep_error for HTTP requests
+ http: support file handles for HTTP_KEEP_ERROR
Debugging help for http transport.
Will merge to 'master'.
* tt/bisect-in-c (2019-01-02) 7 commits
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
More code in "git bisect" has been rewritten in C.
Comments?
* ja/doc-build-l10n (2019-01-07) 1 commit
(merged to 'next' on 2019-01-18 at 5dbe5ad3d7)
+ Documentation/Makefile add optional targets for l10n
Prepare Documentation/Makefile so that manpage localization can
reuse it by overriding and tweaking the list of build products.
Will merge to 'master'.
* jk/loose-object-cache-oid (2019-01-08) 11 commits
. prefer "hash mismatch" to "sha1 mismatch"
. sha1-file: avoid "sha1 file" for generic use in messages
. sha1-file: prefer "loose object file" to "sha1 file" in messages
. sha1-file: drop has_sha1_file()
- convert has_sha1_file() callers to has_object_file()
- sha1-file: convert pass-through functions to object_id
- sha1-file: modernize loose header/stream functions
- sha1-file: modernize loose object file functions
- http: use struct object_id instead of bare sha1
- update comment references to sha1_object_info()
- sha1-file: fix outdated sha1 comment references
Code clean-up.
Later parts of the series crash heavily with sb/more-repo-in-api
and are left out for now. I am not sure if keeping that other
topic is worth keeping to block the clean-up value of this topic
which is probably more clear.
* lt/date-human (2019-01-18) 5 commits
- Add `human` date format tests.
- Add `human` format to test-tool
- Add 'human' date format documentation
- Remove the proposed use of auto as secondary way to specify human
- Add 'human' date format
A new date format "--date=human" that morphs its output depending
on how far the time is from the current time has been introduced.
"--date=auto" can be used to use this new format when the output is
goint to the pager or to the terminal and otherwise the default
format.
The design around "auto" may need to be rethought.
The tests need to be updated, too.
cf. <20190104075034.GA26014@sigill.intra.peff.net>
cf. <a5412274-028f-3662-e4f5-dbbcad4d9a40@iee.org>
* ds/midx-expire-repack (2019-01-10) 9 commits
- multi-pack-index: test expire while adding packs
- midx: implement midx_repack()
- multi-pack-index: prepare 'repack' subcommand
- multi-pack-index: implement 'expire' subcommand
- midx: refactor permutation logic and pack sorting
- midx: simplify computation of pack name lengths
- multi-pack-index: prepare for 'expire' subcommand
- Docs: rearrange subcommands for multi-pack-index
- repack: refactor pack deletion for future use
"git multi-pack-index expire/repack" are new subcommands that
consult midx file and are used to drop unused pack files and
coalesce small pack files that are still in use.
Comments?
* ds/push-sparse-tree-walk (2019-01-17) 5 commits
- pack-objects: create GIT_TEST_PACK_SPARSE
- pack-objects: create pack.useSparse setting
- revision: implement sparse algorithm
- list-objects: consume sparse tree walk
- revision: add mark_tree_uninteresting_sparse
"git pack-objects" learned another algorithm to compute the set of
objects to send, that trades the resulting packfile off to save
traversal cost to favor small pushes.
Will merge to 'next'.
* js/rebase-i-redo-exec (2018-12-11) 3 commits
(merged to 'next' on 2019-01-18 at 71be3fedb7)
+ rebase: introduce a shortcut for --reschedule-failed-exec
+ rebase: add a config option to default to --reschedule-failed-exec
+ rebase: introduce --reschedule-failed-exec
"git rebase -i" learned to re-execute a command given with 'exec'
to run after it failed the last time.
Will merge to 'master'.
* md/list-objects-filter-by-depth (2019-01-15) 4 commits
+ tree:<depth>: skip some trees even when collecting omits
+ list-objects-filter: teach tree:# how to handle >0
+ Merge branch 'nd/the-index' into md/list-objects-filter-by-depth
+ Merge branch 'sb/more-repo-in-api' into md/list-objects-filter-by-depth
(this branch is used by js/filter-options-should-use-plain-int; uses sb/more-repo-in-api; is tangled with jt/get-reference-with-commit-graph.)
The objects-filter machinery learned "tree:<depth>" to filter
objects up to a given depth; earlier it only supported depth=0,
i.e. usable to create a commit-only lazy clone.
Will merge to 'next'.
* tg/checkout-no-overlay (2019-01-08) 8 commits
(merged to 'next' on 2019-01-18 at 1e2a79ba5c)
+ checkout: introduce checkout.overlayMode config
+ checkout: introduce --{,no-}overlay option
+ checkout: factor out mark_cache_entry_for_checkout function
+ checkout: clarify comment
+ read-cache: add invalidate parameter to remove_marked_cache_entries
+ entry: support CE_WT_REMOVE flag in checkout_entry
+ entry: factor out unlink_entry function
+ move worktree tests to t24*
"git checkout --no-overlay" can be used to trigger a new mode of
checking out paths out of the tree-ish, that allows paths that
match the pathspec that are in the current index and working tree
and are not in the tree-ish.
Will merge to 'master'.
* jk/proto-v2-hidden-refs-fix (2019-01-10) 1 commit
(merged to 'next' on 2019-01-18 at 875dbbc71f)
+ upload-pack: support hidden refs with protocol v2
The v2 upload-pack protocol implementation failed to honor
hidden-ref configuration, which has been corrected.
Will merge to 'master'.
An earlier attempt reverted out of 'next'.
* js/commit-graph-chunk-table-fix (2019-01-15) 3 commits
- Makefile: correct example fuzz build
- commit-graph: fix buffer read-overflow
- commit-graph, fuzz: add fuzzer for commit-graph
The codepath to read from the commit-graph file attempted to read
past the end of it when the file's table-of-contents was corrupt.
Will merge to 'next'.
* jt/get-reference-with-commit-graph (2018-12-28) 1 commit
(merged to 'next' on 2019-01-18 at bfc4eb9411)
+ revision: use commit graph in get_reference()
(this branch uses sb/more-repo-in-api; is tangled with js/filter-options-should-use-plain-int and md/list-objects-filter-by-depth.)
Micro-optimize the code that prepares commit objects to be walked
by "git rev-list" when the commit-graph is available.
Will merge to 'master'.
* dl/merge-cleanup-scissors-fix (2018-11-21) 2 commits
- merge: add scissors line on merge conflict
- t7600: clean up 'merge --squash c3 with c7' test
The list of conflicted paths shown in the editor while concluding a
conflicted merge was shown above the scissors line when the
clean-up mode is set to "scissors", even though it was commented
out just like the list of updated paths and other information to
help the user explain the merge better.
Ready?
* aw/pretty-trailers (2018-12-09) 7 commits
- pretty: add support for separator option in %(trailers)
- strbuf: separate callback for strbuf_expand:ing literals
- pretty: add support for "valueonly" option in %(trailers)
- pretty: allow showing specific trailers
- pretty: single return path in %(trailers) handling
- pretty: allow %(trailers) options with explicit value
- doc: group pretty-format.txt placeholders descriptions
The %(trailers) formatter in "git log --format=..." now allows to
optionally pick trailers selectively by keyword, show only values,
etc.
How's the doneness of this one?
* jn/unknown-index-extensions (2018-11-21) 2 commits
- index: offer advice for unknown index extensions
- index: do not warn about unrecognized extensions
A bit too alarming warning given when unknown index extensions
exist is getting revamped.
Expecting a reroll.
* en/rebase-merge-on-sequencer (2019-01-07) 8 commits
- rebase: implement --merge via the interactive machinery
- rebase: define linearization ordering and enforce it
- git-legacy-rebase: simplify unnecessary triply-nested if
- git-rebase, sequencer: extend --quiet option for the interactive machinery
- am, rebase--merge: do not overlook --skip'ed commits with post-rewrite
- t5407: add a test demonstrating how interactive handles --skip differently
- rebase: fix incompatible options error message
- rebase: make builtin and legacy script error messages the same
"git rebase --merge" as been reimplemented by reusing the internal
machinery used for "git rebase -i".
On hold.
cf. <CABPp-BFckuONYcGGkCY3BuPypRULmhsk_OFHyYA2E4jM66BfeQ@mail.gmail.com>
* dl/remote-save-to-push (2018-12-11) 1 commit
- remote: add --save-to-push option to git remote set-url
"git remote set-url" learned a new option that moves existing value
of the URL field to pushURL field of the remote before replacing
the URL field with a new value.
I am personally not yet quite convinced if this is worth pursuing.
* js/protocol-advertise-multi (2018-12-28) 1 commit
- protocol: advertise multiple supported versions
The transport layer has been updated so that the protocol version
used can be negotiated between the parties, by the initiator
listing the protocol versions it is willing to talk, and the other
side choosing from one of them.
* js/smart-http-detect-remote-error (2019-01-07) 3 commits
- remote-curl: die on server-side errors
- remote-curl: tighten "version 2" check for smart-http
- remote-curl: refactor smart-http discovery
Some errors from the other side coming over smart HTTP transport
were not noticed, which has been corrected.
Will merge to 'next'.
* nb/branch-show-other-worktrees-head (2019-01-15) 3 commits
- branch: add an extra verbose output displaying worktree path for checked out branch
- branch: mark and color a branch that is checked out in a linked worktree differently
- ref-filter: add worktreepath atom
"git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
The second one is of dubious value. The third one requires extra
"-v" to trigger extra information, but a new feature that improves
human-readable Porcelain output, it probably shouldn't. Needs
sign-off.
* sb/more-repo-in-api (2018-12-28) 23 commits
+ t/helper/test-repository: celebrate independence from the_repository
+ path.h: make REPO_GIT_PATH_FUNC repository agnostic
+ commit: prepare free_commit_buffer and release_commit_memory for any repo
+ commit-graph: convert remaining functions to handle any repo
+ submodule: don't add submodule as odb for push
+ submodule: use submodule repos for object lookup
+ pretty: prepare format_commit_message to handle arbitrary repositories
+ commit: prepare logmsg_reencode to handle arbitrary repositories
+ commit: prepare repo_unuse_commit_buffer to handle any repo
+ commit: prepare get_commit_buffer to handle any repo
+ commit-reach: prepare in_merge_bases[_many] to handle any repo
+ commit-reach: prepare get_merge_bases to handle any repo
+ commit-reach.c: allow get_merge_bases_many_0 to handle any repo
+ commit-reach.c: allow remove_redundant to handle any repo
+ commit-reach.c: allow merge_bases_many to handle any repo
+ commit-reach.c: allow paint_down_to_common to handle any repo
+ commit: allow parse_commit* to handle any repo
+ object: parse_object to honor its repository argument
+ object-store: prepare has_{sha1, object}_file to handle any repo
+ object-store: prepare read_object_file to deal with any repo
+ object-store: allow read_object_file_extended to read from any repo
+ packfile: allow has_packed_and_bad to handle arbitrary repositories
+ sha1_file: allow read_object to read objects in arbitrary repositories
(this branch is used by js/filter-options-should-use-plain-int, jt/get-reference-with-commit-graph and md/list-objects-filter-by-depth.)
The in-core repository instances are passed through more codepaths.
Will merge to 'next'.
* bc/sha-256 (2018-11-14) 12 commits
(merged to 'next' on 2019-01-18 at 3f161d31bb)
+ hash: add an SHA-256 implementation using OpenSSL
+ sha256: add an SHA-256 implementation using libgcrypt
+ Add a base implementation of SHA-256 support
+ commit-graph: convert to using the_hash_algo
+ t/helper: add a test helper to compute hash speed
+ sha1-file: add a constant for hash block size
+ t: make the sha1 test-tool helper generic
+ t: add basic tests for our SHA-1 implementation
+ cache: make hashcmp and hasheq work with larger hashes
+ hex: introduce functions to print arbitrary hashes
+ sha1-file: provide functions to look up hash algorithms
+ sha1-file: rename algorithm to "sha1"
Add sha-256 hash and plug it through the code to allow building Git
with the "NewHash".
Will merge to 'master'.
* js/vsts-ci (2018-10-16) 13 commits
. travis: fix skipping tagged releases
. README: add a build badge (status of the Azure Pipelines build)
. tests: record more stderr with --write-junit-xml in case of failure
. tests: include detailed trace logs with --write-junit-xml upon failure
. git-p4: use `test_atexit` to kill the daemon
. git-daemon: use `test_atexit` in the tests
. tests: introduce `test_atexit`
. ci: add a build definition for Azure DevOps
. ci/lib.sh: add support for Azure Pipelines
. tests: optionally write results as JUnit-style .xml
. test-date: add a subcommand to measure times in shell scripts
. ci/lib.sh: encapsulate Travis-specific things
. ci: rename the library of common functions
Prepare to run test suite on Azure DevOps.
Ejected out of 'pu', as doing so seems to help other topics get
tested at TravisCI.
https://travis-ci.org/git/git/builds/452713184 is a sample of a
build whose tests on 4 hang (with this series in). Ejecting it
gave us https://travis-ci.org/git/git/builds/452778963 which still
shows breakages from other topics not yet in 'next', but at least
the tests do not stall.
* du/branch-show-current (2018-10-26) 1 commit
- branch: introduce --show-current display option
"git branch" learned a new subcommand "--show-current".
I am personally not yet quite convinced if this is worth pursuing.
* mk/use-size-t-in-zlib (2018-10-15) 1 commit
- zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
* ag/sequencer-reduce-rewriting-todo (2019-01-14) 18 commits
- rebase-interactive.h: fix hdr-check warnings
- sequencer: mark file local symbols as static
- rebase-interactive: move transform_todo_file() to rebase--interactive.c
- sequencer: use edit_todo_list() in complete_action()
- rebase-interactive: rewrite edit_todo_list() to handle the initial edit
- rebase-interactive: append_todo_help() changes
- rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
- sequencer: refactor skip_unnecessary_picks() to work on a todo_list
- sequencer: change complete_action() to use the refactored functions
- sequencer: make sequencer_make_script() write its script to a strbuf
- sequencer: refactor rearrange_squash() to work on a todo_list
- sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
- sequencer: refactor check_todo_list() to work on a todo_list
- sequencer: introduce todo_list_write_to_file()
- sequencer: refactor transform_todos() to work on a todo_list
- sequencer: remove the 'arg' field from todo_item
- sequencer: make the todo_list structure public
- sequencer: changes in parse_insn_buffer()
The scripted version of "git rebase -i" wrote and rewrote the todo
list many times during a single step of its operation, and the
recent C-rewrite made a faithful conversion of the logic to C. The
implementation has been updated to carry necessary information
around in-core to avoid rewriting the same file over and over
unnecessarily.
May need a further update, including squashing the tip commit to a
releavant place.
* sb/submodule-recursive-fetch-gets-the-tip (2018-12-09) 9 commits
(merged to 'next' on 2019-01-18 at 79a2809fbc)
+ fetch: ensure submodule objects fetched
+ submodule.c: fetch in submodules git directory instead of in worktree
+ submodule: migrate get_next_submodule to use repository structs
+ repository: repo_submodule_init to take a submodule struct
+ submodule: store OIDs in changed_submodule_names
+ submodule.c: tighten scope of changed_submodule_names struct
+ submodule.c: sort changed_submodule_names before searching it
+ submodule.c: fix indentation
+ sha1-array: provide oid_array_filter
"git fetch --recurse-submodules" may not fetch the necessary commit
that is bound to the superproject, which is getting corrected.
Will merge to 'master'.
* js/add-i-coalesce-after-editing-hunk (2018-08-28) 1 commit
- add -p: coalesce hunks before testing applicability
Applicability check after a patch is edited in a "git add -i/p"
session has been improved.
Will hold.
cf. <e5b2900a-0558-d3bf-8ea1-d526b078bbc2@talktalk.net>
* ps/stash-in-c (2019-01-18) 28 commits
- stash: fix segmentation fault when files were added with intent
- tests: add a special setup where stash.useBuiltin is off
- stash: optionally use the scripted version again
- stash: add back the original, scripted `git stash`
- stash: convert `stash--helper.c` into `stash.c`
- stash: replace all `write-tree` child processes with API calls
- stash: optimize `get_untracked_files()` and `check_changes()`
- stash: convert save to builtin
- stash: make push -q quiet
- stash: convert push to builtin
- stash: convert create to builtin
- stash: convert store to builtin
- stash: convert show to builtin
- stash: convert list to builtin
- stash: convert pop to builtin
- stash: convert branch to builtin
- stash: convert drop and clear to builtin
- stash: convert apply to builtin
- stash: mention options in `show` synopsis
- stash: add tests for `git stash show` config
- stash: rename test cases to be more descriptive
- t3903: modernize style
- stash: improve option parsing test coverage
- ident: add the ability to provide a "fallback identity"
- strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
- strbuf.c: add `strbuf_join_argv()`
- sha1-name.c: add `get_oidf()` which acts like `get_oid()`
- Merge branch 'sd/stash-wo-user-name'
"git stash" rewritten in C.
Will merge to 'next'.
* pw/add-p-select (2018-07-26) 4 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select modified lines correctly
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Will discard.
No further feedbacks on the topic for quite some time.
cf. <d622a95b-7302-43d4-4ec9-b2cf3388c653@talktalk.net>
I found the feature to be hard to explain, and may result in more
end-user complaints, but let's see.
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.18.0
@ 2018-06-21 19:27 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-06-21 19:27 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.18.0 is now available at the
usual places. It is comprised of 903 non-merge commits since
v2.17.0, contributed by 80 people, 24 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.18.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Jeremy Linton, Karthikeyan
Singaravelan, Leif Middelschulte, Loganaden Velvindron, Luis
Marsano, Meng-Sung Wu, Paul-Sebastian Ungureanu, Pedro Alvarez
Piedehierro, Pratik Karki, Romain Merland, Ryan Dammrose,
Takuto Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Anders Kaseorg,
Andreas Heiduk, Andre Hinrichs, Antonio Ospite, Beat Bolli,
Ben Peart, Brandon Williams, brian m. carlson, Changwoo Ryu,
Christian Couder, Christian Hesse, Christopher Diaz Riveros,
Clemens Buchacher, David Turner, Derrick Stolee, Elijah Newren,
Eric Sunshine, Jameson Miller, Jean-Noël Avila, Jeff King,
Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Jordi Mas, Junio C Hamano, Kaartic Sivaraam,
Kyle Meyer, Lars Schneider, Lucas Werkmeister, Luke Diamand,
Martin Ågren, Michal Nazarewicz, Michele Locati, Nguyễn Thái
Ngọc Duy, Olga Telezhnaya, Orgad Shaneh, Peter Krefting, Philip
Oakley, Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe,
Robert P. J. Day, Sergey Organov, Stefan Agner, Stefan Beller,
SZEDER Gábor, Taylor Blau, Thomas Gummerer, Todd Zullinger,
Torsten Bögershausen, and Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.18 Release Notes
======================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic that is used in "merge" and "cherry-pick" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "working-tree-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash-completion.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
* "git p4" learned to "unshelve" shelved commit from P4.
(merge 123f631761 ld/p4-unshelve later to maint).
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
* The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* Quite a many tests assumed that newly created refs are made as
loose refs using the files backend, which have been updated to use
proper plumbing like rev-parse and update-ref, to avoid breakage
once we start using different ref backends.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to understand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* The import-tars script (in contrib/) has been taught to handle
tarballs with overly long paths that use PAX extended headers.
(merge 12ecea46e3 pa/import-tars-long-names later to maint).
* "git rev-parse Y..." etc. misbehaved when given endpoints were
not committishes.
(merge 0ed556d38f en/rev-parse-invalid-range later to maint).
* "git pull --recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute. We need to fetch from them to
continue even in such a case.
(merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, but only one of them was documented.
(merge a97447a42a nd/remote-update-doc later to maint).
* "index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
(merge 3737746120 jk/index-pack-maint later to maint).
* Make zlib inflate codepath more robust against versions of zlib
that clobber unused portion of outbuf.
(merge b611396e97 jl/zlib-restore-nul-termination later to maint).
* Fix old merge glitch in Documentation during v2.13-rc0 era.
(merge 28cb06020b mw/doc-merge-enumfix later to maint).
* The code to read compressed bitmap was not careful to avoid reading
past the end of the file, which has been corrected.
(merge 1140bf01ec jk/ewah-bounds-check later to maint).
* "make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
(i.e. linkage of -lintl, -liconv, etc. that are platform-specific
tweaks), which has been corrected.
(merge fdb1fbbc7d es/make-no-iconv later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
(merge 590551ca2c rd/tag-doc-lightweight later to maint).
(merge 44f560fc16 rd/init-typo later to maint).
(merge f156a0934a rd/p4-doc-markup-env later to maint).
(merge 2a00502b14 tg/doc-sec-list later to maint).
(merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
(merge efde7b725c rd/comment-typofix-in-sha1-file later to maint).
(merge 7eedad15df rd/diff-options-typofix later to maint).
(merge 58ebd936cc km/doc-workflows-typofix later to maint).
(merge 30aa96cdf8 rd/doc-remote-tracking-with-hyphen later to maint).
(merge cf317877e3 ks/branch-set-upstream later to maint).
(merge 8de19d6be8 sg/t7406-chain-fix later to maint).
----------------------------------------------------------------
Changes since v2.17.0 are as follows:
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (3608t)
l10n: bg.po: Updated Bulgarian translation (3608t)
Anders Kaseorg (1):
Documentation/git-bisect.txt: git bisect term → git bisect terms
Andre Hinrichs (1):
l10n: de.po: fix typos
Andreas Heiduk (9):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
doc: improve formatting in githooks.txt
doc: align 'diff --no-index' in text and synopsis
doc: clarify ignore rules for git ls-files
doc: add '-d' and '-o' for 'git push'
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add note about shell quoting to revision.txt
doc: normalize [--options] to [options] in git-diff
Antonio Ospite (1):
doc: fix config API documentation about config_with_options
Beat Bolli (1):
git-gui: search for all current SSH key types
Ben Peart (7):
fsmonitor: fix incorrect buffer size when printing version number
fsmonitor: force index write after full scan
test-drop-caches: simplify delay loading of NtSetSystemInformation
merge: update documentation for {merge,diff}.renameLimit
merge: add merge.renames config setting
merge: pass aggressive when rename detection is turned off
add status config and command line options for rename detection
Bill Ritcher (1):
mergetools: add support for guiffy
Birger Skogeng Pedersen (1):
git-gui: bind CTRL/CMD+numpad ENTER to do_commit
Brandon Williams (79):
pkt-line: introduce packet_read_with_status
pkt-line: allow peeking a packet line without consuming it
pkt-line: add delim packet support
upload-pack: convert to a builtin
upload-pack: factor out processing lines
transport: use get_refs_via_connect to get refs
connect: convert get_remote_heads to use struct packet_reader
connect: discover protocol version outside of get_remote_heads
transport: store protocol version
protocol: introduce enum protocol_version value protocol_v2
test-pkt-line: introduce a packet-line test helper
serve: introduce git-serve
ls-refs: introduce ls-refs server command
connect: request remote refs using v2
transport: convert get_refs_list to take a list of ref prefixes
transport: convert transport_get_remote_refs to take a list of ref prefixes
ls-remote: pass ref prefixes when requesting a remote's refs
fetch: pass ref prefixes when fetching
push: pass ref prefixes when pushing
upload-pack: introduce fetch server command
fetch-pack: perform a fetch using v2
fetch-pack: support shallow requests
connect: refactor git_connect to only get the protocol version once
connect: don't request v2 when pushing
transport-helper: remove name parameter
transport-helper: refactor process_connect_service
transport-helper: introduce stateless-connect
pkt-line: add packet_buf_write_len function
remote-curl: create copy of the service name
remote-curl: store the protocol version the server responded with
http: allow providing extra headers for http requests
http: don't always add Git-Protocol header
http: eliminate "# service" line when using protocol v2
remote-curl: implement stateless-connect command
remote-curl: don't request v2 when pushing
commit: allow partial commits with relative paths
serve: introduce the server-option capability
ls-remote: send server options when using protocol v2
fetch: send server options when using protocol v2
refspec: move refspec parsing logic into its own file
refspec: rename struct refspec to struct refspec_item
refspec: factor out parsing a single refspec
refspec: introduce struct refspec
refspec: convert valid_fetch_refspec to use parse_refspec
submodule--helper: convert push_check to use struct refspec
pull: convert get_tracking_branch to use refspec_item_init
transport: convert transport_push to use struct refspec
remote: convert check_push_refs to use struct refspec
remote: convert match_push_refs to use struct refspec
clone: convert cmd_clone to use refspec_item_init
fast-export: convert to use struct refspec
remote: convert push refspecs to struct refspec
remote: convert fetch refspecs to struct refspec
remote: remove add_prune_tags_to_fetch_refspec
transport-helper: convert to use struct refspec
fetch: convert fetch_one to use struct refspec
fetch: convert refmap to use struct refspec
refspec: remove the deprecated functions
fetch: convert do_fetch to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert prune_refs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert match_explicit_refs to take a struct refspec
push: check for errors earlier
push: convert to use struct refspec
transport: convert transport_push to take a struct refspec
send-pack: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
http-push: store refspecs in a struct refspec
remote: convert match_push_refs to take a struct refspec
remote: convert check_push_refs to take a struct refspec
submodule: convert push_unpushed_submodules to take a struct refspec
refspec: consolidate ref-prefix generation logic
fetch: generate ref-prefixes when using a configured refspec
remote-curl: accept all encodings supported by curl
remote-curl: accept compressed responses with protocol v2
Casey Fitzpatrick (3):
submodule: clean up substitutions in script
submodule: add --progress option to add command
submodule: add --dissociate option to add/update commands
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Christian Couder (7):
perf/aggregate: add display_dir()
perf/aggregate: add --sort-by=regression option
perf/run: add --subsection option
t/perf: add scripts to bisect performance regressions
perf/aggregate: use Getopt::Long for option parsing
perf/bisect_run_script: disable codespeed
t990X: use '.git/objects' as 'deep inside .git' path
Christian Hesse (2):
perl: fix installing modules from contrib
Makefile: mark perllibdir as a .PHONY target
Christopher Diaz Riveros (3):
l10n: es.po: Spanish update for v2.18.0 round 1
l10n: es.po: Spanish update for v2.18.0 round 2
l10n: es.po: Spanish update for v2.18.0 round 3
Clemens Buchacher (2):
git-gui: workaround ttk:style theme use
completion: improve ls-files filter performance
Dan Jacques (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
David Turner (1):
t: make many tests depend less on the refs being files
Derrick Stolee (20):
packfile: define and use bsearch_pack()
sha1_name: use bsearch_pack() for abbreviations
csum-file: rename hashclose() to finalize_hashfile()
csum-file: refactor finalize_hashfile() method
commit-graph: add format document
graph: add commit graph design document
commit-graph: create git-commit-graph builtin
commit-graph: implement write_commit_graph()
commit-graph: implement git-commit-graph write
commit-graph: implement git commit-graph read
commit-graph: add core.commitGraph setting
commit-graph: close under reachability
commit: integrate commit graph with commit parsing
commit-graph: read only from specific pack-indexes
commit-graph: build graph from starting commits
commit-graph: implement "--append" option
treewide: rename tree to maybe_tree
commit: create get_commit_tree() method
treewide: replace maybe_tree with accessor methods
commit-graph: lazy-load trees for commits
Drew DeVault (1):
git-send-email: allow re-editing of message
Eckhard S. Maaß (1):
wt-status: use settings from git_diff_ui_config
Elijah Newren (73):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: ensure we write updates for directory-renamed file
Documentation: fix several one-character-off spelling errors
Documentation: normalize spelling of 'normalised'
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
Make running git under other debugger-like programs easy
unpack_trees: fix breakage when o->src_index != o->dst_index
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
rev-parse: check lookup'ed commit references for NULL
RelNotes: remove duplicate release note
RelNotes 2.18: clarify where directory rename detection applies
Eric Sunshine (6):
t3200: verify "branch --list" sanity when rebasing from detached HEAD
t2028: tighten grep expression to make "move worktree" test more robust
git-worktree.txt: recommend 'git worktree remove' over manual deletion
git-worktree.txt: unify command-line prompt in example blocks
configure.ac: fix botched FREAD_READS_DIRECTORIES check
Makefile: make NO_ICONV really mean "no iconv"
Erik E Brady (1):
credential: ignore SIGPIPE when writing to credential helpers
Florian Gamböck (1):
completion: load completion file for external subcommand
Harald Nordgren (1):
ls-remote: create '--sort' option
Jameson Miller (3):
fast-import: rename mem_pool type to mp_block
fast-import: introduce mem_pool type
mem-pool: move reusable parts of memory pool into its own file
Jean-Noël Avila (2):
l10n: fr.po v2.18 round 1
l10n: fr.po v2.18.0 round 3
Jeff King (60):
diff-highlight: correct test graph diagram
diff-highlight: use test_tick in graph test
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: test interleaved parallel lines of history
diff-highlight: test graphs with --color
diff-highlight: use flush() helper consistently
diff-highlight: detect --graph by indent
set_git_dir: die when setenv() fails
add chdir-notify API
set_work_tree: use chdir_notify
refs: use chdir_notify to update cached relative paths
config: move flockfile() closer to unlocked functions
t5561: drop curl stderr redirects
t5561: skip tests if curl is not available
ref-filter: use "struct object_id" consistently
ref-filter: make ref_array_item allocation more consistent
ref-filter: factor ref_array pushing into its own function
t7004: fix mistaken tag name
gpg-interface: handle bool user.signingkey
gpg-interface: modernize function declarations
gpg-interface: use size_t for signature buffer size
gpg-interface: fix const-correctness of "eol" pointer
gpg-interface: extract gpg line matching helper
gpg-interface: find the last gpg signature line
apply: clarify "-p" documentation
pager: set COLUMNS to term_columns()
mark_tree_contents_uninteresting(): drop missing object check
mark_parents_uninteresting(): drop missing object check
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): avoid most allocation
get_main_ref_store: BUG() when outside a repository
config: die when --blob is used outside a repository
http: use strbufs instead of fixed buffers
log_write_email_headers: use strbufs
shorten_unambiguous_ref: use xsnprintf
fmt_with_err: add a comment that truncation is OK
submodule-config: verify submodule names as paths
is_ntfs_dotgit: use a size_t for traversing string
is_hfs_dotgit: match other .git files
skip_prefix: add case-insensitive variant
verify_path: drop clever fallthrough
verify_dotfile: mention case-insensitivity in comment
update-index: stat updated files earlier
verify_path: disallow symlinks in .gitmodules
index-pack: make fsck error message more specific
fsck: simplify ".git" check
fsck: actually fsck blob data
fsck: detect gitmodules files
fsck: handle promisor objects in .gitmodules check
fsck: check .gitmodules content
fsck: call fsck_finish() after fscking objects
unpack-objects: call fsck_finish() after fscking objects
index-pack: check .gitmodules files with --strict
fsck: complain when .gitmodules is a symlink
prepare_commit_graft: treat non-repository as a noop
index-pack: handle --strict checks of non-repo packs
t7415: don't bother creating commit for symlink test
fsck: avoid looking at NULL blob->object
ewah_read_mmap: bounds-check mmap reads
ewah: adjust callers of ewah_read_mmap()
Jeremy Linton (1):
packfile: correct zlib buffer handling
Jiang Xin (4):
l10n: git.pot: v2.18.0 round 1 (108 new, 14 removed)
l10n: git.pot: v2.18.0 round 2 (144 new, 6 removed)
l10n: git.pot: v2.18.0 round 3 (1 new, 1 removed)
l10n: zh_CN: for git v2.18.0 l10n round 1 to 3
Johannes Schindelin (69):
git_config_set: fix off-by-two
t1300: rename it to reflect that `repo-config` was deprecated
t1300: demonstrate that --replace-all can "invent" newlines
config --replace-all: avoid extra line breaks
t1300: avoid relying on a bug
t1300: remove unreasonable expectation from TODO
t5404: relax overzealous test
t1300: add a few more hairy examples of sections becoming empty
t1300: `--unset-all` can leave an empty section behind (bug)
config: introduce an optional event stream while parsing
config: avoid using the global variable `store`
config_set_store: rename some fields for consistency
git_config_set: do not use a state machine
git_config_set: make use of the config parser's event stream
git config --unset: remove empty sections (in the common case)
git_config_set: reuse empty sections
exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
mingw/msvc: use the new-style RUNTIME_PREFIX helper
color: introduce support for colorizing stderr
push: test to verify that push errors are colored
config: document the settings to colorize push errors/hints
gettext: avoid initialization if the locale dir is not present
git_setup_gettext: plug memory leak
sequencer: avoid using errno clobbered by rollback_lock_file()
sequencer: make rearrange_squash() a bit more obvious
sequencer: refactor how original todo list lines are accessed
sequencer: offer helpful advice when a command was rescheduled
sequencer: introduce new commands to reset the revision
sequencer: introduce the `merge` command
sequencer: fast-forward `merge` commands, if possible
rebase-helper --make-script: introduce a flag to rebase merges
rebase: introduce the --rebase-merges option
sequencer: make refs generated by the `label` command worktree-local
sequencer: handle post-rewrite for merge commands
rebase --rebase-merges: avoid "empty merges"
pull: accept --rebase=merges to recreate the branch topology
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
rebase -i --rebase-merges: add a section to the man page
argv_array: offer to split a string by whitespace
commit: Let the callback of for_each_mergetag return on error
replace: avoid using die() to indicate a bug
tests: introduce test_unset_prereq, for debugging
replace: "libify" create_graft() and callees
replace: prepare create_graft() for converting graft files wholesale
replace: introduce --convert-graft-file
Add a test for `git replace --convert-graft-file`
Deprecate support for .git/info/grafts
filter-branch: stop suggesting to use grafts
technical/shallow: stop referring to grafts
technical/shallow: describe why shallow cannot use replace refs
Remove obsolete script to convert grafts to replace refs
rebase -i: demonstrate bugs with fixup!/squash! commit messages
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
sequencer: always commit without editing when asked for
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: extract helper to update active_cache_tree
sequencer: allow introducing new root commits
rebase --rebase-merges: a "merge" into a new root is a fast-forward
sequencer: learn about the special "fake root commit" handling
rebase --rebase-merges: root commits can be cousins, too
rebase -i --root: let the sequencer handle even the initial part
test-tool: help verifying BUG() code paths
run-command: use BUG() to report bugs, not die()
Replace all die("BUG: ...") calls by BUG() ones
Convert remaining die*(BUG) messages
config: a user-provided invalid section is not a BUG
is_ntfs_dotgit: match other .git files
is_{hfs,ntfs}_dotgitmodules: add tests
rebase --root: fix amending root commit messages
Johannes Sixt (2):
sequencer: reset the committer date before commits
git: add -P as a short option for --no-pager
Jonathan Nieder (6):
sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
Makefile: remove unused @@PERLLIBDIR@@ substitution variable
Makefile: quote $INSTLIBDIR when passing it to sed
packfile: add repository argument to packed_object_info
fetch: do not pass ref-prefixes for fetch by exact SHA1
Jonathan Tan (5):
grep: remove "repo" arg from non-supporting funcs
upload-pack: fix error message typo
upload-pack: read config when serving protocol v2
{fetch,upload}-pack: support filter in protocol v2
submodule: do not pass null OID to setup_revisions
Jordi Mas (1):
l10n: Update Catalan translation
Junio C Hamano (27):
stash: fix nonsense pipeline
The first batch for 2.18 cycle
The second batch for 2.18
The third batch for 2.18
Revert "Merge branch 'en/rename-directory-detection'"
gc: do not upcase error message shown with die()
parseopt: handle malformed --expire arguments more nicely
The fourth batch for 2.18
The fifth batch for 2.18
argv-array: return the pushed string from argv_push*()
Git 2.13.7
Git 2.14.4
Git 2.15.2
Git 2.16.4
Git 2.17.1
The sixth batch for 2.18
The seventh batch for 2.18
Git 2.18-rc0
refspec-api: avoid uninitialized field in refspec item
A bit more topics before -rc1
Git 2.18-rc1
RelNotes 2.18: typofixes
index-pack: correct install_packed_git() args
Git 2.18-rc2
A bunch of micro-fixes before going 2.18 final
Almost 2.18 final
Git 2.18
Kaartic Sivaraam (2):
branch --list: print useful info whilst interactive rebasing a detached HEAD
t3200: clarify description of --set-upstream test
Karthikeyan Singaravelan (1):
doc: fix typos in documentation and release notes
Kyle Meyer (1):
gitworkflows: fix grammar in 'Merge upwards' rule
Lars Schneider (10):
strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
strbuf: add xstrdup_toupper()
strbuf: add a case insensitive starts_with()
utf8: teach same_encoding() alternative UTF encoding names
utf8: add function to detect prohibited UTF-16/32 BOM
utf8: add function to detect a missing UTF-16/32 BOM
convert: add 'working-tree-encoding' attribute
convert: check for detectable errors in UTF encodings
convert: add tracing for 'working-tree-encoding' attribute
convert: add round trip check based on 'core.checkRoundtripEncoding'
Leif Middelschulte (2):
merge-recursive: give notice when submodule commit gets fast-forwarded
merge-submodule: reduce output verbosity
Loganaden Velvindron (1):
http: allow use of TLS 1.3
Lucas Werkmeister (1):
daemon.c: fix condition for redirecting stderr
Luis Marsano (2):
git-credential-netrc: adapt to test framework for git
git-credential-netrc: accept gpg option
Luke Diamand (7):
git-p4: add unshelve command
git-p4: disable-rebase: allow setting this via configuration
git-p4: add option to disable syncing of p4/master with p4
git-p4: better error reporting when p4 fails
git-p4: raise exceptions from p4CmdList based on error from p4 server
git-p4: narrow the scope of exceptions caught when parsing an int
git-p4: auto-size the block
Martin Ågren (24):
git-shortlog.txt: reorder usages
shortlog: add usage-string for stdin-reading
shortlog: disallow left-over arguments outside repo
doc: convert \--option to --option
doc: convert [\--] to [--]
git-[short]log.txt: unify quoted standalone --
git-submodule.txt: quote usage in monospace, drop backslash
fast-export: fix regression skipping some merge-commits
http-fetch: make `-a` standard behaviour
walker: drop fields of `struct walker` which are always 1
t/helper/test-write-cache: clean up lock-handling
refs.c: do not die if locking fails in `write_pseudoref()`
refs.c: do not die if locking fails in `delete_pseudoref()`
lock_file: make function-local locks non-static
lock_file: move static locks into functions
refs.c: refer to "object ID", not "sha1", in error messages
t1400: add tests around adding/deleting pseudorefs
refs: handle zero oid for pseudorefs
merge: setup `opts` later in `checkout_fast_forward()`
config: free resources of `struct config_store_data`
config: let `config_store_data_clear()` handle `value_regex`
config: let `config_store_data_clear()` handle `key`
regex: do not call `regfree()` if compilation fails
unpack_trees_options: free messages when done
Meng-Sung Wu (1):
doc: update the order of the syntax `git merge --continue`
Michal Nazarewicz (1):
send-email: simplify Gmail example in the documentation
Michele Locati (1):
filter-branch: return 2 when nothing to rewrite
Nguyễn Thái Ngọc Duy (108):
repository: initialize the_repository in main()
repository.c: move env-related setup code back to environment.c
repository.c: delete dead functions
sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
repository: delete ignore_env member
gc.txt: more details about what gc does
worktree: delete dead code
worktree prune: improve prune logic when worktree is moved
repository.h: add comment and clarify repo_set_gitdir
git.c: move cmd_struct declaration up
git.c: add hidden option --list-parseopt-builtins
completion: mention the oldest version we need to support
completion: factor out _git_xxx calling code
completion: add --option completion for most builtin commands
completion: delete option-only completion commands
completion: use __gitcomp_builtin in _git_ls_tree
completion: use __gitcomp_builtin in _git_cherry
packfile: keep prepare_packed_git() private
t/helper: add an empty test-tool program
t/helper: merge test-chmtime into test-tool
t/helper: merge test-sha1 into test-tool
t/helper: merge test-lazy-init-name-hash into test-tool
t/helper: merge test-config into test-tool
t/helper: merge test-ctype into test-tool
t/helper: merge test-date into test-tool
t/helper: merge (unused) test-delta into test-tool
t/helper: merge test-drop-caches into test-tool
t/helper: merge test-dump-cache-tree into test-tool
t/helper: merge test-dump-split-index into test-tool
t/helper: merge test-example-decorate into test-tool
t/helper: merge test-genrandom into test-tool
t/helper: merge test-hashmap into test-tool
t/helper: merge test-index-version into test-tool
t/helper: merge (unused) test-match-trees into test-tool
t/helper: merge (unused) test-mergesort into test-tool
t/helper: merge test-mktemp into test-tool
t/helper: merge test-online-cpus into test-tool
t/helper: merge test-path-utils into test-tool
t/helper: merge test-prio-queue into test-tool
t/helper: merge test-read-cache into test-tool
t/helper: merge test-ref-store into test-tool
t/helper: merge test-regex into test-tool
t/helper: merge test-revision-walking into test-tool
t/helper: merge test-run-command into test-tool
t/helper: merge test-scrap-cache-tree into test-tool
t/helper: merge test-sha1-array into test-tool
t/helper: merge test-sigchain into test-tool
t/helper: merge test-strcmp-offset into test-tool
t/helper: merge test-string-list into test-tool
t/helper: merge test-submodule-config into test-tool
t/helper: merge test-subprocess into test-tool
t/helper: merge test-urlmatch-normalization into test-tool
t/helper: merge test-wildmatch into test-tool
t/helper: merge test-write-cache into test-tool
trace.c: export trace_setup_key
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
pack-objects: a bit of document about struct object_entry
pack-objects: turn type and in_pack_type to bitfields
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: use bitfield for object_entry::depth
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: move in_pack out of struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: don't check size when the object is bad
pack-objects: clarify the use of object_entry::size
pack-objects: shrink size field in struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: reorder members to shrink struct object_entry
ci: exercise the whole test suite with uncommon code in pack-objects
t7700: have closing quote of a test at the beginning of line
repack: add --keep-pack option
gc: add --keep-largest-pack option
gc: add gc.bigPackThreshold config
gc: handle a corner case in gc.bigPackThreshold
gc --auto: exclude base pack if not enough mem to "repack -ad"
pack-objects: show some progress when counting kept objects
connect.c: mark die_initial_contact() NORETURN
Makefile: detect compiler and enable more warnings in DEVELOPER=1
submodule--helper: don't print null in 'submodule status'
doc: keep first level section header in upper case
pack-objects: validation and documentation about unreachable options
completion: fix misspelled config key aliasesfiletype
repository: fix free problem with repo_clear(the_repository)
generate-cmds.sh: factor out synopsis extract code
generate-cmds.sh: export all commands to command-list.h
help: use command-list.h for common command list
Remove common-cmds.h
pack-format.txt: more details on pack file format
column: fix off-by-one default width
commit.h: rearrange 'index' to shrink struct commit
git.c: convert --list-* to --list-cmds=*
git --list-cmds: collect command list in a string_list
completion: implement and use --list-cmds=main,others
git: support --list-cmds=list-<category>
help: add "-a --verbose" to list all commands with synopsis
help: use command-list.txt for the source of guides
command-list.txt: documentation and guide line
completion: let git provide the completable command list
completion: reduce completable command list
Move declaration for alias.c to alias.h
completion: add and use --list-cmds=nohelpers
completion: add and use --list-cmds=alias
completion: allow to customize the completable command list
travis-ci: run gcc-8 on linux-gcc jobs
Use OPT_SET_INT_F() for cmdline option specification
remote.txt: update documentation for 'update' command
remote: doc typofix
Olga Telezhnaya (6):
ref-filter: add shortcut to work with strbufs
ref-filter: start adding strbufs with errors
ref-filter: add return value && strbuf to handlers
ref-filter: change parsing function error handling
ref-filter: add return value to parsers
ref-filter: libify get_ref_atom_value()
Orgad Shaneh (1):
git-rebase--interactive: fix copy-paste mistake
Paul-Sebastian Ungureanu (2):
parse-options: do not show usage upon invalid option value
t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Pedro Alvarez Piedehierro (1):
import-tars: read overlong names from pax extended header
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (3470t0f0u)
l10n: sv.po: Update Swedish translation (3608t0f0u)
Philip Oakley (1):
Avoid multiple PREFIX definitions
Phillip Wood (7):
rebase --root: stop assuming squash_onto is unset
rebase -i --keep-empty: don't prune empty commits
rebase: respect --no-keep-empty
rebase: extend --signoff support
rebase -p: error out if --signoff is given
rebase --keep-empty: always use interactive rebase
rebase --rebase-merges: add test for --keep-empty
Pratik Karki (1):
test: avoid pipes in git related commands for test
Ralf Thielow (1):
l10n: TEAMS: remove inactive de team members
Ramsay Jones (1):
BUG_exit_code: fix sparse "symbol not declared" warning
René Scharfe (11):
sha1_name: use bsearch_pack() in unique_in_pack()
bisect: use oid_to_hex() for converting object_id hashes to hex strings
run-command: use strbuf_addstr() for adding a string to a strbuf
submodule: check for NULL return of get_submodule_ref_store()
replace_object: use oidmap
fast-export: avoid NULL pointer arithmetic
t5512: run git fetch inside test
fsmonitor: use internal argv_array of struct child_process
merge-recursive: use xstrdup() instead of fixed buffer
blame: release string_list after use in parse_color_fields()
merge-recursive: use xstrdup() instead of fixed buffer
Robert P. J. Day (7):
Use proper syntax for replaceables in command docs
tag: clarify in the doc that a tag can refer to a non-commit object
init: fix grammar in "templates not found" msg
p4.txt: Use backquotes for variable names
sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
diff-options.txt: fix minor typos, font inconsistencies, in docs
Use hyphenated "remote-tracking branch" (docs and comments)
Romain Merland (1):
git-p4: add options --commit and --disable-rebase
Ryan Dammrose (1):
push: colorize errors
SZEDER Gábor (25):
test_must_be_empty: simplify file existence check
t9902-completion: add tests demonstrating issues with quoted pathnames
completion: move __git_complete_index_file() next to its helpers
completion: simplify prefix path component handling during path completion
completion: support completing non-ASCII pathnames
completion: improve handling quoted paths on the command line
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: use 'awk' to strip trailing path components
t9902-completion: ignore COMPREPLY element order in some tests
completion: remove repeated dirnames with 'awk' during path completion
completion: improve handling quoted paths in 'git ls-files's output
completion: fill COMPREPLY directly when completing paths
completion: reduce overhead of clearing cached --options
docs/git-gc: fix minor rendering issue
coccinelle: avoid wrong transformation suggestions from commit.cocci
t6050-replace: don't disable stdin for the whole test script
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
t5516-fetch-push: fix 'push with dry-run' test
t5516-fetch-push: fix broken &&-chain
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
completion: don't return with error from __gitcomp_file_direct()
t9902-completion: exercise __git_complete_index_file() directly
completion: correct zsh detection when run from git-completion.zsh
t7406-submodule-update: fix broken &&-chains
RelNotes 2.18: minor fix to entry about dynamically loading completions
Sergey Organov (1):
glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Stefan Agner (1):
send-email: avoid duplicate In-Reply-To/References
Stefan Beller (82):
repository: introduce raw object store field
object-store: migrate alternates struct and functions from cache.h
object-store: move alt_odb_list and alt_odb_tail to object store
object-store: free alt_odb_list
object-store: move packed_git and packed_git_mru to object store
object-store: close all packs upon clearing the object store
pack: move prepare_packed_git_run_once to object store
pack: move approximate object count to object store
sha1_file: add raw_object_store argument to alt_odb_usable
sha1_file: add repository argument to link_alt_odb_entry
sha1_file: add repository argument to read_info_alternates
sha1_file: add repository argument to link_alt_odb_entries
sha1_file: add repository argument to prepare_alt_odb
sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
sha1_file: allow prepare_alt_odb to handle arbitrary repositories
sha1_file: add repository argument to sha1_file_name
sha1_file: add repository argument to stat_sha1_file
sha1_file: add repository argument to open_sha1_file
sha1_file: add repository argument to map_sha1_file_1
sha1_file: add repository argument to map_sha1_file
sha1_file: add repository argument to sha1_loose_object_info
sha1_file: allow sha1_file_name to handle arbitrary repositories
sha1_file: allow stat_sha1_file to handle arbitrary repositories
sha1_file: allow open_sha1_file to handle arbitrary repositories
sha1_file: allow map_sha1_file to handle arbitrary repositories
packfile: allow prepare_packed_git_mru to handle arbitrary repositories
packfile: allow rearrange_packed_git to handle arbitrary repositories
packfile: allow install_packed_git to handle arbitrary repositories
packfile: add repository argument to prepare_packed_git_one
packfile: add repository argument to prepare_packed_git
packfile: add repository argument to reprepare_packed_git
packfile: allow prepare_packed_git_one to handle arbitrary repositories
packfile: allow prepare_packed_git to handle arbitrary repositories
packfile: allow reprepare_packed_git to handle arbitrary repositories
packfile: add repository argument to find_pack_entry
packfile: allow find_pack_entry to handle arbitrary repositories
submodule.h: drop declaration of connect_work_tree_and_git_dir
submodule-config: allow submodule_free to handle arbitrary repositories
submodule-config: add repository argument to submodule_from_{name, path}
submodule-config: remove submodule_from_cache
submodule: fixup nested submodules after moving the submodule
write_or_die.c: rename to use dashes in file name
unicode_width.h: rename to use dash in file name
exec_cmd: rename to use dash in file name
sha1_name.c: rename to use dash in file name
sha1_file.c: rename to use dash in file name
replace_object.c: rename to use dash in file name
replace-object: move replace_map to object store
object-store: move lookup_replace_object to replace-object.h
replace-object: eliminate replace objects prepared flag
replace-object: check_replace_refs is safe in multi repo environment
refs: add repository argument to get_main_ref_store
refs: add repository argument to for_each_replace_ref
replace-object: add repository argument to prepare_replace_object
replace-object: add repository argument to do_lookup_replace_object
replace-object: add repository argument to lookup_replace_object
refs: store the main ref store inside the repository struct
refs: allow for_each_replace_ref to handle arbitrary repositories
replace-object: allow prepare_replace_object to handle arbitrary repositories
replace-object: allow do_lookup_replace_object to handle arbitrary repositories
replace-object: allow lookup_replace_object to handle arbitrary repositories
worktree: accept -f as short for --force for removal
builtin/blame: dim uninteresting metadata lines
builtin/blame: highlight recently changed lines
builtin/blame: add new coloring scheme config
cache.h: add repository argument to oid_object_info_extended
cache.h: add repository argument to oid_object_info
packfile: add repository argument to retry_bad_packed_offset
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to read_object
packfile: add repository argument to unpack_entry
packfile: add repository argument to cache_or_unpack_entry
cache.h: allow oid_object_info to handle arbitrary repositories
git-rebase--interactive: clarify arguments
object.c: free replace map in raw_object_store_clear
replace-object.c: remove the_repository from prepare_replace_object
grep: handle corrupt index files early
git-submodule.sh: try harder to fetch a submodule
submodule.c: move submodule merging to merge-recursive.c
merge-recursive: i18n submodule merge output and respect verbosity
object.c: clear replace map before freeing it
t7400: encapsulate setup code in test_expect_success
Takuto Ikuta (1):
fetch-pack.c: use oidset to check existence of loose object
Tao Qingyun (1):
t1510-repo-setup.sh: remove useless mkdir
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Thomas Gummerer (12):
stash push: avoid printing errors
stash push -u: don't create empty stash
stash: drop superfluos pathspec parameter
SubmittingPatches: mention the git contacts command
completion: stop showing 'save' for stash by default
completion: make stash -p and alias for stash push -p
worktree: remove extra members from struct add_opts
worktree: improve message when creating a new worktree
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
SubmittingPatches: replace numbered attributes with names
note git-security@googlegroups.com in more places
Todd Zullinger (3):
doc/clone: update caption for GIT URLS cross-reference
rebase --root: demonstrate a bug while amending root commit messages
t3404: check root commit in 'rebase -i --root reword root commit'
Torsten Bögershausen (1):
test: correct detection of UTF8_NFD_TO_NFC for APFS
Trần Ngọc Quân (3):
l10n: vi(3470t): Updated Vietnamese translation for v2.18.0
l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round2
l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round 3
Wink Saville (8):
rebase-interactive: simplify pick_on_preserving_merges
rebase: update invocation of rebase dot-sourced scripts
rebase: reindent function git_rebase__interactive
rebase: extract functions out of git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove merges_option and a blank line
Yuki Kokubun (1):
filter-branch: fix errors caused by refs that point at non-committish
brian m. carlson (123):
bulk-checkin: convert index_bulk_checkin to struct object_id
builtin/write-tree: convert to struct object_id
cache-tree: convert write_*_as_tree to object_id
cache-tree: convert remnants to struct object_id
resolve-undo: convert struct resolve_undo_info to object_id
tree: convert read_tree_recursive to struct object_id
ref-filter: convert grab_objectname to struct object_id
strbuf: convert strbuf_add_unique_abbrev to use struct object_id
wt-status: convert struct wt_status_state to object_id
Convert find_unique_abbrev* to struct object_id
http-walker: convert struct object_request to use struct object_id
send-pack: convert remaining functions to struct object_id
replace_object: convert struct replace_object to object_id
builtin/mktag: convert to struct object_id
archive: convert write_archive_entry_fn_t to object_id
archive: convert sha1_file_to_archive to struct object_id
builtin/index-pack: convert struct ref_delta_entry to object_id
sha1_file: convert read_loose_object to use struct object_id
sha1_file: convert check_sha1_signature to struct object_id
streaming: convert open_istream to use struct object_id
builtin/mktree: convert to struct object_id
sha1_file: convert assert_sha1_type to object_id
sha1_file: convert retry_bad_packed_offset to struct object_id
packfile: convert unpack_entry to struct object_id
Convert remaining callers of sha1_object_info_extended to object_id
sha1_file: convert sha1_object_info* to object_id
builtin/fmt-merge-msg: convert remaining code to object_id
builtin/notes: convert static functions to object_id
tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
streaming: convert istream internals to struct object_id
tree-walk: convert tree entry functions to object_id
sha1_file: convert read_object_with_reference to object_id
sha1_file: convert read_sha1_file to struct object_id
Convert lookup_replace_object to struct object_id
sha1_file: introduce a constant for max header length
convert: convert to struct object_id
sha1_name: convert struct min_abbrev_data to object_id
t1011: abstract away SHA-1-specific constants
t1304: abstract away SHA-1-specific constants
t1300: abstract away SHA-1-specific constants
t1405: sort reflog entries in a hash-independent way
t1411: abstract away SHA-1-specific constants
t1507: abstract away SHA-1-specific constants
t2020: abstract away SHA-1 specific constants
t2101: modernize test style
t2101: abstract away SHA-1-specific constants
t2107: abstract away SHA-1-specific constants
format-patch: make cover letters always text/plain
cache: add a function to read an object ID from a buffer
server-info: remove unused members from struct pack_info
Remove unused member in struct object_context
packfile: remove unused member from struct pack_entry
packfile: convert has_sha1_pack to object_id
sha1-file: convert freshen functions to object_id
packfile: convert find_pack_entry to object_id
packfile: abstract away hash constant values
pack-objects: abstract away hash algorithm
pack-redundant: abstract away hash algorithm
tree-walk: avoid hard-coded 20 constant
tree-walk: convert get_tree_entry_follow_symlinks to object_id
fsck: convert static functions to struct object_id
submodule-config: convert structures to object_id
split-index: convert struct split_index to object_id
Update struct index_state to use struct object_id
pack-redundant: convert linked lists to use struct object_id
index-pack: abstract away hash function constant
commit: convert uses of get_sha1_hex to get_oid_hex
dir: convert struct untracked_cache_dir to object_id
http: eliminate hard-coded constants
revision: replace use of hard-coded constants
upload-pack: replace use of several hard-coded constants
diff: specify abbreviation size in terms of the_hash_algo
builtin/receive-pack: avoid hard-coded constants for push certs
sha1-file: add functions for hex empty tree and blob OIDs
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
builtin/merge: switch tree functions to use object_id
merge: convert empty tree constant to the_hash_algo
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
sha1_file: convert cached object code to struct object_id
cache-tree: use is_empty_tree_oid
sequencer: use the_hash_algo for empty tree object ID
dir: use the_hash_algo for empty blob object ID
sha1_file: only expose empty object constants through git_hash_algo
Update shell scripts to compute empty tree object ID
add--interactive: compute the empty tree value
merge-one-file: compute empty blob object ID
Documentation: use 8-space tabs with Asciidoctor
Documentation: render revisions correctly under Asciidoctor
mailmap: update brian m. carlson's email address
t/test-lib: add an SHA1 prerequisite
t/test-lib: introduce ZERO_OID
t: switch $_z40 to $ZERO_OID
t/test-lib: introduce OID_REGEX
t: switch $_x40 to $OID_REGEX
t0000: annotate with SHA1 prerequisite
t1007: annotate with SHA1 prerequisite
t1512: skip test if not using SHA-1
t4044: skip test if not using SHA-1
t: skip pack tests if not using SHA-1
t2203: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4022: abstract away SHA-1-specific constants
t4029: fix test indentation
t4029: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t4042: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t5300: abstract away SHA-1-specific constants
sequencer: ensure labels that are object IDs are rewritten
t3430: test clean-up
Ævar Arnfjörð Bjarmason (22):
configure: fix a regression in PCRE v1 detection
configure: detect redundant --with-libpcre & --with-libpcre1
Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
Makefile: fix broken bindir_relative variable
Makefile: add a gitexecdir_relative variable
Makefile: optionally symlink libexec/git-core binaries to bin/git
Remove contrib/examples/*
doc hash-function-transition: clarify how older gits die on NewHash
doc hash-function-transition: clarify what SHAttered means
git-svn: avoid warning on undef readline()
Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
Makefile: add a DEVOPTS to get all of -Wextra
git{,-blame}.el: remove old bitrotting Emacs code
.gitattributes: add *.pl extension for Perl
.gitattributes: use the "perl" differ for Perl
.gitattributes: add a diff driver for Python
sha1-name.c: remove stray newline
sha1-array.h: align function arguments
git-p4: change "commitish" typo to "committish"
sha1-name.c: move around the collect_ambiguous() function
get_short_oid: sort ambiguous objects by type, then SHA-1
git-credential-netrc: remove use of "autodie"
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.18.0-rc1
@ 2018-06-04 13:53 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-06-04 13:53 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.18.0-rc1 is now available for testing
at the usual places. It is comprised of 842 non-merge commits
since v2.17.0, contributed by 65 people, 20 of which are new faces.
I plan to go offline for most of the remainder of the week, and then
tag (hopefully) the last -rc early next week, with any urgent
regression fix accumulated on the list during this week. Happy bug
hunting ;-)
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.18.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Leif Middelschulte,
Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,
Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto
Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,
Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,
Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,
Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,
Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,
Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas
Gummerer, Todd Zullinger, and Torsten Bögershausen.
----------------------------------------------------------------
Git 2.18 Release Notes (draft)
==============================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
* "git p4" learned to "unshelve" shelved commit from P4.
(merge 123f631761 ld/p4-unshelve later to maint).
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
* The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* Quite a many tests assumed that newly created refs are made as
loose refs using the files backend, which have been updated to use
proper plumbing like rev-parse and update-ref, to avoid breakage
once we start using different ref backends.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* The import-tars script (in contrib/) has been taught to handle
tarballs with overly long paths that use PAX extended headers.
(merge 12ecea46e3 pa/import-tars-long-names later to maint).
* "git rev-parse Y..." etc. misbehaved when given endpoints were
not committishes.
(merge 0ed556d38f en/rev-parse-invalid-range later to maint).
* "git pull -recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute. We need to fetch from them to
continue even in such a case.
(merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, but only one of them was documented.
(merge a97447a42a nd/remote-update-doc later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
(merge 590551ca2c rd/tag-doc-lightweight later to maint).
(merge 44f560fc16 rd/init-typo later to maint).
(merge f156a0934a rd/p4-doc-markup-env later to maint).
(merge 2a00502b14 tg/doc-sec-list later to maint).
----------------------------------------------------------------
Changes since v2.17.0 are as follows:
Anders Kaseorg (1):
Documentation/git-bisect.txt: git bisect term → git bisect terms
Andreas Heiduk (9):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
doc: improve formatting in githooks.txt
doc: align 'diff --no-index' in text and synopsis
doc: clarify ignore rules for git ls-files
doc: add '-d' and '-o' for 'git push'
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add note about shell quoting to revision.txt
doc: normalize [--options] to [options] in git-diff
Antonio Ospite (1):
doc: fix config API documentation about config_with_options
Beat Bolli (1):
git-gui: search for all current SSH key types
Ben Peart (7):
fsmonitor: fix incorrect buffer size when printing version number
fsmonitor: force index write after full scan
test-drop-caches: simplify delay loading of NtSetSystemInformation
merge: update documentation for {merge,diff}.renameLimit
merge: add merge.renames config setting
merge: pass aggressive when rename detection is turned off
add status config and command line options for rename detection
Bill Ritcher (1):
mergetools: add support for guiffy
Birger Skogeng Pedersen (1):
git-gui: bind CTRL/CMD+numpad ENTER to do_commit
Brandon Williams (79):
pkt-line: introduce packet_read_with_status
pkt-line: allow peeking a packet line without consuming it
pkt-line: add delim packet support
upload-pack: convert to a builtin
upload-pack: factor out processing lines
transport: use get_refs_via_connect to get refs
connect: convert get_remote_heads to use struct packet_reader
connect: discover protocol version outside of get_remote_heads
transport: store protocol version
protocol: introduce enum protocol_version value protocol_v2
test-pkt-line: introduce a packet-line test helper
serve: introduce git-serve
ls-refs: introduce ls-refs server command
connect: request remote refs using v2
transport: convert get_refs_list to take a list of ref prefixes
transport: convert transport_get_remote_refs to take a list of ref prefixes
ls-remote: pass ref prefixes when requesting a remote's refs
fetch: pass ref prefixes when fetching
push: pass ref prefixes when pushing
upload-pack: introduce fetch server command
fetch-pack: perform a fetch using v2
fetch-pack: support shallow requests
connect: refactor git_connect to only get the protocol version once
connect: don't request v2 when pushing
transport-helper: remove name parameter
transport-helper: refactor process_connect_service
transport-helper: introduce stateless-connect
pkt-line: add packet_buf_write_len function
remote-curl: create copy of the service name
remote-curl: store the protocol version the server responded with
http: allow providing extra headers for http requests
http: don't always add Git-Protocol header
http: eliminate "# service" line when using protocol v2
remote-curl: implement stateless-connect command
remote-curl: don't request v2 when pushing
commit: allow partial commits with relative paths
serve: introduce the server-option capability
ls-remote: send server options when using protocol v2
fetch: send server options when using protocol v2
refspec: move refspec parsing logic into its own file
refspec: rename struct refspec to struct refspec_item
refspec: factor out parsing a single refspec
refspec: introduce struct refspec
refspec: convert valid_fetch_refspec to use parse_refspec
submodule--helper: convert push_check to use struct refspec
pull: convert get_tracking_branch to use refspec_item_init
transport: convert transport_push to use struct refspec
remote: convert check_push_refs to use struct refspec
remote: convert match_push_refs to use struct refspec
clone: convert cmd_clone to use refspec_item_init
fast-export: convert to use struct refspec
remote: convert push refspecs to struct refspec
remote: convert fetch refspecs to struct refspec
remote: remove add_prune_tags_to_fetch_refspec
transport-helper: convert to use struct refspec
fetch: convert fetch_one to use struct refspec
fetch: convert refmap to use struct refspec
refspec: remove the deprecated functions
fetch: convert do_fetch to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert prune_refs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert match_explicit_refs to take a struct refspec
push: check for errors earlier
push: convert to use struct refspec
transport: convert transport_push to take a struct refspec
send-pack: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
http-push: store refspecs in a struct refspec
remote: convert match_push_refs to take a struct refspec
remote: convert check_push_refs to take a struct refspec
submodule: convert push_unpushed_submodules to take a struct refspec
refspec: consolidate ref-prefix generation logic
fetch: generate ref-prefixes when using a configured refspec
remote-curl: accept all encodings supported by curl
remote-curl: accept compressed responses with protocol v2
Casey Fitzpatrick (3):
submodule: clean up substitutions in script
submodule: add --progress option to add command
submodule: add --dissociate option to add/update commands
Christian Couder (7):
perf/aggregate: add display_dir()
perf/aggregate: add --sort-by=regression option
perf/run: add --subsection option
t/perf: add scripts to bisect performance regressions
perf/aggregate: use Getopt::Long for option parsing
perf/bisect_run_script: disable codespeed
t990X: use '.git/objects' as 'deep inside .git' path
Christian Hesse (2):
perl: fix installing modules from contrib
Makefile: mark perllibdir as a .PHONY target
Clemens Buchacher (2):
git-gui: workaround ttk:style theme use
completion: improve ls-files filter performance
Dan Jacques (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
David Turner (1):
t: make many tests depend less on the refs being files
Derrick Stolee (20):
packfile: define and use bsearch_pack()
sha1_name: use bsearch_pack() for abbreviations
csum-file: rename hashclose() to finalize_hashfile()
csum-file: refactor finalize_hashfile() method
commit-graph: add format document
graph: add commit graph design document
commit-graph: create git-commit-graph builtin
commit-graph: implement write_commit_graph()
commit-graph: implement git-commit-graph write
commit-graph: implement git commit-graph read
commit-graph: add core.commitGraph setting
commit-graph: close under reachability
commit: integrate commit graph with commit parsing
commit-graph: read only from specific pack-indexes
commit-graph: build graph from starting commits
commit-graph: implement "--append" option
treewide: rename tree to maybe_tree
commit: create get_commit_tree() method
treewide: replace maybe_tree with accessor methods
commit-graph: lazy-load trees for commits
Drew DeVault (1):
git-send-email: allow re-editing of message
Eckhard S. Maaß (1):
wt-status: use settings from git_diff_ui_config
Elijah Newren (72):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: ensure we write updates for directory-renamed file
Documentation: fix several one-character-off spelling errors
Documentation: normalize spelling of 'normalised'
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
Make running git under other debugger-like programs easy
unpack_trees: fix breakage when o->src_index != o->dst_index
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
rev-parse: check lookup'ed commit references for NULL
RelNotes: remove duplicate release note
Eric Sunshine (5):
t3200: verify "branch --list" sanity when rebasing from detached HEAD
t2028: tighten grep expression to make "move worktree" test more robust
git-worktree.txt: recommend 'git worktree remove' over manual deletion
git-worktree.txt: unify command-line prompt in example blocks
configure.ac: fix botched FREAD_READS_DIRECTORIES check
Erik E Brady (1):
credential: ignore SIGPIPE when writing to credential helpers
Florian Gamböck (1):
completion: load completion file for external subcommand
Harald Nordgren (1):
ls-remote: create '--sort' option
Jameson Miller (3):
fast-import: rename mem_pool type to mp_block
fast-import: introduce mem_pool type
mem-pool: move reusable parts of memory pool into its own file
Jeff King (54):
diff-highlight: correct test graph diagram
diff-highlight: use test_tick in graph test
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: test interleaved parallel lines of history
diff-highlight: test graphs with --color
diff-highlight: use flush() helper consistently
diff-highlight: detect --graph by indent
set_git_dir: die when setenv() fails
add chdir-notify API
set_work_tree: use chdir_notify
refs: use chdir_notify to update cached relative paths
config: move flockfile() closer to unlocked functions
t5561: drop curl stderr redirects
t5561: skip tests if curl is not available
ref-filter: use "struct object_id" consistently
ref-filter: make ref_array_item allocation more consistent
ref-filter: factor ref_array pushing into its own function
t7004: fix mistaken tag name
gpg-interface: handle bool user.signingkey
gpg-interface: modernize function declarations
gpg-interface: use size_t for signature buffer size
gpg-interface: fix const-correctness of "eol" pointer
gpg-interface: extract gpg line matching helper
gpg-interface: find the last gpg signature line
apply: clarify "-p" documentation
pager: set COLUMNS to term_columns()
mark_tree_contents_uninteresting(): drop missing object check
mark_parents_uninteresting(): drop missing object check
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): avoid most allocation
get_main_ref_store: BUG() when outside a repository
config: die when --blob is used outside a repository
http: use strbufs instead of fixed buffers
log_write_email_headers: use strbufs
shorten_unambiguous_ref: use xsnprintf
fmt_with_err: add a comment that truncation is OK
submodule-config: verify submodule names as paths
is_ntfs_dotgit: use a size_t for traversing string
is_hfs_dotgit: match other .git files
skip_prefix: add case-insensitive variant
verify_path: drop clever fallthrough
verify_dotfile: mention case-insensitivity in comment
update-index: stat updated files earlier
verify_path: disallow symlinks in .gitmodules
index-pack: make fsck error message more specific
fsck: simplify ".git" check
fsck: actually fsck blob data
fsck: detect gitmodules files
fsck: handle promisor objects in .gitmodules check
fsck: check .gitmodules content
fsck: call fsck_finish() after fscking objects
unpack-objects: call fsck_finish() after fscking objects
index-pack: check .gitmodules files with --strict
fsck: complain when .gitmodules is a symlink
Johannes Schindelin (68):
git_config_set: fix off-by-two
t1300: rename it to reflect that `repo-config` was deprecated
t1300: demonstrate that --replace-all can "invent" newlines
config --replace-all: avoid extra line breaks
t1300: avoid relying on a bug
t1300: remove unreasonable expectation from TODO
t5404: relax overzealous test
t1300: add a few more hairy examples of sections becoming empty
t1300: `--unset-all` can leave an empty section behind (bug)
config: introduce an optional event stream while parsing
config: avoid using the global variable `store`
config_set_store: rename some fields for consistency
git_config_set: do not use a state machine
git_config_set: make use of the config parser's event stream
git config --unset: remove empty sections (in the common case)
git_config_set: reuse empty sections
exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
mingw/msvc: use the new-style RUNTIME_PREFIX helper
color: introduce support for colorizing stderr
push: test to verify that push errors are colored
config: document the settings to colorize push errors/hints
gettext: avoid initialization if the locale dir is not present
git_setup_gettext: plug memory leak
sequencer: avoid using errno clobbered by rollback_lock_file()
sequencer: make rearrange_squash() a bit more obvious
sequencer: refactor how original todo list lines are accessed
sequencer: offer helpful advice when a command was rescheduled
sequencer: introduce new commands to reset the revision
sequencer: introduce the `merge` command
sequencer: fast-forward `merge` commands, if possible
rebase-helper --make-script: introduce a flag to rebase merges
rebase: introduce the --rebase-merges option
sequencer: make refs generated by the `label` command worktree-local
sequencer: handle post-rewrite for merge commands
rebase --rebase-merges: avoid "empty merges"
pull: accept --rebase=merges to recreate the branch topology
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
rebase -i --rebase-merges: add a section to the man page
argv_array: offer to split a string by whitespace
commit: Let the callback of for_each_mergetag return on error
replace: avoid using die() to indicate a bug
tests: introduce test_unset_prereq, for debugging
replace: "libify" create_graft() and callees
replace: prepare create_graft() for converting graft files wholesale
replace: introduce --convert-graft-file
Add a test for `git replace --convert-graft-file`
Deprecate support for .git/info/grafts
filter-branch: stop suggesting to use grafts
technical/shallow: stop referring to grafts
technical/shallow: describe why shallow cannot use replace refs
Remove obsolete script to convert grafts to replace refs
rebase -i: demonstrate bugs with fixup!/squash! commit messages
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
sequencer: always commit without editing when asked for
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: extract helper to update active_cache_tree
sequencer: learn about the special "fake root commit" handling
rebase -i --root: let the sequencer handle even the initial part
sequencer: allow introducing new root commits
rebase --rebase-merges: a "merge" into a new root is a fast-forward
rebase --rebase-merges: root commits can be cousins, too
test-tool: help verifying BUG() code paths
run-command: use BUG() to report bugs, not die()
Replace all die("BUG: ...") calls by BUG() ones
Convert remaining die*(BUG) messages
config: a user-provided invalid section is not a BUG
is_ntfs_dotgit: match other .git files
is_{hfs,ntfs}_dotgitmodules: add tests
Johannes Sixt (2):
sequencer: reset the committer date before commits
git: add -P as a short option for --no-pager
Jonathan Nieder (6):
sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
Makefile: remove unused @@PERLLIBDIR@@ substitution variable
Makefile: quote $INSTLIBDIR when passing it to sed
packfile: add repository argument to packed_object_info
fetch: do not pass ref-prefixes for fetch by exact SHA1
Jonathan Tan (5):
grep: remove "repo" arg from non-supporting funcs
upload-pack: fix error message typo
upload-pack: read config when serving protocol v2
{fetch,upload}-pack: support filter in protocol v2
submodule: do not pass null OID to setup_revisions
Junio C Hamano (21):
stash: fix nonsense pipeline
The first batch for 2.18 cycle
The second batch for 2.18
The third batch for 2.18
Revert "Merge branch 'en/rename-directory-detection'"
gc: do not upcase error message shown with die()
parseopt: handle malformed --expire arguments more nicely
The fourth batch for 2.18
The fifth batch for 2.18
argv-array: return the pushed string from argv_push*()
Git 2.13.7
Git 2.14.4
Git 2.15.2
Git 2.16.4
Git 2.17.1
The sixth batch for 2.18
The seventh batch for 2.18
Git 2.18-rc0
refspec-api: avoid uninitialized field in refspec item
A bit more topics before -rc1
Git 2.18-rc1
Kaartic Sivaraam (1):
branch --list: print useful info whilst interactive rebasing a detached HEAD
Lars Schneider (10):
strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
strbuf: add xstrdup_toupper()
strbuf: add a case insensitive starts_with()
utf8: teach same_encoding() alternative UTF encoding names
utf8: add function to detect prohibited UTF-16/32 BOM
utf8: add function to detect a missing UTF-16/32 BOM
convert: add 'working-tree-encoding' attribute
convert: check for detectable errors in UTF encodings
convert: add tracing for 'working-tree-encoding' attribute
convert: add round trip check based on 'core.checkRoundtripEncoding'
Leif Middelschulte (1):
merge-recursive: give notice when submodule commit gets fast-forwarded
Loganaden Velvindron (1):
http: allow use of TLS 1.3
Lucas Werkmeister (1):
daemon.c: fix condition for redirecting stderr
Luis Marsano (2):
git-credential-netrc: adapt to test framework for git
git-credential-netrc: accept gpg option
Luke Diamand (1):
git-p4: add unshelve command
Martin Ågren (24):
git-shortlog.txt: reorder usages
shortlog: add usage-string for stdin-reading
shortlog: disallow left-over arguments outside repo
doc: convert \--option to --option
doc: convert [\--] to [--]
git-[short]log.txt: unify quoted standalone --
git-submodule.txt: quote usage in monospace, drop backslash
fast-export: fix regression skipping some merge-commits
http-fetch: make `-a` standard behaviour
walker: drop fields of `struct walker` which are always 1
t/helper/test-write-cache: clean up lock-handling
refs.c: do not die if locking fails in `write_pseudoref()`
refs.c: do not die if locking fails in `delete_pseudoref()`
lock_file: make function-local locks non-static
lock_file: move static locks into functions
refs.c: refer to "object ID", not "sha1", in error messages
t1400: add tests around adding/deleting pseudorefs
refs: handle zero oid for pseudorefs
merge: setup `opts` later in `checkout_fast_forward()`
config: free resources of `struct config_store_data`
config: let `config_store_data_clear()` handle `value_regex`
config: let `config_store_data_clear()` handle `key`
regex: do not call `regfree()` if compilation fails
unpack_trees_options: free messages when done
Michal Nazarewicz (1):
send-email: simplify Gmail example in the documentation
Michele Locati (1):
filter-branch: return 2 when nothing to rewrite
Nguyễn Thái Ngọc Duy (108):
repository: initialize the_repository in main()
repository.c: move env-related setup code back to environment.c
repository.c: delete dead functions
sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
repository: delete ignore_env member
gc.txt: more details about what gc does
worktree: delete dead code
worktree prune: improve prune logic when worktree is moved
repository.h: add comment and clarify repo_set_gitdir
git.c: move cmd_struct declaration up
git.c: add hidden option --list-parseopt-builtins
completion: mention the oldest version we need to support
completion: factor out _git_xxx calling code
completion: add --option completion for most builtin commands
completion: delete option-only completion commands
completion: use __gitcomp_builtin in _git_ls_tree
completion: use __gitcomp_builtin in _git_cherry
packfile: keep prepare_packed_git() private
t/helper: add an empty test-tool program
t/helper: merge test-chmtime into test-tool
t/helper: merge test-sha1 into test-tool
t/helper: merge test-lazy-init-name-hash into test-tool
t/helper: merge test-config into test-tool
t/helper: merge test-ctype into test-tool
t/helper: merge test-date into test-tool
t/helper: merge (unused) test-delta into test-tool
t/helper: merge test-drop-caches into test-tool
t/helper: merge test-dump-cache-tree into test-tool
t/helper: merge test-dump-split-index into test-tool
t/helper: merge test-example-decorate into test-tool
t/helper: merge test-genrandom into test-tool
t/helper: merge test-hashmap into test-tool
t/helper: merge test-index-version into test-tool
t/helper: merge (unused) test-match-trees into test-tool
t/helper: merge (unused) test-mergesort into test-tool
t/helper: merge test-mktemp into test-tool
t/helper: merge test-online-cpus into test-tool
t/helper: merge test-path-utils into test-tool
t/helper: merge test-prio-queue into test-tool
t/helper: merge test-read-cache into test-tool
t/helper: merge test-ref-store into test-tool
t/helper: merge test-regex into test-tool
t/helper: merge test-revision-walking into test-tool
t/helper: merge test-run-command into test-tool
t/helper: merge test-scrap-cache-tree into test-tool
t/helper: merge test-sha1-array into test-tool
t/helper: merge test-sigchain into test-tool
t/helper: merge test-strcmp-offset into test-tool
t/helper: merge test-string-list into test-tool
t/helper: merge test-submodule-config into test-tool
t/helper: merge test-subprocess into test-tool
t/helper: merge test-urlmatch-normalization into test-tool
t/helper: merge test-wildmatch into test-tool
t/helper: merge test-write-cache into test-tool
trace.c: export trace_setup_key
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
pack-objects: a bit of document about struct object_entry
pack-objects: turn type and in_pack_type to bitfields
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: use bitfield for object_entry::depth
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: move in_pack out of struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: don't check size when the object is bad
pack-objects: clarify the use of object_entry::size
pack-objects: shrink size field in struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: reorder members to shrink struct object_entry
ci: exercise the whole test suite with uncommon code in pack-objects
t7700: have closing quote of a test at the beginning of line
repack: add --keep-pack option
gc: add --keep-largest-pack option
gc: add gc.bigPackThreshold config
gc: handle a corner case in gc.bigPackThreshold
gc --auto: exclude base pack if not enough mem to "repack -ad"
pack-objects: show some progress when counting kept objects
connect.c: mark die_initial_contact() NORETURN
Makefile: detect compiler and enable more warnings in DEVELOPER=1
submodule--helper: don't print null in 'submodule status'
doc: keep first level section header in upper case
pack-objects: validation and documentation about unreachable options
completion: fix misspelled config key aliasesfiletype
repository: fix free problem with repo_clear(the_repository)
generate-cmds.sh: factor out synopsis extract code
generate-cmds.sh: export all commands to command-list.h
help: use command-list.h for common command list
Remove common-cmds.h
pack-format.txt: more details on pack file format
column: fix off-by-one default width
commit.h: rearrange 'index' to shrink struct commit
git.c: convert --list-* to --list-cmds=*
git --list-cmds: collect command list in a string_list
completion: implement and use --list-cmds=main,others
git: support --list-cmds=list-<category>
help: add "-a --verbose" to list all commands with synopsis
help: use command-list.txt for the source of guides
command-list.txt: documentation and guide line
completion: let git provide the completable command list
completion: reduce completable command list
Move declaration for alias.c to alias.h
completion: add and use --list-cmds=nohelpers
completion: add and use --list-cmds=alias
completion: allow to customize the completable command list
travis-ci: run gcc-8 on linux-gcc jobs
Use OPT_SET_INT_F() for cmdline option specification
remote.txt: update documentation for 'update' command
remote: doc typofix
Olga Telezhnaya (6):
ref-filter: add shortcut to work with strbufs
ref-filter: start adding strbufs with errors
ref-filter: add return value && strbuf to handlers
ref-filter: change parsing function error handling
ref-filter: add return value to parsers
ref-filter: libify get_ref_atom_value()
Orgad Shaneh (1):
git-rebase--interactive: fix copy-paste mistake
Paul-Sebastian Ungureanu (2):
parse-options: do not show usage upon invalid option value
t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Pedro Alvarez Piedehierro (1):
import-tars: read overlong names from pax extended header
Philip Oakley (1):
Avoid multiple PREFIX definitions
Phillip Wood (7):
rebase --root: stop assuming squash_onto is unset
rebase -i --keep-empty: don't prune empty commits
rebase: respect --no-keep-empty
rebase: extend --signoff support
rebase -p: error out if --signoff is given
rebase --keep-empty: always use interactive rebase
rebase --rebase-merges: add test for --keep-empty
Pratik Karki (1):
test: avoid pipes in git related commands for test
Ramsay Jones (1):
BUG_exit_code: fix sparse "symbol not declared" warning
René Scharfe (8):
sha1_name: use bsearch_pack() in unique_in_pack()
bisect: use oid_to_hex() for converting object_id hashes to hex strings
run-command: use strbuf_addstr() for adding a string to a strbuf
submodule: check for NULL return of get_submodule_ref_store()
replace_object: use oidmap
fast-export: avoid NULL pointer arithmetic
t5512: run git fetch inside test
fsmonitor: use internal argv_array of struct child_process
Robert P. J. Day (4):
Use proper syntax for replaceables in command docs
tag: clarify in the doc that a tag can refer to a non-commit object
init: fix grammar in "templates not found" msg
p4.txt: Use backquotes for variable names
Ryan Dammrose (1):
push: colorize errors
SZEDER Gábor (22):
test_must_be_empty: simplify file existence check
t9902-completion: add tests demonstrating issues with quoted pathnames
completion: move __git_complete_index_file() next to its helpers
completion: simplify prefix path component handling during path completion
completion: support completing non-ASCII pathnames
completion: improve handling quoted paths on the command line
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: use 'awk' to strip trailing path components
t9902-completion: ignore COMPREPLY element order in some tests
completion: remove repeated dirnames with 'awk' during path completion
completion: improve handling quoted paths in 'git ls-files's output
completion: fill COMPREPLY directly when completing paths
completion: reduce overhead of clearing cached --options
docs/git-gc: fix minor rendering issue
coccinelle: avoid wrong transformation suggestions from commit.cocci
t6050-replace: don't disable stdin for the whole test script
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
t5516-fetch-push: fix 'push with dry-run' test
t5516-fetch-push: fix broken &&-chain
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
completion: don't return with error from __gitcomp_file_direct()
t9902-completion: exercise __git_complete_index_file() directly
Sergey Organov (1):
glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Stefan Agner (1):
send-email: avoid duplicate In-Reply-To/References
Stefan Beller (81):
repository: introduce raw object store field
object-store: migrate alternates struct and functions from cache.h
object-store: move alt_odb_list and alt_odb_tail to object store
object-store: free alt_odb_list
object-store: move packed_git and packed_git_mru to object store
object-store: close all packs upon clearing the object store
pack: move prepare_packed_git_run_once to object store
pack: move approximate object count to object store
sha1_file: add raw_object_store argument to alt_odb_usable
sha1_file: add repository argument to link_alt_odb_entry
sha1_file: add repository argument to read_info_alternates
sha1_file: add repository argument to link_alt_odb_entries
sha1_file: add repository argument to prepare_alt_odb
sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
sha1_file: allow prepare_alt_odb to handle arbitrary repositories
sha1_file: add repository argument to sha1_file_name
sha1_file: add repository argument to stat_sha1_file
sha1_file: add repository argument to open_sha1_file
sha1_file: add repository argument to map_sha1_file_1
sha1_file: add repository argument to map_sha1_file
sha1_file: add repository argument to sha1_loose_object_info
sha1_file: allow sha1_file_name to handle arbitrary repositories
sha1_file: allow stat_sha1_file to handle arbitrary repositories
sha1_file: allow open_sha1_file to handle arbitrary repositories
sha1_file: allow map_sha1_file to handle arbitrary repositories
packfile: allow prepare_packed_git_mru to handle arbitrary repositories
packfile: allow rearrange_packed_git to handle arbitrary repositories
packfile: allow install_packed_git to handle arbitrary repositories
packfile: add repository argument to prepare_packed_git_one
packfile: add repository argument to prepare_packed_git
packfile: add repository argument to reprepare_packed_git
packfile: allow prepare_packed_git_one to handle arbitrary repositories
packfile: allow prepare_packed_git to handle arbitrary repositories
packfile: allow reprepare_packed_git to handle arbitrary repositories
packfile: add repository argument to find_pack_entry
packfile: allow find_pack_entry to handle arbitrary repositories
submodule.h: drop declaration of connect_work_tree_and_git_dir
submodule-config: allow submodule_free to handle arbitrary repositories
submodule-config: add repository argument to submodule_from_{name, path}
submodule-config: remove submodule_from_cache
submodule: fixup nested submodules after moving the submodule
write_or_die.c: rename to use dashes in file name
unicode_width.h: rename to use dash in file name
exec_cmd: rename to use dash in file name
sha1_name.c: rename to use dash in file name
sha1_file.c: rename to use dash in file name
replace_object.c: rename to use dash in file name
replace-object: move replace_map to object store
object-store: move lookup_replace_object to replace-object.h
replace-object: eliminate replace objects prepared flag
replace-object: check_replace_refs is safe in multi repo environment
refs: add repository argument to get_main_ref_store
refs: add repository argument to for_each_replace_ref
replace-object: add repository argument to prepare_replace_object
replace-object: add repository argument to do_lookup_replace_object
replace-object: add repository argument to lookup_replace_object
refs: store the main ref store inside the repository struct
refs: allow for_each_replace_ref to handle arbitrary repositories
replace-object: allow prepare_replace_object to handle arbitrary repositories
replace-object: allow do_lookup_replace_object to handle arbitrary repositories
replace-object: allow lookup_replace_object to handle arbitrary repositories
worktree: accept -f as short for --force for removal
builtin/blame: dim uninteresting metadata lines
builtin/blame: highlight recently changed lines
builtin/blame: add new coloring scheme config
cache.h: add repository argument to oid_object_info_extended
cache.h: add repository argument to oid_object_info
packfile: add repository argument to retry_bad_packed_offset
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to read_object
packfile: add repository argument to unpack_entry
packfile: add repository argument to cache_or_unpack_entry
cache.h: allow oid_object_info to handle arbitrary repositories
git-rebase--interactive: clarify arguments
object.c: free replace map in raw_object_store_clear
replace-object.c: remove the_repository from prepare_replace_object
grep: handle corrupt index files early
git-submodule.sh: try harder to fetch a submodule
submodule.c: move submodule merging to merge-recursive.c
merge-recursive: i18n submodule merge output and respect verbosity
object.c: clear replace map before freeing it
Takuto Ikuta (1):
fetch-pack.c: use oidset to check existence of loose object
Tao Qingyun (1):
t1510-repo-setup.sh: remove useless mkdir
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Thomas Gummerer (12):
stash push: avoid printing errors
stash push -u: don't create empty stash
stash: drop superfluos pathspec parameter
SubmittingPatches: mention the git contacts command
completion: stop showing 'save' for stash by default
completion: make stash -p and alias for stash push -p
worktree: remove extra members from struct add_opts
worktree: improve message when creating a new worktree
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
SubmittingPatches: replace numbered attributes with names
note git-security@googlegroups.com in more places
Todd Zullinger (1):
doc/clone: update caption for GIT URLS cross-reference
Torsten Bögershausen (1):
test: correct detection of UTF8_NFD_TO_NFC for APFS
Wink Saville (8):
rebase-interactive: simplify pick_on_preserving_merges
rebase: update invocation of rebase dot-sourced scripts
rebase: reindent function git_rebase__interactive
rebase: extract functions out of git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove merges_option and a blank line
Yuki Kokubun (1):
filter-branch: fix errors caused by refs that point at non-committish
brian m. carlson (123):
bulk-checkin: convert index_bulk_checkin to struct object_id
builtin/write-tree: convert to struct object_id
cache-tree: convert write_*_as_tree to object_id
cache-tree: convert remnants to struct object_id
resolve-undo: convert struct resolve_undo_info to object_id
tree: convert read_tree_recursive to struct object_id
ref-filter: convert grab_objectname to struct object_id
strbuf: convert strbuf_add_unique_abbrev to use struct object_id
wt-status: convert struct wt_status_state to object_id
Convert find_unique_abbrev* to struct object_id
http-walker: convert struct object_request to use struct object_id
send-pack: convert remaining functions to struct object_id
replace_object: convert struct replace_object to object_id
builtin/mktag: convert to struct object_id
archive: convert write_archive_entry_fn_t to object_id
archive: convert sha1_file_to_archive to struct object_id
builtin/index-pack: convert struct ref_delta_entry to object_id
sha1_file: convert read_loose_object to use struct object_id
sha1_file: convert check_sha1_signature to struct object_id
streaming: convert open_istream to use struct object_id
builtin/mktree: convert to struct object_id
sha1_file: convert assert_sha1_type to object_id
sha1_file: convert retry_bad_packed_offset to struct object_id
packfile: convert unpack_entry to struct object_id
Convert remaining callers of sha1_object_info_extended to object_id
sha1_file: convert sha1_object_info* to object_id
builtin/fmt-merge-msg: convert remaining code to object_id
builtin/notes: convert static functions to object_id
tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
streaming: convert istream internals to struct object_id
tree-walk: convert tree entry functions to object_id
sha1_file: convert read_object_with_reference to object_id
sha1_file: convert read_sha1_file to struct object_id
Convert lookup_replace_object to struct object_id
sha1_file: introduce a constant for max header length
convert: convert to struct object_id
sha1_name: convert struct min_abbrev_data to object_id
t1011: abstract away SHA-1-specific constants
t1304: abstract away SHA-1-specific constants
t1300: abstract away SHA-1-specific constants
t1405: sort reflog entries in a hash-independent way
t1411: abstract away SHA-1-specific constants
t1507: abstract away SHA-1-specific constants
t2020: abstract away SHA-1 specific constants
t2101: modernize test style
t2101: abstract away SHA-1-specific constants
t2107: abstract away SHA-1-specific constants
format-patch: make cover letters always text/plain
cache: add a function to read an object ID from a buffer
server-info: remove unused members from struct pack_info
Remove unused member in struct object_context
packfile: remove unused member from struct pack_entry
packfile: convert has_sha1_pack to object_id
sha1-file: convert freshen functions to object_id
packfile: convert find_pack_entry to object_id
packfile: abstract away hash constant values
pack-objects: abstract away hash algorithm
pack-redundant: abstract away hash algorithm
tree-walk: avoid hard-coded 20 constant
tree-walk: convert get_tree_entry_follow_symlinks to object_id
fsck: convert static functions to struct object_id
submodule-config: convert structures to object_id
split-index: convert struct split_index to object_id
Update struct index_state to use struct object_id
pack-redundant: convert linked lists to use struct object_id
index-pack: abstract away hash function constant
commit: convert uses of get_sha1_hex to get_oid_hex
dir: convert struct untracked_cache_dir to object_id
http: eliminate hard-coded constants
revision: replace use of hard-coded constants
upload-pack: replace use of several hard-coded constants
diff: specify abbreviation size in terms of the_hash_algo
builtin/receive-pack: avoid hard-coded constants for push certs
sha1-file: add functions for hex empty tree and blob OIDs
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
builtin/merge: switch tree functions to use object_id
merge: convert empty tree constant to the_hash_algo
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
sha1_file: convert cached object code to struct object_id
cache-tree: use is_empty_tree_oid
sequencer: use the_hash_algo for empty tree object ID
dir: use the_hash_algo for empty blob object ID
sha1_file: only expose empty object constants through git_hash_algo
Update shell scripts to compute empty tree object ID
add--interactive: compute the empty tree value
merge-one-file: compute empty blob object ID
Documentation: use 8-space tabs with Asciidoctor
Documentation: render revisions correctly under Asciidoctor
mailmap: update brian m. carlson's email address
t/test-lib: add an SHA1 prerequisite
t/test-lib: introduce ZERO_OID
t: switch $_z40 to $ZERO_OID
t/test-lib: introduce OID_REGEX
t: switch $_x40 to $OID_REGEX
t0000: annotate with SHA1 prerequisite
t1007: annotate with SHA1 prerequisite
t1512: skip test if not using SHA-1
t4044: skip test if not using SHA-1
t: skip pack tests if not using SHA-1
t2203: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4022: abstract away SHA-1-specific constants
t4029: fix test indentation
t4029: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t4042: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t5300: abstract away SHA-1-specific constants
sequencer: ensure labels that are object IDs are rewritten
t3430: test clean-up
Ævar Arnfjörð Bjarmason (21):
configure: fix a regression in PCRE v1 detection
configure: detect redundant --with-libpcre & --with-libpcre1
Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
Makefile: fix broken bindir_relative variable
Makefile: add a gitexecdir_relative variable
Makefile: optionally symlink libexec/git-core binaries to bin/git
Remove contrib/examples/*
doc hash-function-transition: clarify how older gits die on NewHash
doc hash-function-transition: clarify what SHAttered means
git-svn: avoid warning on undef readline()
Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
Makefile: add a DEVOPTS to get all of -Wextra
git{,-blame}.el: remove old bitrotting Emacs code
.gitattributes: add *.pl extension for Perl
.gitattributes: use the "perl" differ for Perl
.gitattributes: add a diff driver for Python
sha1-name.c: remove stray newline
sha1-array.h: align function arguments
git-p4: change "commitish" typo to "committish"
sha1-name.c: move around the collect_ambiguous() function
get_short_oid: sort ambiguous objects by type, then SHA-1
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.18.0-rc0
@ 2018-05-30 22:47 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-05-30 22:47 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.18.0-rc0 is now available for
testing at the usual places. It is comprised of 802 non-merge
commits since v2.17.0, contributed by 60 people, 19 of which are
new faces.
As the above numbers show, especially the non-merge commit count, it
turned out that 2.18 is relatively sizeable cycle. Let's plan to
start cooling down and giving it a bit of extra polish to make sure
there is no/little regression. I am tagging the preview now as I
want to do the -rc1 before I go offline early next week for a few
days for travelling. I may go offline for the rest of the day as I
seem to have caught something X-<, but plan to spend the next 48
hours re-reviewing what is in (or close to be in) 'next' to see which
ones should be in -rc1.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.18.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Leif Middelschulte, Loganaden
Velvindron, Luis Marsano, Paul-Sebastian Ungureanu, Pratik
Karki, Ryan Dammrose, Takuto Ikuta, Tao Qingyun, Wink Saville,
and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
Derrick Stolee, Elijah Newren, Eric Sunshine, Jameson Miller,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Lars Schneider,
Lucas Werkmeister, Martin Ågren, Michal Nazarewicz, Michele
Locati, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Philip
Oakley, Phillip Wood, Ramsay Jones, René Scharfe, Sergey
Organov, Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau,
Thomas Gummerer, Todd Zullinger, and Torsten Bögershausen.
----------------------------------------------------------------
Git 2.18 Release Notes (draft)
==============================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
----------------------------------------------------------------
Changes since v2.17.0 are as follows:
Anders Kaseorg (1):
Documentation/git-bisect.txt: git bisect term → git bisect terms
Andreas Heiduk (9):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
doc: improve formatting in githooks.txt
doc: align 'diff --no-index' in text and synopsis
doc: clarify ignore rules for git ls-files
doc: add '-d' and '-o' for 'git push'
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add note about shell quoting to revision.txt
doc: normalize [--options] to [options] in git-diff
Antonio Ospite (1):
doc: fix config API documentation about config_with_options
Beat Bolli (1):
git-gui: search for all current SSH key types
Ben Peart (7):
fsmonitor: fix incorrect buffer size when printing version number
fsmonitor: force index write after full scan
test-drop-caches: simplify delay loading of NtSetSystemInformation
merge: update documentation for {merge,diff}.renameLimit
merge: add merge.renames config setting
merge: pass aggressive when rename detection is turned off
add status config and command line options for rename detection
Bill Ritcher (1):
mergetools: add support for guiffy
Birger Skogeng Pedersen (1):
git-gui: bind CTRL/CMD+numpad ENTER to do_commit
Brandon Williams (79):
pkt-line: introduce packet_read_with_status
pkt-line: allow peeking a packet line without consuming it
pkt-line: add delim packet support
upload-pack: convert to a builtin
upload-pack: factor out processing lines
transport: use get_refs_via_connect to get refs
connect: convert get_remote_heads to use struct packet_reader
connect: discover protocol version outside of get_remote_heads
transport: store protocol version
protocol: introduce enum protocol_version value protocol_v2
test-pkt-line: introduce a packet-line test helper
serve: introduce git-serve
ls-refs: introduce ls-refs server command
connect: request remote refs using v2
transport: convert get_refs_list to take a list of ref prefixes
transport: convert transport_get_remote_refs to take a list of ref prefixes
ls-remote: pass ref prefixes when requesting a remote's refs
fetch: pass ref prefixes when fetching
push: pass ref prefixes when pushing
upload-pack: introduce fetch server command
fetch-pack: perform a fetch using v2
fetch-pack: support shallow requests
connect: refactor git_connect to only get the protocol version once
connect: don't request v2 when pushing
transport-helper: remove name parameter
transport-helper: refactor process_connect_service
transport-helper: introduce stateless-connect
pkt-line: add packet_buf_write_len function
remote-curl: create copy of the service name
remote-curl: store the protocol version the server responded with
http: allow providing extra headers for http requests
http: don't always add Git-Protocol header
http: eliminate "# service" line when using protocol v2
remote-curl: implement stateless-connect command
remote-curl: don't request v2 when pushing
commit: allow partial commits with relative paths
serve: introduce the server-option capability
ls-remote: send server options when using protocol v2
fetch: send server options when using protocol v2
refspec: move refspec parsing logic into its own file
refspec: rename struct refspec to struct refspec_item
refspec: factor out parsing a single refspec
refspec: introduce struct refspec
refspec: convert valid_fetch_refspec to use parse_refspec
submodule--helper: convert push_check to use struct refspec
pull: convert get_tracking_branch to use refspec_item_init
transport: convert transport_push to use struct refspec
remote: convert check_push_refs to use struct refspec
remote: convert match_push_refs to use struct refspec
clone: convert cmd_clone to use refspec_item_init
fast-export: convert to use struct refspec
remote: convert push refspecs to struct refspec
remote: convert fetch refspecs to struct refspec
remote: remove add_prune_tags_to_fetch_refspec
transport-helper: convert to use struct refspec
fetch: convert fetch_one to use struct refspec
fetch: convert refmap to use struct refspec
refspec: remove the deprecated functions
fetch: convert do_fetch to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert prune_refs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert match_explicit_refs to take a struct refspec
push: check for errors earlier
push: convert to use struct refspec
transport: convert transport_push to take a struct refspec
send-pack: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
http-push: store refspecs in a struct refspec
remote: convert match_push_refs to take a struct refspec
remote: convert check_push_refs to take a struct refspec
submodule: convert push_unpushed_submodules to take a struct refspec
refspec: consolidate ref-prefix generation logic
fetch: generate ref-prefixes when using a configured refspec
remote-curl: accept all encodings supported by curl
remote-curl: accept compressed responses with protocol v2
Casey Fitzpatrick (3):
submodule: clean up substitutions in script
submodule: add --progress option to add command
submodule: add --dissociate option to add/update commands
Christian Couder (6):
perf/aggregate: add display_dir()
perf/aggregate: add --sort-by=regression option
perf/run: add --subsection option
t/perf: add scripts to bisect performance regressions
perf/aggregate: use Getopt::Long for option parsing
perf/bisect_run_script: disable codespeed
Christian Hesse (2):
perl: fix installing modules from contrib
Makefile: mark perllibdir as a .PHONY target
Clemens Buchacher (2):
git-gui: workaround ttk:style theme use
completion: improve ls-files filter performance
Dan Jacques (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
Derrick Stolee (20):
packfile: define and use bsearch_pack()
sha1_name: use bsearch_pack() for abbreviations
csum-file: rename hashclose() to finalize_hashfile()
csum-file: refactor finalize_hashfile() method
commit-graph: add format document
graph: add commit graph design document
commit-graph: create git-commit-graph builtin
commit-graph: implement write_commit_graph()
commit-graph: implement git-commit-graph write
commit-graph: implement git commit-graph read
commit-graph: add core.commitGraph setting
commit-graph: close under reachability
commit: integrate commit graph with commit parsing
commit-graph: read only from specific pack-indexes
commit-graph: build graph from starting commits
commit-graph: implement "--append" option
treewide: rename tree to maybe_tree
commit: create get_commit_tree() method
treewide: replace maybe_tree with accessor methods
commit-graph: lazy-load trees for commits
Drew DeVault (1):
git-send-email: allow re-editing of message
Eckhard S. Maaß (1):
wt-status: use settings from git_diff_ui_config
Elijah Newren (70):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: ensure we write updates for directory-renamed file
Documentation: fix several one-character-off spelling errors
Documentation: normalize spelling of 'normalised'
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
Make running git under other debugger-like programs easy
unpack_trees: fix breakage when o->src_index != o->dst_index
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
Eric Sunshine (5):
t3200: verify "branch --list" sanity when rebasing from detached HEAD
t2028: tighten grep expression to make "move worktree" test more robust
git-worktree.txt: recommend 'git worktree remove' over manual deletion
git-worktree.txt: unify command-line prompt in example blocks
configure.ac: fix botched FREAD_READS_DIRECTORIES check
Erik E Brady (1):
credential: ignore SIGPIPE when writing to credential helpers
Florian Gamböck (1):
completion: load completion file for external subcommand
Harald Nordgren (1):
ls-remote: create '--sort' option
Jameson Miller (3):
fast-import: rename mem_pool type to mp_block
fast-import: introduce mem_pool type
mem-pool: move reusable parts of memory pool into its own file
Jeff King (54):
diff-highlight: correct test graph diagram
diff-highlight: use test_tick in graph test
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: test interleaved parallel lines of history
diff-highlight: test graphs with --color
diff-highlight: use flush() helper consistently
diff-highlight: detect --graph by indent
set_git_dir: die when setenv() fails
add chdir-notify API
set_work_tree: use chdir_notify
refs: use chdir_notify to update cached relative paths
config: move flockfile() closer to unlocked functions
t5561: drop curl stderr redirects
t5561: skip tests if curl is not available
ref-filter: use "struct object_id" consistently
ref-filter: make ref_array_item allocation more consistent
ref-filter: factor ref_array pushing into its own function
t7004: fix mistaken tag name
gpg-interface: handle bool user.signingkey
gpg-interface: modernize function declarations
gpg-interface: use size_t for signature buffer size
gpg-interface: fix const-correctness of "eol" pointer
gpg-interface: extract gpg line matching helper
gpg-interface: find the last gpg signature line
apply: clarify "-p" documentation
pager: set COLUMNS to term_columns()
mark_tree_contents_uninteresting(): drop missing object check
mark_parents_uninteresting(): drop missing object check
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): avoid most allocation
get_main_ref_store: BUG() when outside a repository
config: die when --blob is used outside a repository
http: use strbufs instead of fixed buffers
log_write_email_headers: use strbufs
shorten_unambiguous_ref: use xsnprintf
fmt_with_err: add a comment that truncation is OK
submodule-config: verify submodule names as paths
is_ntfs_dotgit: use a size_t for traversing string
is_hfs_dotgit: match other .git files
skip_prefix: add case-insensitive variant
verify_path: drop clever fallthrough
verify_dotfile: mention case-insensitivity in comment
update-index: stat updated files earlier
verify_path: disallow symlinks in .gitmodules
index-pack: make fsck error message more specific
fsck: simplify ".git" check
fsck: actually fsck blob data
fsck: detect gitmodules files
fsck: handle promisor objects in .gitmodules check
fsck: check .gitmodules content
fsck: call fsck_finish() after fscking objects
unpack-objects: call fsck_finish() after fscking objects
index-pack: check .gitmodules files with --strict
fsck: complain when .gitmodules is a symlink
Johannes Schindelin (68):
git_config_set: fix off-by-two
t1300: rename it to reflect that `repo-config` was deprecated
t1300: demonstrate that --replace-all can "invent" newlines
config --replace-all: avoid extra line breaks
t1300: avoid relying on a bug
t1300: remove unreasonable expectation from TODO
t5404: relax overzealous test
t1300: add a few more hairy examples of sections becoming empty
t1300: `--unset-all` can leave an empty section behind (bug)
config: introduce an optional event stream while parsing
config: avoid using the global variable `store`
config_set_store: rename some fields for consistency
git_config_set: do not use a state machine
git_config_set: make use of the config parser's event stream
git config --unset: remove empty sections (in the common case)
git_config_set: reuse empty sections
exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
mingw/msvc: use the new-style RUNTIME_PREFIX helper
color: introduce support for colorizing stderr
push: test to verify that push errors are colored
config: document the settings to colorize push errors/hints
gettext: avoid initialization if the locale dir is not present
git_setup_gettext: plug memory leak
sequencer: avoid using errno clobbered by rollback_lock_file()
sequencer: make rearrange_squash() a bit more obvious
sequencer: refactor how original todo list lines are accessed
sequencer: offer helpful advice when a command was rescheduled
sequencer: introduce new commands to reset the revision
sequencer: introduce the `merge` command
sequencer: fast-forward `merge` commands, if possible
rebase-helper --make-script: introduce a flag to rebase merges
rebase: introduce the --rebase-merges option
sequencer: make refs generated by the `label` command worktree-local
sequencer: handle post-rewrite for merge commands
rebase --rebase-merges: avoid "empty merges"
pull: accept --rebase=merges to recreate the branch topology
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
rebase -i --rebase-merges: add a section to the man page
argv_array: offer to split a string by whitespace
commit: Let the callback of for_each_mergetag return on error
replace: avoid using die() to indicate a bug
tests: introduce test_unset_prereq, for debugging
replace: "libify" create_graft() and callees
replace: prepare create_graft() for converting graft files wholesale
replace: introduce --convert-graft-file
Add a test for `git replace --convert-graft-file`
Deprecate support for .git/info/grafts
filter-branch: stop suggesting to use grafts
technical/shallow: stop referring to grafts
technical/shallow: describe why shallow cannot use replace refs
Remove obsolete script to convert grafts to replace refs
rebase -i: demonstrate bugs with fixup!/squash! commit messages
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
sequencer: always commit without editing when asked for
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: extract helper to update active_cache_tree
sequencer: learn about the special "fake root commit" handling
rebase -i --root: let the sequencer handle even the initial part
sequencer: allow introducing new root commits
rebase --rebase-merges: a "merge" into a new root is a fast-forward
rebase --rebase-merges: root commits can be cousins, too
test-tool: help verifying BUG() code paths
run-command: use BUG() to report bugs, not die()
Replace all die("BUG: ...") calls by BUG() ones
Convert remaining die*(BUG) messages
config: a user-provided invalid section is not a BUG
is_ntfs_dotgit: match other .git files
is_{hfs,ntfs}_dotgitmodules: add tests
Johannes Sixt (2):
sequencer: reset the committer date before commits
git: add -P as a short option for --no-pager
Jonathan Nieder (5):
sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
Makefile: remove unused @@PERLLIBDIR@@ substitution variable
Makefile: quote $INSTLIBDIR when passing it to sed
packfile: add repository argument to packed_object_info
Jonathan Tan (4):
grep: remove "repo" arg from non-supporting funcs
upload-pack: fix error message typo
upload-pack: read config when serving protocol v2
{fetch,upload}-pack: support filter in protocol v2
Junio C Hamano (18):
stash: fix nonsense pipeline
The first batch for 2.18 cycle
The second batch for 2.18
The third batch for 2.18
Revert "Merge branch 'en/rename-directory-detection'"
gc: do not upcase error message shown with die()
parseopt: handle malformed --expire arguments more nicely
The fourth batch for 2.18
The fifth batch for 2.18
argv-array: return the pushed string from argv_push*()
Git 2.13.7
Git 2.14.4
Git 2.15.2
Git 2.16.4
Git 2.17.1
The sixth batch for 2.18
The seventh batch for 2.18
Git 2.18-rc0
Kaartic Sivaraam (1):
branch --list: print useful info whilst interactive rebasing a detached HEAD
Lars Schneider (10):
strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
strbuf: add xstrdup_toupper()
strbuf: add a case insensitive starts_with()
utf8: teach same_encoding() alternative UTF encoding names
utf8: add function to detect prohibited UTF-16/32 BOM
utf8: add function to detect a missing UTF-16/32 BOM
convert: add 'working-tree-encoding' attribute
convert: check for detectable errors in UTF encodings
convert: add tracing for 'working-tree-encoding' attribute
convert: add round trip check based on 'core.checkRoundtripEncoding'
Leif Middelschulte (1):
merge-recursive: give notice when submodule commit gets fast-forwarded
Loganaden Velvindron (1):
http: allow use of TLS 1.3
Lucas Werkmeister (1):
daemon.c: fix condition for redirecting stderr
Luis Marsano (2):
git-credential-netrc: adapt to test framework for git
git-credential-netrc: accept gpg option
Martin Ågren (24):
git-shortlog.txt: reorder usages
shortlog: add usage-string for stdin-reading
shortlog: disallow left-over arguments outside repo
doc: convert \--option to --option
doc: convert [\--] to [--]
git-[short]log.txt: unify quoted standalone --
git-submodule.txt: quote usage in monospace, drop backslash
fast-export: fix regression skipping some merge-commits
http-fetch: make `-a` standard behaviour
walker: drop fields of `struct walker` which are always 1
t/helper/test-write-cache: clean up lock-handling
refs.c: do not die if locking fails in `write_pseudoref()`
refs.c: do not die if locking fails in `delete_pseudoref()`
lock_file: make function-local locks non-static
lock_file: move static locks into functions
refs.c: refer to "object ID", not "sha1", in error messages
t1400: add tests around adding/deleting pseudorefs
refs: handle zero oid for pseudorefs
merge: setup `opts` later in `checkout_fast_forward()`
config: free resources of `struct config_store_data`
config: let `config_store_data_clear()` handle `value_regex`
config: let `config_store_data_clear()` handle `key`
regex: do not call `regfree()` if compilation fails
unpack_trees_options: free messages when done
Michal Nazarewicz (1):
send-email: simplify Gmail example in the documentation
Michele Locati (1):
filter-branch: return 2 when nothing to rewrite
Nguyễn Thái Ngọc Duy (88):
repository: initialize the_repository in main()
repository.c: move env-related setup code back to environment.c
repository.c: delete dead functions
sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
repository: delete ignore_env member
gc.txt: more details about what gc does
worktree: delete dead code
worktree prune: improve prune logic when worktree is moved
repository.h: add comment and clarify repo_set_gitdir
git.c: move cmd_struct declaration up
git.c: add hidden option --list-parseopt-builtins
completion: mention the oldest version we need to support
completion: factor out _git_xxx calling code
completion: add --option completion for most builtin commands
completion: delete option-only completion commands
completion: use __gitcomp_builtin in _git_ls_tree
completion: use __gitcomp_builtin in _git_cherry
packfile: keep prepare_packed_git() private
t/helper: add an empty test-tool program
t/helper: merge test-chmtime into test-tool
t/helper: merge test-sha1 into test-tool
t/helper: merge test-lazy-init-name-hash into test-tool
t/helper: merge test-config into test-tool
t/helper: merge test-ctype into test-tool
t/helper: merge test-date into test-tool
t/helper: merge (unused) test-delta into test-tool
t/helper: merge test-drop-caches into test-tool
t/helper: merge test-dump-cache-tree into test-tool
t/helper: merge test-dump-split-index into test-tool
t/helper: merge test-example-decorate into test-tool
t/helper: merge test-genrandom into test-tool
t/helper: merge test-hashmap into test-tool
t/helper: merge test-index-version into test-tool
t/helper: merge (unused) test-match-trees into test-tool
t/helper: merge (unused) test-mergesort into test-tool
t/helper: merge test-mktemp into test-tool
t/helper: merge test-online-cpus into test-tool
t/helper: merge test-path-utils into test-tool
t/helper: merge test-prio-queue into test-tool
t/helper: merge test-read-cache into test-tool
t/helper: merge test-ref-store into test-tool
t/helper: merge test-regex into test-tool
t/helper: merge test-revision-walking into test-tool
t/helper: merge test-run-command into test-tool
t/helper: merge test-scrap-cache-tree into test-tool
t/helper: merge test-sha1-array into test-tool
t/helper: merge test-sigchain into test-tool
t/helper: merge test-strcmp-offset into test-tool
t/helper: merge test-string-list into test-tool
t/helper: merge test-submodule-config into test-tool
t/helper: merge test-subprocess into test-tool
t/helper: merge test-urlmatch-normalization into test-tool
t/helper: merge test-wildmatch into test-tool
t/helper: merge test-write-cache into test-tool
trace.c: export trace_setup_key
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
pack-objects: a bit of document about struct object_entry
pack-objects: turn type and in_pack_type to bitfields
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: use bitfield for object_entry::depth
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: move in_pack out of struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: don't check size when the object is bad
pack-objects: clarify the use of object_entry::size
pack-objects: shrink size field in struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: reorder members to shrink struct object_entry
ci: exercise the whole test suite with uncommon code in pack-objects
t7700: have closing quote of a test at the beginning of line
repack: add --keep-pack option
gc: add --keep-largest-pack option
gc: add gc.bigPackThreshold config
gc: handle a corner case in gc.bigPackThreshold
gc --auto: exclude base pack if not enough mem to "repack -ad"
pack-objects: show some progress when counting kept objects
connect.c: mark die_initial_contact() NORETURN
Makefile: detect compiler and enable more warnings in DEVELOPER=1
submodule--helper: don't print null in 'submodule status'
doc: keep first level section header in upper case
pack-objects: validation and documentation about unreachable options
completion: fix misspelled config key aliasesfiletype
repository: fix free problem with repo_clear(the_repository)
pack-format.txt: more details on pack file format
column: fix off-by-one default width
commit.h: rearrange 'index' to shrink struct commit
travis-ci: run gcc-8 on linux-gcc jobs
Olga Telezhnaya (6):
ref-filter: add shortcut to work with strbufs
ref-filter: start adding strbufs with errors
ref-filter: add return value && strbuf to handlers
ref-filter: change parsing function error handling
ref-filter: add return value to parsers
ref-filter: libify get_ref_atom_value()
Paul-Sebastian Ungureanu (2):
parse-options: do not show usage upon invalid option value
t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Philip Oakley (1):
Avoid multiple PREFIX definitions
Phillip Wood (7):
rebase --root: stop assuming squash_onto is unset
rebase -i --keep-empty: don't prune empty commits
rebase: respect --no-keep-empty
rebase: extend --signoff support
rebase -p: error out if --signoff is given
rebase --keep-empty: always use interactive rebase
rebase --rebase-merges: add test for --keep-empty
Pratik Karki (1):
test: avoid pipes in git related commands for test
Ramsay Jones (1):
BUG_exit_code: fix sparse "symbol not declared" warning
René Scharfe (8):
sha1_name: use bsearch_pack() in unique_in_pack()
bisect: use oid_to_hex() for converting object_id hashes to hex strings
run-command: use strbuf_addstr() for adding a string to a strbuf
submodule: check for NULL return of get_submodule_ref_store()
replace_object: use oidmap
fast-export: avoid NULL pointer arithmetic
t5512: run git fetch inside test
fsmonitor: use internal argv_array of struct child_process
Ryan Dammrose (1):
push: colorize errors
SZEDER Gábor (22):
test_must_be_empty: simplify file existence check
t9902-completion: add tests demonstrating issues with quoted pathnames
completion: move __git_complete_index_file() next to its helpers
completion: simplify prefix path component handling during path completion
completion: support completing non-ASCII pathnames
completion: improve handling quoted paths on the command line
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: use 'awk' to strip trailing path components
t9902-completion: ignore COMPREPLY element order in some tests
completion: remove repeated dirnames with 'awk' during path completion
completion: improve handling quoted paths in 'git ls-files's output
completion: fill COMPREPLY directly when completing paths
completion: reduce overhead of clearing cached --options
docs/git-gc: fix minor rendering issue
coccinelle: avoid wrong transformation suggestions from commit.cocci
t6050-replace: don't disable stdin for the whole test script
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
t5516-fetch-push: fix 'push with dry-run' test
t5516-fetch-push: fix broken &&-chain
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
completion: don't return with error from __gitcomp_file_direct()
t9902-completion: exercise __git_complete_index_file() directly
Sergey Organov (1):
glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Stefan Agner (1):
send-email: avoid duplicate In-Reply-To/References
Stefan Beller (81):
repository: introduce raw object store field
object-store: migrate alternates struct and functions from cache.h
object-store: move alt_odb_list and alt_odb_tail to object store
object-store: free alt_odb_list
object-store: move packed_git and packed_git_mru to object store
object-store: close all packs upon clearing the object store
pack: move prepare_packed_git_run_once to object store
pack: move approximate object count to object store
sha1_file: add raw_object_store argument to alt_odb_usable
sha1_file: add repository argument to link_alt_odb_entry
sha1_file: add repository argument to read_info_alternates
sha1_file: add repository argument to link_alt_odb_entries
sha1_file: add repository argument to prepare_alt_odb
sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
sha1_file: allow prepare_alt_odb to handle arbitrary repositories
sha1_file: add repository argument to sha1_file_name
sha1_file: add repository argument to stat_sha1_file
sha1_file: add repository argument to open_sha1_file
sha1_file: add repository argument to map_sha1_file_1
sha1_file: add repository argument to map_sha1_file
sha1_file: add repository argument to sha1_loose_object_info
sha1_file: allow sha1_file_name to handle arbitrary repositories
sha1_file: allow stat_sha1_file to handle arbitrary repositories
sha1_file: allow open_sha1_file to handle arbitrary repositories
sha1_file: allow map_sha1_file to handle arbitrary repositories
packfile: allow prepare_packed_git_mru to handle arbitrary repositories
packfile: allow rearrange_packed_git to handle arbitrary repositories
packfile: allow install_packed_git to handle arbitrary repositories
packfile: add repository argument to prepare_packed_git_one
packfile: add repository argument to prepare_packed_git
packfile: add repository argument to reprepare_packed_git
packfile: allow prepare_packed_git_one to handle arbitrary repositories
packfile: allow prepare_packed_git to handle arbitrary repositories
packfile: allow reprepare_packed_git to handle arbitrary repositories
packfile: add repository argument to find_pack_entry
packfile: allow find_pack_entry to handle arbitrary repositories
submodule.h: drop declaration of connect_work_tree_and_git_dir
submodule-config: allow submodule_free to handle arbitrary repositories
submodule-config: add repository argument to submodule_from_{name, path}
submodule-config: remove submodule_from_cache
submodule: fixup nested submodules after moving the submodule
write_or_die.c: rename to use dashes in file name
unicode_width.h: rename to use dash in file name
exec_cmd: rename to use dash in file name
sha1_name.c: rename to use dash in file name
sha1_file.c: rename to use dash in file name
replace_object.c: rename to use dash in file name
replace-object: move replace_map to object store
object-store: move lookup_replace_object to replace-object.h
replace-object: eliminate replace objects prepared flag
replace-object: check_replace_refs is safe in multi repo environment
refs: add repository argument to get_main_ref_store
refs: add repository argument to for_each_replace_ref
replace-object: add repository argument to prepare_replace_object
replace-object: add repository argument to do_lookup_replace_object
replace-object: add repository argument to lookup_replace_object
refs: store the main ref store inside the repository struct
refs: allow for_each_replace_ref to handle arbitrary repositories
replace-object: allow prepare_replace_object to handle arbitrary repositories
replace-object: allow do_lookup_replace_object to handle arbitrary repositories
replace-object: allow lookup_replace_object to handle arbitrary repositories
worktree: accept -f as short for --force for removal
builtin/blame: dim uninteresting metadata lines
builtin/blame: highlight recently changed lines
builtin/blame: add new coloring scheme config
cache.h: add repository argument to oid_object_info_extended
cache.h: add repository argument to oid_object_info
packfile: add repository argument to retry_bad_packed_offset
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to read_object
packfile: add repository argument to unpack_entry
packfile: add repository argument to cache_or_unpack_entry
cache.h: allow oid_object_info to handle arbitrary repositories
git-rebase--interactive: clarify arguments
object.c: free replace map in raw_object_store_clear
replace-object.c: remove the_repository from prepare_replace_object
grep: handle corrupt index files early
git-submodule.sh: try harder to fetch a submodule
submodule.c: move submodule merging to merge-recursive.c
merge-recursive: i18n submodule merge output and respect verbosity
object.c: clear replace map before freeing it
Takuto Ikuta (1):
fetch-pack.c: use oidset to check existence of loose object
Tao Qingyun (1):
t1510-repo-setup.sh: remove useless mkdir
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Thomas Gummerer (10):
stash push: avoid printing errors
stash push -u: don't create empty stash
stash: drop superfluos pathspec parameter
SubmittingPatches: mention the git contacts command
completion: stop showing 'save' for stash by default
completion: make stash -p and alias for stash push -p
worktree: remove extra members from struct add_opts
worktree: improve message when creating a new worktree
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
Todd Zullinger (1):
doc/clone: update caption for GIT URLS cross-reference
Torsten Bögershausen (1):
test: correct detection of UTF8_NFD_TO_NFC for APFS
Wink Saville (8):
rebase-interactive: simplify pick_on_preserving_merges
rebase: update invocation of rebase dot-sourced scripts
rebase: reindent function git_rebase__interactive
rebase: extract functions out of git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove merges_option and a blank line
Yuki Kokubun (1):
filter-branch: fix errors caused by refs that point at non-committish
brian m. carlson (121):
bulk-checkin: convert index_bulk_checkin to struct object_id
builtin/write-tree: convert to struct object_id
cache-tree: convert write_*_as_tree to object_id
cache-tree: convert remnants to struct object_id
resolve-undo: convert struct resolve_undo_info to object_id
tree: convert read_tree_recursive to struct object_id
ref-filter: convert grab_objectname to struct object_id
strbuf: convert strbuf_add_unique_abbrev to use struct object_id
wt-status: convert struct wt_status_state to object_id
Convert find_unique_abbrev* to struct object_id
http-walker: convert struct object_request to use struct object_id
send-pack: convert remaining functions to struct object_id
replace_object: convert struct replace_object to object_id
builtin/mktag: convert to struct object_id
archive: convert write_archive_entry_fn_t to object_id
archive: convert sha1_file_to_archive to struct object_id
builtin/index-pack: convert struct ref_delta_entry to object_id
sha1_file: convert read_loose_object to use struct object_id
sha1_file: convert check_sha1_signature to struct object_id
streaming: convert open_istream to use struct object_id
builtin/mktree: convert to struct object_id
sha1_file: convert assert_sha1_type to object_id
sha1_file: convert retry_bad_packed_offset to struct object_id
packfile: convert unpack_entry to struct object_id
Convert remaining callers of sha1_object_info_extended to object_id
sha1_file: convert sha1_object_info* to object_id
builtin/fmt-merge-msg: convert remaining code to object_id
builtin/notes: convert static functions to object_id
tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
streaming: convert istream internals to struct object_id
tree-walk: convert tree entry functions to object_id
sha1_file: convert read_object_with_reference to object_id
sha1_file: convert read_sha1_file to struct object_id
Convert lookup_replace_object to struct object_id
sha1_file: introduce a constant for max header length
convert: convert to struct object_id
sha1_name: convert struct min_abbrev_data to object_id
t1011: abstract away SHA-1-specific constants
t1304: abstract away SHA-1-specific constants
t1300: abstract away SHA-1-specific constants
t1405: sort reflog entries in a hash-independent way
t1411: abstract away SHA-1-specific constants
t1507: abstract away SHA-1-specific constants
t2020: abstract away SHA-1 specific constants
t2101: modernize test style
t2101: abstract away SHA-1-specific constants
t2107: abstract away SHA-1-specific constants
format-patch: make cover letters always text/plain
cache: add a function to read an object ID from a buffer
server-info: remove unused members from struct pack_info
Remove unused member in struct object_context
packfile: remove unused member from struct pack_entry
packfile: convert has_sha1_pack to object_id
sha1-file: convert freshen functions to object_id
packfile: convert find_pack_entry to object_id
packfile: abstract away hash constant values
pack-objects: abstract away hash algorithm
pack-redundant: abstract away hash algorithm
tree-walk: avoid hard-coded 20 constant
tree-walk: convert get_tree_entry_follow_symlinks to object_id
fsck: convert static functions to struct object_id
submodule-config: convert structures to object_id
split-index: convert struct split_index to object_id
Update struct index_state to use struct object_id
pack-redundant: convert linked lists to use struct object_id
index-pack: abstract away hash function constant
commit: convert uses of get_sha1_hex to get_oid_hex
dir: convert struct untracked_cache_dir to object_id
http: eliminate hard-coded constants
revision: replace use of hard-coded constants
upload-pack: replace use of several hard-coded constants
diff: specify abbreviation size in terms of the_hash_algo
builtin/receive-pack: avoid hard-coded constants for push certs
sha1-file: add functions for hex empty tree and blob OIDs
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
builtin/merge: switch tree functions to use object_id
merge: convert empty tree constant to the_hash_algo
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
sha1_file: convert cached object code to struct object_id
cache-tree: use is_empty_tree_oid
sequencer: use the_hash_algo for empty tree object ID
dir: use the_hash_algo for empty blob object ID
sha1_file: only expose empty object constants through git_hash_algo
Update shell scripts to compute empty tree object ID
add--interactive: compute the empty tree value
merge-one-file: compute empty blob object ID
Documentation: use 8-space tabs with Asciidoctor
Documentation: render revisions correctly under Asciidoctor
mailmap: update brian m. carlson's email address
t/test-lib: add an SHA1 prerequisite
t/test-lib: introduce ZERO_OID
t: switch $_z40 to $ZERO_OID
t/test-lib: introduce OID_REGEX
t: switch $_x40 to $OID_REGEX
t0000: annotate with SHA1 prerequisite
t1007: annotate with SHA1 prerequisite
t1512: skip test if not using SHA-1
t4044: skip test if not using SHA-1
t: skip pack tests if not using SHA-1
t2203: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4022: abstract away SHA-1-specific constants
t4029: fix test indentation
t4029: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t4042: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t5300: abstract away SHA-1-specific constants
Ævar Arnfjörð Bjarmason (21):
configure: fix a regression in PCRE v1 detection
configure: detect redundant --with-libpcre & --with-libpcre1
Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
Makefile: fix broken bindir_relative variable
Makefile: add a gitexecdir_relative variable
Makefile: optionally symlink libexec/git-core binaries to bin/git
Remove contrib/examples/*
doc hash-function-transition: clarify how older gits die on NewHash
doc hash-function-transition: clarify what SHAttered means
git-svn: avoid warning on undef readline()
Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
Makefile: add a DEVOPTS to get all of -Wextra
git{,-blame}.el: remove old bitrotting Emacs code
.gitattributes: add *.pl extension for Perl
.gitattributes: use the "perl" differ for Perl
.gitattributes: add a diff driver for Python
sha1-name.c: remove stray newline
sha1-array.h: align function arguments
git-p4: change "commitish" typo to "committish"
sha1-name.c: move around the collect_ambiguous() function
get_short_oid: sort ambiguous objects by type, then SHA-1
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.16.0
@ 2018-01-18 5:54 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-01-18 5:54 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.16.0 is now available at the
usual places. It is comprised of 509 non-merge commits since
v2.15.0, contributed by 91 people, 26 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.16.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.15.0 are as follows.
Welcome to the Git development community!
Albert Astals Cid, Antoine Beaupré, Damien Marié, Daniel
Bensoussan, Fangyi Zhou, Florian Klink, Gennady Kupava, Guillaume
Castagnino, Haaris Mehmood, Hans Jerry Illikainen, Ingo Ruhnke,
Jakub Bereżański, Jean Carlo Machado, Julien Dusser, J Wyman,
Kevin, Louis Bettens, Łukasz Stelmach, Marius Paliga, Olga
Telezhnaya, Rafael Ascensão, Robert Abel, Robert P. J. Day,
Shuyu Wei, Wei Shuyu, and Zhou Fangyi.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Shopov,
Alex Vandiver, Anders Kaseorg, Andrey Okoshkin, Ann T Ropea,
Beat Bolli, Ben Peart, Brandon Williams, brian m. carlson, Carlos
Martín Nieto, Changwoo Ryu, Charles Bailey, Christian Couder,
Christopher Díaz Riveros, Dave Borowitz, Dennis Kaarsemaker,
Derrick Stolee, Dimitriy Ryazantcev, Elijah Newren, Emily Xie,
Eric Sunshine, Eric Wong, Heiko Voigt, Jacob Keller, Jameson
Miller, Jean-Noel Avila, Jeff Hostetler, Jeff King, Jiang Xin,
Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Jordi Mas,
Junio C Hamano, Kaartic Sivaraam, Kevin Daudt, Lars Schneider,
Liam Beguin, Luke Diamand, Martin Ågren, Michael Haggerty,
Nicolas Morey-Chaisemartin, Peter Krefting, Phil Hord, Phillip
Wood, Pranit Bauva, Prathamesh Chavan, Ralf Thielow, Ramsay
Jones, Randall S. Becker, Rasmus Villemoes, René Scharfe,
Simon Ruderich, Stefan Beller, Steffen Prohaska, Stephan Beyer,
SZEDER Gábor, Thomas Braun, Thomas Gummerer, Todd Zullinger,
Torsten Bögershausen, Trần Ngọc Quân, and W. Trevor King.
----------------------------------------------------------------
Git 2.16 Release Notes
======================
Backward compatibility notes and other notable changes.
* Use of an empty string as a pathspec element that is used for
'everything matches' is now an error.
Updates since v2.15
-------------------
UI, Workflows & Features
* An empty string as a pathspec element that means "everything"
i.e. 'git add ""', is now illegal. We started this by first
deprecating and warning a pathspec that has such an element in
2.11 (Nov 2016).
* A hook script that is set unexecutable is simply ignored. Git
notifies when such a file is ignored, unless the message is
squelched via advice.ignoredHook configuration.
* "git pull" has been taught to accept "--[no-]signoff" option and
pass it down to "git merge".
* The "--push-option=<string>" option to "git push" now defaults to a
list of strings configured via push.pushOption variable.
* "gitweb" checks if a directory is searchable with Perl's "-x"
operator, which can be enhanced by using "filetest 'access'"
pragma, which now we do.
* "git stash save" has been deprecated in favour of "git stash push".
* The set of paths output from "git status --ignored" was tied
closely with its "--untracked=<mode>" option, but now it can be
controlled more flexibly. Most notably, a directory that is
ignored because it is listed to be ignored in the ignore/exclude
mechanism can be handled differently from a directory that ends up
to be ignored only because all files in it are ignored.
* The remote-helper for talking to MediaWiki has been updated to
truncate an overlong pagename so that ".mw" suffix can still be
added.
* The remote-helper for talking to MediaWiki has been updated to
work with mediawiki namespaces.
* The "--format=..." option "git for-each-ref" takes learned to show
the name of the 'remote' repository and the ref at the remote side
that is affected for 'upstream' and 'push' via "%(push:remotename)"
and friends.
* Doc and message updates to teach users "bisect view" is a synonym
for "bisect visualize".
* "git bisect run" that did not specify any command to run used to go
ahead and treated all commits to be tested as 'good'. This has
been corrected by making the command error out.
* The SubmittingPatches document has been converted to produce an
HTML version via AsciiDoc/Asciidoctor.
* We learned to optionally talk to a file system monitor via new
fsmonitor extension to speed up "git status" and other operations
that need to see which paths have been modified. Currently we only
support "watchman". See File System Monitor section of
git-update-index(1) for more detail.
* The "diff" family of commands learned to ignore differences in
carriage return at the end of line.
* Places that know about "sendemail.to", like documentation and shell
completion (in contrib/) have been taught about "sendemail.tocmd",
too.
* "git add --renormalize ." is a new and safer way to record the fact
that you are correcting the end-of-line convention and other
"convert_to_git()" glitches in the in-repository data.
* "git branch" and "git checkout -b" are now forbidden from creating
a branch whose name is "HEAD".
* "git branch --list" learned to show its output through the pager by
default when the output is going to a terminal, which is controlled
by the pager.branch configuration variable. This is similar to a
recent change to "git tag --list".
* "git grep -W", "git diff -W" and their friends learned a heuristic
to extend a pre-context beyond the line that matches the "function
pattern" (aka "diff.*.xfuncname") to include a comment block, if
exists, that immediately precedes it.
* "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
the configuration and report it as a timestamp, just like "--int"
would read "1k" and report 1024, to help consumption by scripts.
* The shell completion (in contrib/) learned that "git pull" can take
the "--autostash" option.
* The tagnames "git log --decorate" uses to annotate the commits can
now be limited to subset of available refs with the two additional
options, --decorate-refs[-exclude]=<pattern>.
* "git grep" compiled with libpcre2 sometimes triggered a segfault,
which is being fixed.
* "git send-email" tries to see if the sendmail program is available
in /usr/lib and /usr/sbin; extend the list of locations to be
checked to also include directories on $PATH.
* "git diff" learned, "--anchored", a variant of the "--patience"
algorithm, to which the user can specify which 'unique' line to be
used as anchoring points.
* The way "git worktree add" determines what branch to create from
where and checkout in the new worktree has been updated a bit.
* Ancient part of codebase still shows dots after an abbreviated
object name just to show that it is not a full object name, but
these ellipses are confusing to people who newly discovered Git
who are used to seeing abbreviated object names and find them
confusing with the range syntax.
* With a configuration variable rebase.abbreviateCommands set,
"git rebase -i" produces the todo list with a single-letter
command names.
* "git worktree add" learned to run the post-checkout hook, just like
"git checkout" does, after the initial checkout.
* "git svn" has been updated to strip CRs in the commit messages, as
recent versions of Subversion rejects them.
* "git imap-send" did not correctly quote the folder name when
making a request to the server, which has been corrected.
* Error messages from "git rebase" have been somewhat cleaned up.
* Git has been taught to support an https:// URL used for http.proxy
when using recent versions of libcurl.
* "git merge" learned to pay attention to merge.verifySignatures
configuration variable and pretend as if '--verify-signatures'
option was given from the command line.
* "git describe" was taught to dig trees deeper to find a
<commit-ish>:<path> that refers to a given blob object.
Performance, Internal Implementation, Development Support etc.
* An earlier update made it possible to use an on-stack in-core
lockfile structure (as opposed to having to deliberately leak an
on-heap one). Many codepaths have been updated to take advantage
of this new facility.
* Calling cmd_foo() as if it is a general purpose helper function is
a no-no. Correct two instances of such to set an example.
* We try to see if somebody runs our test suite with a shell that
does not support "local" like bash/dash does.
* An early part of piece-by-piece rewrite of "git bisect" in C.
* GSoC to piece-by-piece rewrite "git submodule" in C.
* Optimize the code to find shortest unique prefix of object names.
* Pathspec-limited revision traversal was taught not to keep finding
unneeded differences once it knows two trees are different inside
given pathspec.
* Conversion from uchar[20] to struct object_id continues.
* Code cleanup.
* A single-word "unsigned flags" in the diff options is being split
into a structure with many bitfields.
* TravisCI build updates.
* Parts of a test to drive the long-running content filter interface
has been split into its own module, hopefully to eventually become
reusable.
* Drop (perhaps overly cautious) sanity check before using the index
read from the filesystem at runtime.
* The build procedure has been taught to avoid some unnecessary
instability in the build products.
* A new mechanism to upgrade the wire protocol in place is proposed
and demonstrated that it works with the older versions of Git
without harming them.
* An infrastructure to define what hash function is used in Git is
introduced, and an effort to plumb that throughout various
codepaths has been started.
* The code to iterate over loose object files got optimized.
* An internal function that was left for backward compatibility has
been removed, as there is no remaining callers.
* Historically, the diff machinery for rename detection had a
hardcoded limit of 32k paths; this is being lifted to allow users
trade cycles with a (possibly) easier to read result.
* The tracing infrastructure has been optimized for cases where no
tracing is requested.
* In preparation for implementing narrow/partial clone, the object
walking machinery has been taught a way to tell it to "filter" some
objects from enumeration.
* A few structures and variables that are implementation details of
the decorate API have been renamed and then the API got documented
better.
* Assorted updates for TravisCI integration.
(merge 4f26366679 sg/travis-fixes later to maint).
* Introduce a helper to simplify code to parse a common pattern that
expects either "--key" or "--key=<something>".
* "git version --build-options" learned to report the host CPU and
the exact commit object name the binary was built from.
Also contains various documentation updates and code clean-ups.
Fixes since v2.15
-----------------
* "auto" as a value for the columnar output configuration ought to
judge "is the output consumed by humans?" with the same criteria as
"auto" for coloured output configuration, i.e. either the standard
output stream is going to tty, or a pager is in use. We forgot the
latter, which has been fixed.
* The experimental "color moved lines differently in diff output"
feature was buggy around "ignore whitespace changes" edges, which
has been corrected.
* Instead of using custom line comparison and hashing functions to
implement "moved lines" coloring in the diff output, use the pair
of these functions from lower-layer xdiff/ code.
* Some codepaths did not check for errors when asking what branch the
HEAD points at, which have been fixed.
* "git commit", after making a commit, did not check for errors when
asking on what branch it made the commit, which has been corrected.
* "git status --ignored -u" did not stop at a working tree of a
separate project that is embedded in an ignored directory and
listed files in that other project, instead of just showing the
directory itself as ignored.
* A broken access to object databases in recent update to "git grep
--recurse-submodules" has been fixed.
* A recent regression in "git rebase -i" that broke execution of git
commands from subdirectories via "exec" instruction has been fixed.
* A (possibly flakey) test fix.
* "git check-ref-format --branch @{-1}" bit a "BUG()" when run
outside a repository for obvious reasons; clarify the documentation
and make sure we do not even try to expand the at-mark magic in
such a case, but still call the validation logic for branch names.
* "git fetch --recurse-submodules" now knows that submodules can be
moved around in the superproject in addition to getting updated,
and finds the ones that need to be fetched accordingly.
* Command line completion (in contrib/) update.
* Description of blame.{showroot,blankboundary,showemail,date}
configuration variables have been added to "git config --help".
* After an error from lstat(), diff_populate_filespec() function
sometimes still went ahead and used invalid data in struct stat,
which has been fixed.
* UNC paths are also relevant in Cygwin builds and they are now
tested just like Mingw builds.
* Correct start-up sequence so that a repository could be placed
immediately under the root directory again (which was broken at
around Git 2.13).
* The credential helper for libsecret (in contrib/) has been improved
to allow possibly prompting the end user to unlock secrets that are
currently locked (otherwise the secrets may not be loaded).
* MinGW updates.
* Error checking in "git imap-send" for empty response has been
improved.
* Recent update to the refs infrastructure implementation started
rewriting packed-refs file more often than before; this has been
optimized again for most trivial cases.
* Some error messages did not quote filenames shown in it, which have
been fixed.
* "git rebase -i" recently started misbehaving when a submodule that
is configured with 'submodule.<name>.ignore' is dirty; this has
been corrected.
* Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.
* We used to add an empty alternate object database to the system
that does not help anything; it has been corrected.
* Doc update around use of "format-patch --subject-prefix" etc.
* A fix for an ancient bug in "git apply --ignore-space-change" codepath.
* Clarify and enhance documentation for "merge-base --fork-point", as
it was clear what it computed but not why/what for.
* A few scripts (both in production and tests) incorrectly redirected
their error output. These have been corrected.
* "git notes" sent its error message to its standard output stream,
which was corrected.
* The three-way merge performed by "git cherry-pick" was confused
when a new submodule was added in the meantime, which has been
fixed (or "papered over").
* The sequencer machinery (used by "git cherry-pick A..B", and "git
rebase -i", among other things) would have lost a commit if stopped
due to an unlockable index file, which has been fixed.
* "git apply --inaccurate-eof" when used with "--ignore-space-change"
triggered an internal sanity check, which has been fixed.
* Command line completion (in contrib/) has been taught about the
"--copy" option of "git branch".
* When "git rebase" prepared a mailbox of changes and fed it to "git
am" to replay them, it was confused when a stray "From " happened
to be in the log message of one of the replayed changes. This has
been corrected.
* There was a recent semantic mismerge in the codepath to write out a
section of a configuration section, which has been corrected.
* Mentions of "git-rebase" and "git-am" (dashed form) still remained
in end-user visible strings emitted by the "git rebase" command;
they have been corrected.
* Contrary to the documentation, "git pull -4/-6 other-args" did not
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
corrected.
* "git checkout --recursive" may overwrite and rewind the history of
the branch that happens to be checked out in submodule
repositories, which might not be desirable. Detach the HEAD but
still allow the recursive checkout to succeed in such a case.
(merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).
* "git branch --set-upstream" has been deprecated and (sort of)
removed, as "--set-upstream-to" is the preferred one these days.
The documentation still had "--set-upstream" listed on its
synopsis section, which has been corrected.
(merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).
* Internally we use 0{40} as a placeholder object name to signal the
codepath that there is no such object (e.g. the fast-forward check
while "git fetch" stores a new remote-tracking ref says "we know
there is no 'old' thing pointed at by the ref, as we are creating
it anew" by passing 0{40} for the 'old' side), and expect that a
codepath to locate an in-core object to return NULL as a sign that
the object does not exist. A look-up for an object that does not
exist however is quite costly with a repository with large number
of packfiles. This access pattern has been optimized.
(merge 87b5e236a1 jk/fewer-pack-rescan later to maint).
* In addition to "git stash -m message", the command learned to
accept "git stash -mmessage" form.
(merge 5675473fcb ph/stash-save-m-option-fix later to maint).
* @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
but the documentation was not clear about it, which has been fixed.
(merge 75ce149575 ks/doc-checkout-previous later to maint).
* A regression in the progress eye-candy was fixed.
(merge 9c5951cacf jk/progress-delay-fix later to maint).
* The code internal to the recursive merge strategy was not fully
prepared to see a path that is renamed to try overwriting another
path that is only different in case on case insensitive systems.
This does not matter in the current code, but will start to matter
once the rename detection logic starts taking hints from nearby
paths moving to some directory and moves a new path along with them.
(merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).
* An v2.12-era regression in pathspec match logic, which made it look
into submodule tree even when it is not desired, has been fixed.
(merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).
* Amending commits in git-gui broke the author name that is non-ascii
due to incorrect enconding conversion.
* Recent update to the submodule configuration code broke "diff-tree"
by accidentally stopping to read from the index upfront.
(merge fd66bcc31f bw/submodule-config-cleanup later to maint).
* Git shows a message to tell the user that it is waiting for the
user to finish editing when spawning an editor, in case the editor
opens to a hidden window or somewhere obscure and the user gets
lost.
(merge abfb04d0c7 ls/editor-waiting-message later to maint).
* The "safe crlf" check incorrectly triggered for contents that does
not use CRLF as line endings, which has been corrected.
(merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).
* "git clone --shared" to borrow from a (secondary) worktree did not
work, even though "git clone --local" did. Both are now accepted.
(merge b3b05971c1 es/clone-shared-worktree later to maint).
* The build procedure now allows not just the repositories but also
the refs to be used to take pre-formatted manpages and html
documents to install.
(merge 65289e9dcd rb/quick-install-doc later to maint).
* Update the shell prompt script (in contrib/) to strip trailing CR
from strings read from various "state" files.
(merge 041fe8fc83 ra/prompt-eread-fix later to maint).
* "git merge -s recursive" did not correctly abort when the index is
dirty, if the merged tree happened to be the same as the current
HEAD, which has been fixed.
* Bytes with high-bit set were encoded incorrectly and made
credential helper fail.
(merge 4c267f2ae3 jd/fix-strbuf-add-urlencode-bytes later to maint).
* "git rebase -p -X<option>" did not propagate the option properly
down to underlying merge strategy backend.
(merge dd6fb0053c js/fix-merge-arg-quoting-in-rebase-p later to maint).
* "git merge -s recursive" did not correctly abort when the index is
dirty, if the merged tree happened to be the same as the current
HEAD, which has been fixed.
(merge f309e8e768 ew/empty-merge-with-dirty-index-maint later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
(merge 0ba014035a rd/man-reflog-add-n later to maint).
(merge e54b63359f rd/doc-notes-prune-fix later to maint).
(merge ff4c9b413a sp/doc-info-attributes later to maint).
(merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
(merge 5a0526264b tg/t-readme-updates later to maint).
(merge 5e83cca0b8 jk/no-optional-locks later to maint).
(merge 826c778f7c js/hashmap-update-sample later to maint).
(merge 176b2d328c sg/setup-doc-update later to maint).
(merge 1b09073514 rs/am-builtin-leakfix later to maint).
(merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
(merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
(merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
(merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
(merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
(merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
(merge d0e6326026 ot/pretty later to maint).
(merge 44103f4197 sb/test-helper-excludes later to maint).
(merge 170078693f jt/transport-no-more-rsync later to maint).
(merge c07b3adff1 bw/path-doc later to maint).
(merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
(merge dec366c9a8 sr/http-sslverify-config-doc later to maint).
(merge 3f824e91c8 jk/test-suite-tracing later to maint).
(merge 1feb061701 db/doc-config-section-names-with-bs later to maint).
(merge 74dea0e13c jh/memihash-opt later to maint).
(merge 2e9fdc795c ma/bisect-leakfix later to maint).
----------------------------------------------------------------
Changes since v2.15.0 are as follows:
Adam Dinwoodie (3):
t5580: add Cygwin support
rebase -i: fix comment typo
doc/SubmittingPatches: correct subject guidance
Albert Astals Cid (1):
completion: add --autostash and --no-autostash to pull
Alex Vandiver (7):
fsmonitor: read entirety of watchman output
fsmonitor: set the PWD to the top of the working tree
fsmonitor: don't bother pretty-printing JSON from watchman
fsmonitor: document GIT_TRACE_FSMONITOR
fsmonitor: delay updating state until after split index is merged
fsmonitor: read from getcwd(), not the PWD environment variable
fsmonitor: store fsmonitor bitmap before splitting index
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (3284t)
l10n: bg.po: Updated Bulgarian translation (3288t)
Anders Kaseorg (1):
git-gui: sort entries in optimized tclIndex
Andrey Okoshkin (3):
commit: check result of resolve_ref_unsafe
diff: fix lstat() error handling in diff_populate_filespec()
merge-recursive: check GIT_MERGE_VERBOSITY only once
Ann T Ropea (7):
Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
Documentation: user-manual: limit usage of ellipsis
print_sha1_ellipsis: introduce helper
checkout: describe_detached_head: remove ellipsis after committish
t4013: prepare for upcoming "diff --raw --abbrev" output format change
diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
t4013: test new output from diff --abbrev --raw
Antoine Beaupré (6):
remote-mediawiki: limit filenames to legal
remote-mediawiki: show known namespace choices on failure
remote-mediawiki: skip virtual namespaces
remote-mediawiki: support fetching from (Main) namespace
remote-mediawiki: process namespaces in order
remote-mediawiki: show progress while fetching namespaces
Beat Bolli (2):
contrib/git-jump: allow to configure the grep command
t3900: add some more quotes
Ben Peart (16):
bswap: add 64 bit endianness helper get_be64
preload-index: add override to enable testing preload-index
update-index: add a new --force-write-index option
fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
fsmonitor: add documentation for the fsmonitor extension.
ls-files: Add support in ls-files to display the fsmonitor valid bit
update-index: add fsmonitor support to update-index
fsmonitor: add a test tool to dump the index extension
split-index: disable the fsmonitor extension when running the split index test
fsmonitor: add test cases for fsmonitor extension
fsmonitor: add a sample integration script for Watchman
fsmonitor: add a performance test
fsmonitor: MINGW support for watchman integration
fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
read_index_from(): speed index loading by skipping verification of the entry order
fsmonitor: simplify determining the git worktree under Windows
Brandon Williams (24):
pkt-line: add packet_write function
protocol: introduce protocol extension mechanisms
daemon: recognize hidden request arguments
upload-pack, receive-pack: introduce protocol version 1
connect: teach client to recognize v1 server response
connect: tell server that the client understands v1
http: tell server that the client understands v1
i5700: add interop test for protocol transition
ssh: introduce a 'simple' ssh variant
add, reset: use DIFF_OPT_SET macro to set a diff flag
diff: convert flags to be stored in bitfields
diff: add flag to indicate textconv was set via cmdline
diff: remove touched flags
diff: remove DIFF_OPT_TST macro
diff: remove DIFF_OPT_SET macro
diff: remove DIFF_OPT_CLR macro
diff: make struct diff_flags members lowercase
wt-status: actually ignore submodules when requested
pathspec: only match across submodule boundaries when requested
diff-tree: read the index so attribute checks work in bare repositories
submodule: convert stage_updated_gitmodules to take a struct index_state
submodule: used correct index in is_staging_gitmodules_ok
submodule: convert get_next_submodule to not rely on the_index
path: document path functions
Carlos Martín Nieto (1):
diff: --indent-heuristic is no longer experimental
Changwoo Ryu (2):
l10n: ko.po: Update Korean translation
l10n: TEAMS: Add ko team members
Charles Bailey (2):
t4201: make use of abbreviation in the test more robust
grep: fix NO_LIBPCRE1_JIT to fully disable JIT
Christian Couder (24):
perf/run: add '--config' option to the 'run' script
perf/run: add get_var_from_env_or_config()
perf/run: add GIT_PERF_DIRS_OR_REVS
perf/run: add calls to get_var_from_env_or_config()
perf/run: add get_subsections()
perf/run: update get_var_from_env_or_config() for subsections
perf/run: add run_subsection()
perf/run: show name of rev being built
perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
t0021/rot13-filter: fix list comparison
t0021/rot13-filter: refactor packet reading functions
t0021/rot13-filter: improve 'if .. elsif .. else' style
t0021/rot13-filter: improve error message
t0021/rot13-filter: add packet_initialize()
t0021/rot13-filter: refactor checking final lf
t0021/rot13-filter: add capability functions
Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
Git/Packet: clarify that packet_required_key_val_read allows EOF
Git/Packet.pm: use 'if' instead of 'unless'
list-objects-filter-options: fix 'keword' typo in comment
git-compat-util: introduce skip_to_optional_arg()
index-pack: use skip_to_optional_arg()
diff: use skip_to_optional_arg()
diff: use skip_to_optional_arg_default()
Christopher Díaz Riveros (3):
l10n: Update Spanish translation
l10n: es.po: Update Spanish Translation v2.16.0
l10n: es.po: Spanish translation 2.16.0 round 2
Damien Marié (1):
run-command: add hint when a hook is ignored
Daniel Bensoussan (1):
doc: reword gitworkflows.txt for neutrality
Dave Borowitz (1):
config.txt: document behavior of backslashes in subsections
Dennis Kaarsemaker (1):
credential-libsecret: unlock locked secrets
Derrick Stolee (5):
p4211-line-log.sh: add log --online --raw --parents perf test
sha1_name: unroll len loop in find_unique_abbrev_r()
sha1_name: parse less while finding common prefix
sha1_name: minimize OID comparisons during disambiguation
sha1_file: use strbuf_add() instead of strbuf_addf()
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elijah Newren (10):
sequencer: warn when internal merge may be suboptimal due to renameLimit
merge-recursive: handle addition of submodule on our side of history
progress: fix progress meters when dealing with lots of work
diff: remove silent clamp of renameLimit
sequencer: show rename progress during cherry picks
merge-recursive: ignore_case shouldn't reject intentional removals
strbuf: remove unused stripspace function alias
t6044: recursive can silently incorporate dirty changes in a merge
move index_has_changes() from builtin/am.c to merge.c for reuse
merge-recursive: avoid incorporating uncommitted changes in a merge
Emily Xie (1):
pathspec: die on empty strings as pathspec
Eric Sunshine (3):
worktree: invoke post-checkout hook (unless --no-checkout)
clone: support 'clone --shared' from a worktree
version --build-options: also report host CPU
Eric Wong (2):
rebase: use mboxrd format to avoid split errors
git-svn: convert CRLF to LF in commit message to SVN
Fangyi Zhou (1):
l10n: zh_CN translate parameter name
Florian Klink (1):
git-send-email: honor $PATH for sendmail binary
Gennady Kupava (2):
trace: remove trace key normalization
trace: improve performance while category is disabled
Guillaume Castagnino (1):
gitweb: use filetest to allow ACLs
Haaris Mehmood (1):
config: add --expiry-date
Hans Jerry Illikainen (2):
merge: add config option for verifySignatures
t: add tests for pull --verify-signatures
Heiko Voigt (3):
fetch: add test to make sure we stay backwards compatible
implement fetching of moved submodules
submodule: simplify decision tree whether to or not to fetch
Ingo Ruhnke (1):
remote-mediawiki: allow fetching namespaces with spaces
J Wyman (1):
for-each-ref: let upstream/push report the remote ref name
Jacob Keller (2):
sequencer: pass absolute GIT_DIR to exec commands
diff: add tests for --relative without optional prefix value
Jakub Bereżański (2):
t0302: check helper can handle empty credentials
wincred: handle empty username/password correctly
Jameson Miller (4):
status: add option to show ignored files differently
status: report matching ignored and normal untracked
status: document options to show matching ignored files
status: test ignored modes
Jean Carlo Machado (1):
fix typos in 2.15.0 release notes
Jean-Noel Avila (3):
submodule--helper.c: i18n: add a missing space in message
l10n: fr.po v2.16.0 round 1
l10n: fr.po 2.16 round 2
Jeff Hostetler (9):
dir: allow exclusions from blob in addition to file
oidmap: add oidmap iterator methods
oidset: add iterator methods to oidset
list-objects: filter objects in traverse_commit_list
rev-list: add list-objects filtering support
pack-objects: add list-objects filtering
list-objects-filter-options: support --no-filter
rev-list: support --no-filter argument
partial-clone: design doc
Jeff King (27):
revision: quit pruning diff more quickly when possible
t4015: refactor --color-moved whitespace test
t4015: check "negative" case for "-w --color-moved"
t4015: test the output of "diff --color-moved -b"
diff: fix whitespace-skipping with --color-moved
diff: handle NULs in get_string_hash()
test-ref-store: avoid passing NULL to printf
remote: handle broken symrefs
log: handle broken HEAD in decoration check
worktree: handle broken symrefs in find_shared_symref()
setup: avoid double slashes when looking for HEAD
link_alt_odb_entries: make empty input a noop
git-jump: give contact instructions in the README
p5550: factor out nonsense-pack creation
t/perf/lib-pack: use fast-import checkpoint to create packs
p5551: add a script to test fetch pack-dir rescans
everything_local: use "quick" object existence check
sha1_file: fast-path null sha1 as a missing object
git-status.txt: mention --no-optional-locks
progress: set default delay threshold to 100%, not 0%
docs/pretty-formats: mention commas in %(trailers) syntax
cvsimport: apply shell-quoting regex globally
test-lib: silence "-x" cleanup under bash
t5615: avoid re-using descriptor 4
test-lib: make "-x" work with "--verbose-log"
t/Makefile: introduce TEST_SHELL_PATH
docs/diff-options: clarify scope of diff-filter types
Jiang Xin (4):
l10n: git.pot: v2.16.0 round 1 (64 new, 25 removed)
l10n: git.pot: v2.16.0 round 2 (8 new, 4 removed)
l10n: zh_CN: for git v2.16.0 l10n round 2
l10n: TEAMS: add zh_CN team members
Johannes Schindelin (22):
for-each-ref: let upstream/push optionally report the remote name
status: do not get confused by submodules in excluded directories
mingw: include the full version information in the resources
mingw: add experimental feature to redirect standard handles
mingw: optionally redirect stderr/stdout via the same handle
mingw: document the standard handle redirection
for-each-ref: test :remotename and :remoteref
hashmap: adjust documentation to reflect reality
version --build-options: report commit, too, if possible
rebase: do not continue when the todo list generation failed
sequencer: strip bogus LF at end of error messages
sequencer: remove superfluous conditional
sequencer: report when noop has an argument
sequencer: do not invent whitespace when transforming OIDs
Allow the test suite to pass in a directory whose name contains spaces
t0302 & t3900: add forgotten quotes
rebase -p: fix quoting when calling `git merge`
git gui: fix staging a second line to a 1-line file
git-gui: avoid exception upon Ctrl+T in an empty list
git-gui: fix exception when trying to stage with empty file list
git-gui: allow Ctrl+T to toggle multiple paths
mingw: handle GITPERLLIB in t0021 in a Windows-compatible way
Jonathan Nieder (10):
ssh test: make copy_ssh_wrapper_as clean up after itself
connect: move no_fork fallback to git_tcp_connect
connect: split git:// setup into a separate function
connect: split ssh command line options into separate function
connect: split ssh option computation to its own function
ssh: 'auto' variant to select between 'ssh' and 'simple'
ssh: 'simple' variant does not support -4/-6
ssh: 'simple' variant does not support --port
connect: correct style of C-style comment
generate-cmdlist: avoid non-deterministic output
Jonathan Tan (10):
connect: in ref advertisement, shallows are last
Documentation: document Extra Parameters
Tests: clean up and document submodule helpers
Tests: clean up submodule recursive helpers
diff: support anchoring line(s)
diffcore-rename: make diff-tree -l0 mean -l<large>
decorate: clean up and document API
transport: remove unused "push" in vtable
clone, fetch: remove redundant transport check
transport: make transport vtable more private
Jordi Mas (1):
l10n: Fixes to Catalan translation
Julien Dusser (1):
strbuf: fix urlencode format string on signed char
Junio C Hamano (42):
t0027: do not use an empty string as a pathspec element
describe: do not use cmd_*() as a subroutine
merge-ours: do not use cmd_*() as a subroutine
branch: streamline "attr_only" handling in validate_new_branchname()
branch: split validate_new_branchname() into two
t5601: rm the target file of cp that could still be executing
check-ref-format --branch: do not expand @{...} outside repository
check-ref-format --branch: strip refs/heads/ using skip_prefix
check-ref-format doc: --branch validates and expands <branch>
column: do not include pager.c
xdiff: reassign xpparm_t.flags bits
The first batch for 2.16
RelNotes: the second batch post 2.15 comes
diff: --ignore-cr-at-eol
merge-base --fork-point doc: clarify the example and failure modes
RelNotes: the third batch for 2.16
branch: correctly reject refs/heads/{-dash,HEAD}
Start preparation for 2.15.1
RelNotes: the fourth batch for 2.16
Almost ready for 2.15.1
RelNotes: the fifth batch for 2.16
hooks doc: clarify when receive-pack invokes its hooks
A bit more fixes for 2.15.1
RelNotes: the sixth batch for 2.16
Git 2.15.1
RelNotes: the seventh batch
t2020: test variations that matter
Prepare for 2.15.2
RelNotes: the eighth batch
diff: use skip_to_optional_arg_default() in parsing --relative
t4045: reindent to make helpers readable
RelNotes: the ninth batch
RelNotes: the tenth batch
t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
sequencer.c: drop 'const' from function return type
RelNotes: the eleventh batch
Git 2.16-rc0
Git 2.16-rc1
merge-recursive: do not look at the index during recursive merge
RelNotes update before -rc2
Git 2.16-rc2
Git 2.16
Kaartic Sivaraam (12):
mailmap: use Kaartic Sivaraam's new address
builtin/branch: remove redundant check for HEAD
git-rebase: clean up dashed-usages in messages
Doc/checkout: checking out using @{-N} can lead to detached state
branch: improve documentation and naming of create_branch() parameters
branch: group related arguments of create_branch()
branch: update warning message shown when copying a misnamed branch
builtin/branch: strip refs/heads/ using skip_prefix
Doc/check-ref-format: clarify information about @{-N} syntax
rebase: consistently use branch_name variable
rebase: distinguish user input by quoting it
rebase: rebasing can also be done when HEAD is detached
Kevin (1):
remote-mediawiki: add namespace support
Kevin Daudt (1):
column: show auto columns when pager is active
Lars Schneider (3):
refactor "dumb" terminal determination
progress: drop delay-threshold code
launch_editor(): indicate that Git waits for user input
Liam Beguin (9):
Documentation: move rebase.* configs to new file
Documentation: use preferred name for the 'todo list' script
rebase -i: set commit to null in exec commands
rebase -i: refactor transform_todo_ids
rebase -i: replace reference to sha1 with oid
rebase -i: update functions to use a flags parameter
rebase -i -x: add exec commands via the rebase--helper
rebase -i: learn to abbreviate command names
t3404: add test case for abbreviated commands
Louis Bettens (1):
l10n: fr.po: "worktree list" mistranslated as prune
Luke Diamand (1):
git-p4: update multiple shelved change lists
Marius Paliga (1):
builtin/push.c: add push.pushOption config
Martin Ågren (22):
sha1_file: do not leak `lock_file`
treewide: prefer lockfiles on the stack
lockfile: fix documentation on `close_lock_file_gently()`
tempfile: fix documentation on `delete_tempfile()`
checkout-index: simplify locking logic
cache-tree: simplify locking logic
apply: move lockfile into `apply_state`
apply: remove `newfd` from `struct apply_state`
cache.h: document `write_locked_index()`
read-cache: drop explicit `CLOSE_LOCK`-flag
read-cache: leave lock in right state in `write_locked_index()`
read_cache: roll back lock in `update_index_if_able()`
grep: take the read-lock when adding a submodule
bisect: change calling-convention of `find_bisection()`
bisect: fix memory leak in `find_bisection()`
bisect: fix off-by-one error in `best_bisection_sorted()`
bisect: fix memory leak when returning best element
builtin/merge-base: free commit lists
reduce_heads: fix memory leaks
t7006: add tests for how git branch paginates
branch: respect `pager.branch` in list-mode only
branch: change default of `pager.branch` to "on"
Michael Haggerty (12):
t1409: check that `packed-refs` is not rewritten unnecessarily
files-backend: don't rewrite the `packed-refs` file unnecessarily
t0000: check whether the shell supports the "local" keyword
files_transaction_prepare(): don't leak flags to packed transaction
prune_ref(): call `ref_transaction_add_update()` directly
ref_transaction_update(): die on disallowed flags
ref_transaction_add_update(): remove a check
refs: tidy up and adjust visibility of the `ref_update` flags
refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
write_packed_entry(): take `object_id` arguments
refs: update some more docs to use "oid" rather than "sha1"
Nicolas Morey-Chaisemartin (1):
imap-send: URI encode server folder
Olga Telezhnaya (2):
format: create pretty.h file
format: create docs for pretty.h
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (3284t0f0u)
l10n: sv.po: Update Swedish translation (3288t0f0u)
Phil Hord (2):
doc: prefer 'stash push' over 'stash save'
stash: learn to parse -m/--message like commit does
Phillip Wood (2):
config: avoid "write_in_full(fd, buf, len) != len" pattern
sequencer: reschedule pick if index can't be locked
Pranit Bauva (6):
bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
bisect--helper: rewrite `check_term_format` shell function in C
bisect--helper: `write_terms` shell function in C
bisect--helper: `bisect_clean_state` shell function in C
t6030: explicitly test for bisection cleanup
bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
Prathamesh Chavan (3):
submodule--helper: introduce get_submodule_displaypath()
submodule--helper: introduce for_each_listed_submodule()
submodule: port submodule subcommand 'status' from shell to C
Rafael Ascensão (1):
log: add option to choose which refs to decorate
Ralf Thielow (3):
Documentation/git-worktree.txt: add missing `
l10n: de.po: improve messages when a branch starts to track another ref
l10n: de.po: translate 72 new messages
Ramsay Jones (1):
repository: fix a sparse 'using integer as NULL pointer' warning
Randall S. Becker (1):
install-doc-quick: allow specifying what ref to install
Rasmus Villemoes (2):
Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
completion: add git config sendemail.tocmd
René Scharfe (23):
notes: move hex_to_bytes() to hex.c and export it
http-push: use hex_to_bytes()
sha1_file: use hex_to_bytes()
sequencer: factor out rewrite_file()
sequencer: use O_TRUNC to truncate files
imap-send: handle NULL return of next_arg()
imap-send: handle missing response codes gracefully
apply: avoid out-of-bounds access in fuzzy_matchlines()
apply: update line lengths for --inaccurate-eof
config: flip return value of write_section()
t4051: add test for comments preceding function lines
xdiff: factor out is_func_rec()
xdiff: show non-empty lines before functions with -W
t7810: improve check of -W with user-defined function lines
grep: update boundary variable for pre-context
grep: show non-empty lines before functions with -W
am: release strbuf after use in split_mail_mbox()
fmt-merge-msg: avoid leaking strbuf in shortlog()
strbuf: release memory on read error in strbuf_read_once()
transport-helper: plug strbuf and string_list leaks
p7519: improve check for prerequisite WATCHMAN
http: use internal argv_array of struct child_process
send-pack: use internal argv_array of struct child_process
Robert Abel (3):
l10n: fixes to German translation
git-prompt: make __git_eread intended use explicit
git-prompt: fix reading files with windows line endings
Robert P. J. Day (4):
bisect: mention "view" as an alternative to "visualize"
doc: add missing "-n" (dry-run) option to reflog man page
prune: add "--progress" to man page and usage msg
notes: correct 'git notes prune' options to '[-n] [-v]'
SZEDER Gábor (17):
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
travis-ci: don't build Git for the static analysis job
setup.c: fix comment about order of .git directory discovery
travis-ci: introduce a $jobname variable for 'ci/*' scripts
travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output
travis-ci: fine tune the use of 'set -x' in 'ci/*' scripts
travis-ci: don't install default addon packages for the 32 bit Linux build
travis-ci: save prove state for the 32 bit Linux build
travis-ci: only print test failures if there are test results available
travis-ci: print the "tip of branch is exactly at tag" message in color
travis-ci: create the cache directory early in the build process
travis-ci: record and skip successfully built trees
travis-ci: don't store P4 and Git LFS in the working tree
travis-ci: check that all build artifacts are .gitignore-d
RelNotes: minor typofix
Shuyu Wei (1):
pull: pass -4/-6 option to 'git fetch'
Simon Ruderich (3):
sequencer.c: check return value of close() in rewrite_file()
wrapper.c: consistently quote filenames in error messages
config: document default value of http.sslVerify
Stefan Beller (16):
recursive submodules: detach HEAD from new state
Documentation/checkout: clarify submodule HEADs to be detached
xdiff-interface: export comparing and hashing strings
diff.c: get rid of duplicate implementation
t6120: fix typo in test name
list-objects.c: factor out traverse_trees_and_blobs
config: document blame configuration
t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
revision.h: introduce blob/tree walking in order of the commits
builtin/describe.c: rename `oid` to avoid variable shadowing
builtin/describe.c: print debug statements earlier
builtin/describe.c: factor out describe_commit
Documentation/git-clone: improve description for submodule recursing
t/helper: ignore everything but sources
builtin/describe.c: describe a blob
t/helper/test-lazy-name-hash: fix compilation
Steffen Prohaska (1):
doc: Mention info/attributes in gitrepository-layout
Stephan Beyer (1):
bisect run: die if no command is given
Thomas Braun (1):
completion: add remaining flags to checkout
Thomas Gummerer (12):
stash: replace "git stash save" with "git stash push" in the documentation
stash: mark "git stash save" deprecated in the man page
stash: remove now superfluos help for "stash push"
checkout: factor out functions to new lib file
worktree: add can be created from any commit-ish
worktree: add --[no-]track option to the add subcommand
worktree: make add <path> <branch> dwim
t/README: remove mention of adding copyright notices
t/README: document test_cmp_rev
worktree: add --guess-remote flag to add subcommand
add worktree.guessRemote config option
oidset: don't return value from oidset_init
Todd Zullinger (13):
Replace Free Software Foundation address in license notices
Replace Free Software Foundation address in license notices
t/lib-gpg: fix gpgconf stderr redirect to /dev/null
rebase: fix stderr redirect in apply_autostash()
notes: send "Automatic notes merge failed" messages to stderr
branch doc: remove --set-upstream from synopsis
completion: add '--copy' option to 'git branch'
RelNotes: minor typo fixes in 2.15.1 draft
t/lib-git-svn: cleanup inconsistent tab/space usage
t/lib-git-svn.sh: improve svnserve tests with parallel make test
RelNotes: minor typo fixes in 2.16.0 draft
doc/SubmittingPatches: improve text formatting
http: fix v1 protocol tests with apache httpd < 2.4
Torsten Bögershausen (4):
add: introduce "--renormalize"
convert: tighten the safe autocrlf handling
t0027: Adapt the new MIX tests to Windows
check-non-portable-shell.pl: `wc -l` may have leading WS
Trần Ngọc Quân (1):
l10n: vi.po(3288t): Updated Vietnamese translation for v2.16.0 round 2
W. Trevor King (1):
pull: pass --signoff/--no-signoff to "git merge"
Wei Shuyu (1):
http: support CURLPROXY_HTTPS
Zhou Fangyi (1):
l10n: zh_CN Fix typo
brian m. carlson (31):
walker: convert to struct object_id
refs/files-backend: convert struct ref_to_prune to object_id
refs: convert delete_ref and refs_delete_ref to struct object_id
refs: convert update_ref and refs_update_ref to use struct object_id
refs: prevent accidental NULL dereference in write_pseudoref
refs: update ref transactions to use struct object_id
Convert check_connected to use struct object_id
refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
refs: convert read_ref and read_ref_full to object_id
refs: convert dwim_ref and expand_ref to struct object_id
builtin/reflog: convert remaining unsigned char uses to object_id
refs: convert dwim_log to struct object_id
pack-bitmap: convert traverse_bitmap_commit_list to object_id
builtin/pack-objects: convert to struct object_id
refs: convert peel_ref to struct object_id
refs: convert read_ref_at to struct object_id
refs: convert reflog_expire parameter to struct object_id
sha1_file: convert index_path and index_fd to struct object_id
Convert remaining callers of resolve_gitlink_ref to object_id
refs: convert resolve_gitlink_ref to struct object_id
worktree: convert struct worktree to object_id
refs: convert resolve_ref_unsafe to struct object_id
refs: convert peel_object to struct object_id
refs: convert read_raw_ref backends to struct object_id
refs/files-backend: convert static functions to object_id
Documentation: enable compat-mode for Asciidoctor
setup: expose enumerated repo info
Add structure representing hash algorithm
Integrate hash algorithm support with repo setup
Switch empty tree and blob lookups to use hash abstraction
Documentation: convert SubmittingPatches to AsciiDoc
Ævar Arnfjörð Bjarmason (4):
test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
Makefile: NO_OPENSSL=1 should no longer imply BLK_SHA1=1
bisect: fix a regression causing a segfault
Łukasz Stelmach (1):
git-gui: prevent double UTF-8 conversion
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.16.0-rc1
@ 2018-01-05 23:30 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-01-05 23:30 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.16.0-rc1 is now available for testing
at the usual places. It is comprised of 455 non-merge commits
since v2.15.0, contributed by 79 people, 23 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.16.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.15.0 are as follows.
Welcome to the Git development community!
Albert Astals Cid, Antoine Beaupré, Damien Marié, Daniel
Bensoussan, Florian Klink, Gennady Kupava, Guillaume Castagnino,
Haaris Mehmood, Hans Jerry Illikainen, Ingo Ruhnke, Jakub
Bereżański, Jean Carlo Machado, Julien Dusser, J Wyman,
Kevin, Łukasz Stelmach, Marius Paliga, Olga Telezhnaya,
Rafael Ascensão, Robert Abel, Robert P. J. Day, Shuyu Wei,
and Wei Shuyu.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Vandiver,
Anders Kaseorg, Andrey Okoshkin, Ann T Ropea, Beat Bolli,
Ben Peart, Brandon Williams, brian m. carlson, Carlos Martín
Nieto, Charles Bailey, Christian Couder, Dave Borowitz, Dennis
Kaarsemaker, Derrick Stolee, Elijah Newren, Emily Xie, Eric
Sunshine, Eric Wong, Heiko Voigt, Jacob Keller, Jameson Miller,
Jean-Noel Avila, Jeff Hostetler, Jeff King, Johannes Schindelin,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
Kevin Daudt, Lars Schneider, Liam Beguin, Luke Diamand, Martin
Ågren, Michael Haggerty, Nicolas Morey-Chaisemartin, Phil
Hord, Phillip Wood, Pranit Bauva, Prathamesh Chavan, Ramsay
Jones, Randall S. Becker, Rasmus Villemoes, René Scharfe,
Simon Ruderich, Stefan Beller, Steffen Prohaska, Stephan Beyer,
SZEDER Gábor, Thomas Braun, Thomas Gummerer, Todd Zullinger,
Torsten Bögershausen, and W. Trevor King.
----------------------------------------------------------------
Git 2.16 Release Notes (draft)
==============================
Backward compatibility notes and other notable changes.
* Use of an empty string as a pathspec element that is used for
'everything matches' is now an error.
Updates since v2.15
-------------------
UI, Workflows & Features
* An empty string as a pathspec element that means "everything"
i.e. 'git add ""', is now illegal. We started this by first
deprecating and warning a pathspec that has such an element in
2.11 (Nov 2016).
* A hook script that is set unexecutable is simply ignored. Git
notifies when such a file is ignored, unless the message is
squelched via advice.ignoredHook configuration.
* "git pull" has been taught to accept "--[no-]signoff" option and
pass it down to "git merge".
* The "--push-option=<string>" option to "git push" now defaults to a
list of strings configured via push.pushOption variable.
* "gitweb" checks if a directory is searchable with Perl's "-x"
operator, which can be enhanced by using "filetest 'access'"
pragma, which now we do.
* "git stash save" has been deprecated in favour of "git stash push".
* The set of paths output from "git status --ignored" was tied
closely with its "--untracked=<mode>" option, but now it can be
controlled more flexibly. Most notably, a directory that is
ignored because it is listed to be ignored in the ignore/exclude
mechanism can be handled differently from a directory that ends up
to be ignored only because all files in it are ignored.
* The remote-helper for talking to MediaWiki has been updated to
truncate an overlong pagename so that ".mw" suffix can still be
added.
* The remote-helper for talking to MediaWiki has been updated to
work with mediawiki namespaces.
* The "--format=..." option "git for-each-ref" takes learned to show
the name of the 'remote' repository and the ref at the remote side
that is affected for 'upstream' and 'push' via "%(push:remotename)"
and friends.
* Doc and message updates to teach users "bisect view" is a synonym
for "bisect visualize".
* "git bisect run" that did not specify any command to run used to go
ahead and treated all commits to be tested as 'good'. This has
been corrected by making the command error out.
* The SubmittingPatches document has been converted to produce an
HTML version via AsciiDoc/Asciidoctor.
* We learned to talk to watchman to speed up "git status" and other
operations that need to see which paths have been modified.
* The "diff" family of commands learned to ignore differences in
carriage return at the end of line.
* Places that know about "sendemail.to", like documentation and shell
completion (in contrib/) have been taught about "sendemail.tocmd",
too.
* "git add --renormalize ." is a new and safer way to record the fact
that you are correcting the end-of-line convention and other
"convert_to_git()" glitches in the in-repository data.
* "git branch" and "git checkout -b" are now forbidden from creating
a branch whose name is "HEAD".
* "git branch --list" learned to show its output through the pager by
default when the output is going to a terminal, which is controlled
by the pager.branch configuration variable. This is similar to a
recent change to "git tag --list".
* "git grep -W", "git diff -W" and their friends learned a heuristic
to extend a pre-context beyond the line that matches the "function
pattern" (aka "diff.*.xfuncname") to include a comment block, if
exists, that immediately precedes it.
* "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
the configuration and report it as a timestamp, just like "--int"
would read "1k" and report 1024, to help consumption by scripts.
* The shell completion (in contrib/) learned that "git pull" can take
the "--autostash" option.
* The tagnames "git log --decorate" uses to annotate the commits can
now be limited to subset of available refs with the two additional
options, --decorate-refs[-exclude]=<pattern>.
* "git grep" compiled with libpcre2 sometimes triggered a segfault,
which is being fixed.
* "git send-email" tries to see if the sendmail program is available
in /usr/lib and /usr/sbin; extend the list of locations to be
checked to also include directories on $PATH.
* "git diff" learned, "--anchored", a variant of the "--patience"
algorithm, to which the user can specify which 'unique' line to be
used as anchoring points.
* The way "git worktree add" determines what branch to create from
where and checkout in the new worktree has been updated a bit.
* Ancient part of codebase still shows dots after an abbreviated
object name just to show that it is not a full object name, but
these ellipses are confusing to people who newly discovered Git
who are used to seeing abbreviated object names and find them
confusing with the range syntax.
* With a configuration variable rebase.abbreviateCommands set,
"git rebase -i" produces the todo list with a single-letter
command names.
* "git worktree add" learned to run the post-checkout hook, just like
"git checkout" does, after the initial checkout.
* "git svn" has been updated to strip CRs in the commit messages, as
recent versions of Subversion rejects them.
* "git imap-send" did not correctly quote the folder name when
making a request to the server, which has been corrected.
* Error messages from "git rebase" have been somewhat cleaned up.
* Git has been taught to support an https:// URL used for http.proxy
when using recent versions of libcurl.
* "git merge" learned to pay attention to merge.verifySignatures
configuration variable and pretend as if '--verify-signatures'
option was given from the command line.
* "git describe" was taught to dig trees deeper to find a
<commit-ish>:<path> that refers to a given blob object.
Performance, Internal Implementation, Development Support etc.
* An earlier update made it possible to use an on-stack in-core
lockfile structure (as opposed to having to deliberately leak an
on-heap one). Many codepaths have been updated to take advantage
of this new facility.
* Calling cmd_foo() as if it is a general purpose helper function is
a no-no. Correct two instances of such to set an example.
* We try to see if somebody runs our test suite with a shell that
does not support "local" like bash/dash does.
* An early part of piece-by-piece rewrite of "git bisect" in C.
* GSoC to piece-by-piece rewrite "git submodule" in C.
* Optimize the code to find shortest unique prefix of object names.
* Pathspec-limited revision traversal was taught not to keep finding
unneeded differences once it knows two trees are different inside
given pathspec.
* Conversion from uchar[20] to struct object_id continues.
* Code cleanup.
* A single-word "unsigned flags" in the diff options is being split
into a structure with many bitfields.
* TravisCI build updates.
* Parts of a test to drive the long-running content filter interface
has been split into its own module, hopefully to eventually become
reusable.
* Drop (perhaps overly cautious) sanity check before using the index
read from the filesystem at runtime.
* The build procedure has been taught to avoid some unnecessary
instability in the build products.
* A new mechanism to upgrade the wire protocol in place is proposed
and demonstrated that it works with the older versions of Git
without harming them.
* An infrastructure to define what hash function is used in Git is
introduced, and an effort to plumb that throughout various
codepaths has been started.
* The code to iterate over loose object files got optimized.
* An internal function that was left for backward compatibility has
been removed, as there is no remaining callers.
* Historically, the diff machinery for rename detection had a
hardcoded limit of 32k paths; this is being lifted to allow users
trade cycles with a (possibly) easier to read result.
* The tracing infrastructure has been optimized for cases where no
tracing is requested.
* In preparation for implementing narrow/partial clone, the object
walking machinery has been taught a way to tell it to "filter" some
objects from enumeration.
* A few structures and variables that are implementation details of
the decorate API have been renamed and then the API got documented
better.
* Assorted updates for TravisCI integration.
(merge 4f26366679 sg/travis-fixes later to maint).
* Introduce a helper to simplify code to parse a common pattern that
expects either "--key" or "--key=<something>".
* "git version --build-options" learned to report the host CPU and
the exact commit object name the binary was built from.
Also contains various documentation updates and code clean-ups.
Fixes since v2.15
-----------------
* "auto" as a value for the columnar output configuration ought to
judge "is the output consumed by humans?" with the same criteria as
"auto" for coloured output configuration, i.e. either the standard
output stream is going to tty, or a pager is in use. We forgot the
latter, which has been fixed.
* The experimental "color moved lines differently in diff output"
feature was buggy around "ignore whitespace changes" edges, which
has been corrected.
* Instead of using custom line comparison and hashing functions to
implement "moved lines" coloring in the diff output, use the pair
of these functions from lower-layer xdiff/ code.
* Some codepaths did not check for errors when asking what branch the
HEAD points at, which have been fixed.
* "git commit", after making a commit, did not check for errors when
asking on what branch it made the commit, which has been corrected.
* "git status --ignored -u" did not stop at a working tree of a
separate project that is embedded in an ignored directory and
listed files in that other project, instead of just showing the
directory itself as ignored.
* A broken access to object databases in recent update to "git grep
--recurse-submodules" has been fixed.
* A recent regression in "git rebase -i" that broke execution of git
commands from subdirectories via "exec" instruction has been fixed.
* A (possibly flakey) test fix.
* "git check-ref-format --branch @{-1}" bit a "BUG()" when run
outside a repository for obvious reasons; clarify the documentation
and make sure we do not even try to expand the at-mark magic in
such a case, but still call the validation logic for branch names.
* "git fetch --recurse-submodules" now knows that submodules can be
moved around in the superproject in addition to getting updated,
and finds the ones that need to be fetched accordingly.
* Command line completion (in contrib/) update.
* Description of blame.{showroot,blankboundary,showemail,date}
configuration variables have been added to "git config --help".
* After an error from lstat(), diff_populate_filespec() function
sometimes still went ahead and used invalid data in struct stat,
which has been fixed.
* UNC paths are also relevant in Cygwin builds and they are now
tested just like Mingw builds.
* Correct start-up sequence so that a repository could be placed
immediately under the root directory again (which was broken at
around Git 2.13).
* The credential helper for libsecret (in contrib/) has been improved
to allow possibly prompting the end user to unlock secrets that are
currently locked (otherwise the secrets may not be loaded).
* MinGW updates.
* Error checking in "git imap-send" for empty response has been
improved.
* Recent update to the refs infrastructure implementation started
rewriting packed-refs file more often than before; this has been
optimized again for most trivial cases.
* Some error messages did not quote filenames shown in it, which have
been fixed.
* "git rebase -i" recently started misbehaving when a submodule that
is configured with 'submodule.<name>.ignore' is dirty; this has
been corrected.
* Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.
* We used to add an empty alternate object database to the system
that does not help anything; it has been corrected.
* Doc update around use of "format-patch --subject-prefix" etc.
* A fix for an ancient bug in "git apply --ignore-space-change" codepath.
* Clarify and enhance documentation for "merge-base --fork-point", as
it was clear what it computed but not why/what for.
* A few scripts (both in production and tests) incorrectly redirected
their error output. These have been corrected.
* "git notes" sent its error message to its standard output stream,
which was corrected.
* The three-way merge performed by "git cherry-pick" was confused
when a new submodule was added in the meantime, which has been
fixed (or "papered over").
* The sequencer machinery (used by "git cherry-pick A..B", and "git
rebase -i", among other things) would have lost a commit if stopped
due to an unlockable index file, which has been fixed.
* "git apply --inaccurate-eof" when used with "--ignore-space-change"
triggered an internal sanity check, which has been fixed.
* Command line completion (in contrib/) has been taught about the
"--copy" option of "git branch".
* When "git rebase" prepared an mailbox of changes and fed it to "git
am" to replay them, it was confused when a stray "From " happened
to be in the log message of one of the replayed changes. This has
been corrected.
* There was a recent semantic mismerge in the codepath to write out a
section of a configuration section, which has been corrected.
* Mentions of "git-rebase" and "git-am" (dashed form) still remained
in end-user visible strings emitted by the "git rebase" command;
they have been corrected.
* Contrary to the documentation, "git pull -4/-6 other-args" did not
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
corrected.
* "git checkout --recursive" may overwrite and rewind the history of
the branch that happens to be checked out in submodule
repositories, which might not be desirable. Detach the HEAD but
still allow the recursive checkout to succeed in such a case.
(merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).
* "git branch --set-upstream" has been deprecated and (sort of)
removed, as "--set-upstream-to" is the preferred one these days.
The documentation still had "--set-upstream" listed on its
synopsis section, which has been corrected.
(merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).
* Internally we use 0{40} as a placeholder object name to signal the
codepath that there is no such object (e.g. the fast-forward check
while "git fetch" stores a new remote-tracking ref says "we know
there is no 'old' thing pointed at by the ref, as we are creating
it anew" by passing 0{40} for the 'old' side), and expect that a
codepath to locate an in-core object to return NULL as a sign that
the object does not exist. A look-up for an object that does not
exist however is quite costly with a repository with large number
of packfiles. This access pattern has been optimized.
(merge 87b5e236a1 jk/fewer-pack-rescan later to maint).
* In addition to "git stash -m message", the command learned to
accept "git stash -mmessage" form.
(merge 5675473fcb ph/stash-save-m-option-fix later to maint).
* @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
but the documentation was not clear about it, which has been fixed.
(merge 75ce149575 ks/doc-checkout-previous later to maint).
* A regression in the progress eye-candy was fixed.
(merge 9c5951cacf jk/progress-delay-fix later to maint).
* The code internal to the recursive merge strategy was not fully
prepared to see a path that is renamed to try overwriting another
path that is only different in case on case insensitive systems.
This does not matter in the current code, but will start to matter
once the rename detection logic starts taking hints from nearby
paths moving to some directory and moves a new path along with them.
(merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).
* An v2.12-era regression in pathspec match logic, which made it look
into submodule tree even when it is not desired, has been fixed.
(merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).
* Amending commits in git-gui broke the author name that is non-ascii
due to incorrect enconding conversion.
* Recent update to the submodule configuration code broke "diff-tree"
by accidentally stopping to read from the index upfront.
(merge fd66bcc31f bw/submodule-config-cleanup later to maint).
* Git shows a message to tell the user that it is waiting for the
user to finish editing when spawning an editor, in case the editor
opens to a hidden window or somewhere obscure and the user gets
lost.
(merge abfb04d0c7 ls/editor-waiting-message later to maint).
* The "safe crlf" check incorrectly triggered for contents that does
not use CRLF as line endings, which has been corrected.
(merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).
* "git clone --shared" to borrow from a (secondary) worktree did not
work, even though "git clone --local" did. Both are now accepted.
(merge b3b05971c1 es/clone-shared-worktree later to maint).
* The build procedure now allows not just the repositories but also
the refs to be used to take pre-formatted manpages and html
documents to install.
(merge 65289e9dcd rb/quick-install-doc later to maint).
* Update the shell prompt script (in contrib/) to strip trailing CR
from strings read from various "state" files.
(merge 041fe8fc83 ra/prompt-eread-fix later to maint).
* "git merge -s recursive" did not correctly abort when the index is
dirty, if the merged tree happened to be the same as the current
HEAD, which has been fixed.
* Bytes with high-bit set were encoded incorrectly and made
credential helper fail.
(merge 4c267f2ae3 jd/fix-strbuf-add-urlencode-bytes later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
(merge 0ba014035a rd/man-reflog-add-n later to maint).
(merge e54b63359f rd/doc-notes-prune-fix later to maint).
(merge ff4c9b413a sp/doc-info-attributes later to maint).
(merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
(merge 5a0526264b tg/t-readme-updates later to maint).
(merge 5e83cca0b8 jk/no-optional-locks later to maint).
(merge 826c778f7c js/hashmap-update-sample later to maint).
(merge 176b2d328c sg/setup-doc-update later to maint).
(merge 1b09073514 rs/am-builtin-leakfix later to maint).
(merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
(merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
(merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
(merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
(merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
(merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
(merge d0e6326026 ot/pretty later to maint).
(merge 44103f4197 sb/test-helper-excludes later to maint).
(merge 170078693f jt/transport-no-more-rsync later to maint).
(merge c07b3adff1 bw/path-doc later to maint).
(merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
(merge dec366c9a8 sr/http-sslverify-config-doc later to maint).
(merge 3f824e91c8 jk/test-suite-tracing later to maint).
(merge 1feb061701 db/doc-config-section-names-with-bs later to maint).
(merge 74dea0e13c jh/memihash-opt later to maint).
----------------------------------------------------------------
Changes since v2.15.0 are as follows:
Adam Dinwoodie (3):
t5580: add Cygwin support
rebase -i: fix comment typo
doc/SubmittingPatches: correct subject guidance
Albert Astals Cid (1):
completion: add --autostash and --no-autostash to pull
Alex Vandiver (7):
fsmonitor: read entirety of watchman output
fsmonitor: set the PWD to the top of the working tree
fsmonitor: don't bother pretty-printing JSON from watchman
fsmonitor: document GIT_TRACE_FSMONITOR
fsmonitor: delay updating state until after split index is merged
fsmonitor: read from getcwd(), not the PWD environment variable
fsmonitor: store fsmonitor bitmap before splitting index
Anders Kaseorg (1):
git-gui: sort entries in optimized tclIndex
Andrey Okoshkin (3):
commit: check result of resolve_ref_unsafe
diff: fix lstat() error handling in diff_populate_filespec()
merge-recursive: check GIT_MERGE_VERBOSITY only once
Ann T Ropea (7):
Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
Documentation: user-manual: limit usage of ellipsis
print_sha1_ellipsis: introduce helper
checkout: describe_detached_head: remove ellipsis after committish
t4013: prepare for upcoming "diff --raw --abbrev" output format change
diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
t4013: test new output from diff --abbrev --raw
Antoine Beaupré (6):
remote-mediawiki: limit filenames to legal
remote-mediawiki: show known namespace choices on failure
remote-mediawiki: skip virtual namespaces
remote-mediawiki: support fetching from (Main) namespace
remote-mediawiki: process namespaces in order
remote-mediawiki: show progress while fetching namespaces
Beat Bolli (1):
contrib/git-jump: allow to configure the grep command
Ben Peart (16):
bswap: add 64 bit endianness helper get_be64
preload-index: add override to enable testing preload-index
update-index: add a new --force-write-index option
fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
fsmonitor: add documentation for the fsmonitor extension.
ls-files: Add support in ls-files to display the fsmonitor valid bit
update-index: add fsmonitor support to update-index
fsmonitor: add a test tool to dump the index extension
split-index: disable the fsmonitor extension when running the split index test
fsmonitor: add test cases for fsmonitor extension
fsmonitor: add a sample integration script for Watchman
fsmonitor: add a performance test
fsmonitor: MINGW support for watchman integration
fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
read_index_from(): speed index loading by skipping verification of the entry order
fsmonitor: simplify determining the git worktree under Windows
Brandon Williams (24):
pkt-line: add packet_write function
protocol: introduce protocol extension mechanisms
daemon: recognize hidden request arguments
upload-pack, receive-pack: introduce protocol version 1
connect: teach client to recognize v1 server response
connect: tell server that the client understands v1
http: tell server that the client understands v1
i5700: add interop test for protocol transition
ssh: introduce a 'simple' ssh variant
add, reset: use DIFF_OPT_SET macro to set a diff flag
diff: convert flags to be stored in bitfields
diff: add flag to indicate textconv was set via cmdline
diff: remove touched flags
diff: remove DIFF_OPT_TST macro
diff: remove DIFF_OPT_SET macro
diff: remove DIFF_OPT_CLR macro
diff: make struct diff_flags members lowercase
wt-status: actually ignore submodules when requested
pathspec: only match across submodule boundaries when requested
diff-tree: read the index so attribute checks work in bare repositories
submodule: convert stage_updated_gitmodules to take a struct index_state
submodule: used correct index in is_staging_gitmodules_ok
submodule: convert get_next_submodule to not rely on the_index
path: document path functions
Carlos Martín Nieto (1):
diff: --indent-heuristic is no longer experimental
Charles Bailey (2):
t4201: make use of abbreviation in the test more robust
grep: fix NO_LIBPCRE1_JIT to fully disable JIT
Christian Couder (24):
perf/run: add '--config' option to the 'run' script
perf/run: add get_var_from_env_or_config()
perf/run: add GIT_PERF_DIRS_OR_REVS
perf/run: add calls to get_var_from_env_or_config()
perf/run: add get_subsections()
perf/run: update get_var_from_env_or_config() for subsections
perf/run: add run_subsection()
perf/run: show name of rev being built
perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
t0021/rot13-filter: fix list comparison
t0021/rot13-filter: refactor packet reading functions
t0021/rot13-filter: improve 'if .. elsif .. else' style
t0021/rot13-filter: improve error message
t0021/rot13-filter: add packet_initialize()
t0021/rot13-filter: refactor checking final lf
t0021/rot13-filter: add capability functions
Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
Git/Packet: clarify that packet_required_key_val_read allows EOF
Git/Packet.pm: use 'if' instead of 'unless'
list-objects-filter-options: fix 'keword' typo in comment
git-compat-util: introduce skip_to_optional_arg()
index-pack: use skip_to_optional_arg()
diff: use skip_to_optional_arg()
diff: use skip_to_optional_arg_default()
Damien Marié (1):
run-command: add hint when a hook is ignored
Daniel Bensoussan (1):
doc: reword gitworkflows.txt for neutrality
Dave Borowitz (1):
config.txt: document behavior of backslashes in subsections
Dennis Kaarsemaker (1):
credential-libsecret: unlock locked secrets
Derrick Stolee (5):
p4211-line-log.sh: add log --online --raw --parents perf test
sha1_name: unroll len loop in find_unique_abbrev_r()
sha1_name: parse less while finding common prefix
sha1_name: minimize OID comparisons during disambiguation
sha1_file: use strbuf_add() instead of strbuf_addf()
Elijah Newren (10):
sequencer: warn when internal merge may be suboptimal due to renameLimit
merge-recursive: handle addition of submodule on our side of history
progress: fix progress meters when dealing with lots of work
diff: remove silent clamp of renameLimit
sequencer: show rename progress during cherry picks
merge-recursive: ignore_case shouldn't reject intentional removals
strbuf: remove unused stripspace function alias
t6044: recursive can silently incorporate dirty changes in a merge
move index_has_changes() from builtin/am.c to merge.c for reuse
merge-recursive: avoid incorporating uncommitted changes in a merge
Emily Xie (1):
pathspec: die on empty strings as pathspec
Eric Sunshine (3):
worktree: invoke post-checkout hook (unless --no-checkout)
clone: support 'clone --shared' from a worktree
version --build-options: also report host CPU
Eric Wong (2):
rebase: use mboxrd format to avoid split errors
git-svn: convert CRLF to LF in commit message to SVN
Florian Klink (1):
git-send-email: honor $PATH for sendmail binary
Gennady Kupava (2):
trace: remove trace key normalization
trace: improve performance while category is disabled
Guillaume Castagnino (1):
gitweb: use filetest to allow ACLs
Haaris Mehmood (1):
config: add --expiry-date
Hans Jerry Illikainen (2):
merge: add config option for verifySignatures
t: add tests for pull --verify-signatures
Heiko Voigt (3):
fetch: add test to make sure we stay backwards compatible
implement fetching of moved submodules
submodule: simplify decision tree whether to or not to fetch
Ingo Ruhnke (1):
remote-mediawiki: allow fetching namespaces with spaces
J Wyman (1):
for-each-ref: let upstream/push report the remote ref name
Jacob Keller (2):
sequencer: pass absolute GIT_DIR to exec commands
diff: add tests for --relative without optional prefix value
Jakub Bereżański (2):
t0302: check helper can handle empty credentials
wincred: handle empty username/password correctly
Jameson Miller (4):
status: add option to show ignored files differently
status: report matching ignored and normal untracked
status: document options to show matching ignored files
status: test ignored modes
Jean Carlo Machado (1):
fix typos in 2.15.0 release notes
Jean-Noel Avila (1):
submodule--helper.c: i18n: add a missing space in message
Jeff Hostetler (9):
dir: allow exclusions from blob in addition to file
oidmap: add oidmap iterator methods
oidset: add iterator methods to oidset
list-objects: filter objects in traverse_commit_list
rev-list: add list-objects filtering support
pack-objects: add list-objects filtering
list-objects-filter-options: support --no-filter
rev-list: support --no-filter argument
partial-clone: design doc
Jeff King (26):
revision: quit pruning diff more quickly when possible
t4015: refactor --color-moved whitespace test
t4015: check "negative" case for "-w --color-moved"
t4015: test the output of "diff --color-moved -b"
diff: fix whitespace-skipping with --color-moved
diff: handle NULs in get_string_hash()
test-ref-store: avoid passing NULL to printf
remote: handle broken symrefs
log: handle broken HEAD in decoration check
worktree: handle broken symrefs in find_shared_symref()
setup: avoid double slashes when looking for HEAD
link_alt_odb_entries: make empty input a noop
git-jump: give contact instructions in the README
p5550: factor out nonsense-pack creation
t/perf/lib-pack: use fast-import checkpoint to create packs
p5551: add a script to test fetch pack-dir rescans
everything_local: use "quick" object existence check
sha1_file: fast-path null sha1 as a missing object
git-status.txt: mention --no-optional-locks
progress: set default delay threshold to 100%, not 0%
docs/pretty-formats: mention commas in %(trailers) syntax
cvsimport: apply shell-quoting regex globally
test-lib: silence "-x" cleanup under bash
t5615: avoid re-using descriptor 4
test-lib: make "-x" work with "--verbose-log"
t/Makefile: introduce TEST_SHELL_PATH
Johannes Schindelin (14):
for-each-ref: let upstream/push optionally report the remote name
status: do not get confused by submodules in excluded directories
mingw: include the full version information in the resources
mingw: add experimental feature to redirect standard handles
mingw: optionally redirect stderr/stdout via the same handle
mingw: document the standard handle redirection
for-each-ref: test :remotename and :remoteref
hashmap: adjust documentation to reflect reality
version --build-options: report commit, too, if possible
rebase: do not continue when the todo list generation failed
sequencer: strip bogus LF at end of error messages
sequencer: remove superfluous conditional
sequencer: report when noop has an argument
sequencer: do not invent whitespace when transforming OIDs
Jonathan Nieder (10):
ssh test: make copy_ssh_wrapper_as clean up after itself
connect: move no_fork fallback to git_tcp_connect
connect: split git:// setup into a separate function
connect: split ssh command line options into separate function
connect: split ssh option computation to its own function
ssh: 'auto' variant to select between 'ssh' and 'simple'
ssh: 'simple' variant does not support -4/-6
ssh: 'simple' variant does not support --port
connect: correct style of C-style comment
generate-cmdlist: avoid non-deterministic output
Jonathan Tan (10):
connect: in ref advertisement, shallows are last
Documentation: document Extra Parameters
Tests: clean up and document submodule helpers
Tests: clean up submodule recursive helpers
diff: support anchoring line(s)
diffcore-rename: make diff-tree -l0 mean -l<large>
decorate: clean up and document API
transport: remove unused "push" in vtable
clone, fetch: remove redundant transport check
transport: make transport vtable more private
Julien Dusser (1):
strbuf: fix urlencode format string on signed char
Junio C Hamano (38):
t0027: do not use an empty string as a pathspec element
describe: do not use cmd_*() as a subroutine
merge-ours: do not use cmd_*() as a subroutine
branch: streamline "attr_only" handling in validate_new_branchname()
branch: split validate_new_branchname() into two
t5601: rm the target file of cp that could still be executing
check-ref-format --branch: do not expand @{...} outside repository
check-ref-format --branch: strip refs/heads/ using skip_prefix
check-ref-format doc: --branch validates and expands <branch>
column: do not include pager.c
xdiff: reassign xpparm_t.flags bits
The first batch for 2.16
RelNotes: the second batch post 2.15 comes
diff: --ignore-cr-at-eol
merge-base --fork-point doc: clarify the example and failure modes
RelNotes: the third batch for 2.16
branch: correctly reject refs/heads/{-dash,HEAD}
Start preparation for 2.15.1
RelNotes: the fourth batch for 2.16
Almost ready for 2.15.1
RelNotes: the fifth batch for 2.16
hooks doc: clarify when receive-pack invokes its hooks
A bit more fixes for 2.15.1
RelNotes: the sixth batch for 2.16
Git 2.15.1
RelNotes: the seventh batch
t2020: test variations that matter
Prepare for 2.15.2
RelNotes: the eighth batch
diff: use skip_to_optional_arg_default() in parsing --relative
t4045: reindent to make helpers readable
RelNotes: the ninth batch
RelNotes: the tenth batch
t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
sequencer.c: drop 'const' from function return type
RelNotes: the eleventh batch
Git 2.16-rc0
Git 2.16-rc1
Kaartic Sivaraam (12):
mailmap: use Kaartic Sivaraam's new address
builtin/branch: remove redundant check for HEAD
git-rebase: clean up dashed-usages in messages
Doc/checkout: checking out using @{-N} can lead to detached state
branch: improve documentation and naming of create_branch() parameters
branch: group related arguments of create_branch()
branch: update warning message shown when copying a misnamed branch
builtin/branch: strip refs/heads/ using skip_prefix
Doc/check-ref-format: clarify information about @{-N} syntax
rebase: consistently use branch_name variable
rebase: distinguish user input by quoting it
rebase: rebasing can also be done when HEAD is detached
Kevin (1):
remote-mediawiki: add namespace support
Kevin Daudt (1):
column: show auto columns when pager is active
Lars Schneider (3):
refactor "dumb" terminal determination
progress: drop delay-threshold code
launch_editor(): indicate that Git waits for user input
Liam Beguin (9):
Documentation: move rebase.* configs to new file
Documentation: use preferred name for the 'todo list' script
rebase -i: set commit to null in exec commands
rebase -i: refactor transform_todo_ids
rebase -i: replace reference to sha1 with oid
rebase -i: update functions to use a flags parameter
rebase -i -x: add exec commands via the rebase--helper
rebase -i: learn to abbreviate command names
t3404: add test case for abbreviated commands
Luke Diamand (1):
git-p4: update multiple shelved change lists
Marius Paliga (1):
builtin/push.c: add push.pushOption config
Martin Ågren (22):
sha1_file: do not leak `lock_file`
treewide: prefer lockfiles on the stack
lockfile: fix documentation on `close_lock_file_gently()`
tempfile: fix documentation on `delete_tempfile()`
checkout-index: simplify locking logic
cache-tree: simplify locking logic
apply: move lockfile into `apply_state`
apply: remove `newfd` from `struct apply_state`
cache.h: document `write_locked_index()`
read-cache: drop explicit `CLOSE_LOCK`-flag
read-cache: leave lock in right state in `write_locked_index()`
read_cache: roll back lock in `update_index_if_able()`
grep: take the read-lock when adding a submodule
bisect: change calling-convention of `find_bisection()`
bisect: fix memory leak in `find_bisection()`
bisect: fix off-by-one error in `best_bisection_sorted()`
bisect: fix memory leak when returning best element
builtin/merge-base: free commit lists
reduce_heads: fix memory leaks
t7006: add tests for how git branch paginates
branch: respect `pager.branch` in list-mode only
branch: change default of `pager.branch` to "on"
Michael Haggerty (12):
t1409: check that `packed-refs` is not rewritten unnecessarily
files-backend: don't rewrite the `packed-refs` file unnecessarily
t0000: check whether the shell supports the "local" keyword
files_transaction_prepare(): don't leak flags to packed transaction
prune_ref(): call `ref_transaction_add_update()` directly
ref_transaction_update(): die on disallowed flags
ref_transaction_add_update(): remove a check
refs: tidy up and adjust visibility of the `ref_update` flags
refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
write_packed_entry(): take `object_id` arguments
refs: update some more docs to use "oid" rather than "sha1"
Nicolas Morey-Chaisemartin (1):
imap-send: URI encode server folder
Olga Telezhnaya (2):
format: create pretty.h file
format: create docs for pretty.h
Phil Hord (2):
doc: prefer 'stash push' over 'stash save'
stash: learn to parse -m/--message like commit does
Phillip Wood (2):
config: avoid "write_in_full(fd, buf, len) != len" pattern
sequencer: reschedule pick if index can't be locked
Pranit Bauva (6):
bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
bisect--helper: rewrite `check_term_format` shell function in C
bisect--helper: `write_terms` shell function in C
bisect--helper: `bisect_clean_state` shell function in C
t6030: explicitly test for bisection cleanup
bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
Prathamesh Chavan (3):
submodule--helper: introduce get_submodule_displaypath()
submodule--helper: introduce for_each_listed_submodule()
submodule: port submodule subcommand 'status' from shell to C
Rafael Ascensão (1):
log: add option to choose which refs to decorate
Ramsay Jones (1):
repository: fix a sparse 'using integer as NULL pointer' warning
Randall S. Becker (1):
install-doc-quick: allow specifying what ref to install
Rasmus Villemoes (2):
Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
completion: add git config sendemail.tocmd
René Scharfe (23):
notes: move hex_to_bytes() to hex.c and export it
http-push: use hex_to_bytes()
sha1_file: use hex_to_bytes()
sequencer: factor out rewrite_file()
sequencer: use O_TRUNC to truncate files
imap-send: handle NULL return of next_arg()
imap-send: handle missing response codes gracefully
apply: avoid out-of-bounds access in fuzzy_matchlines()
apply: update line lengths for --inaccurate-eof
config: flip return value of write_section()
t4051: add test for comments preceding function lines
xdiff: factor out is_func_rec()
xdiff: show non-empty lines before functions with -W
t7810: improve check of -W with user-defined function lines
grep: update boundary variable for pre-context
grep: show non-empty lines before functions with -W
am: release strbuf after use in split_mail_mbox()
fmt-merge-msg: avoid leaking strbuf in shortlog()
strbuf: release memory on read error in strbuf_read_once()
transport-helper: plug strbuf and string_list leaks
p7519: improve check for prerequisite WATCHMAN
http: use internal argv_array of struct child_process
send-pack: use internal argv_array of struct child_process
Robert Abel (2):
git-prompt: make __git_eread intended use explicit
git-prompt: fix reading files with windows line endings
Robert P. J. Day (4):
bisect: mention "view" as an alternative to "visualize"
doc: add missing "-n" (dry-run) option to reflog man page
prune: add "--progress" to man page and usage msg
notes: correct 'git notes prune' options to '[-n] [-v]'
SZEDER Gábor (7):
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
travis-ci: don't build Git for the static analysis job
setup.c: fix comment about order of .git directory discovery
travis-ci: introduce a $jobname variable for 'ci/*' scripts
travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output
Shuyu Wei (1):
pull: pass -4/-6 option to 'git fetch'
Simon Ruderich (3):
sequencer.c: check return value of close() in rewrite_file()
wrapper.c: consistently quote filenames in error messages
config: document default value of http.sslVerify
Stefan Beller (16):
recursive submodules: detach HEAD from new state
Documentation/checkout: clarify submodule HEADs to be detached
xdiff-interface: export comparing and hashing strings
diff.c: get rid of duplicate implementation
t6120: fix typo in test name
list-objects.c: factor out traverse_trees_and_blobs
config: document blame configuration
t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
revision.h: introduce blob/tree walking in order of the commits
builtin/describe.c: rename `oid` to avoid variable shadowing
builtin/describe.c: print debug statements earlier
builtin/describe.c: factor out describe_commit
Documentation/git-clone: improve description for submodule recursing
t/helper: ignore everything but sources
builtin/describe.c: describe a blob
t/helper/test-lazy-name-hash: fix compilation
Steffen Prohaska (1):
doc: Mention info/attributes in gitrepository-layout
Stephan Beyer (1):
bisect run: die if no command is given
Thomas Braun (1):
completion: add remaining flags to checkout
Thomas Gummerer (11):
stash: replace "git stash save" with "git stash push" in the documentation
stash: mark "git stash save" deprecated in the man page
stash: remove now superfluos help for "stash push"
checkout: factor out functions to new lib file
worktree: add can be created from any commit-ish
worktree: add --[no-]track option to the add subcommand
worktree: make add <path> <branch> dwim
t/README: remove mention of adding copyright notices
t/README: document test_cmp_rev
worktree: add --guess-remote flag to add subcommand
add worktree.guessRemote config option
Todd Zullinger (11):
Replace Free Software Foundation address in license notices
Replace Free Software Foundation address in license notices
t/lib-gpg: fix gpgconf stderr redirect to /dev/null
rebase: fix stderr redirect in apply_autostash()
notes: send "Automatic notes merge failed" messages to stderr
branch doc: remove --set-upstream from synopsis
completion: add '--copy' option to 'git branch'
RelNotes: minor typo fixes in 2.15.1 draft
t/lib-git-svn: cleanup inconsistent tab/space usage
t/lib-git-svn.sh: improve svnserve tests with parallel make test
RelNotes: minor typo fixes in 2.16.0 draft
Torsten Bögershausen (4):
add: introduce "--renormalize"
convert: tighten the safe autocrlf handling
t0027: Adapt the new MIX tests to Windows
check-non-portable-shell.pl: `wc -l` may have leading WS
W. Trevor King (1):
pull: pass --signoff/--no-signoff to "git merge"
Wei Shuyu (1):
http: support CURLPROXY_HTTPS
brian m. carlson (31):
walker: convert to struct object_id
refs/files-backend: convert struct ref_to_prune to object_id
refs: convert delete_ref and refs_delete_ref to struct object_id
refs: convert update_ref and refs_update_ref to use struct object_id
refs: prevent accidental NULL dereference in write_pseudoref
refs: update ref transactions to use struct object_id
Convert check_connected to use struct object_id
refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
refs: convert read_ref and read_ref_full to object_id
refs: convert dwim_ref and expand_ref to struct object_id
builtin/reflog: convert remaining unsigned char uses to object_id
refs: convert dwim_log to struct object_id
pack-bitmap: convert traverse_bitmap_commit_list to object_id
builtin/pack-objects: convert to struct object_id
refs: convert peel_ref to struct object_id
refs: convert read_ref_at to struct object_id
refs: convert reflog_expire parameter to struct object_id
sha1_file: convert index_path and index_fd to struct object_id
Convert remaining callers of resolve_gitlink_ref to object_id
refs: convert resolve_gitlink_ref to struct object_id
worktree: convert struct worktree to object_id
refs: convert resolve_ref_unsafe to struct object_id
refs: convert peel_object to struct object_id
refs: convert read_raw_ref backends to struct object_id
refs/files-backend: convert static functions to object_id
Documentation: enable compat-mode for Asciidoctor
setup: expose enumerated repo info
Add structure representing hash algorithm
Integrate hash algorithm support with repo setup
Switch empty tree and blob lookups to use hash abstraction
Documentation: convert SubmittingPatches to AsciiDoc
Ævar Arnfjörð Bjarmason (2):
test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
Łukasz Stelmach (1):
git-gui: prevent double UTF-8 conversion
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.16.0-rc0
@ 2017-12-29 4:30 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-12-29 4:30 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.16.0-rc0 is now available for
testing at the usual places. It is comprised of 435 non-merge
commits since v2.15.0, contributed by 76 people, 22 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.16.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.15.0 are as follows.
Welcome to the Git development community!
Albert Astals Cid, Antoine Beaupré, Damien Marié, Daniel
Bensoussan, Florian Klink, Gennady Kupava, Guillaume Castagnino,
Haaris Mehmood, Hans Jerry Illikainen, Ingo Ruhnke, Jakub
Bereżański, Jean Carlo Machado, J Wyman, Kevin, Łukasz
Stelmach, Marius Paliga, Olga Telezhnaya, Rafael Ascensão,
Robert Abel, Robert P. J. Day, Shuyu Wei, and Wei Shuyu.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Vandiver,
Anders Kaseorg, Andrey Okoshkin, Ann T Ropea, Beat Bolli, Ben
Peart, Brandon Williams, brian m. carlson, Carlos Martín Nieto,
Charles Bailey, Christian Couder, Dennis Kaarsemaker, Derrick
Stolee, Elijah Newren, Emily Xie, Eric Sunshine, Eric Wong,
Heiko Voigt, Jacob Keller, Jameson Miller, Jean-Noel Avila,
Jeff Hostetler, Jeff King, Johannes Schindelin, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Kevin Daudt,
Lars Schneider, Liam Beguin, Martin Ågren, Michael Haggerty,
Nicolas Morey-Chaisemartin, Phil Hord, Phillip Wood, Pranit
Bauva, Prathamesh Chavan, Ramsay Jones, Randall S. Becker,
Rasmus Villemoes, René Scharfe, Simon Ruderich, Stefan Beller,
Steffen Prohaska, Stephan Beyer, SZEDER Gábor, Thomas Braun,
Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
W. Trevor King.
----------------------------------------------------------------
Git 2.16 Release Notes (draft)
==============================
Backward compatibility notes and other notable changes.
* Use of an empty string as a pathspec element that is used for
'everything matches' is now an error.
Updates since v2.15
-------------------
UI, Workflows & Features
* An empty string as a pathspec element that means "everything"
i.e. 'git add ""', is now illegal. We started this by first
deprecating and warning a pathspec that has such an element in
2.11 (Nov 2016).
* A hook script that is set unexecutable is simply ignored. Git
notifies when such a file is ignored, unless the message is
squelched via advice.ignoredHook configuration.
* "git pull" has been taught to accept "--[no-]signoff" option and
pass it down to "git merge".
* The "--push-option=<string>" option to "git push" now defaults to a
list of strings configured via push.pushOption variable.
* "gitweb" checks if a directory is searchable with Perl's "-x"
operator, which can be enhanced by using "filetest 'access'"
pragma, which now we do.
* "git stash save" has been deprecated in favour of "git stash push".
* The set of paths output from "git status --ignored" was tied
closely with its "--untracked=<mode>" option, but now it can be
controlled more flexibly. Most notably, a directory that is
ignored because it is listed to be ignored in the ignore/exclude
mechanism can be handled differently from a directory that ends up
to be ignored only because all files in it are ignored.
* The remote-helper for talking to MediaWiki has been updated to
truncate an overlong pagename so that ".mw" suffix can still be
added.
* The remote-helper for talking to MediaWiki has been updated to
work with mediawiki namespaces.
* The "--format=..." option "git for-each-ref" takes learned to show
the name of the 'remote' repository and the ref at the remote side
that is affected for 'upstream' and 'push' via "%(push:remotename)"
and friends.
* Doc and message updates to teach users "bisect view" is a synonym
for "bisect visualize".
* "git bisect run" that did not specify any command to run used to go
ahead and treated all commits to be tested as 'good'. This has
been corrected by making the command error out.
* The SubmittingPatches document has been converted to produce an
HTML version via AsciiDoc/Asciidoctor.
* We learned to talk to watchman to speed up "git status" and other
operations that need to see which paths have been modified.
* The "diff" family of commands learned to ignore differences in
carriage return at the end of line.
* Places that know about "sendemail.to", like documentation and shell
completion (in contrib/) have been taught about "sendemail.tocmd",
too.
* "git add --renormalize ." is a new and safer way to record the fact
that you are correcting the end-of-line convention and other
"convert_to_git()" glitches in the in-repository data.
* "git branch" and "git checkout -b" are now forbidden from creating
a branch whose name is "HEAD".
* "git branch --list" learned to show its output through the pager by
default when the output is going to a terminal, which is controlled
by the pager.branch configuration variable. This is similar to a
recent change to "git tag --list".
* "git grep -W", "git diff -W" and their friends learned a heuristic
to extend a pre-context beyond the line that matches the "function
pattern" (aka "diff.*.xfuncname") to include a comment block, if
exists, that immediately precedes it.
* "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
the configuration and report it as a timestamp, just like "--int"
would read "1k" and report 1024, to help consumption by scripts.
* The shell completion (in contrib/) learned that "git pull" can take
the "--autostash" option.
* The tagnames "git log --decorate" uses to annotate the commits can
now be limited to subset of available refs with the two additional
options, --decorate-refs[-exclude]=<pattern>.
* "git grep" compiled with libpcre2 sometimes triggered a segfault,
which is being fixed.
* "git send-email" tries to see if the sendmail program is available
in /usr/lib and /usr/sbin; extend the list of locations to be
checked to also include directories on $PATH.
* "git diff" learned, "--anchored", a variant of the "--patience"
algorithm, to which the user can specify which 'unique' line to be
used as anchoring points.
* The way "git worktree add" determines what branch to create from
where and checkout in the new worktree has been updated a bit.
* Ancient part of codebase still shows dots after an abbreviated
object name just to show that it is not a full object name, but
these ellipses are confusing to people who newly discovered Git
who are used to seeing abbreviated object names and find them
confusing with the range syntax.
* With a configuration variable rebase.abbreviateCommands set,
"git rebase -i" produces the todo list with a single-letter
command names.
* "git worktree add" learned to run the post-checkout hook, just like
"git checkout" does, after the initial checkout.
* "git svn" has been updated to strip CRs in the commit messages, as
recent versions of Subversion rejects them.
* "git imap-send" did not correctly quote the folder name when
making a request to the server, which has been corrected.
* Error messages from "git rebase" have been somewhat cleaned up.
* Git has been taught to support an https:// URL used for http.proxy
when using recent versions of libcurl.
* "git merge" learned to pay attention to merge.verifySignatures
configuration variable and pretend as if '--verify-signatures'
option was given from the command line.
* "git describe" was taught to dig trees deeper to find a
<commit-ish>:<path> that refers to a given blob object.
Performance, Internal Implementation, Development Support etc.
* An earlier update made it possible to use an on-stack in-core
lockfile structure (as opposed to having to deliberately leak an
on-heap one). Many codepaths have been updated to take advantage
of this new facility.
* Calling cmd_foo() as if it is a general purpose helper function is
a no-no. Correct two instances of such to set an example.
* We try to see if somebody runs our test suite with a shell that
does not support "local" like bash/dash does.
* An early part of piece-by-piece rewrite of "git bisect" in C.
* GSoC to piece-by-piece rewrite "git submodule" in C.
* Optimize the code to find shortest unique prefix of object names.
* Pathspec-limited revision traversal was taught not to keep finding
unneeded differences once it knows two trees are different inside
given pathspec.
* Conversion from uchar[20] to struct object_id continues.
* Code cleanup.
* A single-word "unsigned flags" in the diff options is being split
into a structure with many bitfields.
* TravisCI build updates.
* Parts of a test to drive the long-running content filter interface
has been split into its own module, hopefully to eventually become
reusable.
* Drop (perhaps overly cautious) sanity check before using the index
read from the filesystem at runtime.
* The build procedure has been taught to avoid some unnecessary
instability in the build products.
* A new mechanism to upgrade the wire protocol in place is proposed
and demonstrated that it works with the older versions of Git
without harming them.
* An infrastructure to define what hash function is used in Git is
introduced, and an effort to plumb that throughout various
codepaths has been started.
* The code to iterate over loose object files got optimized.
* An internal function that was left for backward compatibility has
been removed, as there is no remaining callers.
* Historically, the diff machinery for rename detection had a
hardcoded limit of 32k paths; this is being lifted to allow users
trade cycles with a (possibly) easier to read result.
* The tracing infrastructure has been optimized for cases where no
tracing is requested.
* In preparation for implementing narrow/partial clone, the object
walking machinery has been taught a way to tell it to "filter" some
objects from enumeration.
* A few structures and variables that are implementation details of
the decorate API have been renamed and then the API got documented
better.
* Assorted updates for TravisCI integration.
(merge 4f26366679 sg/travis-fixes later to maint).
* Introduce a helper to simplify code to parse a common pattern that
expects either "--key" or "--key=<something>".
* "git version --build-options" learned to report the host CPU and
the exact commit object name the binary was built from.
Also contains various documentation updates and code clean-ups.
Fixes since v2.15
-----------------
* "auto" as a value for the columnar output configuration ought to
judge "is the output consumed by humans?" with the same criteria as
"auto" for coloured output configuration, i.e. either the standard
output stream is going to tty, or a pager is in use. We forgot the
latter, which has been fixed.
* The experimental "color moved lines differently in diff output"
feature was buggy around "ignore whitespace changes" edges, which
has been corrected.
* Instead of using custom line comparison and hashing functions to
implement "moved lines" coloring in the diff output, use the pair
of these functions from lower-layer xdiff/ code.
* Some codepaths did not check for errors when asking what branch the
HEAD points at, which have been fixed.
* "git commit", after making a commit, did not check for errors when
asking on what branch it made the commit, which has been corrected.
* "git status --ignored -u" did not stop at a working tree of a
separate project that is embedded in an ignored directory and
listed files in that other project, instead of just showing the
directory itself as ignored.
* A broken access to object databases in recent update to "git grep
--recurse-submodules" has been fixed.
* A recent regression in "git rebase -i" that broke execution of git
commands from subdirectories via "exec" instruction has been fixed.
* A (possibly flakey) test fix.
* "git check-ref-format --branch @{-1}" bit a "BUG()" when run
outside a repository for obvious reasons; clarify the documentation
and make sure we do not even try to expand the at-mark magic in
such a case, but still call the validation logic for branch names.
* "git fetch --recurse-submodules" now knows that submodules can be
moved around in the superproject in addition to getting updated,
and finds the ones that need to be fetched accordingly.
* Command line completion (in contrib/) update.
* Description of blame.{showroot,blankboundary,showemail,date}
configuration variables have been added to "git config --help".
* After an error from lstat(), diff_populate_filespec() function
sometimes still went ahead and used invalid data in struct stat,
which has been fixed.
* UNC paths are also relevant in Cygwin builds and they are now
tested just like Mingw builds.
* Correct start-up sequence so that a repository could be placed
immediately under the root directory again (which was broken at
around Git 2.13).
* The credential helper for libsecret (in contrib/) has been improved
to allow possibly prompting the end user to unlock secrets that are
currently locked (otherwise the secrets may not be loaded).
* MinGW updates.
* Error checking in "git imap-send" for empty response has been
improved.
* Recent update to the refs infrastructure implementation started
rewriting packed-refs file more often than before; this has been
optimized again for most trivial cases.
* Some error messages did not quote filenames shown in it, which have
been fixed.
* "git rebase -i" recently started misbehaving when a submodule that
is configured with 'submodule.<name>.ignore' is dirty; this has
been corrected.
* Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.
* We used to add an empty alternate object database to the system
that does not help anything; it has been corrected.
* Doc update around use of "format-patch --subject-prefix" etc.
* A fix for an ancient bug in "git apply --ignore-space-change" codepath.
* Clarify and enhance documentation for "merge-base --fork-point", as
it was clear what it computed but not why/what for.
* A few scripts (both in production and tests) incorrectly redirected
their error output. These have been corrected.
* "git notes" sent its error message to its standard output stream,
which was corrected.
* The three-way merge performed by "git cherry-pick" was confused
when a new submodule was added in the meantime, which has been
fixed (or "papered over").
* The sequencer machinery (used by "git cherry-pick A..B", and "git
rebase -i", among other things) would have lost a commit if stopped
due to an unlockable index file, which has been fixed.
* "git apply --inaccurate-eof" when used with "--ignore-space-change"
triggered an internal sanity check, which has been fixed.
* Command line completion (in contrib/) has been taught about the
"--copy" option of "git branch".
* When "git rebase" prepared an mailbox of changes and fed it to "git
am" to replay them, it was confused when a stray "From " happened
to be in the log message of one of the replayed changes. This has
been corrected.
* There was a recent semantic mismerge in the codepath to write out a
section of a configuration section, which has been corrected.
* Mentions of "git-rebase" and "git-am" (dashed form) still remained
in end-user visible strings emitted by the "git rebase" command;
they have been corrected.
* Contrary to the documentation, "git pull -4/-6 other-args" did not
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
corrected.
* "git checkout --recursive" may overwrite and rewind the history of
the branch that happens to be checked out in submodule
repositories, which might not be desirable. Detach the HEAD but
still allow the recursive checkout to succeed in such a case.
(merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).
* "git branch --set-upstream" has been deprecated and (sort of)
removed, as "--set-upstream-to" is the preferred one these days.
The documentation still had "--set-upstream" listed on its
synopsis section, which has been corrected.
(merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).
* Internally we use 0{40} as a placeholder object name to signal the
codepath that there is no such object (e.g. the fast-forward check
while "git fetch" stores a new remote-tracking ref says "we know
there is no 'old' thing pointed at by the ref, as we are creating
it anew" by passing 0{40} for the 'old' side), and expect that a
codepath to locate an in-core object to return NULL as a sign that
the object does not exist. A look-up for an object that does not
exist however is quite costly with a repository with large number
of packfiles. This access pattern has been optimized.
(merge 87b5e236a1 jk/fewer-pack-rescan later to maint).
* In addition to "git stash -m message", the command learned to
accept "git stash -mmessage" form.
(merge 5675473fcb ph/stash-save-m-option-fix later to maint).
* @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
but the documentation was not clear about it, which has been fixed.
(merge 75ce149575 ks/doc-checkout-previous later to maint).
* A regression in the progress eye-candy was fixed.
(merge 9c5951cacf jk/progress-delay-fix later to maint).
* The code internal to the recursive merge strategy was not fully
prepared to see a path that is renamed to try overwriting another
path that is only different in case on case insensitive systems.
This does not matter in the current code, but will start to matter
once the rename detection logic starts taking hints from nearby
paths moving to some directory and moves a new path along with them.
(merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).
* An v2.12-era regression in pathspec match logic, which made it look
into submodule tree even when it is not desired, has been fixed.
(merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).
* Amending commits in git-gui broke the author name that is non-ascii
due to incorrect enconding conversion.
* Recent update to the submodule configuration code broke "diff-tree"
by accidentally stopping to read from the index upfront.
(merge fd66bcc31f bw/submodule-config-cleanup later to maint).
* Git shows a message to tell the user that it is waiting for the
user to finish editing when spawning an editor, in case the editor
opens to a hidden window or somewhere obscure and the user gets
lost.
(merge abfb04d0c7 ls/editor-waiting-message later to maint).
* The "safe crlf" check incorrectly triggered for contents that does
not use CRLF as line endings, which has been corrected.
(merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).
* "git clone --shared" to borrow from a (secondary) worktree did not
work, even though "git clone --local" did. Both are now accepted.
(merge b3b05971c1 es/clone-shared-worktree later to maint).
* The build procedure now allows not just the repositories but also
the refs to be used to take pre-formatted manpages and html
documents to install.
(merge 65289e9dcd rb/quick-install-doc later to maint).
* Update the shell prompt script (in contrib/) to strip trailing CR
from strings read from various "state" files.
(merge 041fe8fc83 ra/prompt-eread-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
(merge 0ba014035a rd/man-reflog-add-n later to maint).
(merge e54b63359f rd/doc-notes-prune-fix later to maint).
(merge ff4c9b413a sp/doc-info-attributes later to maint).
(merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
(merge 5a0526264b tg/t-readme-updates later to maint).
(merge 5e83cca0b8 jk/no-optional-locks later to maint).
(merge 826c778f7c js/hashmap-update-sample later to maint).
(merge 176b2d328c sg/setup-doc-update later to maint).
(merge 1b09073514 rs/am-builtin-leakfix later to maint).
(merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
(merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
(merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
(merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
(merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
(merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
(merge d0e6326026 ot/pretty later to maint).
(merge 44103f4197 sb/test-helper-excludes later to maint).
(merge 170078693f jt/transport-no-more-rsync later to maint).
(merge c07b3adff1 bw/path-doc later to maint).
(merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
(merge dec366c9a8 sr/http-sslverify-config-doc later to maint).
----------------------------------------------------------------
Changes since v2.15.0 are as follows:
Adam Dinwoodie (3):
t5580: add Cygwin support
rebase -i: fix comment typo
doc/SubmittingPatches: correct subject guidance
Albert Astals Cid (1):
completion: add --autostash and --no-autostash to pull
Alex Vandiver (7):
fsmonitor: read entirety of watchman output
fsmonitor: set the PWD to the top of the working tree
fsmonitor: don't bother pretty-printing JSON from watchman
fsmonitor: document GIT_TRACE_FSMONITOR
fsmonitor: delay updating state until after split index is merged
fsmonitor: read from getcwd(), not the PWD environment variable
fsmonitor: store fsmonitor bitmap before splitting index
Anders Kaseorg (1):
git-gui: sort entries in optimized tclIndex
Andrey Okoshkin (3):
commit: check result of resolve_ref_unsafe
diff: fix lstat() error handling in diff_populate_filespec()
merge-recursive: check GIT_MERGE_VERBOSITY only once
Ann T Ropea (7):
Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
Documentation: user-manual: limit usage of ellipsis
print_sha1_ellipsis: introduce helper
checkout: describe_detached_head: remove ellipsis after committish
t4013: prepare for upcoming "diff --raw --abbrev" output format change
diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
t4013: test new output from diff --abbrev --raw
Antoine Beaupré (6):
remote-mediawiki: limit filenames to legal
remote-mediawiki: show known namespace choices on failure
remote-mediawiki: skip virtual namespaces
remote-mediawiki: support fetching from (Main) namespace
remote-mediawiki: process namespaces in order
remote-mediawiki: show progress while fetching namespaces
Beat Bolli (1):
contrib/git-jump: allow to configure the grep command
Ben Peart (16):
bswap: add 64 bit endianness helper get_be64
preload-index: add override to enable testing preload-index
update-index: add a new --force-write-index option
fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
fsmonitor: add documentation for the fsmonitor extension.
ls-files: Add support in ls-files to display the fsmonitor valid bit
update-index: add fsmonitor support to update-index
fsmonitor: add a test tool to dump the index extension
split-index: disable the fsmonitor extension when running the split index test
fsmonitor: add test cases for fsmonitor extension
fsmonitor: add a sample integration script for Watchman
fsmonitor: add a performance test
fsmonitor: MINGW support for watchman integration
fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
read_index_from(): speed index loading by skipping verification of the entry order
fsmonitor: simplify determining the git worktree under Windows
Brandon Williams (24):
pkt-line: add packet_write function
protocol: introduce protocol extension mechanisms
daemon: recognize hidden request arguments
upload-pack, receive-pack: introduce protocol version 1
connect: teach client to recognize v1 server response
connect: tell server that the client understands v1
http: tell server that the client understands v1
i5700: add interop test for protocol transition
ssh: introduce a 'simple' ssh variant
add, reset: use DIFF_OPT_SET macro to set a diff flag
diff: convert flags to be stored in bitfields
diff: add flag to indicate textconv was set via cmdline
diff: remove touched flags
diff: remove DIFF_OPT_TST macro
diff: remove DIFF_OPT_SET macro
diff: remove DIFF_OPT_CLR macro
diff: make struct diff_flags members lowercase
wt-status: actually ignore submodules when requested
pathspec: only match across submodule boundaries when requested
diff-tree: read the index so attribute checks work in bare repositories
submodule: convert stage_updated_gitmodules to take a struct index_state
submodule: used correct index in is_staging_gitmodules_ok
submodule: convert get_next_submodule to not rely on the_index
path: document path functions
Carlos Martín Nieto (1):
diff: --indent-heuristic is no longer experimental
Charles Bailey (2):
t4201: make use of abbreviation in the test more robust
grep: fix NO_LIBPCRE1_JIT to fully disable JIT
Christian Couder (24):
perf/run: add '--config' option to the 'run' script
perf/run: add get_var_from_env_or_config()
perf/run: add GIT_PERF_DIRS_OR_REVS
perf/run: add calls to get_var_from_env_or_config()
perf/run: add get_subsections()
perf/run: update get_var_from_env_or_config() for subsections
perf/run: add run_subsection()
perf/run: show name of rev being built
perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
t0021/rot13-filter: fix list comparison
t0021/rot13-filter: refactor packet reading functions
t0021/rot13-filter: improve 'if .. elsif .. else' style
t0021/rot13-filter: improve error message
t0021/rot13-filter: add packet_initialize()
t0021/rot13-filter: refactor checking final lf
t0021/rot13-filter: add capability functions
Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
Git/Packet: clarify that packet_required_key_val_read allows EOF
Git/Packet.pm: use 'if' instead of 'unless'
list-objects-filter-options: fix 'keword' typo in comment
git-compat-util: introduce skip_to_optional_arg()
index-pack: use skip_to_optional_arg()
diff: use skip_to_optional_arg()
diff: use skip_to_optional_arg_default()
Damien Marié (1):
run-command: add hint when a hook is ignored
Daniel Bensoussan (1):
doc: reword gitworkflows.txt for neutrality
Dennis Kaarsemaker (1):
credential-libsecret: unlock locked secrets
Derrick Stolee (5):
p4211-line-log.sh: add log --online --raw --parents perf test
sha1_name: unroll len loop in find_unique_abbrev_r()
sha1_name: parse less while finding common prefix
sha1_name: minimize OID comparisons during disambiguation
sha1_file: use strbuf_add() instead of strbuf_addf()
Elijah Newren (7):
sequencer: warn when internal merge may be suboptimal due to renameLimit
merge-recursive: handle addition of submodule on our side of history
progress: fix progress meters when dealing with lots of work
diff: remove silent clamp of renameLimit
sequencer: show rename progress during cherry picks
merge-recursive: ignore_case shouldn't reject intentional removals
strbuf: remove unused stripspace function alias
Emily Xie (1):
pathspec: die on empty strings as pathspec
Eric Sunshine (3):
worktree: invoke post-checkout hook (unless --no-checkout)
clone: support 'clone --shared' from a worktree
version --build-options: also report host CPU
Eric Wong (2):
rebase: use mboxrd format to avoid split errors
git-svn: convert CRLF to LF in commit message to SVN
Florian Klink (1):
git-send-email: honor $PATH for sendmail binary
Gennady Kupava (2):
trace: remove trace key normalization
trace: improve performance while category is disabled
Guillaume Castagnino (1):
gitweb: use filetest to allow ACLs
Haaris Mehmood (1):
config: add --expiry-date
Hans Jerry Illikainen (2):
merge: add config option for verifySignatures
t: add tests for pull --verify-signatures
Heiko Voigt (3):
fetch: add test to make sure we stay backwards compatible
implement fetching of moved submodules
submodule: simplify decision tree whether to or not to fetch
Ingo Ruhnke (1):
remote-mediawiki: allow fetching namespaces with spaces
J Wyman (1):
for-each-ref: let upstream/push report the remote ref name
Jacob Keller (2):
sequencer: pass absolute GIT_DIR to exec commands
diff: add tests for --relative without optional prefix value
Jakub Bereżański (2):
t0302: check helper can handle empty credentials
wincred: handle empty username/password correctly
Jameson Miller (4):
status: add option to show ignored files differently
status: report matching ignored and normal untracked
status: document options to show matching ignored files
status: test ignored modes
Jean Carlo Machado (1):
fix typos in 2.15.0 release notes
Jean-Noel Avila (1):
submodule--helper.c: i18n: add a missing space in message
Jeff Hostetler (9):
dir: allow exclusions from blob in addition to file
oidmap: add oidmap iterator methods
oidset: add iterator methods to oidset
list-objects: filter objects in traverse_commit_list
rev-list: add list-objects filtering support
pack-objects: add list-objects filtering
list-objects-filter-options: support --no-filter
rev-list: support --no-filter argument
partial-clone: design doc
Jeff King (22):
revision: quit pruning diff more quickly when possible
t4015: refactor --color-moved whitespace test
t4015: check "negative" case for "-w --color-moved"
t4015: test the output of "diff --color-moved -b"
diff: fix whitespace-skipping with --color-moved
diff: handle NULs in get_string_hash()
test-ref-store: avoid passing NULL to printf
remote: handle broken symrefs
log: handle broken HEAD in decoration check
worktree: handle broken symrefs in find_shared_symref()
setup: avoid double slashes when looking for HEAD
link_alt_odb_entries: make empty input a noop
git-jump: give contact instructions in the README
p5550: factor out nonsense-pack creation
t/perf/lib-pack: use fast-import checkpoint to create packs
p5551: add a script to test fetch pack-dir rescans
everything_local: use "quick" object existence check
sha1_file: fast-path null sha1 as a missing object
git-status.txt: mention --no-optional-locks
progress: set default delay threshold to 100%, not 0%
docs/pretty-formats: mention commas in %(trailers) syntax
cvsimport: apply shell-quoting regex globally
Johannes Schindelin (9):
for-each-ref: let upstream/push optionally report the remote name
status: do not get confused by submodules in excluded directories
mingw: include the full version information in the resources
mingw: add experimental feature to redirect standard handles
mingw: optionally redirect stderr/stdout via the same handle
mingw: document the standard handle redirection
for-each-ref: test :remotename and :remoteref
hashmap: adjust documentation to reflect reality
version --build-options: report commit, too, if possible
Jonathan Nieder (10):
ssh test: make copy_ssh_wrapper_as clean up after itself
connect: move no_fork fallback to git_tcp_connect
connect: split git:// setup into a separate function
connect: split ssh command line options into separate function
connect: split ssh option computation to its own function
ssh: 'auto' variant to select between 'ssh' and 'simple'
ssh: 'simple' variant does not support -4/-6
ssh: 'simple' variant does not support --port
connect: correct style of C-style comment
generate-cmdlist: avoid non-deterministic output
Jonathan Tan (10):
connect: in ref advertisement, shallows are last
Documentation: document Extra Parameters
Tests: clean up and document submodule helpers
Tests: clean up submodule recursive helpers
diff: support anchoring line(s)
diffcore-rename: make diff-tree -l0 mean -l<large>
decorate: clean up and document API
transport: remove unused "push" in vtable
clone, fetch: remove redundant transport check
transport: make transport vtable more private
Junio C Hamano (37):
t0027: do not use an empty string as a pathspec element
describe: do not use cmd_*() as a subroutine
merge-ours: do not use cmd_*() as a subroutine
branch: streamline "attr_only" handling in validate_new_branchname()
branch: split validate_new_branchname() into two
t5601: rm the target file of cp that could still be executing
check-ref-format --branch: do not expand @{...} outside repository
check-ref-format --branch: strip refs/heads/ using skip_prefix
check-ref-format doc: --branch validates and expands <branch>
column: do not include pager.c
xdiff: reassign xpparm_t.flags bits
The first batch for 2.16
RelNotes: the second batch post 2.15 comes
diff: --ignore-cr-at-eol
merge-base --fork-point doc: clarify the example and failure modes
RelNotes: the third batch for 2.16
branch: correctly reject refs/heads/{-dash,HEAD}
Start preparation for 2.15.1
RelNotes: the fourth batch for 2.16
Almost ready for 2.15.1
RelNotes: the fifth batch for 2.16
hooks doc: clarify when receive-pack invokes its hooks
A bit more fixes for 2.15.1
RelNotes: the sixth batch for 2.16
Git 2.15.1
RelNotes: the seventh batch
t2020: test variations that matter
Prepare for 2.15.2
RelNotes: the eighth batch
diff: use skip_to_optional_arg_default() in parsing --relative
t4045: reindent to make helpers readable
RelNotes: the ninth batch
RelNotes: the tenth batch
t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
sequencer.c: drop 'const' from function return type
RelNotes: the eleventh batch
Git 2.16-rc0
Kaartic Sivaraam (12):
mailmap: use Kaartic Sivaraam's new address
builtin/branch: remove redundant check for HEAD
git-rebase: clean up dashed-usages in messages
Doc/checkout: checking out using @{-N} can lead to detached state
branch: improve documentation and naming of create_branch() parameters
branch: group related arguments of create_branch()
branch: update warning message shown when copying a misnamed branch
builtin/branch: strip refs/heads/ using skip_prefix
Doc/check-ref-format: clarify information about @{-N} syntax
rebase: consistently use branch_name variable
rebase: distinguish user input by quoting it
rebase: rebasing can also be done when HEAD is detached
Kevin (1):
remote-mediawiki: add namespace support
Kevin Daudt (1):
column: show auto columns when pager is active
Lars Schneider (3):
refactor "dumb" terminal determination
progress: drop delay-threshold code
launch_editor(): indicate that Git waits for user input
Liam Beguin (9):
Documentation: move rebase.* configs to new file
Documentation: use preferred name for the 'todo list' script
rebase -i: set commit to null in exec commands
rebase -i: refactor transform_todo_ids
rebase -i: replace reference to sha1 with oid
rebase -i: update functions to use a flags parameter
rebase -i -x: add exec commands via the rebase--helper
rebase -i: learn to abbreviate command names
t3404: add test case for abbreviated commands
Marius Paliga (1):
builtin/push.c: add push.pushOption config
Martin Ågren (22):
sha1_file: do not leak `lock_file`
treewide: prefer lockfiles on the stack
lockfile: fix documentation on `close_lock_file_gently()`
tempfile: fix documentation on `delete_tempfile()`
checkout-index: simplify locking logic
cache-tree: simplify locking logic
apply: move lockfile into `apply_state`
apply: remove `newfd` from `struct apply_state`
cache.h: document `write_locked_index()`
read-cache: drop explicit `CLOSE_LOCK`-flag
read-cache: leave lock in right state in `write_locked_index()`
read_cache: roll back lock in `update_index_if_able()`
grep: take the read-lock when adding a submodule
bisect: change calling-convention of `find_bisection()`
bisect: fix memory leak in `find_bisection()`
bisect: fix off-by-one error in `best_bisection_sorted()`
bisect: fix memory leak when returning best element
builtin/merge-base: free commit lists
reduce_heads: fix memory leaks
t7006: add tests for how git branch paginates
branch: respect `pager.branch` in list-mode only
branch: change default of `pager.branch` to "on"
Michael Haggerty (12):
t1409: check that `packed-refs` is not rewritten unnecessarily
files-backend: don't rewrite the `packed-refs` file unnecessarily
t0000: check whether the shell supports the "local" keyword
files_transaction_prepare(): don't leak flags to packed transaction
prune_ref(): call `ref_transaction_add_update()` directly
ref_transaction_update(): die on disallowed flags
ref_transaction_add_update(): remove a check
refs: tidy up and adjust visibility of the `ref_update` flags
refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
write_packed_entry(): take `object_id` arguments
refs: update some more docs to use "oid" rather than "sha1"
Nicolas Morey-Chaisemartin (1):
imap-send: URI encode server folder
Olga Telezhnaya (2):
format: create pretty.h file
format: create docs for pretty.h
Phil Hord (2):
doc: prefer 'stash push' over 'stash save'
stash: learn to parse -m/--message like commit does
Phillip Wood (2):
config: avoid "write_in_full(fd, buf, len) != len" pattern
sequencer: reschedule pick if index can't be locked
Pranit Bauva (6):
bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
bisect--helper: rewrite `check_term_format` shell function in C
bisect--helper: `write_terms` shell function in C
bisect--helper: `bisect_clean_state` shell function in C
t6030: explicitly test for bisection cleanup
bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
Prathamesh Chavan (3):
submodule--helper: introduce get_submodule_displaypath()
submodule--helper: introduce for_each_listed_submodule()
submodule: port submodule subcommand 'status' from shell to C
Rafael Ascensão (1):
log: add option to choose which refs to decorate
Ramsay Jones (1):
repository: fix a sparse 'using integer as NULL pointer' warning
Randall S. Becker (1):
install-doc-quick: allow specifying what ref to install
Rasmus Villemoes (2):
Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
completion: add git config sendemail.tocmd
René Scharfe (21):
notes: move hex_to_bytes() to hex.c and export it
http-push: use hex_to_bytes()
sha1_file: use hex_to_bytes()
sequencer: factor out rewrite_file()
sequencer: use O_TRUNC to truncate files
imap-send: handle NULL return of next_arg()
imap-send: handle missing response codes gracefully
apply: avoid out-of-bounds access in fuzzy_matchlines()
apply: update line lengths for --inaccurate-eof
config: flip return value of write_section()
t4051: add test for comments preceding function lines
xdiff: factor out is_func_rec()
xdiff: show non-empty lines before functions with -W
t7810: improve check of -W with user-defined function lines
grep: update boundary variable for pre-context
grep: show non-empty lines before functions with -W
am: release strbuf after use in split_mail_mbox()
fmt-merge-msg: avoid leaking strbuf in shortlog()
strbuf: release memory on read error in strbuf_read_once()
transport-helper: plug strbuf and string_list leaks
p7519: improve check for prerequisite WATCHMAN
Robert Abel (2):
git-prompt: make __git_eread intended use explicit
git-prompt: fix reading files with windows line endings
Robert P. J. Day (4):
bisect: mention "view" as an alternative to "visualize"
doc: add missing "-n" (dry-run) option to reflog man page
prune: add "--progress" to man page and usage msg
notes: correct 'git notes prune' options to '[-n] [-v]'
SZEDER Gábor (7):
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
travis-ci: don't build Git for the static analysis job
setup.c: fix comment about order of .git directory discovery
travis-ci: introduce a $jobname variable for 'ci/*' scripts
travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output
Shuyu Wei (1):
pull: pass -4/-6 option to 'git fetch'
Simon Ruderich (3):
sequencer.c: check return value of close() in rewrite_file()
wrapper.c: consistently quote filenames in error messages
config: document default value of http.sslVerify
Stefan Beller (15):
recursive submodules: detach HEAD from new state
Documentation/checkout: clarify submodule HEADs to be detached
xdiff-interface: export comparing and hashing strings
diff.c: get rid of duplicate implementation
t6120: fix typo in test name
list-objects.c: factor out traverse_trees_and_blobs
config: document blame configuration
t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
revision.h: introduce blob/tree walking in order of the commits
builtin/describe.c: rename `oid` to avoid variable shadowing
builtin/describe.c: print debug statements earlier
builtin/describe.c: factor out describe_commit
Documentation/git-clone: improve description for submodule recursing
t/helper: ignore everything but sources
builtin/describe.c: describe a blob
Steffen Prohaska (1):
doc: Mention info/attributes in gitrepository-layout
Stephan Beyer (1):
bisect run: die if no command is given
Thomas Braun (1):
completion: add remaining flags to checkout
Thomas Gummerer (11):
stash: replace "git stash save" with "git stash push" in the documentation
stash: mark "git stash save" deprecated in the man page
stash: remove now superfluos help for "stash push"
checkout: factor out functions to new lib file
worktree: add can be created from any commit-ish
worktree: add --[no-]track option to the add subcommand
worktree: make add <path> <branch> dwim
t/README: remove mention of adding copyright notices
t/README: document test_cmp_rev
worktree: add --guess-remote flag to add subcommand
add worktree.guessRemote config option
Todd Zullinger (11):
Replace Free Software Foundation address in license notices
Replace Free Software Foundation address in license notices
t/lib-gpg: fix gpgconf stderr redirect to /dev/null
rebase: fix stderr redirect in apply_autostash()
notes: send "Automatic notes merge failed" messages to stderr
branch doc: remove --set-upstream from synopsis
completion: add '--copy' option to 'git branch'
RelNotes: minor typo fixes in 2.15.1 draft
t/lib-git-svn: cleanup inconsistent tab/space usage
t/lib-git-svn.sh: improve svnserve tests with parallel make test
RelNotes: minor typo fixes in 2.16.0 draft
Torsten Bögershausen (3):
add: introduce "--renormalize"
convert: tighten the safe autocrlf handling
t0027: Adapt the new MIX tests to Windows
W. Trevor King (1):
pull: pass --signoff/--no-signoff to "git merge"
Wei Shuyu (1):
http: support CURLPROXY_HTTPS
brian m. carlson (31):
walker: convert to struct object_id
refs/files-backend: convert struct ref_to_prune to object_id
refs: convert delete_ref and refs_delete_ref to struct object_id
refs: convert update_ref and refs_update_ref to use struct object_id
refs: prevent accidental NULL dereference in write_pseudoref
refs: update ref transactions to use struct object_id
Convert check_connected to use struct object_id
refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
refs: convert read_ref and read_ref_full to object_id
refs: convert dwim_ref and expand_ref to struct object_id
builtin/reflog: convert remaining unsigned char uses to object_id
refs: convert dwim_log to struct object_id
pack-bitmap: convert traverse_bitmap_commit_list to object_id
builtin/pack-objects: convert to struct object_id
refs: convert peel_ref to struct object_id
refs: convert read_ref_at to struct object_id
refs: convert reflog_expire parameter to struct object_id
sha1_file: convert index_path and index_fd to struct object_id
Convert remaining callers of resolve_gitlink_ref to object_id
refs: convert resolve_gitlink_ref to struct object_id
worktree: convert struct worktree to object_id
refs: convert resolve_ref_unsafe to struct object_id
refs: convert peel_object to struct object_id
refs: convert read_raw_ref backends to struct object_id
refs/files-backend: convert static functions to object_id
Documentation: enable compat-mode for Asciidoctor
setup: expose enumerated repo info
Add structure representing hash algorithm
Integrate hash algorithm support with repo setup
Switch empty tree and blob lookups to use hash abstraction
Documentation: convert SubmittingPatches to AsciiDoc
Ævar Arnfjörð Bjarmason (2):
test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
Łukasz Stelmach (1):
git-gui: prevent double UTF-8 conversion
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.15.0-rc2
@ 2017-10-20 6:49 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-10-20 6:49 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.15.0-rc2 is now available for testing
at the usual places. It is comprised of 737 non-merge commits
since v2.14.0, contributed by 75 people, 22 of which are new faces.
We had to back-track a bit wrt to the "git add -p" regression; for
now, we simply revert the changes that caused issues to users
without redefining 'color.ui=always' to mean 'color.ui=auto', which
may or may not happen in future releases.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.15.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.14.0 are as follows.
Welcome to the Git development community!
Ann T Ropea, Daniel Watkins, Derrick Stolee, Dimitrios
Christidis, Eric Rannaud, Evan Zacks, Hielke Christian Braun,
Ian Campbell, Ilya Kantor, Jameson Miller, Job Snijders, Joel
Teichroeb, joernchen, Łukasz Gryglicki, Manav Rathi, Martin
Ågren, Michael Forney, Patryk Obara, Randall S. Becker, Ross
Kabus, Taylor Blau, and Urs Thuermann.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Andreas Heiduk,
Anthony Sottile, Ben Boeckel, Brandon Casey, Brandon Williams,
brian m. carlson, Christian Couder, David Glasser, Eric Blake,
Han-Wen Nienhuys, Heiko Voigt, Jean-Noel Avila, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Kevin Daudt,
Kevin Willford, Lars Schneider, Martin Koegler, Matthieu Moy,
Max Kirillov, Michael Haggerty, Michael J Gruber, Nguyễn Thái
Ngọc Duy, Nicolas Morey-Chaisemartin, Øystein Walle, Paolo
Bonzini, Pat Thoyts, Philip Oakley, Phillip Wood, Ralf Thielow,
Raman Gupta, Ramsay Jones, René Scharfe, Sahil Dua, Santiago
Torres, Stefan Beller, Stephan Beyer, Takashi Iwai, Thomas
Braun, Thomas Gummerer, Todd Zullinger, Tom G. Christensen,
Torsten Bögershausen, William Duclot, and W. Trevor King.
----------------------------------------------------------------
Git 2.15 Release Notes (draft)
==============================
Backward compatibility notes and other notable changes.
* Use of an empty string as a pathspec element that is used for
'everything matches' is still warned and Git asks users to use a
more explicit '.' for that instead. The hope is that existing
users will not mind this change, and eventually the warning can be
turned into a hard error, upgrading the deprecation into removal of
this (mis)feature. That is now scheduled to happen in Git v2.16,
the next major release after this one.
* Git now avoids blindly falling back to ".git" when the setup
sequence said we are _not_ in Git repository. A corner case that
happens to work right now may be broken by a call to BUG().
We've tried hard to locate such cases and fixed them, but there
might still be cases that need to be addressed--bug reports are
greatly appreciated.
* "branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.
Updates since v2.14
-------------------
UI, Workflows & Features
* An example that is now obsolete has been removed from a sample hook,
and an old example in it that added a sign-off manually has been
improved to use the interpret-trailers command.
* The advice message given when "git rebase" stops for conflicting
changes has been improved.
* The "rerere-train" script (in contrib/) learned the "--overwrite"
option to allow overwriting existing recorded resolutions.
* "git contacts" (in contrib/) now lists the address on the
"Reported-by:" trailer to its output, in addition to those on
S-o-b: and other trailers, to make it easier to notify (and thank)
the original bug reporter.
* "git rebase", especially when it is run by mistake and ends up
trying to replay many changes, spent long time in silence. The
command has been taught to show progress report when it spends
long time preparing these many changes to replay (which would give
the user a chance to abort with ^C).
* "git merge" learned a "--signoff" option to add the Signed-off-by:
trailer with the committer's name.
* "git diff" learned to optionally paint new lines that are the same
as deleted lines elsewhere differently from genuinely new lines.
* "git interpret-trailers" learned to take the trailer specifications
from the command line that overrides the configured values.
* "git interpret-trailers" has been taught a "--parse" and a few
other options to make it easier for scripts to grab existing
trailer lines from a commit log message.
* The "--format=%(trailers)" option "git log" and its friends take
learned to take the 'unfold' and 'only' modifiers to normalize its
output, e.g. "git log --format=%(trailers:only,unfold)".
* "gitweb" shows a link to visit the 'raw' contents of blbos in the
history overview page.
* "[gc] rerereResolved = 5.days" used to be invalid, as the variable
is defined to take an integer counting the number of days. It now
is allowed.
* The code to acquire a lock on a reference (e.g. while accepting a
push from a client) used to immediately fail when the reference is
already locked---now it waits for a very short while and retries,
which can make it succeed if the lock holder was holding it during
a read-only operation.
* "branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.
* The codepath to call external process filter for smudge/clean
operation learned to show the progress meter.
* "git rev-parse" learned "--is-shallow-repository", that is to be
used in a way similar to existing "--is-bare-repository" and
friends.
* "git describe --match <pattern>" has been taught to play well with
the "--all" option.
* "git branch" learned "-c/-C" to create a new branch by copying an
existing one.
* Some commands (most notably "git status") makes an opportunistic
update when performing a read-only operation to help optimize later
operations in the same repository. The new "--no-optional-locks"
option can be passed to Git to disable them.
* "git for-each-ref --format=..." learned a new format element,
%(trailers), to show only the commit log trailer part of the log
message.
Performance, Internal Implementation, Development Support etc.
* Conversion from uchar[20] to struct object_id continues.
* Start using selected c99 constructs in small, stable and
essentialpart of the system to catch people who care about
older compilers that do not grok them.
* The filter-process interface learned to allow a process with long
latency give a "delayed" response.
* Many uses of comparision callback function the hashmap API uses
cast the callback function type when registering it to
hashmap_init(), which defeats the compile time type checking when
the callback interface changes (e.g. gaining more parameters).
The callback implementations have been updated to take "void *"
pointers and cast them to the type they expect instead.
* Because recent Git for Windows do come with a real msgfmt, the
build procedure for git-gui has been updated to use it instead of a
hand-rolled substitute.
* "git grep --recurse-submodules" has been reworked to give a more
consistent output across submodule boundary (and do its thing
without having to fork a separate process).
* A helper function to read a single whole line into strbuf
mistakenly triggered OOM error at EOF under certain conditions,
which has been fixed.
* The "ref-store" code reorganization continues.
* "git commit" used to discard the index and re-read from the filesystem
just in case the pre-commit hook has updated it in the middle; this
has been optimized out when we know we do not run the pre-commit hook.
(merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).
* Updates to the HTTP layer we made recently unconditionally used
features of libCurl without checking the existence of them, causing
compilation errors, which has been fixed. Also migrate the code to
check feature macros, not version numbers, to cope better with
libCurl that vendor ships with backported features.
* The API to start showing progress meter after a short delay has
been simplified.
(merge 8aade107dd jc/simplify-progress later to maint).
* Code clean-up to avoid mixing values read from the .gitmodules file
and values read from the .git/config file.
* We used to spend more than necessary cycles allocating and freeing
piece of memory while writing each index entry out. This has been
optimized.
* Platforms that ship with a separate sha1 with collision detection
library can link to it instead of using the copy we ship as part of
our source tree.
* Code around "notes" have been cleaned up.
(merge 3964281524 mh/notes-cleanup later to maint).
* The long-standing rule that an in-core lockfile instance, once it
is used, must not be freed, has been lifted and the lockfile and
tempfile APIs have been updated to reduce the chance of programming
errors.
* Our hashmap implementation in hashmap.[ch] is not thread-safe when
adding a new item needs to expand the hashtable by rehashing; add
an API to disable the automatic rehashing to work it around.
* Many of our programs consider that it is OK to release dynamic
storage that is used throughout the life of the program by simply
exiting, but this makes it harder to leak detection tools to avoid
reporting false positives. Plug many existing leaks and introduce
a mechanism for developers to mark that the region of memory
pointed by a pointer is not lost/leaking to help these tools.
* As "git commit" to conclude a conflicted "git merge" honors the
commit-msg hook, "git merge" that records a merge commit that
cleanly auto-merges should, but it didn't.
* The codepath for "git merge-recursive" has been cleaned up.
* Many leaks of strbuf have been fixed.
* "git imap-send" has our own implementation of the protocol and also
can use more recent libCurl with the imap protocol support. Update
the latter so that it can use the credential subsystem, and then
make it the default option to use, so that we can eventually
deprecate and remove the former.
* "make style" runs git-clang-format to help developers by pointing
out coding style issues.
* A test to demonstrate "git mv" failing to adjust nested submodules
has been added.
(merge c514167df2 hv/mv-nested-submodules-test later to maint).
* On Cygwin, "ulimit -s" does not report failure but it does not work
at all, which causes an unexpected success of some tests that
expect failures under a limited stack situation. This has been
fixed.
* Many codepaths have been updated to squelch -Wimplicit-fallthrough
warnings from Gcc 7 (which is a good code hygiene).
* Add a helper for DLL loading in anticipation for its need in a
future topic RSN.
* "git status --ignored", when noticing that a directory without any
tracked path is ignored, still enumerated all the ignored paths in
the directory, which is unnecessary. The codepath has been
optimized to avoid this overhead.
* The final batch to "git rebase -i" updates to move more code from
the shell script to C has been merged.
* Operations that do not touch (majority of) packed refs have been
optimized by making accesses to packed-refs file lazy; we no longer
pre-parse everything, and an access to a single ref in the
packed-refs does not touch majority of irrelevant refs, either.
* Add comment to clarify that the style file is meant to be used with
clang-5 and the rules are still work in progress.
* Many variables that points at a region of memory that will live
throughout the life of the program have been marked with UNLEAK
marker to help the leak checkers concentrate on real leaks..
* Plans for weaning us off of SHA-1 has been documented.
* A new "oidmap" API has been introduced and oidset API has been
rewritten to use it.
Also contains various documentation updates and code clean-ups.
Fixes since v2.14
-----------------
* "%C(color name)" in the pretty print format always produced ANSI
color escape codes, which was an early design mistake. They now
honor the configuration (e.g. "color.ui = never") and also tty-ness
of the output medium.
* The http.{sslkey,sslCert} configuration variables are to be
interpreted as a pathname that honors "~[username]/" prefix, but
weren't, which has been fixed.
* Numerous bugs in walking of reflogs via "log -g" and friends have
been fixed.
* "git commit" when seeing an totally empty message said "you did not
edit the message", which is clearly wrong. The message has been
corrected.
* When a directory is not readable, "gitweb" fails to build the
project list. Work this around by skipping such a directory.
* Some versions of GnuPG fails to kill gpg-agent it auto-spawned
and such a left-over agent can interfere with a test. Work it
around by attempting to kill one before starting a new test.
* A recently added test for the "credential-cache" helper revealed
that EOF detection done around the time the connection to the cache
daemon is torn down were flaky. This was fixed by reacting to
ECONNRESET and behaving as if we got an EOF.
* "git log --tag=no-such-tag" showed log starting from HEAD, which
has been fixed---it now shows nothing.
* The "tag.pager" configuration variable was useless for those who
actually create tag objects, as it interfered with the use of an
editor. A new mechanism has been introduced for commands to enable
pager depending on what operation is being carried out to fix this,
and then "git tag -l" is made to run pager by default.
* "git push --recurse-submodules $there HEAD:$target" was not
propagated down to the submodules, but now it is.
* Commands like "git rebase" accepted the --rerere-autoupdate option
from the command line, but did not always use it. This has been
fixed.
* "git clone --recurse-submodules --quiet" did not pass the quiet
option down to submodules.
* Test portability fix for OBSD.
* Portability fix for OBSD.
* "git am -s" has been taught that some input may end with a trailer
block that is not Signed-off-by: and it should refrain from adding
an extra blank line before adding a new sign-off in such a case.
* "git svn" used with "--localtime" option did not compute the tz
offset for the timestamp in question and instead always used the
current time, which has been corrected.
* Memory leak in an error codepath has been plugged.
* "git stash -u" used the contents of the committed version of the
".gitignore" file to decide which paths are ignored, even when the
file has local changes. The command has been taught to instead use
the locally modified contents.
* bash 4.4 or newer gave a warning on NUL byte in command
substitution done in "git stash"; this has been squelched.
* "git grep -L" and "git grep --quiet -L" reported different exit
codes; this has been corrected.
* When handshake with a subprocess filter notices that the process
asked for an unknown capability, Git did not report what program
the offending subprocess was running. This has been corrected.
* "git apply" that is used as a better "patch -p1" failed to apply a
taken from a file with CRLF line endings to a file with CRLF line
endings. The root cause was because it misused convert_to_git()
that tried to do "safe-crlf" processing by looking at the index
entry at the same path, which is a nonsense---in that mode, "apply"
is not working on the data in (or derived from) the index at all.
This has been fixed.
* Killing "git merge --edit" before the editor returns control left
the repository in a state with MERGE_MSG but without MERGE_HEAD,
which incorrectly tells the subsequent "git commit" that there was
a squash merge in progress. This has been fixed.
* "git archive" did not work well with pathspecs and the
export-ignore attribute.
* In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
was taught to "git send-email" as a valid way to tell it that it
needs to also send a carbon copy to <a@dd.re.ss> in the trailer
section.
* "git branch -M a b" while on a branch that is completely unrelated
to either branch a or branch b misbehaved when multiple worktree
was in use. This has been fixed.
(merge 31824d180d nd/worktree-kill-parse-ref later to maint).
* "git gc" and friends when multiple worktrees are used off of a
single repository did not consider the index and per-worktree refs
of other worktrees as the root for reachability traversal, making
objects that are in use only in other worktrees to be subject to
garbage collection.
* A regression to "gitk --bisect" by a recent update has been fixed.
* "git -c submodule.recurse=yes pull" did not work as if the
"--recurse-submodules" option was given from the command line.
This has been corrected.
* Unlike "git commit-tree < file", "git commit-tree -F file" did not
pass the contents of the file verbatim and instead completed an
incomplete line at the end, if exists. The latter has been updated
to match the behaviour of the former.
* Many codepaths did not diagnose write failures correctly when disks
go full, due to their misuse of write_in_full() helper function,
which have been corrected.
(merge f48ecd38cb jk/write-in-full-fix later to maint).
* "git help co" now says "co is aliased to ...", not "git co is".
(merge b3a8076e0d ks/help-alias-label later to maint).
* "git archive", especially when used with pathspec, stored an empty
directory in its output, even though Git itself never does so.
This has been fixed.
* API error-proofing which happens to also squelch warnings from GCC.
* The explanation of the cut-line in the commit log editor has been
slightly tweaked.
(merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).
* "git gc" tries to avoid running two instances at the same time by
reading and writing pid/host from and to a lock file; it used to
use an incorrect fscanf() format when reading, which has been
corrected.
* The scripts to drive TravisCI has been reorganized and then an
optimization to avoid spending cycles on a branch whose tip is
tagged has been implemented.
(merge 8376eb4a8f ls/travis-scriptify later to maint).
* The test linter has been taught that we do not like "echo -e".
* Code cmp.std.c nitpick.
* A regression fix for 2.11 that made the code to read the list of
alternate object stores overrun the end of the string.
(merge f0f7bebef7 jk/info-alternates-fix later to maint).
* "git describe --match" learned to take multiple patterns in v2.13
series, but the feature ignored the patterns after the first one
and did not work at all. This has been fixed.
* "git filter-branch" cannot reproduce a history with a tag without
the tagger field, which only ancient versions of Git allowed to be
created. This has been corrected.
(merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).
* "git cat-file --textconv" started segfaulting recently, which
has been corrected.
* The built-in pattern to detect the "function header" for HTML did
not match <H1>..<H6> elements without any attributes, which has
been fixed.
* "git mailinfo" was loose in decoding quoted printable and produced
garbage when the two letters after the equal sign are not
hexadecimal. This has been fixed.
* The machinery to create xdelta used in pack files received the
sizes of the data in size_t, but lost the higher bits of them by
storing them in "unsigned int" during the computation, which is
fixed.
* The delta format used in the packfile cannot reference data at
offset larger than what can be expressed in 4-byte, but the
generator for the data failed to make sure the offset does not
overflow. This has been corrected.
* The documentation for '-X<option>' for merges was misleadingly
written to suggest that "-s theirs" exists, which is not the case.
* "git fast-export" with -M/-C option issued "copy" instruction on a
path that is simultaneously modified, which was incorrect.
(merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).
* Many codepaths have been updated to squelch -Wsign-compare
warnings.
(merge 071bcaab64 rj/no-sign-compare later to maint).
* Memory leaks in various codepaths have been plugged.
(merge 4d01a7fa65 ma/leakplugs later to maint).
* Recent versions of "git rev-parse --parseopt" did not parse the
option specification that does not have the optional flags (*=?!)
correctly, which has been corrected.
(merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).
* The checkpoint command "git fast-import" did not flush updates to
refs and marks unless at least one object was created since the
last checkpoint, which has been corrected, as these things can
happen without any new object getting created.
(merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).
* Spell the name of our system as "Git" in the output from
request-pull script.
* Fixes for a handful memory access issues identified by valgrind.
* Backports a moral equivalent of 2015 fix to the poll() emulation
from the upstream gnulib to fix occasional breakages on HPE NonStop.
* Users with "color.ui = always" in their configuration were broken
by a recent change that made plumbing commands to pay attention to
them as the patch created internally by "git add -p" were colored
(heh) and made unusable. This has been fixed by reverting the
offending change.
* In the "--format=..." option of the "git for-each-ref" command (and
its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
(e.g. "%(refname:)", "%(body:)" used to error out. Instead, treat
them as if the colon and an empty string that follows it were not
there.
* An ancient bug that made Git misbehave with creation/renaming of
refs has been fixed.
* "git fetch <there> <src>:<dst>" allows an object name on the <src>
side when the other side accepts such a request since Git v2.5, but
the documentation was left stale.
(merge 83558a412a jc/fetch-refspec-doc-update later to maint).
* Update the documentation for "git filter-branch" so that the filter
options are listed in the same order as they are applied, as
described in an earlier part of the doc.
(merge 07c4984508 dg/filter-branch-filter-order-doc later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge f094b89a4d ma/parse-maybe-bool later to maint).
(merge 6cdf8a7929 ma/ts-cleanups later to maint).
(merge 7560f547e6 ma/up-to-date later to maint).
(merge 0db3dc75f3 rs/apply-epoch later to maint).
(merge 276d0e35c0 ma/split-symref-update-fix later to maint).
(merge f777623514 ks/branch-tweak-error-message-for-extra-args later to maint).
(merge 33f3c683ec ks/verify-filename-non-option-error-message-tweak later to maint).
(merge 7cbbf9d6a2 ls/filter-process-delayed later to maint).
(merge 488aa65c8f wk/merge-options-gpg-sign-doc later to maint).
(merge e61cb19a27 jc/branch-force-doc-readability-fix later to maint).
----------------------------------------------------------------
Changes since v2.14.0 are as follows:
Adam Dinwoodie (1):
doc: correct command formatting
Andreas Heiduk (2):
doc: add missing values "none" and "default" for diff.wsErrorHighlight
doc: clarify "config --bool" behaviour with empty string
Ann T Ropea (1):
request-pull: capitalise "Git" to make it a proper noun
Anthony Sottile (1):
git-grep: correct exit code with --quiet and -L
Ben Boeckel (1):
Documentation: mention that `eol` can change the dirty status of paths
Brandon Casey (7):
t1502: demonstrate rev-parse --parseopt option mis-parsing
rev-parse parseopt: do not search help text for flag chars
rev-parse parseopt: interpret any whitespace as start of help text
git-rebase: don't ignore unexpected command line arguments
t0040,t1502: Demonstrate parse_options bugs
parse-options: write blank line to correct output stream
parse-options: only insert newline in help text if needed
Brandon Williams (29):
repo_read_index: don't discard the index
repository: have the_repository use the_index
submodule--helper: teach push-check to handle HEAD
cache.h: add GITMODULES_FILE macro
config: add config_from_gitmodules
submodule: remove submodule.fetchjobs from submodule-config parsing
submodule: remove fetch.recursesubmodules from submodule-config parsing
submodule: check for unstaged .gitmodules outside of config parsing
submodule: check for unmerged .gitmodules outside of config parsing
submodule: merge repo_read_gitmodules and gitmodules_config
grep: recurse in-process using 'struct repository'
t7411: check configuration parsing errors
submodule: don't use submodule_from_name
add, reset: ensure submodules can be added or reset
submodule--helper: don't overlay config in remote_submodule_branch
submodule--helper: don't overlay config in update-clone
fetch: don't overlay config with submodule-config
submodule: don't rely on overlayed config when setting diffopts
unpack-trees: don't respect submodule.update
submodule: remove submodule_config callback routine
diff: stop allowing diff to have submodules configured in .git/config
submodule-config: remove support for overlaying repository config
submodule-config: move submodule-config functions to submodule-config.c
submodule-config: lazy-load a repository's .gitmodules file
unpack-trees: improve loading of .gitmodules
submodule: remove gitmodules_config
clone: teach recursive clones to respect -q
clang-format: outline the git project's coding style
Makefile: add style build rule
Christian Couder (3):
refs: use skip_prefix() in ref_is_hidden()
sub-process: print the cmd when a capability is unsupported
sha1-lookup: remove sha1_entry_pos() from header file
Daniel Watkins (1):
diff-highlight: add clean target to Makefile
David Glasser (1):
doc: list filter-branch subdirectory-filter first
Derrick Stolee (1):
cleanup: fix possible overflow errors in binary search
Dimitrios Christidis (1):
fmt-merge-msg: fix coding style
Eric Blake (1):
git-contacts: also recognise "Reported-by:"
Eric Rannaud (1):
fast-import: checkpoint: dump branches/tags/marks even if object_count==0
Evan Zacks (1):
doc: fix minor typos (extra/duplicated words)
Han-Wen Nienhuys (5):
submodule.h: typofix
submodule.c: describe submodule_to_gitdir() in a new comment
real_path: clarify return value ownership
read_gitfile_gently: clarify return value ownership.
string-list.h: move documentation from Documentation/api/ into header
Heiko Voigt (2):
t5526: fix some broken && chains
add test for bug in git-mv for recursive submodules
Hielke Christian Braun (1):
gitweb: skip unreadable subdirectories
Ian Campbell (4):
filter-branch: reset $GIT_* before cleaning up
filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
filter-branch: stash away ref map in a branch
filter-branch: use hash-object instead of mktag
Ilya Kantor (1):
userdiff: fix HTML hunk header regexp
Jameson Miller (1):
Improve performance of git status --ignored
Jean-Noel Avila (1):
i18n: add a missing space in message
Jeff Hostetler (1):
hashmap: add API to disable item counting when threaded
Jeff King (134):
t1414: document some reflog-walk oddities
revision: disallow reflog walking with revs->limited
log: clarify comment about reflog cycles
log: do not free parents when walking reflog
get_revision_1(): replace do-while with an early return
rev-list: check reflog_info before showing usage
reflog-walk: stop using fake parents
reflog-walk: apply --since/--until to reflog dates
check return value of verify_ref_format()
docs/for-each-ref: update pointer to color syntax
t: use test_decode_color rather than literal ANSI codes
ref-filter: simplify automatic color reset
ref-filter: abstract ref format into its own struct
ref-filter: move need_color_reset_at_eol into ref_format
ref-filter: provide a function for parsing sort options
ref-filter: make parse_ref_filter_atom a private function
ref-filter: factor out the parsing of sorting atoms
ref-filter: pass ref_format struct to atom parsers
color: check color.ui in git_default_config()
for-each-ref: load config earlier
rev-list: pass diffopt->use_colors through to pretty-print
pretty: respect color settings for %C placeholders
ref-filter: consult want_color() before emitting colors
strbuf: use designated initializers in STRBUF_INIT
t/lib-proto-disable: restore protocol.allow after config tests
t5813: add test for hostname starting with dash
connect: factor out "looks like command line option" check
connect: reject dashed arguments for proxy commands
connect: reject paths that look like command line options
t6018: flesh out empty input/output rev-list tests
revision: add rev_input_given flag
rev-list: don't show usage when we see empty ref patterns
revision: do not fallback to default when rev_input_given is set
hashcmp: use memcmp instead of open-coded loop
sha1_file: drop experimental GIT_USE_LOOKUP search
trailer: put process_trailers() options into a struct
interpret-trailers: add an option to show only the trailers
interpret-trailers: add an option to show only existing trailers
interpret-trailers: add an option to unfold values
interpret-trailers: add --parse convenience option
pretty: move trailer formatting to trailer.c
t4205: refactor %(trailers) tests
pretty: support normalization options for %(trailers)
doc: fix typo in sendemail.identity
config: use a static lock_file struct
write_index_as_tree: cleanup tempfile on error
setup_temporary_shallow: avoid using inactive tempfile
setup_temporary_shallow: move tempfile struct into function
verify_signed_buffer: prefer close_tempfile() to close()
always check return value of close_tempfile
tempfile: do not delete tempfile on failed close
lockfile: do not rollback lock on failed close
tempfile: prefer is_tempfile_active to bare access
tempfile: handle NULL tempfile pointers gracefully
tempfile: replace die("BUG") with BUG()
tempfile: factor out activation
tempfile: factor out deactivation
tempfile: robustify cleanup handler
tempfile: release deactivated strbufs instead of resetting
tempfile: use list.h for linked list
tempfile: remove deactivated list entries
tempfile: auto-allocate tempfiles on heap
lockfile: update lifetime requirements in documentation
ref_lock: stop leaking lock_files
stop leaking lock structs in some simple cases
test-lib: --valgrind should not override --verbose-log
test-lib: set LSAN_OPTIONS to abort by default
add: free leaked pathspec after add_files_to_cache()
update-index: fix cache entry leak in add_one_file()
config: plug user_config leak
reset: make tree counting less confusing
reset: free allocated tree buffers
repository: free fields before overwriting them
set_git_dir: handle feeding gitdir to itself
rev-parse: don't trim bisect refnames
system_path: move RUNTIME_PREFIX to a sub-function
git_extract_argv0_path: do nothing without RUNTIME_PREFIX
add UNLEAK annotation for reducing leak false positives
shortlog: skip format/parse roundtrip for internal traversal
shell: drop git-cvsserver support by default
archimport: use safe_pipe_capture for user input
cvsimport: shell-quote variable used in backticks
config: avoid "write_in_full(fd, buf, len) < len" pattern
get-tar-commit-id: check write_in_full() return against 0
avoid "write_in_full(fd, buf, len) != len" pattern
convert less-trivial versions of "write_in_full() != len"
pkt-line: check write_in_full() errors against "< 0"
notes-merge: use ssize_t for write_in_full() return value
config: flip return value of store_write_*()
read_pack_header: handle signed/unsigned comparison in read result
prefix_ref_iterator: break when we leave the prefix
read_info_alternates: read contents into strbuf
read_info_alternates: warn on non-trivial errors
revision: replace "struct cmdline_pathspec" with argv_array
cat-file: handle NULL object_context.path
test-line-buffer: simplify command parsing
curl_trace(): eliminate switch fallthrough
consistently use "fallthrough" comments in switches
doc: put literal block delimiter around table
files-backend: prefer "0" for write_in_full() error check
notes-merge: drop dead zero-write code
prefer "!=" when checking read_in_full() result
avoid looking at errno for short read_in_full() returns
distinguish error versus short read from read_in_full()
worktree: use xsize_t to access file size
worktree: check the result of read_in_full()
validate_headref: NUL-terminate HEAD buffer
validate_headref: use skip_prefix for symref parsing
validate_headref: use get_oid_hex for detached HEADs
git: add --no-optional-locks option
test-terminal: set TERM=vt100
t4015: prefer --color to -c color.diff=always
t3701: use test-terminal to collect color output
t7508: use test_terminal for color output
t7502: use diff.noprefix for --verbose test
t6006: drop "always" color config tests
t3203: drop "always" color test
t3205: use --color instead of color.branch=always
provide --color option for all ref-filter users
color: make "always" the same as "auto" in config
t4015: use --color with --color-moved
t7301: use test_terminal to check color
path.c: fix uninitialized memory access
sha1_loose_object_info: handle errors from unpack_sha1_rest
t3308: create a real ref directory/file conflict
refs_resolve_ref_unsafe: handle d/f conflicts for writes
write_entry: fix leak when retrying delayed filter
write_entry: avoid reading blobs in CE_RETRY case
write_entry: untangle symlink and regular-file cases
diff: fix infinite loop with --color-moved --ignore-space-change
Revert "color: make "always" the same as "auto" in config"
Revert "t6006: drop "always" color config tests"
Revert "color: check color.ui in git_default_config()"
tag: respect color.ui config
Job Snijders (1):
gitweb: add 'raw' blob_plain link in history overview
Joel Teichroeb (3):
stash: add a test for stash create with no files
stash: add a test for when apply fails during stash branch
stash: add a test for stashing in a detached state
Johannes Schindelin (14):
run_processes_parallel: change confusing task_cb convention
git-gui (MinGW): make use of MSys2's msgfmt
t3415: verify that an empty instructionFormat is handled as before
rebase -i: generate the script via rebase--helper
rebase -i: remove useless indentation
rebase -i: do not invent onelines when expanding/collapsing SHA-1s
rebase -i: also expand/collapse the SHA-1s via the rebase--helper
t3404: relax rebase.missingCommitsCheck tests
rebase -i: check for missing commits in the rebase--helper
rebase -i: skip unnecessary picks using the rebase--helper
t3415: test fixup with wrapped oneline
rebase -i: rearrange fixup/squash lines using the rebase--helper
Win32: simplify loading of DLL functions
clang-format: adjust line break penalties
Johannes Sixt (1):
sub-process: use child_process.args instead of child_process.argv
Jonathan Nieder (8):
vcs-svn: remove more unused prototypes and declarations
vcs-svn: remove custom mode constants
vcs-svn: remove repo_delete wrapper function
vcs-svn: move remaining repo_tree functions to fast_export.h
pack: make packed_git_mru global a value instead of a pointer
pathspec doc: parse_pathspec does not maintain references to args
technical doc: add a design doc for hash function transition
strbuf doc: reuse after strbuf_release is fine
Jonathan Tan (40):
fsck: remove redundant parse_tree() invocation
object: remove "used" field from struct object
fsck: cleanup unused variable
Documentation: migrate sub-process docs to header
sub-process: refactor handshake to common function
tests: ensure fsck fails on corrupt packfiles
sha1_file: set whence in storage-specific info fn
sha1_file: remove read_packed_sha1()
diff: avoid redundantly clearing a flag
diff: respect MIN_BLOCK_LENGTH for last block
diff: define block by number of alphanumeric chars
Doc: clarify that pack-objects makes packs, plural
pack: move pack name-related functions
pack: move static state variables
pack: move pack_report()
pack: move open_pack_index(), parse_pack_index()
pack: move release_pack_memory()
pack: move pack-closing functions
pack: move use_pack()
pack: move unuse_pack()
pack: move add_packed_git()
pack: move install_packed_git()
pack: move {,re}prepare_packed_git and approximate_object_count
pack: move unpack_object_header_buffer()
pack: move get_size_from_delta()
pack: move unpack_object_header()
pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
pack: move nth_packed_object_{sha1,oid}
pack: move check_pack_index_ptr(), nth_packed_object_offset()
pack: move find_pack_entry_one(), is_pack_valid()
pack: move find_sha1_pack()
pack: move find_pack_entry() and make it global
pack: move has_sha1_pack()
pack: move has_pack_index()
pack: move for_each_packed_object()
Remove inadvertently added outgoing/packfile.h
Add t/helper/test-write-cache to .gitignore
git-compat-util: make UNLEAK less error-prone
fast-export: do not copy from modified file
oidmap: map with OID as key
Junio C Hamano (58):
t1408: add a test of stale packed refs covered by loose refs
clean.c: use designated initializer
http.c: http.sslcert and http.sslkey are both pathnames
connect: reject ssh hostname that begins with a dash
Git 2.7.6
Git 2.8.6
Git 2.9.5
Git 2.10.4
Git 2.11.3
Git 2.12.4
Git 2.13.5
Git 2.14.1
Start post 2.14 cycle
perl/Git.pm: typofix in a comment
The first batch of topics after the 2.14 cycle
diff: retire sane_truncate_fn
progress: simplify "delayed" progress API
The second batch post 2.14
t4200: give us a clean slate after "rerere gc" tests
t4200: make "rerere gc" test more robust
t4200: gather "rerere gc" together
t4200: parameterize "rerere gc" custom expiry test
rerere: represent time duration in timestamp_t internally
rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
The third batch post 2.14
Prepare for 2.14.2
The fourth batch post 2.14
The fifth batch post 2.14
The sixth batch post 2.14
RelNotes: further fixes for 2.14.2 from the master front
The seventh batch post 2.14
travis: dedent a few scripts that are indented overly deeply
subprocess: loudly die when subprocess asks for an unsupported capability
cvsserver: move safe_pipe_capture() to the main package
cvsserver: use safe_pipe_capture for `constant commands` as well
gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
The eighth batch for 2.15
Git 2.10.5
Git 2.11.4
Git 2.12.5
Git 2.13.6
Git 2.14.2
branch: fix "copy" to never touch HEAD
merge-strategies: avoid implying that "-s theirs" exists
The ninth batch for 2.15
The tenth batch for 2.15
The eleventh batch for 2.15
The twelfth batch for 2.15
Git 2.15-rc0
Prepare for -rc1
Git 2.15-rc1
checkout doc: clarify command line args for "checkout paths" mode
Crawling towards -rc2
fetch doc: src side of refspec could be full SHA-1
Preparing for rc2 continues
branch doc: sprinkle a few commas for readability
Prepare for 2.14.3
Git 2.15-rc2
Kaartic Sivaraam (15):
hook: cleanup script
hook: name the positional variables
hook: add sign-off using "interpret-trailers"
hook: add a simple first example
commit: check for empty message before the check for untouched template
hook: use correct logical variable
t3200: cleanup cruft of a test
builtin/branch: stop supporting the "--set-upstream" option
branch: quote branch/ref names to improve readability
help: change a message to be more precise
commit-template: change a message to be more intuitive
t/README: fix typo and grammatically improve a sentence
doc: camelCase the config variables to improve readability
branch: change the error messages to be more meaningful
setup: update error message to be more meaningful
Kevin Daudt (3):
stash: prevent warning about null bytes in input
doc/for-each-ref: consistently use '=' to between argument names and values
doc/for-each-ref: explicitly specify option names
Kevin Willford (9):
format-patch: have progress option while generating patches
rebase: turn on progress option by default for format-patch
commit: skip discarding the index if there is no pre-commit hook
perf: add test for writing the index
read-cache: fix memory leak in do_write_index
read-cache: avoid allocating every ondisk entry when writing
merge-recursive: fix memory leak
merge-recursive: remove return value from get_files_dirs
merge-recursive: change current file dir string_lists to hashmap
Lars Schneider (13):
t0021: keep filter log files on comparison
t0021: make debug log file name configurable
t0021: write "OUT <size>" only on success
convert: put the flags field before the flag itself for consistent style
convert: move multiple file filter error handling to separate function
convert: refactor capabilities negotiation
convert: add "status=delayed" to filter process protocol
convert: display progress for filtered objects that have been delayed
travis-ci: move Travis CI code into dedicated scripts
travis-ci: skip a branch build if equal tag is present
travis-ci: fix "skip_branch_tip_with_tag()" string comparison
entry.c: update cache entry only for existing files
entry.c: check if file exists after checkout
Manav Rathi (1):
docs: improve discoverability of exclude pathspec
Martin Koegler (2):
diff-delta: fix encoding size that would not fit in "unsigned int"
diff-delta: do not allow delta offset truncation
Martin Ågren (33):
builtin.h: take over documentation from api-builtin.txt
git.c: let builtins opt for handling `pager.foo` themselves
git.c: provide setup_auto_pager()
t7006: add tests for how git tag paginates
tag: respect `pager.tag` in list-mode only
tag: change default of `pager.tag` to "on"
git.c: ignore pager.* when launching builtin as dashed external
Doc/git-{push,send-pack}: correct --sign= to --signed=
t5334: document that git push --signed=1 does not work
config: introduce git_parse_maybe_bool_text
config: make git_{config,parse}_maybe_bool equivalent
treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
parse_decoration_style: drop unused argument `var`
doc/interpret-trailers: fix "the this" typo
convert: always initialize attr_action in convert_attrs
pack-objects: take lock before accessing `remaining`
strbuf_setlen: don't write to strbuf_slopbuf
ThreadSanitizer: add suppressions
Documentation/user-manual: update outdated example output
treewide: correct several "up-to-date" to "up to date"
pkt-line: re-'static'-ify buffer in packet_write_fmt_1()
config: remove git_config_maybe_bool
refs/files-backend: add longer-scoped copy of string to list
refs/files-backend: fix memory leak in lock_ref_for_update
refs/files-backend: correct return value in lock_ref_for_update
refs/files-backend: add `refname`, not "HEAD", to list
builtin/commit: fix memory leak in `prepare_index()`
commit: fix memory leak in `reduce_heads()`
leak_pending: use `object_array_clear()`, not `free()`
object_array: use `object_array_clear()`, not `free()`
object_array: add and use `object_array_pop()`
pack-bitmap[-write]: use `object_array_clear()`, don't leak
builtin/: add UNLEAKs
Matthieu Moy (2):
send-email: fix garbage removal after address
send-email: don't use Mail::Address, even if available
Max Kirillov (2):
describe: fix matching to actually match all patterns
describe: teach --match to handle branches and remotes
Michael Forney (1):
scripts: use "git foo" not "git-foo"
Michael Haggerty (77):
add_packed_ref(): teach function to overwrite existing refs
packed_ref_store: new struct
packed_ref_store: move `packed_refs_path` here
packed_ref_store: move `packed_refs_lock` member here
clear_packed_ref_cache(): take a `packed_ref_store *` parameter
validate_packed_ref_cache(): take a `packed_ref_store *` parameter
get_packed_ref_cache(): take a `packed_ref_store *` parameter
get_packed_refs(): take a `packed_ref_store *` parameter
add_packed_ref(): take a `packed_ref_store *` parameter
lock_packed_refs(): take a `packed_ref_store *` parameter
commit_packed_refs(): take a `packed_ref_store *` parameter
rollback_packed_refs(): take a `packed_ref_store *` parameter
get_packed_ref(): take a `packed_ref_store *` parameter
repack_without_refs(): take a `packed_ref_store *` parameter
packed_peel_ref(): new function, extracted from `files_peel_ref()`
packed_ref_store: support iteration
packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
packed-backend: new module for handling packed references
packed_ref_store: make class into a subclass of `ref_store`
commit_packed_refs(): report errors rather than dying
commit_packed_refs(): use a staging file separate from the lockfile
packed_refs_lock(): function renamed from lock_packed_refs()
packed_refs_lock(): report errors via a `struct strbuf *err`
packed_refs_unlock(), packed_refs_is_locked(): new functions
clear_packed_ref_cache(): don't protest if the lock is held
commit_packed_refs(): remove call to `packed_refs_unlock()`
repack_without_refs(): don't lock or unlock the packed refs
t3210: add some tests of bogus packed-refs file contents
read_packed_refs(): die if `packed-refs` contains bogus data
packed_ref_store: handle a packed-refs file that is a symlink
files-backend: cheapen refname_available check when locking refs
refs: retry acquiring reference locks for 100ms
notes: make GET_NIBBLE macro more robust
load_subtree(): remove unnecessary conditional
load_subtree(): reduce the scope of some local variables
load_subtree(): fix incorrect comment
load_subtree(): separate logic for internal vs. terminal entries
load_subtree(): check earlier whether an internal node is a tree entry
load_subtree(): only consider blobs to be potential notes
get_oid_hex_segment(): return 0 on success
load_subtree(): combine some common code
get_oid_hex_segment(): don't pad the rest of `oid`
hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
load_subtree(): declare some variables to be `size_t`
load_subtree(): check that `prefix_len` is in the expected range
packed-backend: don't adjust the reference count on lock/unlock
struct ref_transaction: add a place for backends to store data
packed_ref_store: implement reference transactions
packed_delete_refs(): implement method
files_pack_refs(): use a reference transaction to write packed refs
prune_refs(): also free the linked list
files_initial_transaction_commit(): use a transaction for packed refs
t1404: demonstrate two problems with reference transactions
files_ref_store: use a transaction to update packed refs
packed-backend: rip out some now-unused code
files_transaction_finish(): delete reflogs before references
ref_iterator: keep track of whether the iterator output is ordered
packed_ref_cache: add a backlink to the associated `packed_ref_store`
die_unterminated_line(), die_invalid_line(): new functions
read_packed_refs(): use mmap to read the `packed-refs` file
read_packed_refs(): only check for a header at the top of the file
read_packed_refs(): make parsing of the header line more robust
for_each_string_list_item: avoid undefined behavior for empty list
read_packed_refs(): read references with minimal copying
packed_ref_cache: remember the file-wide peeling state
mmapped_ref_iterator: add iterator over a packed-refs file
mmapped_ref_iterator_advance(): no peeled value for broken refs
packed-backend.c: reorder some definitions
packed_ref_cache: keep the `packed-refs` file mmapped if possible
read_packed_refs(): ensure that references are ordered when read
packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
packed_read_raw_ref(): read the reference from the mmapped buffer
ref_store: implement `refs_peel_ref()` generically
packed_ref_store: get rid of the `ref_cache` entirely
ref_cache: remove support for storing peeled values
mmapped_ref_iterator: inline into `packed_ref_iterator`
packed-backend.c: rename a bunch of things and update comments
Michael J Gruber (11):
Documentation: use proper wording for ref format strings
Documentation/git-for-each-ref: clarify peeling of tags for --format
Documentation/git-merge: explain --continue
merge: clarify call chain
merge: split write_merge_state in two
merge: save merge state earlier
name-rev: change ULONG_MAX to TIME_MAX
t7004: move limited stack prereq to test-lib
t6120: test name-rev --all and --stdin
t6120: clean up state after breaking repo
t6120: test describe and name-rev with deep repos
Nguyễn Thái Ngọc Duy (17):
branch: fix branch renaming not updating HEADs correctly
revision.h: new flag in struct rev_info wrt. worktree-related refs
refs.c: use is_dir_sep() in resolve_gitlink_ref()
revision.c: refactor add_index_objects_to_pending()
revision.c: --indexed-objects add objects from all worktrees
refs.c: refactor get_submodule_ref_store(), share common free block
refs: move submodule slash stripping code to get_submodule_ref_store
refs: add refs_head_ref()
revision.c: use refs_for_each*() instead of for_each_*_submodule()
refs.c: move for_each_remote_ref_submodule() to submodule.c
refs: remove dead for_each_*_submodule()
revision.c: --all adds HEAD from all worktrees
files-backend: make reflog iterator go through per-worktree reflog
revision.c: --reflog add HEAD reflog from all worktrees
rev-list: expose and document --single-worktree
refs.c: remove fallback-to-main-store code get_submodule_ref_store()
refs.c: reindent get_submodule_ref_store()
Nicolas Morey-Chaisemartin (7):
stash: clean untracked files before reset
pull: fix cli and config option parsing order
pull: honor submodule.recurse config option
imap-send: return with error if curl failed
imap-send: add wrapper to get server credentials if needed
imap_send: setup_curl: retreive credentials if not set in config file
imap-send: use curl by default when possible
Paolo Bonzini (4):
trailers: export action enums and corresponding lookup functions
trailers: introduce struct new_trailer_item
interpret-trailers: add options for actions
interpret-trailers: fix documentation typo
Patryk Obara (10):
sha1_file: fix definition of null_sha1
commit: replace the raw buffer with strbuf in read_graft_line
commit: allocate array using object_id size
commit: rewrite read_graft_line
builtin/hash-object: convert to struct object_id
read-cache: convert to struct object_id
sha1_file: convert index_path to struct object_id
sha1_file: convert index_fd to struct object_id
sha1_file: convert hash_sha1_file_literally to struct object_id
sha1_file: convert index_stream to struct object_id
Philip Oakley (4):
git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
git gui: cope with duplicates in _get_recentrepo
git gui: de-dup selected repo from recentrepo history
git gui: allow for a long recentrepo list
Phillip Wood (7):
am: remember --rerere-autoupdate setting
rebase: honor --rerere-autoupdate
rebase -i: honor --rerere-autoupdate
t3504: use test_commit
cherry-pick/revert: remember --rerere-autoupdate
cherry-pick/revert: reject --rerere-autoupdate when continuing
am: fix signoff when other trailers are present
Ralf Thielow (2):
sequencer.c: fix and unify error messages in rearrange_squash()
sequencer.c: unify an error message
Raman Gupta (1):
contrib/rerere-train: optionally overwrite existing resolutions
Ramsay Jones (9):
credential-cache: interpret an ECONNRESET as an EOF
builtin/add: add detail to a 'cannot chmod' error message
test-lib: don't use ulimit in test prerequisites on cygwin
test-lib: use more compact expression in PIPE prerequisite
t9010-*.sh: skip all tests if the PIPE prereq is missing
git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
commit-slab.h: avoid -Wsign-compare warnings
cache.h: hex2chr() - avoid -Wsign-compare warnings
ALLOC_GROW: avoid -Wsign-compare warnings
Randall S. Becker (1):
poll.c: always set revents, even if to zero
René Scharfe (81):
tree-diff: don't access hash of NULL object_id pointer
notes: don't access hash of NULL object_id pointer
receive-pack: don't access hash of NULL object_id pointer
bswap: convert to unsigned before shifting in get_be32
bswap: convert get_be16, get_be32 and put_be32 to inline functions
add MOVE_ARRAY
use MOVE_ARRAY
apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
ls-files: don't try to prune an empty index
dir: support platforms that require aligned reads
pack-objects: remove unnecessary NULL check
t0001: skip test with restrictive permissions if getpwd(3) respects them
test-path-utils: handle const parameter of basename and dirname
t3700: fix broken test under !POSIXPERM
t4062: use less than 256 repetitions in regex
sha1_file: avoid comparison if no packed hash matches the first byte
apply: remove prefix_length member from apply_state
merge: use skip_prefix()
win32: plug memory leak on realloc() failure in syslog()
strbuf: clear errno before calling getdelim(3)
fsck: free buffers on error in fsck_obj()
sha1_file: release delta_stack on error in unpack_entry()
tree-walk: convert fill_tree_descriptor() to object_id
t1002: stop using sum(1)
t5001: add tests for export-ignore attributes and exclude pathspecs
archive: factor out helper functions for handling attributes
archive: don't queue excluded directories
commit: remove unused inline function single_parent()
apply: check date of potential epoch timestamps first
apply: remove epoch date from regex
am: release strbufs after use in detect_patch_format()
am: release strbuf on error return in hg_patch_to_mail()
am: release strbuf after use in safe_to_abort()
check-ref-format: release strbuf after use in check_ref_format_branch()
clean: release strbuf after use in remove_dirs()
clone: release strbuf after use in remove_junk()
commit: release strbuf on error return in commit_tree_extended()
connect: release strbuf on error return in git_connect()
convert: release strbuf on error return in filter_buffer_or_fd()
diff: release strbuf after use in diff_summary()
diff: release strbuf after use in show_rename_copy()
diff: release strbuf after use in show_stats()
help: release strbuf on error return in exec_man_konqueror()
help: release strbuf on error return in exec_man_man()
help: release strbuf on error return in exec_woman_emacs()
mailinfo: release strbuf after use in handle_from()
mailinfo: release strbuf on error return in handle_boundary()
merge: release strbuf after use in save_state()
merge: release strbuf after use in write_merge_heads()
notes: release strbuf after use in notes_copy_from_stdin()
refs: release strbuf on error return in write_pseudoref()
remote: release strbuf after use in read_remote_branches()
remote: release strbuf after use in migrate_file()
remote: release strbuf after use in set_url()
send-pack: release strbuf on error return in send_pack()
sha1_file: release strbuf on error return in index_path()
shortlog: release strbuf after use in insert_one_record()
sequencer: release strbuf after use in save_head()
transport-helper: release strbuf after use in process_connect_service()
userdiff: release strbuf after use in userdiff_get_textconv()
utf8: release strbuf on error return in strbuf_utf8_replace()
vcs-svn: release strbuf after use in end_revision()
wt-status: release strbuf after use in read_rebase_todolist()
wt-status: release strbuf after use in wt_longstatus_print_tracking()
archive: don't add empty directories to archives
refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
refs: pass NULL to resolve_ref_unsafe() if hash is not needed
mailinfo: don't decode invalid =XY quoted-printable sequences
refs: pass NULL to refs_resolve_refdup() if hash is not needed
refs: pass NULL to resolve_refdup() if hash is not needed
coccinelle: remove parentheses that become unnecessary
path: use strbuf_add_real_path()
use strbuf_addstr() for adding strings to strbufs
graph: use strbuf_addchars() to add spaces
tag: avoid NULL pointer arithmetic
repository: use FREE_AND_NULL
run-command: use ALLOC_ARRAY
test-stringlist: avoid buffer underrun when sorting nothing
fsck: handle NULL return of lookup_blob() and lookup_tree()
.mailmap: normalize name for René Scharfe
Ross Kabus (1):
commit-tree: do not complete line in -F input
Sahil Dua (2):
config: create a function to format section headers
branch: add a --copy (-c) option to go with --move (-m)
Santiago Torres (1):
t: lib-gpg: flush gpg agent on startup
Stefan Beller (51):
diff.c: readability fix
diff.c: move line ending check into emit_hunk_header
diff.c: factor out diff_flush_patch_all_file_pairs
diff.c: introduce emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
diff.c: migrate emit_line_checked to use emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
submodule.c: migrate diff output to use emit_diff_symbol
diff.c: convert emit_binary_diff_body to use emit_diff_symbol
diff.c: convert show_stats to use emit_diff_symbol
diff.c: convert word diffing to use emit_diff_symbol
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
diff.c: buffer all output if asked to
diff.c: color moved lines differently
diff.c: color moved lines differently, plain mode
diff.c: add dimming to moved line detection
diff: document the new --color-moved setting
attr.c: drop hashmap_cmp_fn cast
builtin/difftool.c: drop hashmap_cmp_fn cast
builtin/describe: drop hashmap_cmp_fn cast
config.c: drop hashmap_cmp_fn cast
convert/sub-process: drop cast to hashmap_cmp_fn
patch-ids.c: drop hashmap_cmp_fn cast
remote.c: drop hashmap_cmp_fn cast
submodule-config.c: drop hashmap_cmp_fn cast
name-hash.c: drop hashmap_cmp_fn cast
t/helper/test-hashmap: use custom data instead of duplicate cmp functions
commit: convert lookup_commit_graft to struct object_id
tag: convert gpg_verify_tag to use struct object_id
t8008: rely on rev-parse'd HEAD instead of sha1 value
t1200: remove t1200-tutorial.sh
sha1_file: make read_info_alternates static
submodule.sh: remove unused variable
builtin/merge: honor commit-msg hook for merges
push, fetch: error out for submodule entries not pointing to commits
replace-objects: evaluate replacement refs without using the object store
Documentation/githooks: mention merge in commit-msg hook
Documentation/config: clarify the meaning of submodule.<name>.update
t7406: submodule.<name>.update command must not be run from .gitmodules
diff: correct newline in summary for renamed files
submodule: correct error message for missing commits
branch: reset instead of release a strbuf
tests: fix diff order arguments in test_cmp
Stephan Beyer (1):
clang-format: add a comment about the meaning/status of the
Takashi Iwai (2):
sha1dc: build git plumbing code more explicitly
sha1dc: allow building with the external sha1dc library
Taylor Blau (8):
pretty.c: delimit "%(trailers)" arguments with ","
t4205: unfold across multiple lines
doc: 'trailers' is the preferred way to format trailers
doc: use "`<literal>`"-style quoting for literal strings
t6300: refactor %(trailers) tests
ref-filter.c: use trailer_opts to format trailers
ref-filter.c: parse trailers arguments with %(contents) atom
ref-filter.c: pass empty-string as NULL to atom parsers
Thomas Braun (1):
completion: add --broken and --dirty to describe
Thomas Gummerer (3):
read-cache: fix index corruption with index v4
refs: strip out not allowed flags from ref_transaction_update
http-push: fix construction of hex value from path
Todd Zullinger (1):
api-argv-array.txt: remove broken link to string-list API
Tom G. Christensen (2):
http: fix handling of missing CURLPROTO_*
http: use a feature check to enable GSSAPI delegation control
Torsten Bögershausen (3):
convert: add SAFE_CRLF_KEEP_CRLF
apply: file commited with CRLF should roundtrip diff and apply
test-lint: echo -e (or -E) is not portable
Urs Thuermann (1):
git svn fetch: Create correct commit timestamp when using --localtime
W. Trevor King (1):
Documentation/merge-options.txt: describe -S/--gpg-sign for 'pull'
William Duclot (1):
rebase: make resolve message clearer for inexperienced users
brian m. carlson (14):
builtin/fsck: convert remaining caller of get_sha1 to object_id
builtin/merge-tree: convert remaining caller of get_sha1 to object_id
submodule: convert submodule config lookup to use object_id
remote: convert struct push_cas to struct object_id
sequencer: convert to struct object_id
builtin/update_ref: convert to struct object_id
bisect: convert bisect_checkout to struct object_id
builtin/unpack-file: convert to struct object_id
Convert remaining callers of get_sha1 to get_oid.
sha1_name: convert get_sha1* to get_oid*
sha1_name: convert GET_SHA1* flags to GET_OID*
sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
vcs-svn: remove unused prototypes
vcs-svn: rename repo functions to "svn_repo"
joernchen (1):
cvsserver: use safe_pipe_capture instead of backticks
Ævar Arnfjörð Bjarmason (2):
branch: add test for -m renaming multiple config sections
tests: don't give unportable ">" to "test" built-in, use -gt
Øystein Walle (1):
rev-parse: rev-parse: add --is-shallow-repository
Łukasz Gryglicki (1):
merge: add a --signoff flag
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.15.0-rc1
@ 2017-10-11 6:35 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-10-11 6:35 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.15.0-rc1 is now available for testing
at the usual places. It is comprised of 721 non-merge commits
since v2.14.0, contributed by 72 people, 22 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.15.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.14.0 are as follows.
Welcome to the Git development community!
Ann T Ropea, Daniel Watkins, Derrick Stolee, Dimitrios
Christidis, Eric Rannaud, Evan Zacks, Hielke Christian Braun,
Ian Campbell, Ilya Kantor, Jameson Miller, Job Snijders, Joel
Teichroeb, joernchen, Łukasz Gryglicki, Manav Rathi, Martin
Ågren, Michael Forney, Patryk Obara, Randall S. Becker, Ross
Kabus, Taylor Blau, and Urs Thuermann.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Andreas Heiduk,
Anthony Sottile, Ben Boeckel, Brandon Casey, Brandon Williams,
brian m. carlson, Christian Couder, Eric Blake, Han-Wen Nienhuys,
Heiko Voigt, Jean-Noel Avila, Jeff Hostetler, Jeff King, Johannes
Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kaartic Sivaraam, Kevin Daudt, Kevin Willford,
Lars Schneider, Martin Koegler, Matthieu Moy, Max Kirillov,
Michael Haggerty, Michael J Gruber, Nguyễn Thái Ngọc Duy,
Nicolas Morey-Chaisemartin, Øystein Walle, Paolo Bonzini,
Pat Thoyts, Philip Oakley, Phillip Wood, Raman Gupta, Ramsay
Jones, René Scharfe, Sahil Dua, Santiago Torres, Stefan Beller,
Stephan Beyer, Takashi Iwai, Thomas Braun, Thomas Gummerer,
Todd Zullinger, Tom G. Christensen, Torsten Bögershausen,
and William Duclot.
----------------------------------------------------------------
Git 2.15 Release Notes (draft)
==============================
Backward compatibility notes and other notable changes.
* Use of an empty string as a pathspec element that is used for
'everything matches' is still warned and Git asks users to use a
more explicit '.' for that instead. The hope is that existing
users will not mind this change, and eventually the warning can be
turned into a hard error, upgrading the deprecation into removal of
this (mis)feature. That is now scheduled to happen in Git v2.16,
the next major release after this one.
* Git now avoids blindly falling back to ".git" when the setup
sequence said we are _not_ in Git repository. A corner case that
happens to work right now may be broken by a call to BUG().
We've tried hard to locate such cases and fixed them, but there
might still be cases that need to be addressed--bug reports are
greatly appreciated.
* "branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.
Updates since v2.14
-------------------
UI, Workflows & Features
* An example that is now obsolete has been removed from a sample hook,
and an old example in it that added a sign-off manually has been
improved to use the interpret-trailers command.
* The advice message given when "git rebase" stops for conflicting
changes has been improved.
* The "rerere-train" script (in contrib/) learned the "--overwrite"
option to allow overwriting existing recorded resolutions.
* "git contacts" (in contrib/) now lists the address on the
"Reported-by:" trailer to its output, in addition to those on
S-o-b: and other trailers, to make it easier to notify (and thank)
the original bug reporter.
* "git rebase", especially when it is run by mistake and ends up
trying to replay many changes, spent long time in silence. The
command has been taught to show progress report when it spends
long time preparing these many changes to replay (which would give
the user a chance to abort with ^C).
* "git merge" learned a "--signoff" option to add the Signed-off-by:
trailer with the committer's name.
* "git diff" learned to optionally paint new lines that are the same
as deleted lines elsewhere differently from genuinely new lines.
* "git interpret-trailers" learned to take the trailer specifications
from the command line that overrides the configured values.
* "git interpret-trailers" has been taught a "--parse" and a few
other options to make it easier for scripts to grab existing
trailer lines from a commit log message.
* The "--format=%(trailers)" option "git log" and its friends take
learned to take the 'unfold' and 'only' modifiers to normalize its
output, e.g. "git log --format=%(trailers:only,unfold)".
* "gitweb" shows a link to visit the 'raw' contents of blbos in the
history overview page.
* "[gc] rerereResolved = 5.days" used to be invalid, as the variable
is defined to take an integer counting the number of days. It now
is allowed.
* The code to acquire a lock on a reference (e.g. while accepting a
push from a client) used to immediately fail when the reference is
already locked---now it waits for a very short while and retries,
which can make it succeed if the lock holder was holding it during
a read-only operation.
* "branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.
* The codepath to call external process filter for smudge/clean
operation learned to show the progress meter.
* "git rev-parse" learned "--is-shallow-repository", that is to be
used in a way similar to existing "--is-bare-repository" and
friends.
* "git describe --match <pattern>" has been taught to play well with
the "--all" option.
* "git branch" learned "-c/-C" to create a new branch by copying an
existing one.
* Some commands (most notably "git status") makes an opportunistic
update when performing a read-only operation to help optimize later
operations in the same repository. The new "--no-optional-locks"
option can be passed to Git to disable them.
* "git for-each-ref --format=..." learned a new format element,
%(trailers), to show only the commit log trailer part of the log
message.
Performance, Internal Implementation, Development Support etc.
* Conversion from uchar[20] to struct object_id continues.
* Start using selected c99 constructs in small, stable and
essentialpart of the system to catch people who care about
older compilers that do not grok them.
* The filter-process interface learned to allow a process with long
latency give a "delayed" response.
* Many uses of comparision callback function the hashmap API uses
cast the callback function type when registering it to
hashmap_init(), which defeats the compile time type checking when
the callback interface changes (e.g. gaining more parameters).
The callback implementations have been updated to take "void *"
pointers and cast them to the type they expect instead.
* Because recent Git for Windows do come with a real msgfmt, the
build procedure for git-gui has been updated to use it instead of a
hand-rolled substitute.
* "git grep --recurse-submodules" has been reworked to give a more
consistent output across submodule boundary (and do its thing
without having to fork a separate process).
* A helper function to read a single whole line into strbuf
mistakenly triggered OOM error at EOF under certain conditions,
which has been fixed.
(merge 642956cf45 rs/strbuf-getwholeline-fix later to maint).
* The "ref-store" code reorganization continues.
* "git commit" used to discard the index and re-read from the filesystem
just in case the pre-commit hook has updated it in the middle; this
has been optimized out when we know we do not run the pre-commit hook.
(merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).
* Updates to the HTTP layer we made recently unconditionally used
features of libCurl without checking the existence of them, causing
compilation errors, which has been fixed. Also migrate the code to
check feature macros, not version numbers, to cope better with
libCurl that vendor ships with backported features.
* The API to start showing progress meter after a short delay has
been simplified.
(merge 8aade107dd jc/simplify-progress later to maint).
* Code clean-up to avoid mixing values read from the .gitmodules file
and values read from the .git/config file.
* We used to spend more than necessary cycles allocating and freeing
piece of memory while writing each index entry out. This has been
optimized.
* Platforms that ship with a separate sha1 with collision detection
library can link to it instead of using the copy we ship as part of
our source tree.
* Code around "notes" have been cleaned up.
(merge 3964281524 mh/notes-cleanup later to maint).
* The long-standing rule that an in-core lockfile instance, once it
is used, must not be freed, has been lifted and the lockfile and
tempfile APIs have been updated to reduce the chance of programming
errors.
* Our hashmap implementation in hashmap.[ch] is not thread-safe when
adding a new item needs to expand the hashtable by rehashing; add
an API to disable the automatic rehashing to work it around.
* Many of our programs consider that it is OK to release dynamic
storage that is used throughout the life of the program by simply
exiting, but this makes it harder to leak detection tools to avoid
reporting false positives. Plug many existing leaks and introduce
a mechanism for developers to mark that the region of memory
pointed by a pointer is not lost/leaking to help these tools.
* As "git commit" to conclude a conflicted "git merge" honors the
commit-msg hook, "git merge" that records a merge commit that
cleanly auto-merges should, but it didn't.
* The codepath for "git merge-recursive" has been cleaned up.
* Many leaks of strbuf have been fixed.
* "git imap-send" has our own implementation of the protocol and also
can use more recent libCurl with the imap protocol support. Update
the latter so that it can use the credential subsystem, and then
make it the default option to use, so that we can eventually
deprecate and remove the former.
* "make style" runs git-clang-format to help developers by pointing
out coding style issues.
* A test to demonstrate "git mv" failing to adjust nested submodules
has been added.
(merge c514167df2 hv/mv-nested-submodules-test later to maint).
* On Cygwin, "ulimit -s" does not report failure but it does not work
at all, which causes an unexpected success of some tests that
expect failures under a limited stack situation. This has been
fixed.
* Many codepaths have been updated to squelch -Wimplicit-fallthrough
warnings from Gcc 7 (which is a good code hygiene).
* Add a helper for DLL loading in anticipation for its need in a
future topic RSN.
* "git status --ignored", when noticing that a directory without any
tracked path is ignored, still enumerated all the ignored paths in
the directory, which is unnecessary. The codepath has been
optimized to avoid this overhead.
* The final batch to "git rebase -i" updates to move more code from
the shell script to C has been merged.
* Operations that do not touch (majority of) packed refs have been
optimized by making accesses to packed-refs file lazy; we no longer
pre-parse everything, and an access to a single ref in the
packed-refs does not touch majority of irrelevant refs, either.
* Add comment to clarify that the style file is meant to be used with
clang-5 and the rules are still work in progress.
* Many variables that points at a region of memory that will live
throughout the life of the program have been marked with UNLEAK
marker to help the leak checkers concentrate on real leaks..
* Plans for weaning us off of SHA-1 has been documented.
* A new "oidmap" API has been introduced and oidset API has been
rewritten to use it.
Also contains various documentation updates and code clean-ups.
Fixes since v2.14
-----------------
* "%C(color name)" in the pretty print format always produced ANSI
color escape codes, which was an early design mistake. They now
honor the configuration (e.g. "color.ui = never") and also tty-ness
of the output medium.
* The http.{sslkey,sslCert} configuration variables are to be
interpreted as a pathname that honors "~[username]/" prefix, but
weren't, which has been fixed.
* Numerous bugs in walking of reflogs via "log -g" and friends have
been fixed.
* "git commit" when seeing an totally empty message said "you did not
edit the message", which is clearly wrong. The message has been
corrected.
* When a directory is not readable, "gitweb" fails to build the
project list. Work this around by skipping such a directory.
* Some versions of GnuPG fails to kill gpg-agent it auto-spawned
and such a left-over agent can interfere with a test. Work it
around by attempting to kill one before starting a new test.
* A recently added test for the "credential-cache" helper revealed
that EOF detection done around the time the connection to the cache
daemon is torn down were flaky. This was fixed by reacting to
ECONNRESET and behaving as if we got an EOF.
* "git log --tag=no-such-tag" showed log starting from HEAD, which
has been fixed---it now shows nothing.
* The "tag.pager" configuration variable was useless for those who
actually create tag objects, as it interfered with the use of an
editor. A new mechanism has been introduced for commands to enable
pager depending on what operation is being carried out to fix this,
and then "git tag -l" is made to run pager by default.
* "git push --recurse-submodules $there HEAD:$target" was not
propagated down to the submodules, but now it is.
* Commands like "git rebase" accepted the --rerere-autoupdate option
from the command line, but did not always use it. This has been
fixed.
* "git clone --recurse-submodules --quiet" did not pass the quiet
option down to submodules.
* Test portability fix for OBSD.
* Portability fix for OBSD.
* "git am -s" has been taught that some input may end with a trailer
block that is not Signed-off-by: and it should refrain from adding
an extra blank line before adding a new sign-off in such a case.
* "git svn" used with "--localtime" option did not compute the tz
offset for the timestamp in question and instead always used the
current time, which has been corrected.
* Memory leak in an error codepath has been plugged.
* "git stash -u" used the contents of the committed version of the
".gitignore" file to decide which paths are ignored, even when the
file has local changes. The command has been taught to instead use
the locally modified contents.
* bash 4.4 or newer gave a warning on NUL byte in command
substitution done in "git stash"; this has been squelched.
* "git grep -L" and "git grep --quiet -L" reported different exit
codes; this has been corrected.
* When handshake with a subprocess filter notices that the process
asked for an unknown capability, Git did not report what program
the offending subprocess was running. This has been corrected.
* "git apply" that is used as a better "patch -p1" failed to apply a
taken from a file with CRLF line endings to a file with CRLF line
endings. The root cause was because it misused convert_to_git()
that tried to do "safe-crlf" processing by looking at the index
entry at the same path, which is a nonsense---in that mode, "apply"
is not working on the data in (or derived from) the index at all.
This has been fixed.
* Killing "git merge --edit" before the editor returns control left
the repository in a state with MERGE_MSG but without MERGE_HEAD,
which incorrectly tells the subsequent "git commit" that there was
a squash merge in progress. This has been fixed.
* "git archive" did not work well with pathspecs and the
export-ignore attribute.
* In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
was taught to "git send-email" as a valid way to tell it that it
needs to also send a carbon copy to <a@dd.re.ss> in the trailer
section.
(merge cc90750677 mm/send-email-cc-cruft later to maint).
* "git branch -M a b" while on a branch that is completely unrelated
to either branch a or branch b misbehaved when multiple worktree
was in use. This has been fixed.
(merge 31824d180d nd/worktree-kill-parse-ref later to maint).
* "git gc" and friends when multiple worktrees are used off of a
single repository did not consider the index and per-worktree refs
of other worktrees as the root for reachability traversal, making
objects that are in use only in other worktrees to be subject to
garbage collection.
* A regression to "gitk --bisect" by a recent update has been fixed.
(merge 1d0538e486 mh/packed-ref-store-prep later to maint).
* "git -c submodule.recurse=yes pull" did not work as if the
"--recurse-submodules" option was given from the command line.
This has been corrected.
* Unlike "git commit-tree < file", "git commit-tree -F file" did not
pass the contents of the file verbatim and instead completed an
incomplete line at the end, if exists. The latter has been updated
to match the behaviour of the former.
(merge c818e74332 rk/commit-tree-make-F-verbatim later to maint).
* Many codepaths did not diagnose write failures correctly when disks
go full, due to their misuse of write_in_full() helper function,
which have been corrected.
(merge f48ecd38cb jk/write-in-full-fix later to maint).
* "git help co" now says "co is aliased to ...", not "git co is".
(merge b3a8076e0d ks/help-alias-label later to maint).
* "git archive", especially when used with pathspec, stored an empty
directory in its output, even though Git itself never does so.
This has been fixed.
(merge 4318094047 rs/archive-excluded-directory later to maint).
* API error-proofing which happens to also squelch warnings from GCC.
(merge c788c54cde tg/refs-allowed-flags later to maint).
* The explanation of the cut-line in the commit log editor has been
slightly tweaked.
(merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).
* "git gc" tries to avoid running two instances at the same time by
reading and writing pid/host from and to a lock file; it used to
use an incorrect fscanf() format when reading, which has been
corrected.
(merge afe2fab72c aw/gc-lockfile-fscanf-fix later to maint).
* The scripts to drive TravisCI has been reorganized and then an
optimization to avoid spending cycles on a branch whose tip is
tagged has been implemented.
(merge 8376eb4a8f ls/travis-scriptify later to maint).
* The test linter has been taught that we do not like "echo -e".
(merge 1a6d46895d tb/test-lint-echo-e later to maint).
* Code cmp.std.c nitpick.
(merge ac7da78ede mh/for-each-string-list-item-empty-fix later to maint).
* A regression fix for 2.11 that made the code to read the list of
alternate object stores overrun the end of the string.
(merge f0f7bebef7 jk/info-alternates-fix later to maint).
* "git describe --match" learned to take multiple patterns in v2.13
series, but the feature ignored the patterns after the first one
and did not work at all. This has been fixed.
(merge da769d2986 jk/describe-omit-some-refs later to maint).
* "git filter-branch" cannot reproduce a history with a tag without
the tagger field, which only ancient versions of Git allowed to be
created. This has been corrected.
(merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).
* "git cat-file --textconv" started segfaulting recently, which
has been corrected.
(merge cc0ea7c9e5 jk/diff-blob later to maint).
* The built-in pattern to detect the "function header" for HTML did
not match <H1>..<H6> elements without any attributes, which has
been fixed.
(merge 9c03caca2c ik/userdiff-html-h-element-fix later to maint).
* "git mailinfo" was loose in decoding quoted printable and produced
garbage when the two letters after the equal sign are not
hexadecimal. This has been fixed.
(merge c8cf423eab rs/mailinfo-qp-decode-fix later to maint).
* The machinery to create xdelta used in pack files received the
sizes of the data in size_t, but lost the higher bits of them by
storing them in "unsigned int" during the computation, which is
fixed.
* The delta format used in the packfile cannot reference data at
offset larger than what can be expressed in 4-byte, but the
generator for the data failed to make sure the offset does not
overflow. This has been corrected.
* The documentation for '-X<option>' for merges was misleadingly
written to suggest that "-s theirs" exists, which is not the case.
(merge c25d98b2a7 jc/merge-x-theirs-docfix later to maint).
* "git fast-export" with -M/-C option issued "copy" instruction on a
path that is simultaneously modified, which was incorrect.
(merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).
* Many codepaths have been updated to squelch -Wsign-compare
warnings.
(merge 071bcaab64 rj/no-sign-compare later to maint).
* Memory leaks in various codepaths have been plugged.
(merge 4d01a7fa65 ma/leakplugs later to maint).
* Recent versions of "git rev-parse --parseopt" did not parse the
option specification that does not have the optional flags (*=?!)
correctly, which has been corrected.
(merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).
* The checkpoint command "git fast-import" did not flush updates to
refs and marks unless at least one object was created since the
last checkpoint, which has been corrected, as these things can
happen without any new object getting created.
(merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).
* Spell the name of our system as "Git" in the output from
request-pull script.
(merge e66d7c37a5 ar/request-pull-phrasofix later to maint).
* Fixes for a handful memory access issues identified by valgrind.
(merge 2944a94c6b tg/memfixes later to maint).
* Backports a moral equivalent of 2015 fix to the poll() emulation
from the upstream gnulib to fix occasional breakages on HPE NonStop.
(merge 61b2a1acaa rb/compat-poll-fix later to maint).
* Users with "color.ui = always" in their configuration were broken
by a recent change that made plumbing commands to pay attention to
them as the patch created internally by "git add -p" were colored
(heh) and made unusable. Fix this regression by redefining
'always' to mean the same thing as 'auto'.
(merge 6be4595edb jk/ui-color-always-to-auto-maint later to maint).
* In the "--format=..." option of the "git for-each-ref" command (and
its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
(e.g. "%(refname:)", "%(body:)" used to error out. Instead, treat
them as if the colon and an empty string that follows it were not
there.
(merge bea4dbeafd tb/ref-filter-empty-modifier later to maint).
* An ancient bug that made Git misbehave with creation/renaming of
refs has been fixed.
* Other minor doc, test and build updates and code cleanups.
(merge f094b89a4d ma/parse-maybe-bool later to maint).
(merge 39b00fa4d4 jk/drop-sha1-entry-pos later to maint).
(merge 6cdf8a7929 ma/ts-cleanups later to maint).
(merge 7560f547e6 ma/up-to-date later to maint).
(merge 0db3dc75f3 rs/apply-epoch later to maint).
(merge 74f1bd912b dw/diff-highlight-makefile-fix later to maint).
(merge f991761eb8 jk/config-lockfile-leak-fix later to maint).
(merge 150efef1e7 ma/pkt-line-leakfix later to maint).
(merge 5554451de6 mg/timestamp-t-fix later to maint).
(merge 276d0e35c0 ma/split-symref-update-fix later to maint).
(merge 3bc4b8f7c7 bb/doc-eol-dirty later to maint).
(merge c1bb33c99c jk/system-path-cleanup later to maint).
(merge ab46e6fc72 cc/subprocess-handshake-missing-capabilities later to maint).
(merge f7a32dd97f kd/doc-for-each-ref later to maint).
(merge be94568bc7 ez/doc-duplicated-words-fix later to maint).
(merge 01e4be6c3d ks/test-readme-phrasofix later to maint).
(merge 217bb56d4f hn/typofix later to maint).
(merge c08fd6388c jk/doc-read-tree-table-asciidoctor-fix later to maint).
(merge c3342b362e ks/doc-use-camelcase-for-config-name later to maint).
(merge 0bca165fdb jk/validate-headref-fix later to maint).
(merge 93dbefb389 mr/doc-negative-pathspec later to maint).
(merge 5e633326e4 ad/doc-markup-fix later to maint).
(merge 9ca356fa8b rs/cocci-de-paren-call-params later to maint).
(merge 7099153e8d rs/tag-null-pointer-arith-fix later to maint).
(merge 0e187d758c rs/run-command-use-alloc-array later to maint).
(merge e0222159fa jn/strbuf-doc-re-reuse later to maint).
(merge 97487ea11a rs/qsort-s later to maint).
(merge a9155c50bd sb/branch-avoid-repeated-strbuf-release later to maint).
(merge f777623514 ks/branch-tweak-error-message-for-extra-args later to maint).
(merge 33f3c683ec ks/verify-filename-non-option-error-message-tweak later to maint).
(merge b3ea7dd32d jk/sha1-loose-object-info-fix later to maint).
(merge 2720f6db5d rs/fsck-null-return-from-lookup later to maint).
(merge 99b7b687a6 rs/rs-mailmap later to maint).
(merge 7823655082 tb/complete-describe later to maint).
(merge 7cbbf9d6a2 ls/filter-process-delayed later to maint).
----------------------------------------------------------------
Changes since v2.14.0 are as follows:
Adam Dinwoodie (1):
doc: correct command formatting
Andreas Heiduk (2):
doc: add missing values "none" and "default" for diff.wsErrorHighlight
doc: clarify "config --bool" behaviour with empty string
Ann T Ropea (1):
request-pull: capitalise "Git" to make it a proper noun
Anthony Sottile (1):
git-grep: correct exit code with --quiet and -L
Ben Boeckel (1):
Documentation: mention that `eol` can change the dirty status of paths
Brandon Casey (7):
t1502: demonstrate rev-parse --parseopt option mis-parsing
rev-parse parseopt: do not search help text for flag chars
rev-parse parseopt: interpret any whitespace as start of help text
git-rebase: don't ignore unexpected command line arguments
t0040,t1502: Demonstrate parse_options bugs
parse-options: write blank line to correct output stream
parse-options: only insert newline in help text if needed
Brandon Williams (29):
repo_read_index: don't discard the index
repository: have the_repository use the_index
submodule--helper: teach push-check to handle HEAD
cache.h: add GITMODULES_FILE macro
config: add config_from_gitmodules
submodule: remove submodule.fetchjobs from submodule-config parsing
submodule: remove fetch.recursesubmodules from submodule-config parsing
submodule: check for unstaged .gitmodules outside of config parsing
submodule: check for unmerged .gitmodules outside of config parsing
submodule: merge repo_read_gitmodules and gitmodules_config
grep: recurse in-process using 'struct repository'
t7411: check configuration parsing errors
submodule: don't use submodule_from_name
add, reset: ensure submodules can be added or reset
submodule--helper: don't overlay config in remote_submodule_branch
submodule--helper: don't overlay config in update-clone
fetch: don't overlay config with submodule-config
submodule: don't rely on overlayed config when setting diffopts
unpack-trees: don't respect submodule.update
submodule: remove submodule_config callback routine
diff: stop allowing diff to have submodules configured in .git/config
submodule-config: remove support for overlaying repository config
submodule-config: move submodule-config functions to submodule-config.c
submodule-config: lazy-load a repository's .gitmodules file
unpack-trees: improve loading of .gitmodules
submodule: remove gitmodules_config
clone: teach recursive clones to respect -q
clang-format: outline the git project's coding style
Makefile: add style build rule
Christian Couder (3):
refs: use skip_prefix() in ref_is_hidden()
sub-process: print the cmd when a capability is unsupported
sha1-lookup: remove sha1_entry_pos() from header file
Daniel Watkins (1):
diff-highlight: add clean target to Makefile
Derrick Stolee (1):
cleanup: fix possible overflow errors in binary search
Dimitrios Christidis (1):
fmt-merge-msg: fix coding style
Eric Blake (1):
git-contacts: also recognise "Reported-by:"
Eric Rannaud (1):
fast-import: checkpoint: dump branches/tags/marks even if object_count==0
Evan Zacks (1):
doc: fix minor typos (extra/duplicated words)
Han-Wen Nienhuys (5):
submodule.h: typofix
submodule.c: describe submodule_to_gitdir() in a new comment
real_path: clarify return value ownership
read_gitfile_gently: clarify return value ownership.
string-list.h: move documentation from Documentation/api/ into header
Heiko Voigt (2):
t5526: fix some broken && chains
add test for bug in git-mv for recursive submodules
Hielke Christian Braun (1):
gitweb: skip unreadable subdirectories
Ian Campbell (4):
filter-branch: reset $GIT_* before cleaning up
filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
filter-branch: stash away ref map in a branch
filter-branch: use hash-object instead of mktag
Ilya Kantor (1):
userdiff: fix HTML hunk header regexp
Jameson Miller (1):
Improve performance of git status --ignored
Jean-Noel Avila (1):
i18n: add a missing space in message
Jeff Hostetler (1):
hashmap: add API to disable item counting when threaded
Jeff King (129):
t1414: document some reflog-walk oddities
revision: disallow reflog walking with revs->limited
log: clarify comment about reflog cycles
log: do not free parents when walking reflog
get_revision_1(): replace do-while with an early return
rev-list: check reflog_info before showing usage
reflog-walk: stop using fake parents
reflog-walk: apply --since/--until to reflog dates
check return value of verify_ref_format()
docs/for-each-ref: update pointer to color syntax
t: use test_decode_color rather than literal ANSI codes
ref-filter: simplify automatic color reset
ref-filter: abstract ref format into its own struct
ref-filter: move need_color_reset_at_eol into ref_format
ref-filter: provide a function for parsing sort options
ref-filter: make parse_ref_filter_atom a private function
ref-filter: factor out the parsing of sorting atoms
ref-filter: pass ref_format struct to atom parsers
color: check color.ui in git_default_config()
for-each-ref: load config earlier
rev-list: pass diffopt->use_colors through to pretty-print
pretty: respect color settings for %C placeholders
ref-filter: consult want_color() before emitting colors
strbuf: use designated initializers in STRBUF_INIT
t/lib-proto-disable: restore protocol.allow after config tests
t5813: add test for hostname starting with dash
connect: factor out "looks like command line option" check
connect: reject dashed arguments for proxy commands
connect: reject paths that look like command line options
t6018: flesh out empty input/output rev-list tests
revision: add rev_input_given flag
rev-list: don't show usage when we see empty ref patterns
revision: do not fallback to default when rev_input_given is set
hashcmp: use memcmp instead of open-coded loop
sha1_file: drop experimental GIT_USE_LOOKUP search
trailer: put process_trailers() options into a struct
interpret-trailers: add an option to show only the trailers
interpret-trailers: add an option to show only existing trailers
interpret-trailers: add an option to unfold values
interpret-trailers: add --parse convenience option
pretty: move trailer formatting to trailer.c
t4205: refactor %(trailers) tests
pretty: support normalization options for %(trailers)
doc: fix typo in sendemail.identity
config: use a static lock_file struct
write_index_as_tree: cleanup tempfile on error
setup_temporary_shallow: avoid using inactive tempfile
setup_temporary_shallow: move tempfile struct into function
verify_signed_buffer: prefer close_tempfile() to close()
always check return value of close_tempfile
tempfile: do not delete tempfile on failed close
lockfile: do not rollback lock on failed close
tempfile: prefer is_tempfile_active to bare access
tempfile: handle NULL tempfile pointers gracefully
tempfile: replace die("BUG") with BUG()
tempfile: factor out activation
tempfile: factor out deactivation
tempfile: robustify cleanup handler
tempfile: release deactivated strbufs instead of resetting
tempfile: use list.h for linked list
tempfile: remove deactivated list entries
tempfile: auto-allocate tempfiles on heap
lockfile: update lifetime requirements in documentation
ref_lock: stop leaking lock_files
stop leaking lock structs in some simple cases
test-lib: --valgrind should not override --verbose-log
test-lib: set LSAN_OPTIONS to abort by default
add: free leaked pathspec after add_files_to_cache()
update-index: fix cache entry leak in add_one_file()
config: plug user_config leak
reset: make tree counting less confusing
reset: free allocated tree buffers
repository: free fields before overwriting them
set_git_dir: handle feeding gitdir to itself
rev-parse: don't trim bisect refnames
system_path: move RUNTIME_PREFIX to a sub-function
git_extract_argv0_path: do nothing without RUNTIME_PREFIX
add UNLEAK annotation for reducing leak false positives
shortlog: skip format/parse roundtrip for internal traversal
shell: drop git-cvsserver support by default
archimport: use safe_pipe_capture for user input
cvsimport: shell-quote variable used in backticks
config: avoid "write_in_full(fd, buf, len) < len" pattern
get-tar-commit-id: check write_in_full() return against 0
avoid "write_in_full(fd, buf, len) != len" pattern
convert less-trivial versions of "write_in_full() != len"
pkt-line: check write_in_full() errors against "< 0"
notes-merge: use ssize_t for write_in_full() return value
config: flip return value of store_write_*()
read_pack_header: handle signed/unsigned comparison in read result
prefix_ref_iterator: break when we leave the prefix
read_info_alternates: read contents into strbuf
read_info_alternates: warn on non-trivial errors
revision: replace "struct cmdline_pathspec" with argv_array
cat-file: handle NULL object_context.path
test-line-buffer: simplify command parsing
curl_trace(): eliminate switch fallthrough
consistently use "fallthrough" comments in switches
doc: put literal block delimiter around table
files-backend: prefer "0" for write_in_full() error check
notes-merge: drop dead zero-write code
prefer "!=" when checking read_in_full() result
avoid looking at errno for short read_in_full() returns
distinguish error versus short read from read_in_full()
worktree: use xsize_t to access file size
worktree: check the result of read_in_full()
validate_headref: NUL-terminate HEAD buffer
validate_headref: use skip_prefix for symref parsing
validate_headref: use get_oid_hex for detached HEADs
git: add --no-optional-locks option
test-terminal: set TERM=vt100
t4015: prefer --color to -c color.diff=always
t3701: use test-terminal to collect color output
t7508: use test_terminal for color output
t7502: use diff.noprefix for --verbose test
t6006: drop "always" color config tests
t3203: drop "always" color test
t3205: use --color instead of color.branch=always
provide --color option for all ref-filter users
color: make "always" the same as "auto" in config
t4015: use --color with --color-moved
t7301: use test_terminal to check color
path.c: fix uninitialized memory access
sha1_loose_object_info: handle errors from unpack_sha1_rest
t3308: create a real ref directory/file conflict
refs_resolve_ref_unsafe: handle d/f conflicts for writes
write_entry: fix leak when retrying delayed filter
write_entry: avoid reading blobs in CE_RETRY case
write_entry: untangle symlink and regular-file cases
Job Snijders (1):
gitweb: add 'raw' blob_plain link in history overview
Joel Teichroeb (3):
stash: add a test for stash create with no files
stash: add a test for when apply fails during stash branch
stash: add a test for stashing in a detached state
Johannes Schindelin (14):
run_processes_parallel: change confusing task_cb convention
git-gui (MinGW): make use of MSys2's msgfmt
t3415: verify that an empty instructionFormat is handled as before
rebase -i: generate the script via rebase--helper
rebase -i: remove useless indentation
rebase -i: do not invent onelines when expanding/collapsing SHA-1s
rebase -i: also expand/collapse the SHA-1s via the rebase--helper
t3404: relax rebase.missingCommitsCheck tests
rebase -i: check for missing commits in the rebase--helper
rebase -i: skip unnecessary picks using the rebase--helper
t3415: test fixup with wrapped oneline
rebase -i: rearrange fixup/squash lines using the rebase--helper
Win32: simplify loading of DLL functions
clang-format: adjust line break penalties
Johannes Sixt (1):
sub-process: use child_process.args instead of child_process.argv
Jonathan Nieder (8):
vcs-svn: remove more unused prototypes and declarations
vcs-svn: remove custom mode constants
vcs-svn: remove repo_delete wrapper function
vcs-svn: move remaining repo_tree functions to fast_export.h
pack: make packed_git_mru global a value instead of a pointer
pathspec doc: parse_pathspec does not maintain references to args
technical doc: add a design doc for hash function transition
strbuf doc: reuse after strbuf_release is fine
Jonathan Tan (40):
fsck: remove redundant parse_tree() invocation
object: remove "used" field from struct object
fsck: cleanup unused variable
Documentation: migrate sub-process docs to header
sub-process: refactor handshake to common function
tests: ensure fsck fails on corrupt packfiles
sha1_file: set whence in storage-specific info fn
sha1_file: remove read_packed_sha1()
diff: avoid redundantly clearing a flag
diff: respect MIN_BLOCK_LENGTH for last block
diff: define block by number of alphanumeric chars
Doc: clarify that pack-objects makes packs, plural
pack: move pack name-related functions
pack: move static state variables
pack: move pack_report()
pack: move open_pack_index(), parse_pack_index()
pack: move release_pack_memory()
pack: move pack-closing functions
pack: move use_pack()
pack: move unuse_pack()
pack: move add_packed_git()
pack: move install_packed_git()
pack: move {,re}prepare_packed_git and approximate_object_count
pack: move unpack_object_header_buffer()
pack: move get_size_from_delta()
pack: move unpack_object_header()
pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
pack: move nth_packed_object_{sha1,oid}
pack: move check_pack_index_ptr(), nth_packed_object_offset()
pack: move find_pack_entry_one(), is_pack_valid()
pack: move find_sha1_pack()
pack: move find_pack_entry() and make it global
pack: move has_sha1_pack()
pack: move has_pack_index()
pack: move for_each_packed_object()
Remove inadvertently added outgoing/packfile.h
Add t/helper/test-write-cache to .gitignore
git-compat-util: make UNLEAK less error-prone
fast-export: do not copy from modified file
oidmap: map with OID as key
Junio C Hamano (51):
t1408: add a test of stale packed refs covered by loose refs
clean.c: use designated initializer
http.c: http.sslcert and http.sslkey are both pathnames
connect: reject ssh hostname that begins with a dash
Git 2.7.6
Git 2.8.6
Git 2.9.5
Git 2.10.4
Git 2.11.3
Git 2.12.4
Git 2.13.5
Git 2.14.1
Start post 2.14 cycle
perl/Git.pm: typofix in a comment
The first batch of topics after the 2.14 cycle
diff: retire sane_truncate_fn
progress: simplify "delayed" progress API
The second batch post 2.14
t4200: give us a clean slate after "rerere gc" tests
t4200: make "rerere gc" test more robust
t4200: gather "rerere gc" together
t4200: parameterize "rerere gc" custom expiry test
rerere: represent time duration in timestamp_t internally
rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
The third batch post 2.14
Prepare for 2.14.2
The fourth batch post 2.14
The fifth batch post 2.14
The sixth batch post 2.14
RelNotes: further fixes for 2.14.2 from the master front
The seventh batch post 2.14
travis: dedent a few scripts that are indented overly deeply
subprocess: loudly die when subprocess asks for an unsupported capability
cvsserver: move safe_pipe_capture() to the main package
cvsserver: use safe_pipe_capture for `constant commands` as well
gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
The eighth batch for 2.15
Git 2.10.5
Git 2.11.4
Git 2.12.5
Git 2.13.6
Git 2.14.2
branch: fix "copy" to never touch HEAD
merge-strategies: avoid implying that "-s theirs" exists
The ninth batch for 2.15
The tenth batch for 2.15
The eleventh batch for 2.15
The twelfth batch for 2.15
Git 2.15-rc0
Prepare for -rc1
Git 2.15-rc1
Kaartic Sivaraam (15):
hook: cleanup script
hook: name the positional variables
hook: add sign-off using "interpret-trailers"
hook: add a simple first example
commit: check for empty message before the check for untouched template
hook: use correct logical variable
t3200: cleanup cruft of a test
builtin/branch: stop supporting the "--set-upstream" option
branch: quote branch/ref names to improve readability
help: change a message to be more precise
commit-template: change a message to be more intuitive
t/README: fix typo and grammatically improve a sentence
doc: camelCase the config variables to improve readability
branch: change the error messages to be more meaningful
setup: update error message to be more meaningful
Kevin Daudt (3):
stash: prevent warning about null bytes in input
doc/for-each-ref: consistently use '=' to between argument names and values
doc/for-each-ref: explicitly specify option names
Kevin Willford (9):
format-patch: have progress option while generating patches
rebase: turn on progress option by default for format-patch
commit: skip discarding the index if there is no pre-commit hook
perf: add test for writing the index
read-cache: fix memory leak in do_write_index
read-cache: avoid allocating every ondisk entry when writing
merge-recursive: fix memory leak
merge-recursive: remove return value from get_files_dirs
merge-recursive: change current file dir string_lists to hashmap
Lars Schneider (13):
t0021: keep filter log files on comparison
t0021: make debug log file name configurable
t0021: write "OUT <size>" only on success
convert: put the flags field before the flag itself for consistent style
convert: move multiple file filter error handling to separate function
convert: refactor capabilities negotiation
convert: add "status=delayed" to filter process protocol
convert: display progress for filtered objects that have been delayed
travis-ci: move Travis CI code into dedicated scripts
travis-ci: skip a branch build if equal tag is present
travis-ci: fix "skip_branch_tip_with_tag()" string comparison
entry.c: update cache entry only for existing files
entry.c: check if file exists after checkout
Manav Rathi (1):
docs: improve discoverability of exclude pathspec
Martin Koegler (2):
diff-delta: fix encoding size that would not fit in "unsigned int"
diff-delta: do not allow delta offset truncation
Martin Ågren (33):
builtin.h: take over documentation from api-builtin.txt
git.c: let builtins opt for handling `pager.foo` themselves
git.c: provide setup_auto_pager()
t7006: add tests for how git tag paginates
tag: respect `pager.tag` in list-mode only
tag: change default of `pager.tag` to "on"
git.c: ignore pager.* when launching builtin as dashed external
Doc/git-{push,send-pack}: correct --sign= to --signed=
t5334: document that git push --signed=1 does not work
config: introduce git_parse_maybe_bool_text
config: make git_{config,parse}_maybe_bool equivalent
treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
parse_decoration_style: drop unused argument `var`
doc/interpret-trailers: fix "the this" typo
convert: always initialize attr_action in convert_attrs
pack-objects: take lock before accessing `remaining`
strbuf_setlen: don't write to strbuf_slopbuf
ThreadSanitizer: add suppressions
Documentation/user-manual: update outdated example output
treewide: correct several "up-to-date" to "up to date"
pkt-line: re-'static'-ify buffer in packet_write_fmt_1()
config: remove git_config_maybe_bool
refs/files-backend: add longer-scoped copy of string to list
refs/files-backend: fix memory leak in lock_ref_for_update
refs/files-backend: correct return value in lock_ref_for_update
refs/files-backend: add `refname`, not "HEAD", to list
builtin/commit: fix memory leak in `prepare_index()`
commit: fix memory leak in `reduce_heads()`
leak_pending: use `object_array_clear()`, not `free()`
object_array: use `object_array_clear()`, not `free()`
object_array: add and use `object_array_pop()`
pack-bitmap[-write]: use `object_array_clear()`, don't leak
builtin/: add UNLEAKs
Matthieu Moy (2):
send-email: fix garbage removal after address
send-email: don't use Mail::Address, even if available
Max Kirillov (2):
describe: fix matching to actually match all patterns
describe: teach --match to handle branches and remotes
Michael Forney (1):
scripts: use "git foo" not "git-foo"
Michael Haggerty (77):
add_packed_ref(): teach function to overwrite existing refs
packed_ref_store: new struct
packed_ref_store: move `packed_refs_path` here
packed_ref_store: move `packed_refs_lock` member here
clear_packed_ref_cache(): take a `packed_ref_store *` parameter
validate_packed_ref_cache(): take a `packed_ref_store *` parameter
get_packed_ref_cache(): take a `packed_ref_store *` parameter
get_packed_refs(): take a `packed_ref_store *` parameter
add_packed_ref(): take a `packed_ref_store *` parameter
lock_packed_refs(): take a `packed_ref_store *` parameter
commit_packed_refs(): take a `packed_ref_store *` parameter
rollback_packed_refs(): take a `packed_ref_store *` parameter
get_packed_ref(): take a `packed_ref_store *` parameter
repack_without_refs(): take a `packed_ref_store *` parameter
packed_peel_ref(): new function, extracted from `files_peel_ref()`
packed_ref_store: support iteration
packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
packed-backend: new module for handling packed references
packed_ref_store: make class into a subclass of `ref_store`
commit_packed_refs(): report errors rather than dying
commit_packed_refs(): use a staging file separate from the lockfile
packed_refs_lock(): function renamed from lock_packed_refs()
packed_refs_lock(): report errors via a `struct strbuf *err`
packed_refs_unlock(), packed_refs_is_locked(): new functions
clear_packed_ref_cache(): don't protest if the lock is held
commit_packed_refs(): remove call to `packed_refs_unlock()`
repack_without_refs(): don't lock or unlock the packed refs
t3210: add some tests of bogus packed-refs file contents
read_packed_refs(): die if `packed-refs` contains bogus data
packed_ref_store: handle a packed-refs file that is a symlink
files-backend: cheapen refname_available check when locking refs
refs: retry acquiring reference locks for 100ms
notes: make GET_NIBBLE macro more robust
load_subtree(): remove unnecessary conditional
load_subtree(): reduce the scope of some local variables
load_subtree(): fix incorrect comment
load_subtree(): separate logic for internal vs. terminal entries
load_subtree(): check earlier whether an internal node is a tree entry
load_subtree(): only consider blobs to be potential notes
get_oid_hex_segment(): return 0 on success
load_subtree(): combine some common code
get_oid_hex_segment(): don't pad the rest of `oid`
hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
load_subtree(): declare some variables to be `size_t`
load_subtree(): check that `prefix_len` is in the expected range
packed-backend: don't adjust the reference count on lock/unlock
struct ref_transaction: add a place for backends to store data
packed_ref_store: implement reference transactions
packed_delete_refs(): implement method
files_pack_refs(): use a reference transaction to write packed refs
prune_refs(): also free the linked list
files_initial_transaction_commit(): use a transaction for packed refs
t1404: demonstrate two problems with reference transactions
files_ref_store: use a transaction to update packed refs
packed-backend: rip out some now-unused code
files_transaction_finish(): delete reflogs before references
ref_iterator: keep track of whether the iterator output is ordered
packed_ref_cache: add a backlink to the associated `packed_ref_store`
die_unterminated_line(), die_invalid_line(): new functions
read_packed_refs(): use mmap to read the `packed-refs` file
read_packed_refs(): only check for a header at the top of the file
read_packed_refs(): make parsing of the header line more robust
for_each_string_list_item: avoid undefined behavior for empty list
read_packed_refs(): read references with minimal copying
packed_ref_cache: remember the file-wide peeling state
mmapped_ref_iterator: add iterator over a packed-refs file
mmapped_ref_iterator_advance(): no peeled value for broken refs
packed-backend.c: reorder some definitions
packed_ref_cache: keep the `packed-refs` file mmapped if possible
read_packed_refs(): ensure that references are ordered when read
packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
packed_read_raw_ref(): read the reference from the mmapped buffer
ref_store: implement `refs_peel_ref()` generically
packed_ref_store: get rid of the `ref_cache` entirely
ref_cache: remove support for storing peeled values
mmapped_ref_iterator: inline into `packed_ref_iterator`
packed-backend.c: rename a bunch of things and update comments
Michael J Gruber (11):
Documentation: use proper wording for ref format strings
Documentation/git-for-each-ref: clarify peeling of tags for --format
Documentation/git-merge: explain --continue
merge: clarify call chain
merge: split write_merge_state in two
merge: save merge state earlier
name-rev: change ULONG_MAX to TIME_MAX
t7004: move limited stack prereq to test-lib
t6120: test name-rev --all and --stdin
t6120: clean up state after breaking repo
t6120: test describe and name-rev with deep repos
Nguyễn Thái Ngọc Duy (17):
branch: fix branch renaming not updating HEADs correctly
revision.h: new flag in struct rev_info wrt. worktree-related refs
refs.c: use is_dir_sep() in resolve_gitlink_ref()
revision.c: refactor add_index_objects_to_pending()
revision.c: --indexed-objects add objects from all worktrees
refs.c: refactor get_submodule_ref_store(), share common free block
refs: move submodule slash stripping code to get_submodule_ref_store
refs: add refs_head_ref()
revision.c: use refs_for_each*() instead of for_each_*_submodule()
refs.c: move for_each_remote_ref_submodule() to submodule.c
refs: remove dead for_each_*_submodule()
revision.c: --all adds HEAD from all worktrees
files-backend: make reflog iterator go through per-worktree reflog
revision.c: --reflog add HEAD reflog from all worktrees
rev-list: expose and document --single-worktree
refs.c: remove fallback-to-main-store code get_submodule_ref_store()
refs.c: reindent get_submodule_ref_store()
Nicolas Morey-Chaisemartin (7):
stash: clean untracked files before reset
pull: fix cli and config option parsing order
pull: honor submodule.recurse config option
imap-send: return with error if curl failed
imap-send: add wrapper to get server credentials if needed
imap_send: setup_curl: retreive credentials if not set in config file
imap-send: use curl by default when possible
Paolo Bonzini (4):
trailers: export action enums and corresponding lookup functions
trailers: introduce struct new_trailer_item
interpret-trailers: add options for actions
interpret-trailers: fix documentation typo
Patryk Obara (10):
sha1_file: fix definition of null_sha1
commit: replace the raw buffer with strbuf in read_graft_line
commit: allocate array using object_id size
commit: rewrite read_graft_line
builtin/hash-object: convert to struct object_id
read-cache: convert to struct object_id
sha1_file: convert index_path to struct object_id
sha1_file: convert index_fd to struct object_id
sha1_file: convert hash_sha1_file_literally to struct object_id
sha1_file: convert index_stream to struct object_id
Philip Oakley (4):
git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
git gui: cope with duplicates in _get_recentrepo
git gui: de-dup selected repo from recentrepo history
git gui: allow for a long recentrepo list
Phillip Wood (7):
am: remember --rerere-autoupdate setting
rebase: honor --rerere-autoupdate
rebase -i: honor --rerere-autoupdate
t3504: use test_commit
cherry-pick/revert: remember --rerere-autoupdate
cherry-pick/revert: reject --rerere-autoupdate when continuing
am: fix signoff when other trailers are present
Raman Gupta (1):
contrib/rerere-train: optionally overwrite existing resolutions
Ramsay Jones (9):
credential-cache: interpret an ECONNRESET as an EOF
builtin/add: add detail to a 'cannot chmod' error message
test-lib: don't use ulimit in test prerequisites on cygwin
test-lib: use more compact expression in PIPE prerequisite
t9010-*.sh: skip all tests if the PIPE prereq is missing
git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
commit-slab.h: avoid -Wsign-compare warnings
cache.h: hex2chr() - avoid -Wsign-compare warnings
ALLOC_GROW: avoid -Wsign-compare warnings
Randall S. Becker (1):
poll.c: always set revents, even if to zero
René Scharfe (81):
tree-diff: don't access hash of NULL object_id pointer
notes: don't access hash of NULL object_id pointer
receive-pack: don't access hash of NULL object_id pointer
bswap: convert to unsigned before shifting in get_be32
bswap: convert get_be16, get_be32 and put_be32 to inline functions
add MOVE_ARRAY
use MOVE_ARRAY
apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
ls-files: don't try to prune an empty index
dir: support platforms that require aligned reads
pack-objects: remove unnecessary NULL check
t0001: skip test with restrictive permissions if getpwd(3) respects them
test-path-utils: handle const parameter of basename and dirname
t3700: fix broken test under !POSIXPERM
t4062: use less than 256 repetitions in regex
sha1_file: avoid comparison if no packed hash matches the first byte
apply: remove prefix_length member from apply_state
merge: use skip_prefix()
win32: plug memory leak on realloc() failure in syslog()
strbuf: clear errno before calling getdelim(3)
fsck: free buffers on error in fsck_obj()
sha1_file: release delta_stack on error in unpack_entry()
tree-walk: convert fill_tree_descriptor() to object_id
t1002: stop using sum(1)
t5001: add tests for export-ignore attributes and exclude pathspecs
archive: factor out helper functions for handling attributes
archive: don't queue excluded directories
commit: remove unused inline function single_parent()
apply: check date of potential epoch timestamps first
apply: remove epoch date from regex
am: release strbufs after use in detect_patch_format()
am: release strbuf on error return in hg_patch_to_mail()
am: release strbuf after use in safe_to_abort()
check-ref-format: release strbuf after use in check_ref_format_branch()
clean: release strbuf after use in remove_dirs()
clone: release strbuf after use in remove_junk()
commit: release strbuf on error return in commit_tree_extended()
connect: release strbuf on error return in git_connect()
convert: release strbuf on error return in filter_buffer_or_fd()
diff: release strbuf after use in diff_summary()
diff: release strbuf after use in show_rename_copy()
diff: release strbuf after use in show_stats()
help: release strbuf on error return in exec_man_konqueror()
help: release strbuf on error return in exec_man_man()
help: release strbuf on error return in exec_woman_emacs()
mailinfo: release strbuf after use in handle_from()
mailinfo: release strbuf on error return in handle_boundary()
merge: release strbuf after use in save_state()
merge: release strbuf after use in write_merge_heads()
notes: release strbuf after use in notes_copy_from_stdin()
refs: release strbuf on error return in write_pseudoref()
remote: release strbuf after use in read_remote_branches()
remote: release strbuf after use in migrate_file()
remote: release strbuf after use in set_url()
send-pack: release strbuf on error return in send_pack()
sha1_file: release strbuf on error return in index_path()
shortlog: release strbuf after use in insert_one_record()
sequencer: release strbuf after use in save_head()
transport-helper: release strbuf after use in process_connect_service()
userdiff: release strbuf after use in userdiff_get_textconv()
utf8: release strbuf on error return in strbuf_utf8_replace()
vcs-svn: release strbuf after use in end_revision()
wt-status: release strbuf after use in read_rebase_todolist()
wt-status: release strbuf after use in wt_longstatus_print_tracking()
archive: don't add empty directories to archives
refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
refs: pass NULL to resolve_ref_unsafe() if hash is not needed
mailinfo: don't decode invalid =XY quoted-printable sequences
refs: pass NULL to refs_resolve_refdup() if hash is not needed
refs: pass NULL to resolve_refdup() if hash is not needed
coccinelle: remove parentheses that become unnecessary
path: use strbuf_add_real_path()
use strbuf_addstr() for adding strings to strbufs
graph: use strbuf_addchars() to add spaces
tag: avoid NULL pointer arithmetic
repository: use FREE_AND_NULL
run-command: use ALLOC_ARRAY
test-stringlist: avoid buffer underrun when sorting nothing
fsck: handle NULL return of lookup_blob() and lookup_tree()
.mailmap: normalize name for René Scharfe
Ross Kabus (1):
commit-tree: do not complete line in -F input
Sahil Dua (2):
config: create a function to format section headers
branch: add a --copy (-c) option to go with --move (-m)
Santiago Torres (1):
t: lib-gpg: flush gpg agent on startup
Stefan Beller (51):
diff.c: readability fix
diff.c: move line ending check into emit_hunk_header
diff.c: factor out diff_flush_patch_all_file_pairs
diff.c: introduce emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
diff.c: migrate emit_line_checked to use emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
submodule.c: migrate diff output to use emit_diff_symbol
diff.c: convert emit_binary_diff_body to use emit_diff_symbol
diff.c: convert show_stats to use emit_diff_symbol
diff.c: convert word diffing to use emit_diff_symbol
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
diff.c: buffer all output if asked to
diff.c: color moved lines differently
diff.c: color moved lines differently, plain mode
diff.c: add dimming to moved line detection
diff: document the new --color-moved setting
attr.c: drop hashmap_cmp_fn cast
builtin/difftool.c: drop hashmap_cmp_fn cast
builtin/describe: drop hashmap_cmp_fn cast
config.c: drop hashmap_cmp_fn cast
convert/sub-process: drop cast to hashmap_cmp_fn
patch-ids.c: drop hashmap_cmp_fn cast
remote.c: drop hashmap_cmp_fn cast
submodule-config.c: drop hashmap_cmp_fn cast
name-hash.c: drop hashmap_cmp_fn cast
t/helper/test-hashmap: use custom data instead of duplicate cmp functions
commit: convert lookup_commit_graft to struct object_id
tag: convert gpg_verify_tag to use struct object_id
t8008: rely on rev-parse'd HEAD instead of sha1 value
t1200: remove t1200-tutorial.sh
sha1_file: make read_info_alternates static
submodule.sh: remove unused variable
builtin/merge: honor commit-msg hook for merges
push, fetch: error out for submodule entries not pointing to commits
replace-objects: evaluate replacement refs without using the object store
Documentation/githooks: mention merge in commit-msg hook
Documentation/config: clarify the meaning of submodule.<name>.update
t7406: submodule.<name>.update command must not be run from .gitmodules
diff: correct newline in summary for renamed files
submodule: correct error message for missing commits
branch: reset instead of release a strbuf
tests: fix diff order arguments in test_cmp
Stephan Beyer (1):
clang-format: add a comment about the meaning/status of the
Takashi Iwai (2):
sha1dc: build git plumbing code more explicitly
sha1dc: allow building with the external sha1dc library
Taylor Blau (8):
pretty.c: delimit "%(trailers)" arguments with ","
t4205: unfold across multiple lines
doc: 'trailers' is the preferred way to format trailers
doc: use "`<literal>`"-style quoting for literal strings
t6300: refactor %(trailers) tests
ref-filter.c: use trailer_opts to format trailers
ref-filter.c: parse trailers arguments with %(contents) atom
ref-filter.c: pass empty-string as NULL to atom parsers
Thomas Braun (1):
completion: add --broken and --dirty to describe
Thomas Gummerer (3):
read-cache: fix index corruption with index v4
refs: strip out not allowed flags from ref_transaction_update
http-push: fix construction of hex value from path
Todd Zullinger (1):
api-argv-array.txt: remove broken link to string-list API
Tom G. Christensen (2):
http: fix handling of missing CURLPROTO_*
http: use a feature check to enable GSSAPI delegation control
Torsten Bögershausen (3):
convert: add SAFE_CRLF_KEEP_CRLF
apply: file commited with CRLF should roundtrip diff and apply
test-lint: echo -e (or -E) is not portable
Urs Thuermann (1):
git svn fetch: Create correct commit timestamp when using --localtime
William Duclot (1):
rebase: make resolve message clearer for inexperienced users
brian m. carlson (14):
builtin/fsck: convert remaining caller of get_sha1 to object_id
builtin/merge-tree: convert remaining caller of get_sha1 to object_id
submodule: convert submodule config lookup to use object_id
remote: convert struct push_cas to struct object_id
sequencer: convert to struct object_id
builtin/update_ref: convert to struct object_id
bisect: convert bisect_checkout to struct object_id
builtin/unpack-file: convert to struct object_id
Convert remaining callers of get_sha1 to get_oid.
sha1_name: convert get_sha1* to get_oid*
sha1_name: convert GET_SHA1* flags to GET_OID*
sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
vcs-svn: remove unused prototypes
vcs-svn: rename repo functions to "svn_repo"
joernchen (1):
cvsserver: use safe_pipe_capture instead of backticks
Ævar Arnfjörð Bjarmason (2):
branch: add test for -m renaming multiple config sections
tests: don't give unportable ">" to "test" built-in, use -gt
Øystein Walle (1):
rev-parse: rev-parse: add --is-shallow-repository
Łukasz Gryglicki (1):
merge: add a --signoff flag
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.15.0-rc0
@ 2017-10-05 5:55 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-10-05 5:55 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.15.0-rc0 is now available for
testing at the usual places. It is comprised of 672 non-merge
commits since v2.14.0, contributed by 66 people, 20 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.15.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.14.0 are as follows.
Welcome to the Git development community!
Ann T Ropea, Daniel Watkins, Dimitrios Christidis, Eric Rannaud,
Evan Zacks, Hielke Christian Braun, Ian Campbell, Ilya Kantor,
Jameson Miller, Job Snijders, Joel Teichroeb, joernchen,
Łukasz Gryglicki, Manav Rathi, Martin Ågren, Michael Forney,
Patryk Obara, Rene Scharfe, Ross Kabus, and Urs Thuermann.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Andreas Heiduk,
Anthony Sottile, Ben Boeckel, Brandon Casey, Brandon Williams,
brian m. carlson, Christian Couder, Eric Blake, Han-Wen Nienhuys,
Heiko Voigt, Jeff Hostetler, Jeff King, Johannes Schindelin,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
Kevin Daudt, Kevin Willford, Lars Schneider, Martin Koegler,
Matthieu Moy, Max Kirillov, Michael Haggerty, Michael J Gruber,
Nguyễn Thái Ngọc Duy, Nicolas Morey-Chaisemartin, Øystein
Walle, Paolo Bonzini, Pat Thoyts, Philip Oakley, Phillip
Wood, Raman Gupta, Ramsay Jones, René Scharfe, Sahil Dua,
Santiago Torres, Stefan Beller, Stephan Beyer, Takashi Iwai,
Thomas Gummerer, Tom G. Christensen, Torsten Bögershausen,
and William Duclot.
----------------------------------------------------------------
Git 2.15 Release Notes (draft)
==============================
Backward compatibility notes and other notable changes.
* Use of an empty string as a pathspec element that is used for
'everything matches' is still warned and Git asks users to use a
more explicit '.' for that instead. The hope is that existing
users will not mind this change, and eventually the warning can be
turned into a hard error, upgrading the deprecation into removal of
this (mis)feature. That is now scheduled to happen in the upcoming
release.
* Git now avoids blindly falling back to ".git" when the setup
sequence said we are _not_ in Git repository. A corner case that
happens to work right now may be broken by a call to die("BUG").
We've tried hard to locate such cases and fixed them, but there
might still be cases that need to be addressed--bug reports are
greatly appreciated.
* "branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.
Updates since v2.14
-------------------
UI, Workflows & Features
* An example that is now obsolete has been removed from a sample hook,
and an old example in it that added a sign-off manually has been
improved to use the interpret-trailers command.
* The advice message given when "git rebase" stops for conflicting
changes has been improved.
* The "rerere-train" script (in contrib/) learned the "--overwrite"
option to allow overwriting existing recorded resolutions.
* "git contacts" (in contrib/) now lists the address on the
"Reported-by:" trailer to its output, in addition to those on
S-o-b: and other trailers, to make it easier to notify (and thank)
the original bug reporter.
* "git rebase", especially when it is run by mistake and ends up
trying to replay many changes, spent long time in silence. The
command has been taught to show progress report when it spends
long time preparing these many changes to replay (which would give
the user a chance to abort with ^C).
* "git merge" learned a "--signoff" option to add the Signed-off-by:
trailer with the committer's name.
* "git diff" learned to optionally paint new lines that are the same
as deleted lines elsewhere differently from genuinely new lines.
* "git interpret-trailers" learned to take the trailer specifications
from the command line that overrides the configured values.
* "git interpret-trailers" has been taught a "--parse" and a few
other options to make it easier for scripts to grab existing
trailer lines from a commit log message.
* "gitweb" shows a link to visit the 'raw' contents of blbos in the
history overview page.
* "[gc] rerereResolved = 5.days" used to be invalid, as the variable
is defined to take an integer counting the number of days. It now
is allowed.
* The code to acquire a lock on a reference (e.g. while accepting a
push from a client) used to immediately fail when the reference is
already locked---now it waits for a very short while and retries,
which can make it succeed if the lock holder was holding it during
a read-only operation.
* "branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.
* The codepath to call external process filter for smudge/clean
operation learned to show the progress meter.
* "git rev-parse" learned "--is-shallow-repository", that is to be
used in a way similar to existing "--is-bare-repository" and
friends.
* "git describe --match <pattern>" has been taught to play well with
the "--all" option.
* "git branch" learned "-c/-C" to create a new branch by copying an
existing one.
* Some commands (most notably "git status") makes an opportunistic
update when performing a read-only operation to help optimize later
operations in the same repository. The new "--no-optional-locks"
option can be passed to Git to disable them.
Performance, Internal Implementation, Development Support etc.
* Conversion from uchar[20] to struct object_id continues.
* Start using selected c99 constructs in small, stable and
essentialpart of the system to catch people who care about
older compilers that do not grok them.
* The filter-process interface learned to allow a process with long
latency give a "delayed" response.
* Many uses of comparision callback function the hashmap API uses
cast the callback function type when registering it to
hashmap_init(), which defeats the compile time type checking when
the callback interface changes (e.g. gaining more parameters).
The callback implementations have been updated to take "void *"
pointers and cast them to the type they expect instead.
* Because recent Git for Windows do come with a real msgfmt, the
build procedure for git-gui has been updated to use it instead of a
hand-rolled substitute.
* "git grep --recurse-submodules" has been reworked to give a more
consistent output across submodule boundary (and do its thing
without having to fork a separate process).
* A helper function to read a single whole line into strbuf
mistakenly triggered OOM error at EOF under certain conditions,
which has been fixed.
(merge 642956cf45 rs/strbuf-getwholeline-fix later to maint).
* The "ref-store" code reorganization continues.
* "git commit" used to discard the index and re-read from the filesystem
just in case the pre-commit hook has updated it in the middle; this
has been optimized out when we know we do not run the pre-commit hook.
(merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).
* Updates to the HTTP layer we made recently unconditionally used
features of libCurl without checking the existence of them, causing
compilation errors, which has been fixed. Also migrate the code to
check feature macros, not version numbers, to cope better with
libCurl that vendor ships with backported features.
* The API to start showing progress meter after a short delay has
been simplified.
(merge 8aade107dd jc/simplify-progress later to maint).
* Code clean-up to avoid mixing values read from the .gitmodules file
and values read from the .git/config file.
* We used to spend more than necessary cycles allocating and freeing
piece of memory while writing each index entry out. This has been
optimized.
* Platforms that ship with a separate sha1 with collision detection
library can link to it instead of using the copy we ship as part of
our source tree.
* Code around "notes" have been cleaned up.
(merge 3964281524 mh/notes-cleanup later to maint).
* The long-standing rule that an in-core lockfile instance, once it
is used, must not be freed, has been lifted and the lockfile and
tempfile APIs have been updated to reduce the chance of programming
errors.
* Our hashmap implementation in hashmap.[ch] is not thread-safe when
adding a new item needs to expand the hashtable by rehashing; add
an API to disable the automatic rehashing to work it around.
* Many of our programs consider that it is OK to release dynamic
storage that is used throughout the life of the program by simply
exiting, but this makes it harder to leak detection tools to avoid
reporting false positives. Plug many existing leaks and introduce
a mechanism for developers to mark that the region of memory
pointed by a pointer is not lost/leaking to help these tools.
* As "git commit" to conclude a conflicted "git merge" honors the
commit-msg hook, "git merge" that records a merge commit that
cleanly auto-merges should, but it didn't.
* The codepath for "git merge-recursive" has been cleaned up.
* Many leaks of strbuf have been fixed.
* "git imap-send" has our own implementation of the protocol and also
can use more recent libCurl with the imap protocol support. Update
the latter so that it can use the credential subsystem, and then
make it the default option to use, so that we can eventually
deprecate and remove the former.
* "make style" runs git-clang-format to help developers by pointing
out coding style issues.
* A test to demonstrate "git mv" failing to adjust nested submodules
has been added.
(merge c514167df2 hv/mv-nested-submodules-test later to maint).
* On Cygwin, "ulimit -s" does not report failure but it does not work
at all, which causes an unexpected success of some tests that
expect failures under a limited stack situation. This has been
fixed.
* Many codepaths have been updated to squelch -Wimplicit-fallthrough
warnings from Gcc 7 (which is a good code hygiene).
* Add a helper for DLL loading in anticipation for its need in a
future topic RSN.
* "git status --ignored", when noticing that a directory without any
tracked path is ignored, still enumerated all the ignored paths in
the directory, which is unnecessary. The codepath has been
optimized to avoid this overhead.
* The final batch to "git rebase -i" updates to move more code from
the shell script to C has been merged.
* Operations that do not touch (majority of) packed refs have been
optimized by making accesses to packed-refs file lazy; we no longer
pre-parse everything, and an access to a single ref in the
packed-refs does not touch majority of irrelevant refs, either.
* Add comment to clarify that the style file is meant to be used with
clang-5 and the rules are still work in progress.
Also contains various documentation updates and code clean-ups.
Fixes since v2.14
-----------------
* "%C(color name)" in the pretty print format always produced ANSI
color escape codes, which was an early design mistake. They now
honor the configuration (e.g. "color.ui = never") and also tty-ness
of the output medium.
* The http.{sslkey,sslCert} configuration variables are to be
interpreted as a pathname that honors "~[username]/" prefix, but
weren't, which has been fixed.
* Numerous bugs in walking of reflogs via "log -g" and friends have
been fixed.
* "git commit" when seeing an totally empty message said "you did not
edit the message", which is clearly wrong. The message has been
corrected.
* When a directory is not readable, "gitweb" fails to build the
project list. Work this around by skipping such a directory.
* Some versions of GnuPG fails to kill gpg-agent it auto-spawned
and such a left-over agent can interfere with a test. Work it
around by attempting to kill one before starting a new test.
* A recently added test for the "credential-cache" helper revealed
that EOF detection done around the time the connection to the cache
daemon is torn down were flaky. This was fixed by reacting to
ECONNRESET and behaving as if we got an EOF.
* "git log --tag=no-such-tag" showed log starting from HEAD, which
has been fixed---it now shows nothing.
* The "tag.pager" configuration variable was useless for those who
actually create tag objects, as it interfered with the use of an
editor. A new mechanism has been introduced for commands to enable
pager depending on what operation is being carried out to fix this,
and then "git tag -l" is made to run pager by default.
* "git push --recurse-submodules $there HEAD:$target" was not
propagated down to the submodules, but now it is.
* Commands like "git rebase" accepted the --rerere-autoupdate option
from the command line, but did not always use it. This has been
fixed.
* "git clone --recurse-submodules --quiet" did not pass the quiet
option down to submodules.
* Test portability fix for OBSD.
* Portability fix for OBSD.
* "git am -s" has been taught that some input may end with a trailer
block that is not Signed-off-by: and it should refrain from adding
an extra blank line before adding a new sign-off in such a case.
* "git svn" used with "--localtime" option did not compute the tz
offset for the timestamp in question and instead always used the
current time, which has been corrected.
* Memory leak in an error codepath has been plugged.
* "git stash -u" used the contents of the committed version of the
".gitignore" file to decide which paths are ignored, even when the
file has local changes. The command has been taught to instead use
the locally modified contents.
* bash 4.4 or newer gave a warning on NUL byte in command
substitution done in "git stash"; this has been squelched.
* "git grep -L" and "git grep --quiet -L" reported different exit
codes; this has been corrected.
* When handshake with a subprocess filter notices that the process
asked for an unknown capability, Git did not report what program
the offending subprocess was running. This has been corrected.
* "git apply" that is used as a better "patch -p1" failed to apply a
taken from a file with CRLF line endings to a file with CRLF line
endings. The root cause was because it misused convert_to_git()
that tried to do "safe-crlf" processing by looking at the index
entry at the same path, which is a nonsense---in that mode, "apply"
is not working on the data in (or derived from) the index at all.
This has been fixed.
* Killing "git merge --edit" before the editor returns control left
the repository in a state with MERGE_MSG but without MERGE_HEAD,
which incorrectly tells the subsequent "git commit" that there was
a squash merge in progress. This has been fixed.
* "git archive" did not work well with pathspecs and the
export-ignore attribute.
* In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
was taught to "git send-email" as a valid way to tell it that it
needs to also send a carbon copy to <a@dd.re.ss> in the trailer
section.
(merge cc90750677 mm/send-email-cc-cruft later to maint).
* "git branch -M a b" while on a branch that is completely unrelated
to either branch a or branch b misbehaved when multiple worktree
was in use. This has been fixed.
(merge 31824d180d nd/worktree-kill-parse-ref later to maint).
* "git gc" and friends when multiple worktrees are used off of a
single repository did not consider the index and per-worktree refs
of other worktrees as the root for reachability traversal, making
objects that are in use only in other worktrees to be subject to
garbage collection.
* A regression to "gitk --bisect" by a recent update has been fixed.
(merge 1d0538e486 mh/packed-ref-store-prep later to maint).
* "git -c submodule.recurse=yes pull" did not work as if the
"--recurse-submodules" option was given from the command line.
This has been corrected.
* Unlike "git commit-tree < file", "git commit-tree -F file" did not
pass the contents of the file verbatim and instead completed an
incomplete line at the end, if exists. The latter has been updated
to match the behaviour of the former.
(merge c818e74332 rk/commit-tree-make-F-verbatim later to maint).
* Many codepaths did not diagnose write failures correctly when disks
go full, due to their misuse of write_in_full() helper function,
which have been corrected.
(merge f48ecd38cb jk/write-in-full-fix later to maint).
* "git help co" now says "co is aliased to ...", not "git co is".
(merge b3a8076e0d ks/help-alias-label later to maint).
* "git archive", especially when used with pathspec, stored an empty
directory in its output, even though Git itself never does so.
This has been fixed.
(merge 4318094047 rs/archive-excluded-directory later to maint).
* API error-proofing which happens to also squelch warnings from GCC.
(merge c788c54cde tg/refs-allowed-flags later to maint).
* The explanation of the cut-line in the commit log editor has been
slightly tweaked.
(merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).
* "git gc" tries to avoid running two instances at the same time by
reading and writing pid/host from and to a lock file; it used to
use an incorrect fscanf() format when reading, which has been
corrected.
(merge afe2fab72c aw/gc-lockfile-fscanf-fix later to maint).
* The scripts to drive TravisCI has been reorganized and then an
optimization to avoid spending cycles on a branch whose tip is
tagged has been implemented.
(merge 8376eb4a8f ls/travis-scriptify later to maint).
* The test linter has been taught that we do not like "echo -e".
(merge 1a6d46895d tb/test-lint-echo-e later to maint).
* Code cmp.std.c nitpick.
(merge ac7da78ede mh/for-each-string-list-item-empty-fix later to maint).
* A regression fix for 2.11 that made the code to read the list of
alternate object stores overrun the end of the string.
(merge f0f7bebef7 jk/info-alternates-fix later to maint).
* "git describe --match" learned to take multiple patterns in v2.13
series, but the feature ignored the patterns after the first one
and did not work at all. This has been fixed.
(merge da769d2986 jk/describe-omit-some-refs later to maint).
* "git filter-branch" cannot reproduce a history with a tag without
the tagger field, which only ancient versions of Git allowed to be
created. This has been corrected.
(merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).
* "git cat-file --textconv" started segfaulting recently, which
has been corrected.
(merge cc0ea7c9e5 jk/diff-blob later to maint).
* The built-in pattern to detect the "function header" for HTML did
not match <H1>..<H6> elements without any attributes, which has
been fixed.
(merge 9c03caca2c ik/userdiff-html-h-element-fix later to maint).
* "git mailinfo" was loose in decoding quoted printable and produced
garbage when the two letters after the equal sign are not
hexadecimal. This has been fixed.
(merge c8cf423eab rs/mailinfo-qp-decode-fix later to maint).
* The machinery to create xdelta used in pack files received the
sizes of the data in size_t, but lost the higher bits of them by
storing them in "unsigned int" during the computation, which is
fixed.
* The delta format used in the packfile cannot reference data at
offset larger than what can be expressed in 4-byte, but the
generator for the data failed to make sure the offset does not
overflow. This has been corrected.
* The documentation for '-X<option>' for merges was misleadingly
written to suggest that "-s theirs" exists, which is not the case.
(merge c25d98b2a7 jc/merge-x-theirs-docfix later to maint).
* "git fast-export" with -M/-C option issued "copy" instruction on a
path that is simultaneously modified, which was incorrect.
(merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).
* Many codepaths have been updated to squelch -Wsign-compare
warnings.
(merge 071bcaab64 rj/no-sign-compare later to maint).
* Memory leaks in various codepaths have been plugged.
(merge 4d01a7fa65 ma/leakplugs later to maint).
* Recent versions of "git rev-parse --parseopt" did not parse the
option specification that does not have the optional flags (*=?!)
correctly, which has been corrected.
(merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).
* The checkpoint command "git fast-import" did not flush updates to
refs and marks unless at least one object was created since the
last checkpoint, which has been corrected, as these things can
happen without any new object getting created.
(merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).
* Spell the name of our system as "Git" in the output from
request-pull script.
(merge e66d7c37a5 ar/request-pull-phrasofix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge f094b89a4d ma/parse-maybe-bool later to maint).
(merge 39b00fa4d4 jk/drop-sha1-entry-pos later to maint).
(merge 6cdf8a7929 ma/ts-cleanups later to maint).
(merge 7560f547e6 ma/up-to-date later to maint).
(merge 0db3dc75f3 rs/apply-epoch later to maint).
(merge 74f1bd912b dw/diff-highlight-makefile-fix later to maint).
(merge f991761eb8 jk/config-lockfile-leak-fix later to maint).
(merge 150efef1e7 ma/pkt-line-leakfix later to maint).
(merge 5554451de6 mg/timestamp-t-fix later to maint).
(merge 276d0e35c0 ma/split-symref-update-fix later to maint).
(merge 3bc4b8f7c7 bb/doc-eol-dirty later to maint).
(merge c1bb33c99c jk/system-path-cleanup later to maint).
(merge ab46e6fc72 cc/subprocess-handshake-missing-capabilities later to maint).
(merge f7a32dd97f kd/doc-for-each-ref later to maint).
(merge be94568bc7 ez/doc-duplicated-words-fix later to maint).
(merge 01e4be6c3d ks/test-readme-phrasofix later to maint).
(merge 217bb56d4f hn/typofix later to maint).
(merge c08fd6388c jk/doc-read-tree-table-asciidoctor-fix later to maint).
(merge c3342b362e ks/doc-use-camelcase-for-config-name later to maint).
(merge 0bca165fdb jk/validate-headref-fix later to maint).
(merge 93dbefb389 mr/doc-negative-pathspec later to maint).
(merge 5e633326e4 ad/doc-markup-fix later to maint).
(merge 9ca356fa8b rs/cocci-de-paren-call-params later to maint).
(merge 7099153e8d rs/tag-null-pointer-arith-fix later to maint).
(merge 0e187d758c rs/run-command-use-alloc-array later to maint).
----------------------------------------------------------------
Changes since v2.14.0 are as follows:
Adam Dinwoodie (1):
doc: correct command formatting
Andreas Heiduk (2):
doc: add missing values "none" and "default" for diff.wsErrorHighlight
doc: clarify "config --bool" behaviour with empty string
Ann T Ropea (1):
request-pull: capitalise "Git" to make it a proper noun
Anthony Sottile (1):
git-grep: correct exit code with --quiet and -L
Ben Boeckel (1):
Documentation: mention that `eol` can change the dirty status of paths
Brandon Casey (7):
t1502: demonstrate rev-parse --parseopt option mis-parsing
rev-parse parseopt: do not search help text for flag chars
rev-parse parseopt: interpret any whitespace as start of help text
git-rebase: don't ignore unexpected command line arguments
t0040,t1502: Demonstrate parse_options bugs
parse-options: write blank line to correct output stream
parse-options: only insert newline in help text if needed
Brandon Williams (29):
repo_read_index: don't discard the index
repository: have the_repository use the_index
submodule--helper: teach push-check to handle HEAD
cache.h: add GITMODULES_FILE macro
config: add config_from_gitmodules
submodule: remove submodule.fetchjobs from submodule-config parsing
submodule: remove fetch.recursesubmodules from submodule-config parsing
submodule: check for unstaged .gitmodules outside of config parsing
submodule: check for unmerged .gitmodules outside of config parsing
submodule: merge repo_read_gitmodules and gitmodules_config
grep: recurse in-process using 'struct repository'
t7411: check configuration parsing errors
submodule: don't use submodule_from_name
add, reset: ensure submodules can be added or reset
submodule--helper: don't overlay config in remote_submodule_branch
submodule--helper: don't overlay config in update-clone
fetch: don't overlay config with submodule-config
submodule: don't rely on overlayed config when setting diffopts
unpack-trees: don't respect submodule.update
submodule: remove submodule_config callback routine
diff: stop allowing diff to have submodules configured in .git/config
submodule-config: remove support for overlaying repository config
submodule-config: move submodule-config functions to submodule-config.c
submodule-config: lazy-load a repository's .gitmodules file
unpack-trees: improve loading of .gitmodules
submodule: remove gitmodules_config
clone: teach recursive clones to respect -q
clang-format: outline the git project's coding style
Makefile: add style build rule
Christian Couder (3):
refs: use skip_prefix() in ref_is_hidden()
sub-process: print the cmd when a capability is unsupported
sha1-lookup: remove sha1_entry_pos() from header file
Daniel Watkins (1):
diff-highlight: add clean target to Makefile
Dimitrios Christidis (1):
fmt-merge-msg: fix coding style
Eric Blake (1):
git-contacts: also recognise "Reported-by:"
Eric Rannaud (1):
fast-import: checkpoint: dump branches/tags/marks even if object_count==0
Evan Zacks (1):
doc: fix minor typos (extra/duplicated words)
Han-Wen Nienhuys (5):
submodule.h: typofix
submodule.c: describe submodule_to_gitdir() in a new comment
real_path: clarify return value ownership
read_gitfile_gently: clarify return value ownership.
string-list.h: move documentation from Documentation/api/ into header
Heiko Voigt (2):
t5526: fix some broken && chains
add test for bug in git-mv for recursive submodules
Hielke Christian Braun (1):
gitweb: skip unreadable subdirectories
Ian Campbell (4):
filter-branch: reset $GIT_* before cleaning up
filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
filter-branch: stash away ref map in a branch
filter-branch: use hash-object instead of mktag
Ilya Kantor (1):
userdiff: fix HTML hunk header regexp
Jameson Miller (1):
Improve performance of git status --ignored
Jeff Hostetler (1):
hashmap: add API to disable item counting when threaded
Jeff King (110):
t1414: document some reflog-walk oddities
revision: disallow reflog walking with revs->limited
log: clarify comment about reflog cycles
log: do not free parents when walking reflog
get_revision_1(): replace do-while with an early return
rev-list: check reflog_info before showing usage
reflog-walk: stop using fake parents
reflog-walk: apply --since/--until to reflog dates
check return value of verify_ref_format()
docs/for-each-ref: update pointer to color syntax
t: use test_decode_color rather than literal ANSI codes
ref-filter: simplify automatic color reset
ref-filter: abstract ref format into its own struct
ref-filter: move need_color_reset_at_eol into ref_format
ref-filter: provide a function for parsing sort options
ref-filter: make parse_ref_filter_atom a private function
ref-filter: factor out the parsing of sorting atoms
ref-filter: pass ref_format struct to atom parsers
color: check color.ui in git_default_config()
for-each-ref: load config earlier
rev-list: pass diffopt->use_colors through to pretty-print
pretty: respect color settings for %C placeholders
ref-filter: consult want_color() before emitting colors
strbuf: use designated initializers in STRBUF_INIT
t/lib-proto-disable: restore protocol.allow after config tests
t5813: add test for hostname starting with dash
connect: factor out "looks like command line option" check
connect: reject dashed arguments for proxy commands
connect: reject paths that look like command line options
t6018: flesh out empty input/output rev-list tests
revision: add rev_input_given flag
rev-list: don't show usage when we see empty ref patterns
revision: do not fallback to default when rev_input_given is set
hashcmp: use memcmp instead of open-coded loop
sha1_file: drop experimental GIT_USE_LOOKUP search
trailer: put process_trailers() options into a struct
interpret-trailers: add an option to show only the trailers
interpret-trailers: add an option to show only existing trailers
interpret-trailers: add an option to unfold values
interpret-trailers: add --parse convenience option
pretty: move trailer formatting to trailer.c
t4205: refactor %(trailers) tests
pretty: support normalization options for %(trailers)
doc: fix typo in sendemail.identity
config: use a static lock_file struct
write_index_as_tree: cleanup tempfile on error
setup_temporary_shallow: avoid using inactive tempfile
setup_temporary_shallow: move tempfile struct into function
verify_signed_buffer: prefer close_tempfile() to close()
always check return value of close_tempfile
tempfile: do not delete tempfile on failed close
lockfile: do not rollback lock on failed close
tempfile: prefer is_tempfile_active to bare access
tempfile: handle NULL tempfile pointers gracefully
tempfile: replace die("BUG") with BUG()
tempfile: factor out activation
tempfile: factor out deactivation
tempfile: robustify cleanup handler
tempfile: release deactivated strbufs instead of resetting
tempfile: use list.h for linked list
tempfile: remove deactivated list entries
tempfile: auto-allocate tempfiles on heap
lockfile: update lifetime requirements in documentation
ref_lock: stop leaking lock_files
stop leaking lock structs in some simple cases
test-lib: --valgrind should not override --verbose-log
test-lib: set LSAN_OPTIONS to abort by default
add: free leaked pathspec after add_files_to_cache()
update-index: fix cache entry leak in add_one_file()
config: plug user_config leak
reset: make tree counting less confusing
reset: free allocated tree buffers
repository: free fields before overwriting them
set_git_dir: handle feeding gitdir to itself
rev-parse: don't trim bisect refnames
system_path: move RUNTIME_PREFIX to a sub-function
git_extract_argv0_path: do nothing without RUNTIME_PREFIX
add UNLEAK annotation for reducing leak false positives
shortlog: skip format/parse roundtrip for internal traversal
shell: drop git-cvsserver support by default
archimport: use safe_pipe_capture for user input
cvsimport: shell-quote variable used in backticks
config: avoid "write_in_full(fd, buf, len) < len" pattern
get-tar-commit-id: check write_in_full() return against 0
avoid "write_in_full(fd, buf, len) != len" pattern
convert less-trivial versions of "write_in_full() != len"
pkt-line: check write_in_full() errors against "< 0"
notes-merge: use ssize_t for write_in_full() return value
config: flip return value of store_write_*()
read_pack_header: handle signed/unsigned comparison in read result
prefix_ref_iterator: break when we leave the prefix
read_info_alternates: read contents into strbuf
read_info_alternates: warn on non-trivial errors
revision: replace "struct cmdline_pathspec" with argv_array
cat-file: handle NULL object_context.path
test-line-buffer: simplify command parsing
curl_trace(): eliminate switch fallthrough
consistently use "fallthrough" comments in switches
doc: put literal block delimiter around table
files-backend: prefer "0" for write_in_full() error check
notes-merge: drop dead zero-write code
prefer "!=" when checking read_in_full() result
avoid looking at errno for short read_in_full() returns
distinguish error versus short read from read_in_full()
worktree: use xsize_t to access file size
worktree: check the result of read_in_full()
validate_headref: NUL-terminate HEAD buffer
validate_headref: use skip_prefix for symref parsing
validate_headref: use get_oid_hex for detached HEADs
git: add --no-optional-locks option
Job Snijders (1):
gitweb: add 'raw' blob_plain link in history overview
Joel Teichroeb (3):
stash: add a test for stash create with no files
stash: add a test for when apply fails during stash branch
stash: add a test for stashing in a detached state
Johannes Schindelin (14):
run_processes_parallel: change confusing task_cb convention
git-gui (MinGW): make use of MSys2's msgfmt
t3415: verify that an empty instructionFormat is handled as before
rebase -i: generate the script via rebase--helper
rebase -i: remove useless indentation
rebase -i: do not invent onelines when expanding/collapsing SHA-1s
rebase -i: also expand/collapse the SHA-1s via the rebase--helper
t3404: relax rebase.missingCommitsCheck tests
rebase -i: check for missing commits in the rebase--helper
rebase -i: skip unnecessary picks using the rebase--helper
t3415: test fixup with wrapped oneline
rebase -i: rearrange fixup/squash lines using the rebase--helper
Win32: simplify loading of DLL functions
clang-format: adjust line break penalties
Jonathan Nieder (6):
vcs-svn: remove more unused prototypes and declarations
vcs-svn: remove custom mode constants
vcs-svn: remove repo_delete wrapper function
vcs-svn: move remaining repo_tree functions to fast_export.h
pack: make packed_git_mru global a value instead of a pointer
pathspec doc: parse_pathspec does not maintain references to args
Jonathan Tan (39):
fsck: remove redundant parse_tree() invocation
object: remove "used" field from struct object
fsck: cleanup unused variable
Documentation: migrate sub-process docs to header
sub-process: refactor handshake to common function
tests: ensure fsck fails on corrupt packfiles
sha1_file: set whence in storage-specific info fn
sha1_file: remove read_packed_sha1()
diff: avoid redundantly clearing a flag
diff: respect MIN_BLOCK_LENGTH for last block
diff: define block by number of alphanumeric chars
Doc: clarify that pack-objects makes packs, plural
pack: move pack name-related functions
pack: move static state variables
pack: move pack_report()
pack: move open_pack_index(), parse_pack_index()
pack: move release_pack_memory()
pack: move pack-closing functions
pack: move use_pack()
pack: move unuse_pack()
pack: move add_packed_git()
pack: move install_packed_git()
pack: move {,re}prepare_packed_git and approximate_object_count
pack: move unpack_object_header_buffer()
pack: move get_size_from_delta()
pack: move unpack_object_header()
pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
pack: move nth_packed_object_{sha1,oid}
pack: move check_pack_index_ptr(), nth_packed_object_offset()
pack: move find_pack_entry_one(), is_pack_valid()
pack: move find_sha1_pack()
pack: move find_pack_entry() and make it global
pack: move has_sha1_pack()
pack: move has_pack_index()
pack: move for_each_packed_object()
Remove inadvertently added outgoing/packfile.h
Add t/helper/test-write-cache to .gitignore
git-compat-util: make UNLEAK less error-prone
fast-export: do not copy from modified file
Junio C Hamano (49):
t1408: add a test of stale packed refs covered by loose refs
clean.c: use designated initializer
http.c: http.sslcert and http.sslkey are both pathnames
connect: reject ssh hostname that begins with a dash
Git 2.7.6
Git 2.8.6
Git 2.9.5
Git 2.10.4
Git 2.11.3
Git 2.12.4
Git 2.13.5
Git 2.14.1
Start post 2.14 cycle
perl/Git.pm: typofix in a comment
The first batch of topics after the 2.14 cycle
diff: retire sane_truncate_fn
progress: simplify "delayed" progress API
The second batch post 2.14
t4200: give us a clean slate after "rerere gc" tests
t4200: make "rerere gc" test more robust
t4200: gather "rerere gc" together
t4200: parameterize "rerere gc" custom expiry test
rerere: represent time duration in timestamp_t internally
rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
The third batch post 2.14
Prepare for 2.14.2
The fourth batch post 2.14
The fifth batch post 2.14
The sixth batch post 2.14
RelNotes: further fixes for 2.14.2 from the master front
The seventh batch post 2.14
travis: dedent a few scripts that are indented overly deeply
subprocess: loudly die when subprocess asks for an unsupported capability
cvsserver: move safe_pipe_capture() to the main package
cvsserver: use safe_pipe_capture for `constant commands` as well
gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
The eighth batch for 2.15
Git 2.10.5
Git 2.11.4
Git 2.12.5
Git 2.13.6
Git 2.14.2
branch: fix "copy" to never touch HEAD
merge-strategies: avoid implying that "-s theirs" exists
The ninth batch for 2.15
The tenth batch for 2.15
The eleventh batch for 2.15
The twelfth batch for 2.15
Git 2.15-rc0
Kaartic Sivaraam (13):
hook: cleanup script
hook: name the positional variables
hook: add sign-off using "interpret-trailers"
hook: add a simple first example
commit: check for empty message before the check for untouched template
hook: use correct logical variable
t3200: cleanup cruft of a test
builtin/branch: stop supporting the "--set-upstream" option
branch: quote branch/ref names to improve readability
help: change a message to be more precise
commit-template: change a message to be more intuitive
t/README: fix typo and grammatically improve a sentence
doc: camelCase the config variables to improve readability
Kevin Daudt (3):
stash: prevent warning about null bytes in input
doc/for-each-ref: consistently use '=' to between argument names and values
doc/for-each-ref: explicitly specify option names
Kevin Willford (9):
format-patch: have progress option while generating patches
rebase: turn on progress option by default for format-patch
commit: skip discarding the index if there is no pre-commit hook
perf: add test for writing the index
read-cache: fix memory leak in do_write_index
read-cache: avoid allocating every ondisk entry when writing
merge-recursive: fix memory leak
merge-recursive: remove return value from get_files_dirs
merge-recursive: change current file dir string_lists to hashmap
Lars Schneider (11):
t0021: keep filter log files on comparison
t0021: make debug log file name configurable
t0021: write "OUT <size>" only on success
convert: put the flags field before the flag itself for consistent style
convert: move multiple file filter error handling to separate function
convert: refactor capabilities negotiation
convert: add "status=delayed" to filter process protocol
convert: display progress for filtered objects that have been delayed
travis-ci: move Travis CI code into dedicated scripts
travis-ci: skip a branch build if equal tag is present
travis-ci: fix "skip_branch_tip_with_tag()" string comparison
Manav Rathi (1):
docs: improve discoverability of exclude pathspec
Martin Koegler (2):
diff-delta: fix encoding size that would not fit in "unsigned int"
diff-delta: do not allow delta offset truncation
Martin Ågren (32):
builtin.h: take over documentation from api-builtin.txt
git.c: let builtins opt for handling `pager.foo` themselves
git.c: provide setup_auto_pager()
t7006: add tests for how git tag paginates
tag: respect `pager.tag` in list-mode only
tag: change default of `pager.tag` to "on"
git.c: ignore pager.* when launching builtin as dashed external
Doc/git-{push,send-pack}: correct --sign= to --signed=
t5334: document that git push --signed=1 does not work
config: introduce git_parse_maybe_bool_text
config: make git_{config,parse}_maybe_bool equivalent
treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
parse_decoration_style: drop unused argument `var`
doc/interpret-trailers: fix "the this" typo
convert: always initialize attr_action in convert_attrs
pack-objects: take lock before accessing `remaining`
strbuf_setlen: don't write to strbuf_slopbuf
ThreadSanitizer: add suppressions
Documentation/user-manual: update outdated example output
treewide: correct several "up-to-date" to "up to date"
pkt-line: re-'static'-ify buffer in packet_write_fmt_1()
config: remove git_config_maybe_bool
refs/files-backend: add longer-scoped copy of string to list
refs/files-backend: fix memory leak in lock_ref_for_update
refs/files-backend: correct return value in lock_ref_for_update
refs/files-backend: add `refname`, not "HEAD", to list
builtin/commit: fix memory leak in `prepare_index()`
commit: fix memory leak in `reduce_heads()`
leak_pending: use `object_array_clear()`, not `free()`
object_array: use `object_array_clear()`, not `free()`
object_array: add and use `object_array_pop()`
pack-bitmap[-write]: use `object_array_clear()`, don't leak
Matthieu Moy (2):
send-email: fix garbage removal after address
send-email: don't use Mail::Address, even if available
Max Kirillov (2):
describe: fix matching to actually match all patterns
describe: teach --match to handle branches and remotes
Michael Forney (1):
scripts: use "git foo" not "git-foo"
Michael Haggerty (77):
add_packed_ref(): teach function to overwrite existing refs
packed_ref_store: new struct
packed_ref_store: move `packed_refs_path` here
packed_ref_store: move `packed_refs_lock` member here
clear_packed_ref_cache(): take a `packed_ref_store *` parameter
validate_packed_ref_cache(): take a `packed_ref_store *` parameter
get_packed_ref_cache(): take a `packed_ref_store *` parameter
get_packed_refs(): take a `packed_ref_store *` parameter
add_packed_ref(): take a `packed_ref_store *` parameter
lock_packed_refs(): take a `packed_ref_store *` parameter
commit_packed_refs(): take a `packed_ref_store *` parameter
rollback_packed_refs(): take a `packed_ref_store *` parameter
get_packed_ref(): take a `packed_ref_store *` parameter
repack_without_refs(): take a `packed_ref_store *` parameter
packed_peel_ref(): new function, extracted from `files_peel_ref()`
packed_ref_store: support iteration
packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
packed-backend: new module for handling packed references
packed_ref_store: make class into a subclass of `ref_store`
commit_packed_refs(): report errors rather than dying
commit_packed_refs(): use a staging file separate from the lockfile
packed_refs_lock(): function renamed from lock_packed_refs()
packed_refs_lock(): report errors via a `struct strbuf *err`
packed_refs_unlock(), packed_refs_is_locked(): new functions
clear_packed_ref_cache(): don't protest if the lock is held
commit_packed_refs(): remove call to `packed_refs_unlock()`
repack_without_refs(): don't lock or unlock the packed refs
t3210: add some tests of bogus packed-refs file contents
read_packed_refs(): die if `packed-refs` contains bogus data
packed_ref_store: handle a packed-refs file that is a symlink
files-backend: cheapen refname_available check when locking refs
refs: retry acquiring reference locks for 100ms
notes: make GET_NIBBLE macro more robust
load_subtree(): remove unnecessary conditional
load_subtree(): reduce the scope of some local variables
load_subtree(): fix incorrect comment
load_subtree(): separate logic for internal vs. terminal entries
load_subtree(): check earlier whether an internal node is a tree entry
load_subtree(): only consider blobs to be potential notes
get_oid_hex_segment(): return 0 on success
load_subtree(): combine some common code
get_oid_hex_segment(): don't pad the rest of `oid`
hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
load_subtree(): declare some variables to be `size_t`
load_subtree(): check that `prefix_len` is in the expected range
packed-backend: don't adjust the reference count on lock/unlock
struct ref_transaction: add a place for backends to store data
packed_ref_store: implement reference transactions
packed_delete_refs(): implement method
files_pack_refs(): use a reference transaction to write packed refs
prune_refs(): also free the linked list
files_initial_transaction_commit(): use a transaction for packed refs
t1404: demonstrate two problems with reference transactions
files_ref_store: use a transaction to update packed refs
packed-backend: rip out some now-unused code
files_transaction_finish(): delete reflogs before references
ref_iterator: keep track of whether the iterator output is ordered
packed_ref_cache: add a backlink to the associated `packed_ref_store`
die_unterminated_line(), die_invalid_line(): new functions
read_packed_refs(): use mmap to read the `packed-refs` file
read_packed_refs(): only check for a header at the top of the file
read_packed_refs(): make parsing of the header line more robust
for_each_string_list_item: avoid undefined behavior for empty list
read_packed_refs(): read references with minimal copying
packed_ref_cache: remember the file-wide peeling state
mmapped_ref_iterator: add iterator over a packed-refs file
mmapped_ref_iterator_advance(): no peeled value for broken refs
packed-backend.c: reorder some definitions
packed_ref_cache: keep the `packed-refs` file mmapped if possible
read_packed_refs(): ensure that references are ordered when read
packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
packed_read_raw_ref(): read the reference from the mmapped buffer
ref_store: implement `refs_peel_ref()` generically
packed_ref_store: get rid of the `ref_cache` entirely
ref_cache: remove support for storing peeled values
mmapped_ref_iterator: inline into `packed_ref_iterator`
packed-backend.c: rename a bunch of things and update comments
Michael J Gruber (11):
Documentation: use proper wording for ref format strings
Documentation/git-for-each-ref: clarify peeling of tags for --format
Documentation/git-merge: explain --continue
merge: clarify call chain
merge: split write_merge_state in two
merge: save merge state earlier
name-rev: change ULONG_MAX to TIME_MAX
t7004: move limited stack prereq to test-lib
t6120: test name-rev --all and --stdin
t6120: clean up state after breaking repo
t6120: test describe and name-rev with deep repos
Nguyễn Thái Ngọc Duy (17):
branch: fix branch renaming not updating HEADs correctly
revision.h: new flag in struct rev_info wrt. worktree-related refs
refs.c: use is_dir_sep() in resolve_gitlink_ref()
revision.c: refactor add_index_objects_to_pending()
revision.c: --indexed-objects add objects from all worktrees
refs.c: refactor get_submodule_ref_store(), share common free block
refs: move submodule slash stripping code to get_submodule_ref_store
refs: add refs_head_ref()
revision.c: use refs_for_each*() instead of for_each_*_submodule()
refs.c: move for_each_remote_ref_submodule() to submodule.c
refs: remove dead for_each_*_submodule()
revision.c: --all adds HEAD from all worktrees
files-backend: make reflog iterator go through per-worktree reflog
revision.c: --reflog add HEAD reflog from all worktrees
rev-list: expose and document --single-worktree
refs.c: remove fallback-to-main-store code get_submodule_ref_store()
refs.c: reindent get_submodule_ref_store()
Nicolas Morey-Chaisemartin (7):
stash: clean untracked files before reset
pull: fix cli and config option parsing order
pull: honor submodule.recurse config option
imap-send: return with error if curl failed
imap-send: add wrapper to get server credentials if needed
imap_send: setup_curl: retreive credentials if not set in config file
imap-send: use curl by default when possible
Paolo Bonzini (4):
trailers: export action enums and corresponding lookup functions
trailers: introduce struct new_trailer_item
interpret-trailers: add options for actions
interpret-trailers: fix documentation typo
Patryk Obara (10):
sha1_file: fix definition of null_sha1
commit: replace the raw buffer with strbuf in read_graft_line
commit: allocate array using object_id size
commit: rewrite read_graft_line
builtin/hash-object: convert to struct object_id
read-cache: convert to struct object_id
sha1_file: convert index_path to struct object_id
sha1_file: convert index_fd to struct object_id
sha1_file: convert hash_sha1_file_literally to struct object_id
sha1_file: convert index_stream to struct object_id
Philip Oakley (4):
git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
git gui: cope with duplicates in _get_recentrepo
git gui: de-dup selected repo from recentrepo history
git gui: allow for a long recentrepo list
Phillip Wood (7):
am: remember --rerere-autoupdate setting
rebase: honor --rerere-autoupdate
rebase -i: honor --rerere-autoupdate
t3504: use test_commit
cherry-pick/revert: remember --rerere-autoupdate
cherry-pick/revert: reject --rerere-autoupdate when continuing
am: fix signoff when other trailers are present
Raman Gupta (1):
contrib/rerere-train: optionally overwrite existing resolutions
Ramsay Jones (9):
credential-cache: interpret an ECONNRESET as an EOF
builtin/add: add detail to a 'cannot chmod' error message
test-lib: don't use ulimit in test prerequisites on cygwin
test-lib: use more compact expression in PIPE prerequisite
t9010-*.sh: skip all tests if the PIPE prereq is missing
git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
commit-slab.h: avoid -Wsign-compare warnings
cache.h: hex2chr() - avoid -Wsign-compare warnings
ALLOC_GROW: avoid -Wsign-compare warnings
Rene Scharfe (34):
am: release strbufs after use in detect_patch_format()
am: release strbuf on error return in hg_patch_to_mail()
am: release strbuf after use in safe_to_abort()
check-ref-format: release strbuf after use in check_ref_format_branch()
clean: release strbuf after use in remove_dirs()
clone: release strbuf after use in remove_junk()
commit: release strbuf on error return in commit_tree_extended()
connect: release strbuf on error return in git_connect()
convert: release strbuf on error return in filter_buffer_or_fd()
diff: release strbuf after use in diff_summary()
diff: release strbuf after use in show_rename_copy()
diff: release strbuf after use in show_stats()
help: release strbuf on error return in exec_man_konqueror()
help: release strbuf on error return in exec_man_man()
help: release strbuf on error return in exec_woman_emacs()
mailinfo: release strbuf after use in handle_from()
mailinfo: release strbuf on error return in handle_boundary()
merge: release strbuf after use in save_state()
merge: release strbuf after use in write_merge_heads()
notes: release strbuf after use in notes_copy_from_stdin()
refs: release strbuf on error return in write_pseudoref()
remote: release strbuf after use in read_remote_branches()
remote: release strbuf after use in migrate_file()
remote: release strbuf after use in set_url()
send-pack: release strbuf on error return in send_pack()
sha1_file: release strbuf on error return in index_path()
shortlog: release strbuf after use in insert_one_record()
sequencer: release strbuf after use in save_head()
transport-helper: release strbuf after use in process_connect_service()
userdiff: release strbuf after use in userdiff_get_textconv()
utf8: release strbuf on error return in strbuf_utf8_replace()
vcs-svn: release strbuf after use in end_revision()
wt-status: release strbuf after use in read_rebase_todolist()
wt-status: release strbuf after use in wt_longstatus_print_tracking()
René Scharfe (44):
tree-diff: don't access hash of NULL object_id pointer
notes: don't access hash of NULL object_id pointer
receive-pack: don't access hash of NULL object_id pointer
bswap: convert to unsigned before shifting in get_be32
bswap: convert get_be16, get_be32 and put_be32 to inline functions
add MOVE_ARRAY
use MOVE_ARRAY
apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
ls-files: don't try to prune an empty index
dir: support platforms that require aligned reads
pack-objects: remove unnecessary NULL check
t0001: skip test with restrictive permissions if getpwd(3) respects them
test-path-utils: handle const parameter of basename and dirname
t3700: fix broken test under !POSIXPERM
t4062: use less than 256 repetitions in regex
sha1_file: avoid comparison if no packed hash matches the first byte
apply: remove prefix_length member from apply_state
merge: use skip_prefix()
win32: plug memory leak on realloc() failure in syslog()
strbuf: clear errno before calling getdelim(3)
fsck: free buffers on error in fsck_obj()
sha1_file: release delta_stack on error in unpack_entry()
tree-walk: convert fill_tree_descriptor() to object_id
t1002: stop using sum(1)
t5001: add tests for export-ignore attributes and exclude pathspecs
archive: factor out helper functions for handling attributes
archive: don't queue excluded directories
commit: remove unused inline function single_parent()
apply: check date of potential epoch timestamps first
apply: remove epoch date from regex
archive: don't add empty directories to archives
refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
refs: pass NULL to resolve_ref_unsafe() if hash is not needed
mailinfo: don't decode invalid =XY quoted-printable sequences
refs: pass NULL to refs_resolve_refdup() if hash is not needed
refs: pass NULL to resolve_refdup() if hash is not needed
coccinelle: remove parentheses that become unnecessary
path: use strbuf_add_real_path()
use strbuf_addstr() for adding strings to strbufs
graph: use strbuf_addchars() to add spaces
tag: avoid NULL pointer arithmetic
repository: use FREE_AND_NULL
run-command: use ALLOC_ARRAY
Ross Kabus (1):
commit-tree: do not complete line in -F input
Sahil Dua (2):
config: create a function to format section headers
branch: add a --copy (-c) option to go with --move (-m)
Santiago Torres (1):
t: lib-gpg: flush gpg agent on startup
Stefan Beller (49):
diff.c: readability fix
diff.c: move line ending check into emit_hunk_header
diff.c: factor out diff_flush_patch_all_file_pairs
diff.c: introduce emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
diff.c: migrate emit_line_checked to use emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
submodule.c: migrate diff output to use emit_diff_symbol
diff.c: convert emit_binary_diff_body to use emit_diff_symbol
diff.c: convert show_stats to use emit_diff_symbol
diff.c: convert word diffing to use emit_diff_symbol
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
diff.c: buffer all output if asked to
diff.c: color moved lines differently
diff.c: color moved lines differently, plain mode
diff.c: add dimming to moved line detection
diff: document the new --color-moved setting
attr.c: drop hashmap_cmp_fn cast
builtin/difftool.c: drop hashmap_cmp_fn cast
builtin/describe: drop hashmap_cmp_fn cast
config.c: drop hashmap_cmp_fn cast
convert/sub-process: drop cast to hashmap_cmp_fn
patch-ids.c: drop hashmap_cmp_fn cast
remote.c: drop hashmap_cmp_fn cast
submodule-config.c: drop hashmap_cmp_fn cast
name-hash.c: drop hashmap_cmp_fn cast
t/helper/test-hashmap: use custom data instead of duplicate cmp functions
commit: convert lookup_commit_graft to struct object_id
tag: convert gpg_verify_tag to use struct object_id
t8008: rely on rev-parse'd HEAD instead of sha1 value
t1200: remove t1200-tutorial.sh
sha1_file: make read_info_alternates static
submodule.sh: remove unused variable
builtin/merge: honor commit-msg hook for merges
push, fetch: error out for submodule entries not pointing to commits
replace-objects: evaluate replacement refs without using the object store
Documentation/githooks: mention merge in commit-msg hook
Documentation/config: clarify the meaning of submodule.<name>.update
t7406: submodule.<name>.update command must not be run from .gitmodules
diff: correct newline in summary for renamed files
submodule: correct error message for missing commits
Stephan Beyer (1):
clang-format: add a comment about the meaning/status of the
Takashi Iwai (2):
sha1dc: build git plumbing code more explicitly
sha1dc: allow building with the external sha1dc library
Thomas Gummerer (2):
read-cache: fix index corruption with index v4
refs: strip out not allowed flags from ref_transaction_update
Tom G. Christensen (2):
http: fix handling of missing CURLPROTO_*
http: use a feature check to enable GSSAPI delegation control
Torsten Bögershausen (3):
convert: add SAFE_CRLF_KEEP_CRLF
apply: file commited with CRLF should roundtrip diff and apply
test-lint: echo -e (or -E) is not portable
Urs Thuermann (1):
git svn fetch: Create correct commit timestamp when using --localtime
William Duclot (1):
rebase: make resolve message clearer for inexperienced users
brian m. carlson (14):
builtin/fsck: convert remaining caller of get_sha1 to object_id
builtin/merge-tree: convert remaining caller of get_sha1 to object_id
submodule: convert submodule config lookup to use object_id
remote: convert struct push_cas to struct object_id
sequencer: convert to struct object_id
builtin/update_ref: convert to struct object_id
bisect: convert bisect_checkout to struct object_id
builtin/unpack-file: convert to struct object_id
Convert remaining callers of get_sha1 to get_oid.
sha1_name: convert get_sha1* to get_oid*
sha1_name: convert GET_SHA1* flags to GET_OID*
sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
vcs-svn: remove unused prototypes
vcs-svn: rename repo functions to "svn_repo"
joernchen (1):
cvsserver: use safe_pipe_capture instead of backticks
Ævar Arnfjörð Bjarmason (2):
branch: add test for -m renaming multiple config sections
tests: don't give unportable ">" to "test" built-in, use -gt
Øystein Walle (1):
rev-parse: rev-parse: add --is-shallow-repository
Łukasz Gryglicki (1):
merge: add a --signoff flag
^ permalink raw reply [relevance 2%]
* Short-term plans for the post 2.9 cycle
@ 2016-06-19 22:52 5% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-06-19 22:52 UTC (permalink / raw)
To: git
Here are the list of topics that are in the "private edition" I use
for every day work, grouped by where they sit in the the near-term
plan of merging them up to 'next' and then to 'master'.
These will be merged to 'master' soonish.
ew/fast-import-unpack-limit
ah/no-verify-signature-with-pull-rebase
ew/daemon-socket-keepalive
sb/submodule-misc-cleanups
sb/submodule-recommend-shallowness
et/pretty-format-c-auto
jg/dash-is-last-branch-in-worktree-add
aq/upload-pack-use-parse-options
jc/clear-pathspec
wd/userdiff-css
jk/rev-list-count-with-bitmap
rs/xdiff-hunk-with-func-line
These will be in 'next' immediately after the above gets merged to
'master'.
cc/apply-introduce-state
These have been in 'next', but will be kicked back to give them
chance to clean up when 'next' is rewound.
mh/split-under-lock
mh/ref-iterators
jc/attr
sb/pathspec-label
These are expected to be merged to 'next' in the first batch after
'next' gets rewound.
pc/occurred
tr/doc-tt
ap/git-svn-propset-doc
jk/fetch-prune-doc
dn/gpg-doc
pb/strbuf-read-file-doc
lf/receive-pack-auto-gc-to-client
mg/cherry-pick-multi-on-unborn
sg/reflog-past-root
vs/prompt-avoid-unset-variable
rj/compat-regex-size-max-fix
jk/avoid-unbounded-alloca
et/add-chmod-x
jc/deref-tag
nb/gnome-keyring-build
lv/status-say-working-tree-not-directory
tb/complete-status
em/newer-freebsd-shells-are-fine-with-returns
These are the second batch for 'next'.
km/fetch-do-not-free-remote-name
jk/parseopt-string-list
jk/string-list-static-init
lf/sideband-returns-void
jk/bisect-show-tree
jk/add-i-diff-compact-heuristics
jk/big-and-future-archive-tar
jk/send-pack-stdio
lf/recv-sideband-cleanup
pb/commit-editmsg-path
nd/test-lib-httpd-show-error-log-in-verbose
ep/http-curl-trace
These are the third batch.
mh/connect
ew/mboxrd-format-am
jk/repack-keep-unreachable
jk/gpg-interface-cleanup
sb/submodule-clone-retry
mg/signature-doc
These are the fourth.
nd/worktree-cleanup-post-head-protection
jk/upload-pack-hook
nd/graph-width-padded
nd/shallow-deepen
sb/submodule-default-paths
nd/worktree-lock
These are the remainder.
jc/blame-reverse
jc/send-email-skip-backup
va/i18n-even-more
dt/index-helper
dk/blame-move-no-reason-for-1-line-context
sb/clone-shallow-passthru
Some of them that are regression fixes may need to jump the queue
and land on 'master' earlier than others.
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Apr 2016, #04; Tue, 12)
@ 2016-04-12 23:08 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-04-12 23:08 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The 'master' branch now has the third batch of topics of this
cycle.
There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", etc. in the following list.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* jc/merge-refuse-new-root (2016-03-23) 1 commit
(merged to 'next' on 2016-04-04 at cd70fd6)
+ merge: refuse to create too cool a merge by default
Originally merged to 'next' on 2016-03-23
"git merge" used to allow merging two branches that have no common
base by default, which led to a brand new history of an existing
project created and then get pulled by an unsuspecting maintainer,
which allowed an unnecessary parallel history merged into the
existing project. The command has been taught not to allow this by
default, with an escape hatch "--allow-unrelated-histories" option
to be used in a rare event that merges histories of two projects
that started their lives independently.
* nd/apply-doc (2016-03-24) 2 commits
(merged to 'next' on 2016-04-06 at f9bd355)
+ git-apply.txt: mention the behavior inside a subdir
+ git-apply.txt: remove a space
A minor documentation update.
* nd/apply-report-skip (2016-03-24) 1 commit
(merged to 'next' on 2016-04-06 at ae2c824)
+ apply: report patch skipping in verbose mode
"git apply -v" learned to report paths in the patch that were
skipped via --include/--exclude mechanism or being outside the
current working directory.
* oa/doc-diff-check (2016-03-29) 1 commit
(merged to 'next' on 2016-04-06 at e3d6e8d)
+ Documentation: git diff --check detects conflict markers
A minor documentation update.
* pb/opt-cmdmode-doc (2016-03-25) 1 commit
(merged to 'next' on 2016-04-06 at a5f3835)
+ api-parse-options.txt: document OPT_CMDMODE()
Minor API documentation update.
* ss/msvc (2016-03-30) 2 commits
(merged to 'next' on 2016-04-06 at 4b53bce)
+ MSVC: use shipped headers instead of fallback definitions
+ MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
Build updates for MSVC.
--------------------------------------------------
[New Topics]
* ad/commit-have-m-option (2016-04-07) 2 commits
- commit: do not ignore an empty message given by -m ''
- commit: --amend -m '' silently fails to wipe message
"git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.
Will merge to 'next'.
* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
- setup.c: do not feed NULL to "%.*s" even with precision 0
Will merge to 'next'.
* dt/pre-refs-backend (2016-04-10) 24 commits
- refs: on symref reflog expire, lock symref not referrent
- refs: move resolve_ref_unsafe into common code
- show_head_ref(): check the result of resolve_ref_namespace()
- check_aliased_update(): check that dst_name is non-NULL
- checkout_paths(): remove unneeded flag variable
- cmd_merge(): remove unneeded flag variable
- fsck_head_link(): remove unneeded flag variable
- read_raw_ref(): change flags parameter to unsigned int
- files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
- read_raw_ref(): manage own scratch space
- files-backend: break out ref reading
- resolve_ref_1(): eliminate local variable "bad_name"
- resolve_ref_1(): reorder code
- resolve_ref_1(): eliminate local variable
- resolve_ref_unsafe(): ensure flags is always set
- resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
- resolve_missing_loose_ref(): simplify semantics
- t1430: improve test coverage of deletion of badly-named refs
- t1430: test for-each-ref in the presence of badly-named refs
- t1430: don't rely on symbolic-ref for creating broken symrefs
- t1430: clean up broken refs/tags/shadow
- t1430: test the output and error of some commands more carefully
- refs: move for_each_*ref* functions into common code
- refs: move head_ref{,_submodule} to the common code
(this branch uses jk/check-repository-format.)
Code restructuring around the "refs" area to prepare for pluggable
refs backends.
Will merge to 'next'.
* ky/imap-send (2016-04-08) 2 commits
- imap-send: fix CRAM-MD5 response calculation
- imap-send: check for NOLOGIN capability only when using LOGIN command
Support for CRAM-MD5 authentication method in "git imap-send" did
not work well.
Will merge to 'next'.
* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
- configure: remove checking for HMAC_CTX_cleanup
- imap-send: avoid deprecated TLSv1_method()
- imap-send: check NULL return of SSL_CTX_new()
- imap-send: use HMAC() function provided by OpenSSL
Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
we use in imap-send, which has been adjusted for the change.
Will merge to 'next'.
* jc/http-socks5h (2016-04-10) 1 commit
- http: differentiate socks5:// and socks5h://
The socks5:// proxy support added back in 2.6.4 days was not aware
that socks5h:// proxies behave differently.
Will merge to 'next'.
* jc/send-email-skip-backup (2016-04-12) 1 commit
- send-email: detect and offer to skip backup files
A careless invocation of "git send-email directory/" after editing
0001-change.patch with an editor often ends up sending both
0001-change.patch and its backup file, 0001-change.patch~, causing
embarrassment and a minor confusion. Detect such an input and
offer to skip the backup files when sending the patches out.
Needs review.
* jk/do-not-printf-NULL (2016-04-10) 3 commits
- git_config_set_multivar_in_file: handle "unset" errors
- git_config_set_multivar_in_file: all non-zero returns are errors
- config: lower-case first word of error strings
"git config" had a codepath that tried to pass a NULL to
printf("%s"), which nobody seems to have noticed.
Will merge to 'next'.
* jk/use-write-script-more (2016-04-12) 3 commits
- t3404: use write_script
- t1020: do not overuse printf and use write_script
- t5532: use write_script
Code clean-up.
Will merge to 'next'.
* nf/mergetool-prompt (2016-04-12) 2 commits
- SQUASH???
- difftool/mergetool: make the form of yes/no questions consistent
UI consistency improvements.
* va/i18n-misc-updates (2016-04-12) 4 commits
- i18n: builtin/rm.c: remove a comma ',' from string
- i18n: unpack-trees: mark strings for translation
- i18n: builtin/branch.c: mark option for translation
- i18n: index-pack: use plural string instead of normal one
Mark several messages for translation.
--------------------------------------------------
[Stalled]
* tb/safe-crlf-output-fix (2016-04-01) 7 commits
. convert.c: more safer crlf handling with text attribute
. correct blame for files commited with CRLF
. convert: unify the "auto" handling of CRLF
. t0027: test cases for combined attributes
. convert: allow core.autocrlf=input and core.eol=crlf
. convert.c: stream and early out
. read-cache: factor out get_sha1_from_index() helper
The "safe CRLF" facility disables line-end conversion from CRLF to
LF when checking in if the blob registered to the index already
contains CR, but some codepaths like "git blame" did not know this,
and instead assumed that only the configuration and attribute
settings determined how the data from the working tree is converted.
Will be rerolled.
($gmane/290637)
* da/user-useconfigonly (2016-04-01) 2 commits
- ident: give "please tell me" message upon useConfigOnly error
- ident: check for useConfigOnly before auto-detection of name/email
The "user.useConfigOnly" configuration variable makes it an error
if users do not explicitly set user.name and user.email. However,
its check was not done early enough and allowed another error to
trigger, reporting that the default value we guessed from the
system setting was unusable. This was a suboptimal end-user
experience as we want the users to set user.name/user.email without
relying on the auto-detection at all.
Waiting for Acks.
($gmane/290340)
* sb/clone-shallow-passthru (2016-03-23) 3 commits
- clone: add t5614 to test cloning submodules with shallowness involved
- submodule clone: pass along `local` option
- clone: add `--shallow-submodules` flag
"git clone" learned "--shallow-submodules" option.
Needs review.
* sg/completion-updates (2016-02-28) 21 commits
- completion: cache the path to the repository
- completion: extract repository discovery from __gitdir()
- completion: don't guard git executions with __gitdir()
- completion: consolidate silencing errors from git commands
- completion: don't use __gitdir() for git commands
- completion: respect 'git -C <path>'
- completion: fix completion after 'git -C <path>'
- completion: don't offer commands when 'git --opt' needs an argument
- rev-parse: add '--absolute-git-dir' option
- completion: list short refs from a remote given as a URL
- completion: don't list 'HEAD' when trying refs completion outside of a repo
- completion: list refs from remote when remote's name matches a directory
- completion: respect 'git --git-dir=<path>' when listing remote refs
- completion: fix most spots not respecting 'git --git-dir=<path>'
- completion: ensure that the repository path given on the command line exists
- completion tests: add tests for the __git_refs() helper function
- completion tests: check __gitdir()'s output in the error cases
- completion tests: consolidate getting path of current working directory
- completion tests: make the $cur variable local to the test helper functions
- completion tests: don't add test cruft to the test repository
- completion: improve __git_refs()'s in-code documentation
Will be rerolled.
($gmane/287839)
* nd/shallow-deepen (2016-02-23) 25 commits
- fetch, upload-pack: --deepen=N extends shallow boundary by N commits
- upload-pack: add get_reachable_list()
- upload-pack: split check_unreachable() in two, prep for get_reachable_list()
- t5500, t5539: tests for shallow depth excluding a ref
- clone: define shallow clone boundary with --shallow-exclude
- fetch: define shallow boundary with --shallow-exclude
- upload-pack: support define shallow boundary by excluding revisions
- refs: add expand_ref()
- t5500, t5539: tests for shallow depth since a specific date
- clone: define shallow clone boundary based on time with --shallow-since
- fetch: define shallow boundary with --shallow-since
- upload-pack: add deepen-since to cut shallow repos based on time
- shallow.c: implement a generic shallow boundary finder based on rev-list
- fetch-pack: use a separate flag for fetch in deepening mode
- fetch-pack: use a common function for verbose printing
- fetch-pack: use skip_prefix() instead of starts_with()
- upload-pack: move rev-list code out of check_non_tip()
- upload-pack: tighten number parsing at "deepen" lines
- upload-pack: use skip_prefix() instead of starts_with()
- upload-pack: move "unshallow" sending code out of deepen()
- upload-pack: remove unused variable "backup"
- upload-pack: move "shallow" sending code out of deepen()
- upload-pack: move shallow deepen code out of receive_needs()
- transport-helper.c: refactor set_helper_option()
- remote-curl.c: convert fetch_git() to use argv_array
The existing "git fetch --depth=<n>" option was hard to use
correctly when making the history of an existing shallow clone
deeper. A new option, "--deepen=<n>", has been added to make this
easier to use. "git clone" also learned "--shallow-since=<date>"
and "--shallow-exclude=<tag>" options to make it easier to specify
"I am interested only in the recent N months worth of history" and
"Give me only the history since that version".
Needs review.
* sb/submodule-init (2016-03-15) 2 commits
. submodule: port init from shell to C
. submodule: port resolve_relative_url from shell to C
Update of "git submodule" to move pieces of logic to C continues.
Needs to be adjusted for the recent "prefix" fixes.
* az/p4-bare-no-rebase (2016-02-19) 1 commit
- git-p4.py: Don't try to rebase on submit from bare repository
"git p4 submit" attempts to do a rebase, which would fail if done
in a bare repository. Not doing this rebase would paper over the
failure, which is what this patch does, but it is unclear what the
side effect of not rebasing is.
Needs a better explanation.
* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
- wt-status.c: set commitable bit if there is a meaningful merge.
"git commit --dry-run" reported "No, no, you cannot commit." in one
case where "git commit" would have allowed you to commit, and this
improves it a little bit ("git commit --dry-run --short" still does
not give you the correct answer, for example).
* nd/icase (2016-02-15) 12 commits
- grep.c: reuse "icase" variable
- diffcore-pickaxe: support case insensitive match on non-ascii
- diffcore-pickaxe: "share" regex error handling code
- grep/pcre: support utf-8
- gettext: add is_utf8_locale()
- grep/pcre: prepare locale-dependent tables for icase matching
- grep/icase: avoid kwsset when -F is specified
- grep/icase: avoid kwsset on literal non-ascii strings
- test-regex: expose full regcomp() to the command line
- test-regex: isolate the bug test code
- grep: break down an "if" stmt in preparation for next changes
- grep: allow -F -i combination
"git grep -i" has been taught to fold case in non-ascii locales.
Needs review.
($gmane/286137)
* ec/annotate-deleted (2015-11-20) 1 commit
- annotate: skip checking working tree if a revision is provided
Usability fix for annotate-specific "<file> <rev>" syntax with deleted
files.
Waiting for review.
* dg/subtree-rebase-test (2016-01-19) 1 commit
- contrib/subtree: Add a test for subtree rebase that loses commits
Reviewed up to v5.
Will be rerolled.
($gmane/284426)
* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
- am: make a direct call to merge_recursive
- merge_recursive_options: introduce the "gently" flag
The merge_recursive_generic() function has been made a bit safer to
call from inside a process. "git am -3" was taught to make a direct
call to the function when falling back to three-way merge.
Being able to make a direct call would be good in general, but as a
performance thing, the change needs to be backed up by numbers.
Needs review.
I haven't gone through the "gently" change with fine toothed comb;
I can see that the change avoids calling die(), but I haven't made
sure that the program states (e.g. what's in the in-core index) are
adjusted sensibly when it returns to the caller instead of dying,
or the codepaths that used to die() are free of resource leaks.
The original code certainly did not care the program states at the
point of dying exactly because it knew it is going to exit, but now
they have to care, and they need to be audited.
* dk/gc-more-wo-pack (2016-01-13) 4 commits
- gc: clean garbage .bitmap files from pack dir
- t5304: ensure non-garbage files are not deleted
- t5304: test .bitmap garbage files
- prepare_packed_git(): find more garbage
Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
.bitmap and .keep files.
Waiting for a reroll.
($gmane/284368).
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
Will discard.
--------------------------------------------------
[Cooking]
* jc/drop-git-spec-in (2016-04-06) 1 commit
- Makefile: stop pretending to support rpmbuild
As nobody maintains our in-tree git.spec.in and distros use their
own spec file, we stopped pretending that we support "make rpm".
Comments?
* jc/makefile-redirection-stderr (2016-04-05) 1 commit
(merged to 'next' on 2016-04-06 at e3f2ded)
+ Makefile: fix misdirected redirections
A minor fix in the Makefile.
Will merge to 'master'.
* js/mingw-tests-2.8 (2016-04-04) 1 commit
(merged to 'next' on 2016-04-06 at f85a013)
+ Windows: shorten code by re-using convert_slashes()
Code clean-up.
Will merge to 'master'.
* ar/diff-args-osx-precompose (2016-04-05) 1 commit
- diff: run arguments through precompose_argv
Many commands normalize command line arguments from NFD to NFC
variant of UTF-8 on OSX, but commands in the "diff" family did
not, causing "git diff $path" to complain that no such path is
known to Git. They have been taught to do the normalization.
Will be rerolled?
($gmane/290724)
* ep/trace-doc-sample-fix (2016-04-05) 1 commit
(merged to 'next' on 2016-04-06 at 0df7357)
+ api-trace.txt: fix typo
Fix a typo in an example in the trace API documentation.
Will merge to 'master'.
* ew/send-email-readable-message-id (2016-04-06) 1 commit
- send-email: more meaningful Message-ID
"git send-email" now uses a more readable timestamps when
formulating a message ID.
Will merge to 'next'.
* mg/complete-cherry-mark-to-log (2016-04-05) 1 commit
(merged to 'next' on 2016-04-06 at 3002be6)
+ completion: complete --cherry-mark for git log
The completion scripts (in contrib/) did not include the
"--cherry-mark" option when completing "git log <HT>".
Will merge to 'master'.
* tb/blame-force-read-cache-to-workaround-safe-crlf (2016-04-05) 1 commit
(merged to 'next' on 2016-04-06 at 263bba8)
+ correct blame for files commited with CRLF
When running "git blame $path" with unnormalized data in the index
for the path, the data in the working tree was blamed, even though
"git add" would not have changed what is already in the index, due
to "safe crlf" that disables the line-end conversion. It has been
corrected.
Will merge to 'master'.
* st/verify-tag (2016-04-06) 3 commits
- verify-tag: change variable name for readability
- t7030: test verifying multiple tags
- builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
Only the first three patches in a six-patch series.
Needs further work.
* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
- send-email: do not load Data::Dumper
Code clean-up.
Will merge to 'next'.
* es/format-patch-doc-hide-no-patch (2016-04-04) 1 commit
(merged to 'next' on 2016-04-06 at 25d79bb)
+ git-format-patch.txt: don't show -s as shorthand for multiple options
"git format-patch --help" showed `-s` and `--no-patch` as if these
are valid options to the command. We already hide `--patch` option
from the documentation, because format-patch is about showing the
diff, and the documentation now hides these options as well.
Will merge to 'master'.
* jk/branch-shortening-funny-symrefs (2016-04-04) 1 commit
(merged to 'next' on 2016-04-06 at 1a3f8be)
+ branch: fix shortening of non-remote symrefs
A change back in version 2.7 to "git branch" broke display of a
symbolic ref in a non-standard place in the refs/ hierarchy (we
expect symbolic refs to appear in refs/remotes/*/HEAD to point at
the primary branch the remote has, and as .git/HEAD to point at the
branch we locally checked out).
Will merge to 'next' and later down to maint-2.7.
* jn/mergetools-examdiff (2016-04-04) 2 commits
(merged to 'next' on 2016-04-06 at 819e858)
+ mergetools: add support for ExamDiff
+ mergetools: create mergetool_find_win32_cmd() helper function for winmerge
"git mergetools" learned to drive ExamDiff.
Will merge to 'master'.
* kn/for-each-tag-branch (2016-03-30) 1 commit
(merged to 'next' on 2016-04-06 at 4595ad3)
+ for-each-ref: fix description of '--contains' in manpage
A minor documentation update.
Will merge to 'master'.
* kn/ref-filter-branch-list (2016-04-12) 16 commits
. branch: implement '--format' option
. branch: use ref-filter printing APIs
. branch, tag: use porcelain output
. ref-filter: allow porcelain to translate messages in the output
. ref-filter: add support for %(refname:dir) and %(refname:base)
. ref-filter: introduce refname_atom_parser()
. ref-filter: introduce symref_atom_parser()
. ref-filter: make "%(symref)" atom work with the ':short' modifier
. ref-filter: add support for %(upstream:track,nobracket)
. ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
. ref-filter: introduce format_ref_array_item()
. ref-filter: move get_head_description() from branch.c
. ref-filter: modify "%(objectname:short)" to take length
. ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
. ref-filter: include reference to 'used_atom' within 'atom_value'
. ref-filter: implement %(if), %(then), and %(else) atoms
The code to list branches in "git branch" has been consolidated
with the more generic ref-filter API.
Rerolled but seems to lack jk/branch-shortening-funny-symrefs aka
$gmane/291295 yet.
* rz/worktree-no-checkout (2016-03-29) 1 commit
(merged to 'next' on 2016-04-06 at e725216)
+ worktree: add: introduce --checkout option
"git worktree add" can be given "--no-checkout" option to only
create an empty worktree without checking out the files.
Will merge to 'master'.
* sb/misc-cleanups (2016-04-01) 4 commits
(merged to 'next' on 2016-04-06 at 4e63691)
+ credential-cache, send_request: close fd when done
+ bundle: don't leak an fd in case of early return
+ abbrev_sha1_in_line: don't leak memory
+ notes: don't leak memory in git_config_get_notes_strategy
Assorted minor clean-ups.
Will merge to 'master'.
* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
- submodule--helper, module_clone: catch fprintf failure
- submodule--helper: do not borrow absolute_path() result for too long
- submodule--helper, module_clone: always operate on absolute paths
- submodule--helper clone: create the submodule path just once
- submodule--helper: fix potential NULL-dereference
- recursive submodules: test for relative paths
A partial rewrite of "git submodule" in the 2.7 timeframe changed
the way the gitdir: pointer in the submodules point at the real
repository location to use absolute paths by accident. This has
been corrected.
Will merge to 'next'.
* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
- t7407: make expectation as clear as possible
- submodule update: test recursive path reporting from subdirectory
- submodule update: align reporting path for custom command execution
- submodule status: correct path handling in recursive submodules
- submodule update --init: correct path handling in recursive submodules
- submodule foreach: correct path display in recursive submodules
"git submodule" reports the paths of submodules the command
recurses into, but this was incorrect when the command was not run
from the root level of the superproject.
Any further comments? Otherwise will merge to 'next'.
* sg/diff-multiple-identical-renames (2016-03-30) 1 commit
(merged to 'next' on 2016-04-06 at ac19e48)
+ diffcore: fix iteration order of identical files during rename detection
"git diff -M" used to work better when two originally identical
files A and B got renamed to X/A and X/B by pairing A to X/A and B
to X/B, but this was broken in the 2.0 timeframe.
Will merge to 'master'.
* sk/send-pack-all-fix (2016-03-31) 1 commit
(merged to 'next' on 2016-04-06 at 31e1e1b)
+ git-send-pack: fix --all option when used with directory
"git send-pack --all <there>" was broken when its command line
option parsing was written in the 2.6 timeframe.
Will merge to 'master'.
* xy/format-patch-base (2016-04-12) 4 commits
- format-patch: introduce format.base configuration
- format-patch: introduce --base=auto option
- format-patch: add '--base' option to record base tree info
- patch-ids: make commit_patch_id() a public helper function
"git format-patch" learned a new "--base" option to record what
(public, well-known) commit the original series was built on in
its output.
Review comments sent.
($gmane/291198)
* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
(merged to 'next' on 2016-04-06 at 2aab890)
+ submodule-config: use hashmap_iter_first()
Minor code cleanup.
Will merge to 'master'.
* ky/branch-d-worktree (2016-03-29) 1 commit
(merged to 'next' on 2016-04-06 at 00f9bff)
+ branch -d: refuse deleting a branch which is currently checked out
When "git worktree" feature is in use, "git branch -d" allowed
deletion of a branch that is checked out in another worktree
Will merge to 'master'.
* ky/branch-m-worktree (2016-04-08) 3 commits
(merged to 'next' on 2016-04-08 at b673b5e)
+ set_worktree_head_symref(): fix error message
(merged to 'next' on 2016-04-06 at e7b285c)
+ branch -m: update all per-worktree HEADs
+ refs: add a new function set_worktree_head_symref
When "git worktree" feature is in use, "git branch -m" renamed a
branch that is checked out in another worktree without adjusting
the HEAD symbolic ref for the worktree.
Will merge to 'master'.
* rt/completion-help (2016-03-24) 2 commits
(merged to 'next' on 2016-04-06 at 8c3ee08)
+ completion: add 'revisions' and 'everyday' to 'git help'
+ completion: add option '--guides' to 'git help'
Shell completion (in contrib/) updates.
Will merge to 'master'.
* rt/rebase-i-shorten-stop-report (2016-03-28) 1 commit
(merged to 'next' on 2016-04-06 at 7a766b7)
+ rebase-i: print an abbreviated hash when stop for editing
The commit object name reported when "rebase -i" stops has been
shortened.
Will merge to 'master'.
* jk/check-repository-format (2016-03-11) 10 commits
(merged to 'next' on 2016-04-06 at a0dada0)
+ verify_repository_format: mark messages for translation
+ setup: drop repository_format_version global
+ setup: unify repository version callbacks
+ init: use setup.c's repo version verification
+ setup: refactor repo format reading and verification
+ config: drop git_config_early
+ check_repository_format_gently: stop using git_config_early
+ lazily load core.sharedrepository
+ wrap shared_repository global in get/set accessors
+ setup: document check_repository_format()
(this branch is used by dt/pre-refs-backend.)
The repository set-up sequence has been streamlined (the biggest
change is that there is no longer git_config_early()), so that we
do not attempt to look into refs/* when we know we do not have a
Git repository.
Will merge to 'master'.
* mj/pull-rebase-autostash (2016-04-04) 9 commits
(merged to 'next' on 2016-04-06 at b4e4f31)
+ t5520: test --[no-]autostash with pull.rebase=true
+ t5520: reduce commom lines of code
+ t5520: factor out common "failing autostash" code
+ t5520: factor out common "successful autostash" code
+ t5520: use better test to check stderr output
+ t5520: ensure consistent test conditions
+ t5520: use consistent capitalization in test titles
+ pull --rebase: add --[no-]autostash flag
+ git-pull.c: introduce git_pull_config()
"git pull --rebase" learned "--[no-]autostash" option, so that
the rebase.autostash configuration variable set to true can be
overridden from the command line.
Will merge to 'master'.
* pb/commit-verbose-config (2016-04-12) 6 commits
. commit: add a commit.verbose config variable
. t7507-commit-verbose: improve test coverage by testing number of diffs
. parse-options.c: make OPTION_COUNTUP respect "unspecified" values
. t0040-parse-options: improve test coverage
. test-parse-options: print quiet as integer
. t0040-test-parse-options.sh: fix style issues
"git commit" learned to pay attention to "commit.verbose"
configuration variable and act as if "--verbose" option was
given from the command line.
Old one reverted, will wait for reroll.
($gmane/291303).
* lt/pretty-expand-tabs (2016-04-04) 4 commits
(merged to 'next' on 2016-04-06 at 186ac2a)
+ pretty: test --expand-tabs
+ pretty: allow tweaking tabwidth in --expand-tabs
+ pretty: enable --expand-tabs by default for selected pretty formats
+ pretty: expand tabs in indented logs to make things line up properly
When "git log" shows the log message indented by 4-spaces, the
remainder of a line after a HT does not align in the way the author
originally intended. The command now expands tabs by default in
such a case, and allows the users to override it with a new option,
'--no-expand-tabs'.
Will merge to 'master'.
* cc/apply (2016-04-01) 4 commits
(merged to 'next' on 2016-04-06 at 2e23c44)
+ builtin/apply: free patch when parse_chunk() fails
+ builtin/apply: handle parse_binary() failure
+ apply: remove unused call to free() in gitdiff_{old,new}name()
+ builtin/apply: get rid of useless 'name' variable
Minor code clean-up.
Will merge to 'master'.
* dt/index-helper (2016-04-07) 16 commits
- read-cache: config for waiting for index-helper
- index-helper: optionally automatically run
- index-helper: autorun mode
- index-helper: don't run if already running
- index-helper: kill mode
- unpack-trees: preserve index extensions
- update-index: enable/disable watchman support
- index-helper: use watchman to avoid refreshing index with lstat()
- add watchman support to reduce index refresh cost
- read-cache: add watchman 'WAMA' extension
- index-helper: add --detach
- daemonize(): set a flag before exiting the main process
- index-helper: add --strict
- index-helper: new daemon for caching index and related stuff
- read-cache: allow to keep mmap'd memory after reading
- read-cache.c: fix constness of verify_hdr()
Needs review.
* jc/bundle (2016-03-03) 6 commits
- index-pack: --clone-bundle option
- Merge branch 'jc/index-pack' into jc/bundle
- bundle v3: the beginning
- bundle: keep a copy of bundle file name in the in-core bundle header
- bundle: plug resource leak
- bundle doc: 'verify' is not about verifying the bundle
The beginning of "split bundle", which could be one of the
ingredients to allow "git clone" traffic off of the core server
network to CDN.
* ad/cygwin-wants-rename (2015-08-07) 1 commit
- config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
Will hold.
($gmane/275680).
* jc/rerere-multi (2016-04-06) 11 commits
- rerere: adjust 'forget' to multi-variant world order
- rerere: split code to call ll_merge() further
- rerere: move code related to "forget" together
- rerere: gc and clear
- rerere: do use multiple variants
- t4200: rerere a merge with two identical conflicts
- rerere: allow multiple variants to exist
- rerere: delay the recording of preimage
- rerere: handle leftover rr-cache/$ID directory and postimage files
- rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
- rerere: split conflict ID further
"git rerere" can encounter two or more files with the same conflict
signature that have to be resolved in different ways, but there was
no way to record these separate resolutions.
Will merge to 'next'.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
- merge: drop 'git merge <message> HEAD <commit>' syntax
Stop supporting "git merge <message> HEAD <commit>" syntax that has
been deprecated since October 2007, and issues a deprecation
warning message since v2.5.0.
It has been reported that git-gui still uses the deprecated syntax,
which needs to be fixed before this final step can proceed.
($gmane/282594)
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Aug 2015, #03; Mon, 17)
@ 2015-08-17 22:34 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-08-17 22:34 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The third batch of topics have graduated to 'master'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* dt/untracked-sparse (2015-07-31) 1 commit
(merged to 'next' on 2015-08-12 at 234434d)
+ untracked-cache: support sparse checkout
(this branch is used by dt/untracked-subdir.)
Allow untracked cache (experimental) to be used when sparse
checkout (experimental) is also in use.
* kd/pull-rebase-autostash (2015-07-22) 1 commit
(merged to 'next' on 2015-08-12 at de88e8e)
+ pull: allow dirty tree when rebase.autostash enabled
"git pull --rebase" has been taught to pay attention to
rebase.autostash configuration.
* mh/get-remote-group-fix (2015-07-28) 4 commits
(merged to 'next' on 2015-08-12 at b77820e)
+ get_remote_group(): use skip_prefix()
+ get_remote_group(): eliminate superfluous call to strcspn()
+ get_remote_group(): rename local variable "space" to "wordlen"
+ get_remote_group(): handle remotes with single-character names
An off-by-one error made "git remote" to mishandle a remote with a
single letter nickname.
* ta/docfix-index-format-tech (2015-07-28) 1 commit
(merged to 'next' on 2015-08-12 at 662d88a)
+ typofix for index-format.txt
--------------------------------------------------
[New Topics]
* db/push-sign-if-asked (2015-08-17) 7 commits
- DONTMERGE: dropped bits to add config; needs tests
- push: support signed pushes iff the server supports it
- transport: remove git_transport_options.push_cert
- gitremote-helpers.txt: document pushcert option
- Documentation/git-send-pack.txt: document --signed
- Documentation/git-send-pack.txt: wrap long synopsis line
- Documentation/git-push.txt: document when --signed may fail
The client side codepaths in "git push" have been cleaned up
and the user can request to perform an optional "signed push",
i.e. sign only when the other end accepts signed push.
Expecting a reroll.
* dk/gc-idx-wo-pack (2015-08-17) 3 commits
- DONTMERGE: log message, grace-period and tests $gmane/276058
- gc: remove stale .idx files without corresponding .pack file
- prepare_packed_git(): refactor garbage reporting in pack directory
Having a leftover .idx file without correspoinding .pack file in
the repository hurts performance; "git gc" learned to prune them.
Expecting a reroll.
* ep/http-configure-ssl-version (2015-08-17) 1 commit
- http: add support for specifying the SSL version
A new configuration variable http.sslVersion can be used to specify
what specific version of SSL/TLS to use to make a connection.
Will merge to 'next'.
* jv/send-email-selective-smtp-auth (2015-08-17) 1 commit
- send-email: provide whitelist of SMTP AUTH mechanisms
"git send-email" learned a new option --smtp-auth to limit the SMTP
AUTH mechanisms to be used to a subset of what the system library
supports.
Will merge to 'next'.
* po/po-readme (2015-08-17) 1 commit
- po/README: Update directions for l10n contributors
Will merge to 'next'.
* pt/am-builtin-abort-fix (2015-08-17) 1 commit
- am --abort: merge ORIG_HEAD tree into index
"git am" that has recently reimplemented in C had a performance
regression in "git am --abort" that goes back to the version before
an attempted (and failed) patch application.
Will merge to 'next'.
* ss/fix-config-fd-leak (2015-08-14) 1 commit
- config: close config file handle in case of error
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* nd/list-files (2015-02-09) 21 commits
- t3080: tests for git-list-files
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: make alias 'ls' default to 'list-files'
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
Reroll to base on wt-status work ($gmane/265142) has seen some
positive discussions.
Waiting for a further polished reroll ($gmane/265534).
* mh/numparse (2015-03-19) 14 commits
. diff_opt_parse(): use convert_i() when handling --abbrev=<num>
. diff_opt_parse(): use convert_i() when handling "-l<num>"
. opt_arg(): simplify pointer handling
. opt_arg(): report errors parsing option values
. opt_arg(): use convert_i() in implementation
. opt_arg(): val is always non-NULL
. builtin_diff(): detect errors when parsing --unified argument
. handle_revision_opt(): use convert_ui() when handling "--abbrev="
. strtoul_ui(), strtol_i(): remove functions
. handle_revision_opt(): use convert_i() when handling "-<digit>"
. handle_revision_opt(): use skip_prefix() in many places
. write_subdirectory(): use convert_ui() for parsing mode
. cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
. numparse: new module for parsing integral numbers
Many codepaths use unchecked use of strtol() and friends (or even
worse, atoi()). Introduce a set of wrappers that try to be more
careful.
Expecting a reroll.
($gmane/268058).
* kk/log-merges-config (2015-04-21) 5 commits
- bash-completion: add support for git-log --merges= and log.merges
- t4202-log: add tests for --merges=
- Documentation: add git-log --merges= option and log.merges config. var
- log: honor log.merges= option
- revision: add --merges={show|only|hide} option
"git log" (but not other commands in the "log" family) learned to
pay attention to the log.merges configuration variable that can be
set to "show" (the normal behaviour), "only" (hide non-merge
commits), or "hide" (hide merge commits). --merges=(show|only|hide)
can be used to override the setting from the command line.
The documentation may need to be updated once more ($gmane/267250).
Waiting for a reroll.
* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
- t/lib-git-svn: check same httpd module dirs as lib-httpd
- t/lib-httpd: load mod_unixd
This is the first two commits in a three-patch series $gmane/266962
Expecting a reroll.
with updated log message ($gmane/268061).
* bw/portability-solaris (2015-07-20) 3 commits
- tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
- tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
- tests: modify tr expressions so that xpg4/tr handles it on Solaris
Needs another reroll?
($gmane/274296)
* jc/clone-bundle (2015-04-30) 1 commit
- repack: optionally create a clone.bundle
Waiting for further work.
Still an early WIP.
* mg/index-read-error-messages (2015-06-01) 2 commits
- messages: uniform error messages for index write
- show-index: uniform error messages for index read
The tip was RFC.
Expecting a reroll.
* hv/submodule-config (2015-06-15) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config API for lookup of .gitmodules values
The gitmodules API accessed from the C code learned to cache stuff
lazily.
Needs another reroll?
($gmane/273743)
* jk/log-missing-default-HEAD (2015-06-03) 1 commit
- log: diagnose empty HEAD more clearly
"git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.
What's the status of this one?
* wp/sha1-name-negative-match (2015-06-08) 2 commits
- sha1_name.c: introduce '^{/!-<negative pattern>}' notation
- test for '!' handling in rev-parse's named commits
Introduce "branch^{/!-<pattern>}" notation to name a commit
reachable from branch that does not match the given pattern.
Expecting a reroll.
* mk/utf8-no-iconv-warn (2015-06-08) 1 commit
- utf8.c: print warning about disabled iconv
Warn when a reencoding is requested in a build without iconv
support, as the end user is likely to get an unexpected result. I
think the same level of safety should be added to a build with
iconv support when the specified encoding is not available, but the
patch does not go there.
Expecting a reroll.
* ak/format-patch-odir-config (2015-06-19) 1 commit
- format-patch: introduce format.outputDirectory configuration
Reroll exists but didn't pick it up as it seemed to be still
collecting review comments.
Expecting a reroll.
($gmane/272180).
* ad/bisect-terms (2015-08-03) 4 commits
- bisect: allow setting any user-specified in 'git bisect start'
- bisect: add 'git bisect terms' to view the current terms
- bisect: add the terms old/new
- bisect: sanity check on terms
The use of 'good/bad' in "git bisect" made it confusing to use when
hunting for a state change that is not a regression (e.g. bugfix).
The command learned 'old/new' and then allows the end user to
say e.g. "bisect start --term-old=fast --term=new=slow" to find a
performance regression.
Michael's idea to make 'good/bad' more intelligent does have
certain attractiveness ($gname/272867), and makes some of the work
on this topic a moot point.
Will hold.
* mh/notes-allow-reading-treeish (2015-07-13) 1 commit
- notes: allow treeish expressions as notes ref
Some "git notes" operations, e.g. "git log --notes=<note>", should
be able to read notes from any tree-ish that is shaped like a notes
tree, but the notes infrastructure required that the argument must
be a ref under refs/notes/. Loosen it to require a valid ref only
when the operation would update the notes (in which case we must
have a place to store the updated notes tree, iow, a ref).
Needs update to docs.
($gmane/273928)
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
* pw/remote-set-url-fetch (2014-11-26) 1 commit
. remote: add --fetch and --both options to set-url
Ejected.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll.
($gmane/256591).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit.
--------------------------------------------------
[Cooking]
* bb/remote-get-url (2015-08-05) 1 commit
- remote: add get-url subcommand
"git remote" learned "get-url" subcommand to show the URL for a
given remote name used for fetching and pushing.
Waiting for a reroll.
($gmane/275401)
* cb/open-noatime-clear-errno (2015-08-12) 1 commit
(merged to 'next' on 2015-08-17 at 6aa43a1)
+ git_open_noatime: return with errno=0 on success
When trying to see that an object does not exist, a state errno
leaked from our "first try to open a packfile with O_NOATIME and
then if it fails retry without it" logic on a system that refuses
O_NOATIME. This confused us and caused us to die, saying that the
packfile is unreadable, when we should have just reported that the
object does not exist in that packfile to the caller.
Will merge to 'master'.
* jk/guess-repo-name-regression-fix (2015-08-10) 2 commits
(merged to 'next' on 2015-08-12 at 4cba33c)
+ clone: use computed length in guess_dir_name
+ clone: add tests for output directory
(this branch is used by ps/guess-repo-name-at-root.)
"git clone $URL" in recent releases of Git contains a regression in
the code that invents a new repository name incorrectly based on
the $URL. This has been corrected.
Will merge to 'master'.
* ps/guess-repo-name-at-root (2015-08-10) 3 commits
(merged to 'next' on 2015-08-12 at 088860f)
+ clone: abort if no dir name could be guessed
+ clone: do not use port number as dir name
+ clone: do not include authentication data in guessed dir
(this branch uses jk/guess-repo-name-regression-fix.)
"git clone $URL", when cloning from a site whose sole purpose is to
host a single repository (hence, no path after <scheme>://<site>/),
tried to use the site name as the new repository name, but did not
remove username or password when <site> part was of the form
<user>@<pass>:<host>. The code is taught to redact these.
Will merge to 'master'.
* jk/notes-merge-config (2015-08-14) 4 commits
- notes: teach git-notes about notes.<ref>.mergestrategy option
- notes: add notes.mergestrategy option to select default strategy
- notes: add tests for --commit/--abort/--strategy exclusivity
- notes: document cat_sort_uniq rewriteMode
"git notes merge" can be told with "--strategy=<how>" option how to
automatically handle conflicts; this can now be configured by
setting notes.merge configuration variable.
The latest reroll (v8) hasn't been picked up.
Expecting a reroll.
($gmane/276068)
* mk/submodule-gitdir-path (2015-08-05) 2 commits
- path: implement common_dir handling in git_path_submodule()
- submodule refactor: use git_path_submodule() in add_submodule_odb()
The submodule code has been taught to work better with separate
work trees created via "git worktree add".
Waiting for a review.
($gmane/275340).
* mm/pull-upload-pack (2015-07-30) 1 commit
(merged to 'next' on 2015-08-12 at 14d2a52)
+ pull.sh: quote $upload_pack when passing it to git-fetch
"git pull" in recent releases of Git has a regression in the code
that allows custom path to the --upload-pack=<program>. This has
been corrected.
Will merge to 'maint'.
Note that this is irrelevant for 'master' with "git pull" rewritten
in C.
* ps/t1509-chroot-test-fixup (2015-08-05) 2 commits
(merged to 'next' on 2015-08-12 at 6d10ea5)
+ tests: fix cleanup after tests in t1509-root-worktree
+ tests: fix broken && chains in t1509-root-worktree
t1509 test that requires a dedicated VM environment had some
bitrot, which has been corrected.
Will merge to 'master'.
* pt/am-builtin-options (2015-08-12) 3 commits
(merged to 'next' on 2015-08-12 at e57f754)
+ am: let --signoff override --no-signoff
+ am: let command-line options override saved options
+ test_terminal: redirect child process' stdin to a pty
After "git am --opt1" stops, running "git am --opt2" pays attention
to "--opt2" only for the patch that caused the original invocation
to stop.
Will merge to 'master'.
* sb/remove-get-pathspec (2015-08-03) 1 commit
- builtin/mv: remove get_pathspec()
Expecting a reroll.
($gmane/275224)
* sb/submodule-helper (2015-08-07) 1 commit
- submodule: implement `module_list` as a builtin helper
The beginning of "git submodule" rewritten in C.
* tb/complete-rebase-i-edit-todo (2015-08-05) 1 commit
(merged to 'next' on 2015-08-12 at 9606c21)
+ completion: offer '--edit-todo' during interactive rebase
The command-line completion script (in contrib/) has been updated.
Will merge to 'master'.
* dt/untracked-subdir (2015-08-07) 2 commits
- DONTMERGE: wait for Duy to Ack or comment
- untracked-cache: fix subdirectory handling
Waiting for a review cycle to conclude.
($gmane/276019).
* jk/test-with-x (2015-08-07) 2 commits
(merged to 'next' on 2015-08-12 at 06576a1)
+ test-lib: disable trace when test is not verbose
+ test-lib: turn off "-x" tracing during chain-lint check
Running tests with the "-x" option to make them verbose had some
unpleasant interactions with other features of the test suite.
Will merge to 'master'.
* ad/cygwin-wants-rename (2015-08-07) 1 commit
- config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
Will hold.
($gmane/275680).
* ee/clean-remove-dirs (2015-08-11) 1 commit
(merged to 'next' on 2015-08-12 at fc41b09)
+ t7300-clean: require POSIXPERM for chmod 0 test
Test updates for Windows.
Will merge to 'master'.
* jc/finalize-temp-file (2015-08-10) 1 commit
(merged to 'next' on 2015-08-12 at 6fe62fe)
+ sha1_file.c: rename move_temp_to_file() to finalize_object_file()
Long overdue micro clean-up.
Will merge to 'master'.
* jk/git-path (2015-08-10) 16 commits
(merged to 'next' on 2015-08-12 at 7ebe864)
+ memoize common git-path "constant" files
+ get_repo_path: refactor path-allocation
+ find_hook: keep our own static buffer
+ refs.c: remove_empty_directories can take a strbuf
+ refs.c: avoid git_path assignment in lock_ref_sha1_basic
+ refs.c: avoid repeated git_path calls in rename_tmp_log
+ refs.c: simplify strbufs in reflog setup and writing
+ path.c: drop git_path_submodule
+ refs.c: remove extra git_path calls from read_loose_refs
+ remote.c: drop extraneous local variable from migrate_file
+ prefer mkpathdup to mkpath in assignments
+ prefer git_pathdup to git_path in some possibly-dangerous cases
+ add_to_alternates_file: don't add duplicate entries
+ t5700: modernize style
+ cache.h: complete set of git_path_submodule helpers
+ cache.h: clarify documentation for git_path, et al
git_path() and mkpath() are handy helper functions but it is easy
to misuse, as the callers need to be careful to keep the number of
active results below 4. Their uses have been reduced.
Will merge to 'master'.
* jk/long-error-messages (2015-08-11) 2 commits
(merged to 'next' on 2015-08-12 at 36303cd)
+ vreportf: avoid intermediate buffer
+ vreportf: report to arbitrary filehandles
The codepath to produce error messages had a hard-coded limit to
the size of the message, primarily to avoid memory allocation while
calling die().
Will merge to 'master'.
* nd/dwim-wildcards-as-pathspecs (2015-08-11) 1 commit
(merged to 'next' on 2015-08-12 at bb73f4d)
+ t2019: skip test requiring '*' in a file name non Windows
Test updates for Windows.
Will merge to 'master'.
* sg/config-name-only (2015-08-10) 2 commits
(merged to 'next' on 2015-08-12 at c658fe4)
+ completion: list variable names reliably with 'git config --name-only'
+ config: add '--name-only' option to list only variable names
"git config --list" output was hard to parse when values consist of
multiple lines. "--name-only" option is added to help this.
Will merge to 'master'.
* mh/tempfile (2015-08-12) 16 commits
(merged to 'next' on 2015-08-12 at 80efcb7)
+ credential-cache--daemon: use tempfile module
+ credential-cache--daemon: delete socket from main()
+ gc: use tempfile module to handle gc.pid file
+ lock_repo_for_gc(): compute the path to "gc.pid" only once
+ diff: use tempfile module
+ setup_temporary_shallow(): use tempfile module
+ write_shared_index(): use tempfile module
+ register_tempfile(): new function to handle an existing temporary file
+ tempfile: add several functions for creating temporary files
+ prepare_tempfile_object(): new function, extracted from create_tempfile()
+ tempfile: a new module for handling temporary files
+ commit_lock_file(): use get_locked_file_path()
+ lockfile: add accessor get_lock_file_path()
+ lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
+ create_bundle(): duplicate file descriptor to avoid closing it twice
+ lockfile: move documentation to lockfile.h and lockfile.c
The "lockfile" API has been rebuilt on top of a new "tempfile" API.
Will merge to 'master'.
* jh/strbuf-read-use-read-in-full (2015-08-10) 1 commit
(merged to 'next' on 2015-08-12 at db16247)
+ strbuf_read(): skip unnecessary strbuf_grow() at eof
strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
Will merge to 'master'.
* sb/check-return-from-read-ref (2015-08-03) 1 commit
(merged to 'next' on 2015-08-12 at 4a1c801)
+ transport-helper: die on errors reading refs.
Will merge to 'master'.
* jk/negative-hiderefs (2015-08-07) 2 commits
(merged to 'next' on 2015-08-12 at bdc478d)
+ refs: support negative transfer.hideRefs
+ docs/config.txt: reorder hideRefs config
A negative !ref entry in multi-value transfer.hideRefs
configuration can be used to say "don't hide this one".
Will merge to 'master'.
* dt/notes-multiple (2015-08-11) 2 commits
(merged to 'next' on 2015-08-12 at 0052055)
+ notes: handle multiple worktrees
+ worktrees: add find_shared_symref
When linked worktree is used, simultaneous "notes merge" instances
for the same ref in refs/notes/* are prevented from stomping on
each other.
Will merge to 'master'.
* dt/refs-pseudo (2015-08-11) 6 commits
(merged to 'next' on 2015-08-12 at 7078eb6)
+ pseudoref: check return values from read_ref()
(merged to 'next' on 2015-08-03 at 3eafd33)
+ sequencer: replace write_cherry_pick_head with update_ref
+ bisect: use update_ref
+ pseudorefs: create and use pseudoref update and delete functions
+ refs: add ref_type function
+ refs: introduce pseudoref and per-worktree ref concepts
To prepare for allowing a different "ref" backend to be plugged in
to the system, update_ref()/delete_ref() have been taught about
ref-like things like MERGE_HEAD that are per-worktree (they will
always be written to the filesystem inside $GIT_DIR).
Will merge to 'master'.
* kn/for-each-tag-branch (2015-08-03) 11 commits
(merged to 'next' on 2015-08-03 at d9e94b9)
+ for-each-ref: add '--contains' option
+ ref-filter: implement '--contains' option
+ parse-options.h: add macros for '--contains' option
+ parse-option: rename parse_opt_with_commit()
+ for-each-ref: add '--merged' and '--no-merged' options
+ ref-filter: implement '--merged' and '--no-merged' options
+ ref-filter: add parse_opt_merge_filter()
+ for-each-ref: add '--points-at' option
+ ref-filter: implement '--points-at' option
+ tag: libify parse_opt_points_at()
+ t6302: for-each-ref tests for ref-filter APIs
Originally merged to 'next' on 2015-07-15
Some features from "git tag -l" and "git branch -l" have been made
available to "git for-each-ref" so that eventually the unified
implementation can be shared across all three, in a follow-up
series or two.
* jc/rerere (2015-07-24) 21 commits
- rerere: un-nest merge() further
- rerere: use "struct rerere_id" instead of "char *" for conflict ID
- rerere: call conflict-ids IDs
- rerere: further clarify do_rerere_one_path()
- rerere: further de-dent do_plain_rerere()
- rerere: refactor "replay" part of do_plain_rerere()
- rerere: explain the remainder
- rerere: explain "rerere forget" codepath
- rerere: explain the primary codepath
- rerere: explain MERGE_RR management helpers
- rerere: fix benign off-by-one non-bug and clarify code
- rerere: explain the rerere I/O abstraction
- rerere: do not leak mmfile[] for a path with multiple stage #1 entries
- rerere: stop looping unnecessarily
- rerere: drop want_sp parameter from is_cmarker()
- rerere: report autoupdated paths only after actually updating them
- rerere: write out each record of MERGE_RR in one go
- rerere: lift PATH_MAX limitation
- rerere: plug conflict ID leaks
- rerere: handle conflicts with multiple stage #1 entries
- rerere: fix an off-by-one non-bug
(this branch is used by jc/rerere-multi.)
Code clean-up and minor fixes (so far).
* jc/rerere-multi (2015-07-30) 7 commits
. t4200: rerere a merge with two identical conflicts
. WIP
. rerere: allow multiple variants to exist
- rerere: delay the recording of preimage
- rerere: handle leftover rr-cache/$ID directory and postimage files
- rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
- rerere: split conflict ID further
(this branch uses jc/rerere.)
This is a contination of jc/rerere topic.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
(merged to 'next' on 2015-08-03 at a52c2b2)
+ merge: drop 'git merge <message> HEAD <commit>' syntax
Originally merged to 'next' on 2015-05-28
Stop supporting "git merge <message> HEAD <commit>" syntax that
has been deprecated since October 2007.
Will keep in 'next' during the 2.6 cycle.
^ permalink raw reply [relevance 1%]
* Re: [PATCH v4 1/3] clone: do not include authentication data in guessed dir
@ 2015-08-05 19:36 5% ` Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-08-05 19:36 UTC (permalink / raw)
To: Patrick Steinhardt, Jeff King; +Cc: git, sunshine, pclouds
Junio C Hamano <gitster@pobox.com> writes:
> Perhaps add
>
> "test_clone_dir ssh://user:passw@rd@host/ host"
>
> here? How is this expected to be parsed?
For completeness, here is what I think the end result (together with
Peff's series) of the test should look like.
The first hunk is merely style. We could drop 'in "$@"' from there
and some people may argue that it would be more obvious, but I think
being explict is fine.
As to the second hunk:
- the first batch is for "trailing slash removal" for scp-like
syntax;
- the second batch is for "omitting path should default to host" for
the same;
- the third batch is for "omitting authentication material" for the
same.
Note that ssh://user:passw@rd@host:1234/ and user:passw@rd@host:/
tests fail for the same reason (finding @ should be greedy, I think).
t/t5603-clone-dirname.sh | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/t/t5603-clone-dirname.sh b/t/t5603-clone-dirname.sh
index 27dbd6c..4897ea8 100755
--- a/t/t5603-clone-dirname.sh
+++ b/t/t5603-clone-dirname.sh
@@ -22,7 +22,8 @@ test_clone_dir () {
expect=success
bare=non-bare
clone_opts=
- for i in "$@"; do
+ for i in "$@"
+ do
case "$i" in
fail)
expect=failure
@@ -61,12 +62,23 @@ test_clone_dir ssh://host/foo/ foo
test_clone_dir ssh://host/foo.git/ foo
test_clone_dir ssh://host/foo/.git/ foo
+test_clone_dir host:foo/ foo
+test_clone_dir host:foo.git/ foo
+test_clone_dir host:foo/.git/ foo
+
# omitting the path should default to the hostname
test_clone_dir ssh://host/ host
test_clone_dir ssh://host:1234/ host
test_clone_dir ssh://user@host/ host
+test_clone_dir host:/ host
+
+# auth materials should be redacted
test_clone_dir ssh://user:password@host/ host
test_clone_dir ssh://user:password@host:1234/ host
+test_clone_dir ssh://user:passw@rd@host:1234/ host
+test_clone_dir user@host:/ host
+test_clone_dir user:password@host:/ host
+test_clone_dir user:passw@rd@host:/ host
# trailing port-like numbers should not be stripped for paths
test_clone_dir ssh://user:password@host/test:1234 1234
^ permalink raw reply related [relevance 5%]
* What's cooking in git.git (May 2015, #04; Mon, 11)
@ 2015-05-11 22:46 4% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-11 22:46 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
Git 2.3.8 has been tagged; it contains Linus's favorite fix for "git
commit --date=now", among other things, and it will be the last for
2.3.x series for now.
We saw a few sizable topics rerolled this morning on the list;
sorry, but I didn't have time to get to them.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
(merged to 'next' on 2015-05-07 at 64d9a20)
+ git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
Catch a programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.
* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
(merged to 'next' on 2015-05-05 at 1eb279f)
+ daemon: unbreak NO_IPV6 build regression
"git daemon" fails to build from the source under NO_IPV6
configuration (regression in 2.4).
* jc/hash-object (2015-05-05) 4 commits
(merged to 'next' on 2015-05-07 at 9b81a06)
+ write_sha1_file(): do not use a separate sha1[] array
+ t1007: add hash-object --literally tests
+ hash-object --literally: fix buffer overrun with extra-long object type
+ git-hash-object.txt: document --literally option
"hash-object --literally" introduced in v2.2 was not prepared to
take a really long object type name.
* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
(merged to 'next' on 2015-05-05 at bd94828)
+ fmt-merge-msg: plug small leak of commit buffer
Originally merged to 'next' on 2015-04-21
* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
(merged to 'next' on 2015-05-07 at 849a24d)
+ filter-branch: avoid passing commit message through sed
"filter-branch" corrupted commit log message that ends with an
incomplete line on platforms with some "sed" implementations that
munge such a line. Work it around by avoiding to use "sed".
* jk/reading-packed-refs (2015-04-16) 9 commits
(merged to 'next' on 2015-05-05 at 89b5694)
+ t1430: add another refs-escape test
+ read_packed_refs: avoid double-checking sane refs
+ strbuf_getwholeline: use getdelim if it is available
+ strbuf_getwholeline: avoid calling strbuf_grow
+ strbuf_addch: avoid calling strbuf_grow
+ config: use getc_unlocked when reading from file
+ strbuf_getwholeline: use getc_unlocked
+ git-compat-util: add fallbacks for unlocked stdio
+ strbuf_getwholeline: use getc macro
Originally merged to 'next' on 2015-04-21
An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
to read packed-refs file revealed that the former is unacceptably
inefficient.
* jk/rebase-quiet-noop (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 82780b9)
+ rebase: silence "git checkout" for noop rebase
"git rebase --quiet" was not quite quiet when there is nothing to
do.
* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
(merged to 'next' on 2015-05-05 at a8de68e)
+ sha1_file: squelch "packfile cannot be accessed" warnings
Originally merged to 'next' on 2015-04-21
* jk/still-interesting (2015-04-17) 1 commit
(merged to 'next' on 2015-05-05 at 6a5c89c)
+ limit_list: avoid quadratic behavior from still_interesting
Originally merged to 'next' on 2015-04-21
"git rev-list --objects $old --not --all" to see if everything that
is reachable from $old is already connected to the existing refs
was very inefficient.
* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
(merged to 'next' on 2015-05-05 at 12391f1)
+ config: use error() instead of fprintf(stderr, ...)
Some error messages in "git config" were emitted without calling
the usual error() facility.
* ld/p4-case-fold (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 03ecbd0)
+ git-p4: add failing tests for case-folding p4d
* lm/squelch-bg-progress (2015-04-15) 2 commits
(merged to 'next' on 2015-05-05 at a2fe74d)
+ compat/mingw: stubs for getpgid() and tcgetpgrp()
+ progress: no progress in background
Originally merged to 'next' on 2015-04-21
Many long-running operations show progress eye-candy, even when
they are later backgrounded. Hide the eye-candy when the process
is sent to the background instead.
* ls/p4-changes-block-size (2015-04-20) 1 commit
(merged to 'next' on 2015-05-05 at 92596d4)
+ git-p4: use -m when running p4 changes
Originally merged to 'next' on 2015-04-21
"git p4" learned "--changes-block-size <n>" to read the changes in
chunks from Perforce, instead of making one call to "p4 changes"
that may trigger "too many rows scanned" error from Perforce.
* mm/add-p-split-error (2015-04-16) 5 commits
(merged to 'next' on 2015-05-05 at c556011)
+ stash -p: demonstrate failure of split with mixed y/n
+ t3904-stash-patch: factor PERL prereq at the top of the file
+ t3904-stash-patch: fix test description
+ add -p: demonstrate failure when running 'edit' after a split
+ t3701-add-interactive: simplify code
Originally merged to 'next' on 2015-04-23
When "add--interactive" splits a hunk into two overlapping hunks
and then let the user choose only one, it sometimes feeds an
incorrect patch text to "git apply". Add tests to demonstrate
this.
I have a slight suspicion that this may be $gmane/87202 coming back
and biting us (I seem to have said "let's run with this and see
what happens" back then).
* nd/multiple-work-trees (2015-03-31) 41 commits
(merged to 'next' on 2015-05-05 at 0f04a1c)
+ prune --worktrees: fix expire vs worktree existence condition
+ t1501: fix test with split index
+ t2026: fix broken &&-chain
+ t2026 needs procondition SANITY
+ git-checkout.txt: a note about multiple checkout support for submodules
+ checkout: add --ignore-other-wortrees
+ checkout: pass whole struct to parse_branchname_arg instead of individual flags
+ git-common-dir: make "modules/" per-working-directory directory
+ checkout: do not fail if target is an empty directory
+ t2025: add a test to make sure grafts is working from a linked checkout
+ checkout: don't require a work tree when checking out into a new one
+ git_path(): keep "info/sparse-checkout" per work-tree
+ count-objects: report unused files in $GIT_DIR/worktrees/...
+ gc: support prune --worktrees
+ gc: factor out gc.pruneexpire parsing code
+ gc: style change -- no SP before closing parenthesis
+ checkout: clean up half-prepared directories in --to mode
+ checkout: reject if the branch is already checked out elsewhere
+ prune: strategies for linked checkouts
+ checkout: support checking out into a new working directory
+ use new wrapper write_file() for simple file writing
+ wrapper.c: wrapper to open a file, fprintf then close
+ setup.c: support multi-checkout repo setup
+ setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
+ setup.c: convert check_repository_format_gently to use strbuf
+ setup.c: detect $GIT_COMMON_DIR in is_git_directory()
+ setup.c: convert is_git_directory() to use strbuf
+ git-stash: avoid hardcoding $GIT_DIR/logs/....
+ *.sh: avoid hardcoding $GIT_DIR/hooks/...
+ git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
+ $GIT_COMMON_DIR: a new environment variable
+ commit: use SEQ_DIR instead of hardcoding "sequencer"
+ fast-import: use git_path() for accessing .git dir instead of get_git_dir()
+ reflog: avoid constructing .lock path with git_path
+ *.sh: respect $GIT_INDEX_FILE
+ git_path(): be aware of file relocation in $GIT_DIR
+ path.c: group git_path(), git_pathdup() and strbuf_git_path() together
+ path.c: rename vsnpath() to do_git_path()
+ git_snpath(): retire and replace with strbuf_git_path()
+ path.c: make get_pathname() call sites return const char *
+ path.c: make get_pathname() return strbuf instead of static buffer
Originally merged to 'next' on 2015-04-02
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
(merged to 'next' on 2015-05-05 at 42bd845)
+ index-pack: kill union delta_base to save memory
+ index-pack: reduce object_entry size to save memory
Originally merged to 'next' on 2015-04-21
Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
* pt/credential-xdg (2015-03-25) 4 commits
(merged to 'next' on 2015-05-05 at 0d6711f)
+ t0302: "unreadable" test needs POSIXPERM
+ t0302: test credential-store support for XDG_CONFIG_HOME
+ git-credential-store: support XDG_CONFIG_HOME
+ git-credential-store: support multiple credential files
(this branch is used by pt/xdg-config-path.)
Originally merged to 'next' on 2015-03-25
Tweak the sample "store" backend of the credential helper to honor
XDG configuration file locations when specified.
* pt/xdg-config-path (2015-05-06) 7 commits
(merged to 'next' on 2015-05-07 at 38e7071)
+ path.c: remove home_config_paths()
+ git-config: replace use of home_config_paths()
+ git-commit: replace use of home_config_paths()
+ credential-store.c: replace home_config_paths() with xdg_config_home()
+ dir.c: replace home_config_paths() with xdg_config_home()
+ attr.c: replace home_config_paths() with xdg_config_home()
+ path.c: implement xdg_config_home()
(this branch uses pt/credential-xdg.)
Code clean-up for xdg configuration path support.
* sb/prefix-path-free-results (2015-05-05) 1 commit
(merged to 'next' on 2015-05-07 at 64f15a8)
+ prefix_path(): unconditionally free results in the callers
Code clean-up (not a leak-fix).
* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
(merged to 'next' on 2015-05-07 at 2beb429)
+ completion: fix and update 'git log --decorate=' options
The completion for "log --decorate=" parameter value was incorrect.
* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
(merged to 'next' on 2015-05-07 at 00b4bd9)
+ completion: remove redundant __git_compute_all_commands() call
Code simplification.
* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
(merged to 'next' on 2015-05-05 at 8e1974e)
+ blame: CRLF in the working tree and LF in the repo
Some time ago, "git blame" (incorrectly) lost the convert_to_git()
call when synthesizing a fake "tip" commit that represents the
state in the working tree, which broke folks who record the history
with LF line ending to make their project portabile across
platforms while terminating lines in their working tree files with
CRLF for their platform.
* tb/t0027-crlf (2015-04-25) 3 commits
(merged to 'next' on 2015-05-05 at 36accbb)
+ t0027: Add repoMIX and LF_nul
+ t0027: support NATIVE_CRLF platforms
+ t0027: cleanup: rename functions; avoid non-leading TABs
Originally merged to 'next' on 2015-04-21
More line-ending tests.
* va/fix-git-p4-tests (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 795e858)
+ git-p4: t9814: prevent --chain-lint failure
* va/p4-client-path (2015-04-23) 2 commits
(merged to 'next' on 2015-05-05 at 852facc)
+ git-p4: improve client path detection when branches are used
+ t9801: check git-p4's branch detection with client spec enabled
Originally merged to 'next' on 2015-04-23
git p4 attempts to better handle branches in Perforce.
--------------------------------------------------
[New Topics]
* dl/branch-error-message (2015-05-06) 1 commit
(merged to 'next' on 2015-05-11 at ed947ab)
+ branch: do not call a "remote-tracking branch" a "remote branch"
Error messages from "git branch" called remote-tracking branches as
"remote branches".
Will merge to 'master'.
* dl/subtree-push-no-squash (2015-05-07) 1 commit
(merged to 'next' on 2015-05-11 at 74d07ca)
+ contrib/subtree: there's no push --squash
"git subtree" script (in contrib/) does not have --squash option
when pushing, but the documentation and help text pretended as if
it did.
Will merge to 'master'.
* ld/p4-editor-multi-words (2015-05-07) 2 commits
- git-p4: fix handling of multi-word P4EDITOR
- git-p4: add failing test for P4EDITOR handling
Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
did not let the shell interpolate the contents of the environment
variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
Make it in line with the rest of Git, as well as with Perforce.
Reported to break some tests that assume the non-interpolating
behaviour that need to be fixed.
* dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
(merged to 'next' on 2015-05-11 at 36d4f0e)
+ contrib/subtree: portability fix for string printing
"git subtree" script (in contrib/) used "echo -n" to produce
progress messages in a non-portable way.
Will merge to 'master'.
* ls/http-ssl-cipher-list (2015-05-08) 1 commit
(merged to 'next' on 2015-05-11 at 55764ce)
+ http: add support for specifying an SSL cipher list
Introduce http.<url>.SSLCipherList configuration variable to tweak
the list of cipher suite to be used with libcURL when talking with
https:// sites.
Will merge to 'master'.
* ps/bundle-verify-arg (2015-05-08) 1 commit
(merged to 'next' on 2015-05-11 at 9f1b1ae)
+ bundle: verify arguments more strictly
"git bundle verify" did not diagnose extra parameters on the
command line.
Will merge to 'master'.
* sg/help-subcommands (2015-05-08) 1 commit
(merged to 'next' on 2015-05-11 at 91e4f9e)
+ command-list.txt: fix whitespace inconsistency
A preparatory clean-up step.
Will merge to 'master'.
* mh/ref-directory-file-2 (2015-05-10) 19 commits
- SQUASH???
- reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
- ref_transaction_commit(): delete extra "the" from error message
- ref_transaction_commit(): provide better error messages
- rename_ref(): integrate lock_ref_sha1_basic() errors into ours
- lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
- lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
- verify_refname_available(): report errors via a "struct strbuf *err"
- verify_refname_available(): rename function
- refs: check for D/F conflicts among refs processed in a transaction
- ref_transaction_commit(): use a string_list for detecting duplicates
- is_refname_available(): use dirname in first loop
- struct nonmatching_ref_data: store a refname instead of a ref_entry
- report_refname_conflict(): inline function
- entry_matches(): inline function
- is_refname_available(): convert local variable "dirname" to strbuf
- is_refname_available(): avoid shadowing "dir" variable
- is_refname_available(): explain the reason for an early exit
- t1404: new tests of D/F conflicts within ref transactions
(this branch uses mh/write-refs-sooner-2.2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
A reroll is posted, but haven't got a chance to pick it up yet.
* mh/write-refs-sooner-2.2 (2015-05-10) 8 commits
- ref_transaction_commit(): fix atomicity and avoid fd exhaustion
- ref_transaction_commit(): remove the local flags variable
- ref_transaction_commit(): inline call to write_ref_sha1()
- rename_ref(): inline calls to write_ref_sha1() from this function
- commit_ref_update(): new function, extracted from write_ref_sha1()
- write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
(this branch is used by mh/ref-directory-file-2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
Multi-ref transaction support we merged a few releases ago
unnecessarily kept many file descriptors open, risking to fail with
resource exhaustion.
* mh/write-refs-sooner-2.3 (2015-05-10) 1 commit
- Merge branch 'mh/write-refs-sooner' into mh/write-refs-sooner-2.3
(this branch is used by mh/ref-directory-file-2 and mh/write-refs-sooner-2.4; uses mh/write-refs-sooner-2.2.)
Multi-ref transaction support we merged a few releases ago
unnecessarily kept many file descriptors open, risking to fail with
resource exhaustion. This is for 2.3.x track.
* mh/write-refs-sooner-2.4 (2015-05-10) 1 commit
- Merge branch 'mh/write-refs-sooner-2.3' into mh/write-refs-sooner-2.4
(this branch is used by mh/ref-directory-file-2; uses mh/write-refs-sooner-2.2 and mh/write-refs-sooner-2.3.)
Multi-ref transaction support we merged a few releases ago
unnecessarily kept many file descriptors open, risking to fail with
resource exhaustion. This is for 2.4.x track.
* sb/ref-lock-lose-lock-fd (2015-05-10) 1 commit
- refs.c: remove lock_fd from struct ref_lock
The refs API uses ref_lock struct which had its own "int fd", even
though the same file descriptor was in the lock struct it contains.
Clean-up the code to lose this redundant field.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* kk/log-merges-config (2015-04-21) 5 commits
- bash-completion: add support for git-log --merges= and log.merges
- t4202-log: add tests for --merges=
- Documentation: add git-log --merges= option and log.merges config. var
- log: honor log.merges= option
- revision: add --merges={show|only|hide} option
"git log" (but not other commands in the "log" family) learned to
pay attention to the log.merges configuration variable that can be
set to "show" (the normal behaviour), "only" (hide non-merge
commits), or "hide" (hide merge commits). --merges=(show|only|hide)
can be used to override the setting from the command line.
The documentation may need to be updated once more ($gmane/267250).
Waiting for a reroll.
* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
- t/lib-git-svn: check same httpd module dirs as lib-httpd
- t/lib-httpd: load mod_unixd
This is the first two commits in a three-patch series $gmane/266962
Will be rerolled.
with updated log message ($gmane/268061).
* mh/numparse (2015-03-19) 14 commits
- diff_opt_parse(): use convert_i() when handling --abbrev=<num>
- diff_opt_parse(): use convert_i() when handling "-l<num>"
- opt_arg(): simplify pointer handling
- opt_arg(): report errors parsing option values
- opt_arg(): use convert_i() in implementation
- opt_arg(): val is always non-NULL
- builtin_diff(): detect errors when parsing --unified argument
- handle_revision_opt(): use convert_ui() when handling "--abbrev="
- strtoul_ui(), strtol_i(): remove functions
- handle_revision_opt(): use convert_i() when handling "-<digit>"
- handle_revision_opt(): use skip_prefix() in many places
- write_subdirectory(): use convert_ui() for parsing mode
- cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
- numparse: new module for parsing integral numbers
Many codepaths use unchecked use of strtol() and friends (or even
worse, atoi()). Introduce a set of wrappers that try to be more
careful.
Will be rerolled.
($gmane/268058).
* tf/gitweb-project-listing (2015-03-19) 5 commits
- gitweb: make category headings into links when they are directories
- gitweb: optionally set project category from its pathname
- gitweb: add a link under the search box to clear a project filter
- gitweb: if the PATH_INFO is incomplete, use it as a project_filter
- gitweb: fix typo in man page
Update gitweb to make it more pleasant to deal with a hierarchical
forest of repositories.
Any comments from those who use or have their own code in Gitweb?
* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
- "-" and "@{-1}" on various programs
Lose special case code to make a lone dash "-" mean the previous
branch aka "@{-1}" from a handful subcommands, and instead support
the notation throughout the system by reimplementing it at the
revisions layer.
Needs tests, documentation updates, etc. Also does only a half-way
job dealing with range notation, which needs to be fixed before the
series goes anywhere.
* nd/list-files (2015-02-09) 21 commits
- t3080: tests for git-list-files
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: make alias 'ls' default to 'list-files'
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
Reroll to base on wt-status work ($gmane/265142) has seen some
positive discussions.
Waiting for a further polished reroll ($gmane/265534).
* js/fsck-opt (2015-01-21) 19 commits
- fsck: support ignoring objects in `git fsck` via fsck.skiplist
- fsck: git receive-pack: support excluding objects from fsck'ing
- fsck: introduce `git fsck --quick`
- fsck: support demoting errors to warnings
- fsck: document the new receive.fsck.* options
- fsck: allow upgrading fsck warnings to errors
- fsck: optionally ignore specific fsck issues completely
- fsck: disallow demoting grave fsck errors to warnings
- fsck: add a simple test for receive.fsck.*
- fsck: make fsck_tag() warn-friendly
- fsck: handle multiple authors in commits specially
- fsck: make fsck_commit() warn-friendly
- fsck: make fsck_ident() warn-friendly
- fsck: report the ID of the error/warning
- fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
- fsck: offer a function to demote fsck errors to warnings
- fsck: provide a function to parse fsck message IDs
- fsck: introduce identifiers for fsck messages
- fsck: introduce fsck options
"fsck.warnings = <list of error tokens>" I suggested turned out to
be an unpopular choice (sorry Dscho).
Expecting a reroll.
* nd/untracked-cache (2015-03-12) 24 commits
- git-status.txt: advertisement for untracked cache
- untracked cache: guard and disable on system changes
- mingw32: add uname()
- t7063: tests for untracked cache
- update-index: test the system before enabling untracked cache
- update-index: manually enable or disable untracked cache
- status: enable untracked cache
- untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- untracked cache: mark index dirty if untracked cache is updated
- untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- untracked cache: avoid racy timestamps
- read-cache.c: split racy stat test to a separate function
- untracked cache: invalidate at index addition or removal
- untracked cache: load from UNTR index extension
- untracked cache: save to an index extension
- ewah: add convenient wrapper ewah_serialize_strbuf()
- untracked cache: don't open non-existent .gitignore
- untracked cache: mark what dirs should be recursed/saved
- untracked cache: record/validate dir mtime and reuse cached output
- untracked cache: make a wrapper around {open,read,close}dir()
- untracked cache: invalidate dirs recursively if .gitignore changes
- untracked cache: initial untracked cache validation
- untracked cache: record .gitignore information and dir hierarchy
- dir.c: optionally compute sha-1 of a .gitignore file
Need extra sets of eyes to review this.
* nd/pathspec-strip-fix (2015-04-18) 1 commit
- pathspec: adjust prefixlen after striping trailing slash
Does not quite fix ($gmane/267614).
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
* pw/remote-set-url-fetch (2014-11-26) 1 commit
- remote: add --fetch and --both options to set-url
Expecting a reroll.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll ($gmane/256591).
* hv/submodule-config (2014-11-11) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit.
--------------------------------------------------
[Cooking]
* sg/completion-omit-credential-helpers (2015-05-06) 1 commit
(merged to 'next' on 2015-05-11 at aa7e554)
+ completion: remove credential helpers from porcelain commands
The Git subcommand completion (in contrib/) listed credential
helpers among candidates, which is not something the end user would
invoke interatively.
Will merge to 'master'.
* jk/skip-http-tests-under-no-curl (2015-05-07) 2 commits
(merged to 'next' on 2015-05-11 at a52b711)
+ tests: skip dav http-push tests under NO_EXPAT=NoThanks
+ t/lib-httpd.sh: skip tests if NO_CURL is defined
Test clean-up.
Will merge to 'master'.
* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
(merged to 'next' on 2015-05-07 at 8176de7)
+ pathspec: avoid the need of "--" when wildcard is used
A heuristic to help the "git <cmd> <revs> <pathspec>" command line
convention to catch mistyped paths is to make sure all the non-rev
parameters in the later part of the command line are names of the
files in the working tree, but that means "git grep $str -- \*.c"
must always be disambiguated with "--", because nobody sane will
create a file whose name literally is asterisk-dot-see. Loosen the
heuristic to declare that with a wildcard string the user likely
meant to give us a pathspec.
Will merge to 'master' in the third batch.
* pt/pull-tests (2015-05-03) 7 commits
- t5521: test --dry-run does not make any changes
- t5520: test --rebase failure on unborn branch with index
- t5520: test --rebase with multiple branches
- t5520: test work tree fast-forward when fetch updates head
- t5520: test for failure if index has unresolved entries
- t5520: implement tests for no merge candidates cases
- t5520: test pulling multiple branches into an empty repository
Add more test coverage to "git pull". This conflicts slightly with
a new test jc/merge topic adds, but resolution is fairly trivial.
Expecting a reroll ($gmane/268391).
* jc/clone-bundle (2015-04-30) 1 commit
- repack: optionally create a clone.bundle
Still an early WIP
* jk/at-push-sha1 (2015-05-03) 12 commits
- for-each-ref: accept "%(push)" format
- for-each-ref: use skip_prefix instead of starts_with
- sha1_name: implement @{push} shorthand
- sha1_name: refactor interpret_upstream_mark
- sha1_name: refactor upstream_mark
- remote.c: add branch_get_push
- remote.c: report specific errors from branch_get_upstream
- remote.c: introduce branch_get_upstream helper
- remote.c: provide per-branch pushremote name
- remote.c: hoist branch.*.remote lookup out of remote_get_1
- remote.c: drop "remote" pointer from "struct branch"
- remote.c: drop default_remote_name variable
Introduce <branch>@{push} short-hand to denote the remote-tracking
branch that tracks the branch at the remote the <branch> would be
pushed to.
Expecting a reroll ($gmane/268419, etc.).
* ph/rebase-i-redo (2015-04-29) 1 commit
(merged to 'next' on 2015-05-07 at 8fc1f52)
+ rebase -i: redo tasks that die during cherry-pick
"git rebase -i" moved the "current" command from "todo" to "done" a
bit too prematurely, losing a step when a "pick" did not even start.
Will merge to 'master' in the third batch.
* ee/clean-remove-dirs (2015-04-26) 5 commits
- clean: improve performance when removing lots of directories
- p7300: add performance tests for clean
- t7300: add tests to document behavior of clean and nested git
- setup: sanity check file size in read_gitfile_gently
- setup: add gentle version of read_gitfile
Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.
Waiting for a reroll.
* jc/gitignore-precedence (2015-04-22) 1 commit
(merged to 'next' on 2015-05-05 at 6ef85da)
+ ignore: info/exclude should trump core.excludesfile
core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
to be overridden by repository-specific .git/info/exclude file, but
the order was swapped from the beginning. This belatedly fixes it.
Will merge to 'master' in the third batch.
* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
(merged to 'next' on 2015-05-05 at b3f9a45)
+ stop putting argv[0] dirname at front of PATH
We have prepended $GIT_EXEC_PATH and the path "git" is installed in
(typically "/usr/bin") to $PATH when invoking subprograms and hooks
for almost eternity, but the original use case the latter tried to
support was semi-bogus (i.e. install git to /opt/foo/git and run it
without having /opt/foo on $PATH), and more importantly it has
become less and less relevant as Git grew more mainstream (i.e. the
users would _want_ to have it on their $PATH). Stop prepending the
path in which "git" is installed to users' $PATH, as that would
interfere the command search order people depend on (e.g. they may
not like versions of programs that are unrelated to Git in /usr/bin
and want to override them by having different ones in /usr/local/bin
and have the latter directory earlier in their $PATH).
Will merge to 'master' in the third batch.
* jk/stash-require-clean-index (2015-04-22) 3 commits
(merged to 'next' on 2015-05-05 at b5f6c32)
+ stash: require a clean index to apply
+ t3903: avoid applying onto dirty index
+ t3903: stop hard-coding commit sha1s
"git stash pop/apply" forgot to make sure that not just the working
tree is clean but also the index is clean. The latter is important
as a stash application can conflict and the index will be used for
conflict resolution.
Will merge to 'master' in the third batch.
* jc/merge (2015-04-29) 15 commits
(merged to 'next' on 2015-05-07 at 1c56512)
+ merge: deprecate 'git merge <message> HEAD <commit>' syntax
+ merge: handle FETCH_HEAD internally
+ merge: decide if we auto-generate the message early in collect_parents()
+ merge: make collect_parents() auto-generate the merge message
+ merge: extract prepare_merge_message() logic out
+ merge: narrow scope of merge_names
+ merge: split reduce_parents() out of collect_parents()
+ merge: clarify collect_parents() logic
+ merge: small leakfix and code simplification
+ merge: do not check argc to determine number of remote heads
+ merge: clarify "pulling into void" special case
+ t5520: test pulling an octopus into an unborn branch
+ t5520: style fixes
+ merge: simplify code flow
+ merge: test the top-level merge driver
(this branch is used by jc/merge-drop-old-syntax.)
"git merge FETCH_HEAD" learned that the previous "git fetch" could
be to create an Octopus merge, i.e. recording multiple branches
that are not marked as "not-for-merge"; this allows us to lose an
old style invocation "git merge <msg> HEAD $commits..." in the
implementation of "git pull" script; the old style syntax can now
be deprecated.
Will merge to 'master' in the third batch.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
- merge: drop 'git merge <message> HEAD <commit>' syntax
(this branch uses jc/merge.)
Stop supporting "git merge <messsage> HEAD <commit>" syntax that
has been deprecated since October 2007.
Will merge to 'next' and keep there during the 2.5 cycle.
* jk/test-chain-lint (2015-04-28) 2 commits
(merged to 'next' on 2015-05-05 at e6f0290)
+ test-lib: turn on GIT_TEST_CHAIN_LINT by default
+ t7502-commit.sh: fix a broken and-chain
Developer support to automatically detect broken &&-chain in the
test scripts is now turned on by default.
Will merge to 'master' in the third batch.
* bc/connect-plink (2015-04-28) 3 commits
(merged to 'next' on 2015-05-05 at 9def2e1)
+ connect: improve check for plink to reduce false positives
+ t5601: fix quotation error leading to skipped tests
+ connect: simplify SSH connection code path
The connection initiation code for "ssh" transport tried to absorb
differences between the stock "ssh" and Putty-supplied "plink" and
its derivatives, but the logic to tell that we are using "plink"
variants were too loose and falsely triggered when "plink" appeared
anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
Will merge to 'master' in the third batch.
* jc/test-prereq-validate (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at a30464c)
+ test: validate prerequistes syntax
Help us to find broken test script that splits the body part of the
test by mistaken use of wrong kind of quotes.
Will merge to 'master' in the third batch.
* fg/document-commit-message-stripping (2015-04-27) 1 commit
(merged to 'next' on 2015-05-05 at 1892a99)
+ Documentation: clarify how "git commit" cleans up the edited log message
Will merge to 'master' in the third batch.
* ah/usage-strings (2015-05-03) 2 commits
- branch: fix funny-sounding error message
- blame, log: format usage strings similarly to those in documentation
A few usage string updates. The tip one still needs work.
* kn/cat-file-literally (2015-05-06) 4 commits
- t1006: add tests for git cat-file --allow-unknown-type
- cat-file: teach cat-file a '--allow-unknown-type' option
- cat-file: make the options mutually exclusive
- sha1_file: support reading from a loose object of unknown type
Add the "--allow-unknown-type" option to "cat-file" to allow
inspecting loose objects of an experimental or a broken type.
Will merge to 'next'.
* nd/diff-i-t-a (2015-03-23) 1 commit
(merged to 'next' on 2015-05-05 at cba9cd9)
+ diff-lib.c: adjust position of i-t-a entries in diff
Originally merged to 'next' on 2015-03-24
After "git add -N", the path appeared in output of "git diff HEAD"
and "git diff --cached HEAD", leading "git status" to classify it
as "Changes to be committed". Such a path, however, is not yet to
be scheduled to be committed. "git diff" showed the change to the
path as modification, not as a "new file", in the header of its
output.
Treat such paths as "yet to be added to the index but Git already
know about them"; "git diff HEAD" and "git diff --cached HEAD"
should not talk about them, and "git diff" should show them as new
files yet to be added to the index.
Will merge to 'master' in the third batch.
--------------------------------------------------
[Discarded]
* mh/ref-directory-file (2015-05-05) 19 commits
. SQUASH???
. reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
. ref_transaction_commit(): delete extra "the" from error message
. ref_transaction_commit(): provide better error messages
. rename_ref(): integrate lock_ref_sha1_basic() errors into ours
. lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
. lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
. verify_refname_available(): report errors via a "struct strbuf *err"
. verify_refname_available(): rename function
. refs: check for D/F conflicts among refs processed in a transaction
. ref_transaction_commit(): use a string_list for detecting duplicates
. is_refname_available(): use dirname in first loop
. struct nonmatching_ref_data: store a refname instead of a ref_entry
. report_refname_conflict(): inline function
. entry_matches(): inline function
. is_refname_available(): convert local variable "dirname" to strbuf
. is_refname_available(): avoid shadowing "dir" variable
. is_refname_available(): explain the reason for an early exit
. t1404: new tests of D/F conflicts within ref transactions
(this branch uses mh/ref-lock-avoid-running-out-of-fds.)
Reroll posted, but didn't have time to pick it up.
* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
. ref_transaction_commit(): only keep one lockfile open at a time
. ref_transaction_commit(): remove the local flags variables
. write_ref_sha1(): inline function at callers
. commit_ref_update(): new function, extracted from write_ref_sha1()
. write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
. refs.c: remove lock_fd from struct ref_lock
. t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
. update-ref: test handling large transactions properly
(this branch is used by mh/ref-directory-file.)
Superseded by mh/write-refs-sooner* series.
^ permalink raw reply [relevance 4%]
* What's cooking in git.git (May 2015, #03; Fri, 8)
@ 2015-05-08 22:26 6% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-08 22:26 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* dl/branch-error-message (2015-05-06) 1 commit
- branch: do not call a "remote-tracking branch" a "remote branch"
Will merge to 'next'.
* dl/subtree-push-no-squash (2015-05-07) 1 commit
- contrib/subtree: there's no push --squash
Will merge to 'next'.
* ld/p4-editor-multi-words (2015-05-07) 2 commits
- git-p4: fix handling of multi-word P4EDITOR
- git-p4: add failing test for P4EDITOR handling
Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
did not let the shell interpolate the contents of the environment
variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
Make it in line with the rest of Git, as well as with Perforce.
Reported to break some tests that assume the non-interpolating
behaviour that need to be fixed.
* dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
- contrib/subtree: portability fix for string printing
"git subtree" script (in contrib/) used "echo -n" to produce
progress messages in a non-portable way.
Will merge to 'next'.
* ls/http-ssl-cipher-list (2015-05-08) 1 commit
- http: add support for specifying an SSL cipher list
Introduce http.<url>.SSLCipherList configuration variable to tweak
the list of cipher suite to be used with libcURL when talking with
https:// sites.
Will merge to 'next'.
* ps/bundle-verify-arg (2015-05-08) 1 commit
- bundle: verify arguments more strictly
Will merge to 'next'.
* sg/help-subcommands (2015-05-08) 1 commit
- command-list.txt: fix whitespace inconsistency
A preparatory clean-up step.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* kk/log-merges-config (2015-04-21) 5 commits
- bash-completion: add support for git-log --merges= and log.merges
- t4202-log: add tests for --merges=
- Documentation: add git-log --merges= option and log.merges config. var
- log: honor log.merges= option
- revision: add --merges={show|only|hide} option
"git log" (but not other commands in the "log" family) learned to
pay attention to the log.merges configuration variable that can be
set to "show" (the normal behaviour), "only" (hide non-merge
commits), or "hide" (hide merge commits). --merges=(show|only|hide)
can be used to override the setting from the command line.
The documentation may need to be updated once more ($gmane/267250).
Waiting for a reroll.
* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
- t/lib-git-svn: check same httpd module dirs as lib-httpd
- t/lib-httpd: load mod_unixd
This is the first two commits in a three-patch series $gmane/266962
Will be rerolled.
with updated log message ($gmane/268061).
* mh/numparse (2015-03-19) 14 commits
- diff_opt_parse(): use convert_i() when handling --abbrev=<num>
- diff_opt_parse(): use convert_i() when handling "-l<num>"
- opt_arg(): simplify pointer handling
- opt_arg(): report errors parsing option values
- opt_arg(): use convert_i() in implementation
- opt_arg(): val is always non-NULL
- builtin_diff(): detect errors when parsing --unified argument
- handle_revision_opt(): use convert_ui() when handling "--abbrev="
- strtoul_ui(), strtol_i(): remove functions
- handle_revision_opt(): use convert_i() when handling "-<digit>"
- handle_revision_opt(): use skip_prefix() in many places
- write_subdirectory(): use convert_ui() for parsing mode
- cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
- numparse: new module for parsing integral numbers
Many codepaths use unchecked use of strtol() and friends (or even
worse, atoi()). Introduce a set of wrappers that try to be more
careful.
Will be rerolled.
($gmane/268058).
* tf/gitweb-project-listing (2015-03-19) 5 commits
- gitweb: make category headings into links when they are directories
- gitweb: optionally set project category from its pathname
- gitweb: add a link under the search box to clear a project filter
- gitweb: if the PATH_INFO is incomplete, use it as a project_filter
- gitweb: fix typo in man page
Update gitweb to make it more pleasant to deal with a hierarchical
forest of repositories.
Any comments from those who use or have their own code in Gitweb?
* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
- "-" and "@{-1}" on various programs
Lose special case code to make a lone dash "-" mean the previous
branch aka "@{-1}" from a handful subcommands, and instead support
the notation throughout the system by reimplementing it at the
revisions layer.
Needs tests, documentation updates, etc. Also does only a half-way
job dealing with range notation, which needs to be fixed before the
series goes anywhere.
* nd/list-files (2015-02-09) 21 commits
- t3080: tests for git-list-files
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: make alias 'ls' default to 'list-files'
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
Reroll to base on wt-status work ($gmane/265142) has seen some
positive discussions.
Waiting for a further polished reroll ($gmane/265534).
* js/fsck-opt (2015-01-21) 19 commits
- fsck: support ignoring objects in `git fsck` via fsck.skiplist
- fsck: git receive-pack: support excluding objects from fsck'ing
- fsck: introduce `git fsck --quick`
- fsck: support demoting errors to warnings
- fsck: document the new receive.fsck.* options
- fsck: allow upgrading fsck warnings to errors
- fsck: optionally ignore specific fsck issues completely
- fsck: disallow demoting grave fsck errors to warnings
- fsck: add a simple test for receive.fsck.*
- fsck: make fsck_tag() warn-friendly
- fsck: handle multiple authors in commits specially
- fsck: make fsck_commit() warn-friendly
- fsck: make fsck_ident() warn-friendly
- fsck: report the ID of the error/warning
- fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
- fsck: offer a function to demote fsck errors to warnings
- fsck: provide a function to parse fsck message IDs
- fsck: introduce identifiers for fsck messages
- fsck: introduce fsck options
"fsck.warnings = <list of error tokens>" I suggested turned out to
be an unpopular choice (sorry Dscho).
Expecting a reroll.
* nd/untracked-cache (2015-03-12) 24 commits
- git-status.txt: advertisement for untracked cache
- untracked cache: guard and disable on system changes
- mingw32: add uname()
- t7063: tests for untracked cache
- update-index: test the system before enabling untracked cache
- update-index: manually enable or disable untracked cache
- status: enable untracked cache
- untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- untracked cache: mark index dirty if untracked cache is updated
- untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- untracked cache: avoid racy timestamps
- read-cache.c: split racy stat test to a separate function
- untracked cache: invalidate at index addition or removal
- untracked cache: load from UNTR index extension
- untracked cache: save to an index extension
- ewah: add convenient wrapper ewah_serialize_strbuf()
- untracked cache: don't open non-existent .gitignore
- untracked cache: mark what dirs should be recursed/saved
- untracked cache: record/validate dir mtime and reuse cached output
- untracked cache: make a wrapper around {open,read,close}dir()
- untracked cache: invalidate dirs recursively if .gitignore changes
- untracked cache: initial untracked cache validation
- untracked cache: record .gitignore information and dir hierarchy
- dir.c: optionally compute sha-1 of a .gitignore file
Need extra sets of eyes to review this.
* nd/pathspec-strip-fix (2015-04-18) 1 commit
- pathspec: adjust prefixlen after striping trailing slash
Does not quite fix ($gmane/267614).
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
* pw/remote-set-url-fetch (2014-11-26) 1 commit
- remote: add --fetch and --both options to set-url
Expecting a reroll.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll ($gmane/256591).
* hv/submodule-config (2014-11-11) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit.
--------------------------------------------------
[Cooking]
* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
(merged to 'next' on 2015-05-05 at 1eb279f)
+ daemon: unbreak NO_IPV6 build regression
"git daemon" fails to build from the source under NO_IPV6
configuration (regression in 2.4).
Will merge to 'master' in the second batch.
* sb/prefix-path-free-results (2015-05-05) 1 commit
(merged to 'next' on 2015-05-07 at 64f15a8)
+ prefix_path(): unconditionally free results in the callers
Code clean-up (not a leak-fix).
Will merge to 'master' in the second batch.
* sg/completion-omit-credential-helpers (2015-05-06) 1 commit
- completion: remove credential helpers from porcelain commands
The Git subcommand completion (in contrib/) listed credential
helpers among candidates, which is not something the end user would
invoke interatively.
Will merge to 'next'.
* jk/skip-http-tests-under-no-curl (2015-05-07) 2 commits
- tests: skip dav http-push tests under NO_EXPAT=NoThanks
- t/lib-httpd.sh: skip tests if NO_CURL is defined
Test clean-up.
Will merge to 'next'.
* mh/ref-directory-file (2015-05-05) 19 commits
- SQUASH???
- reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
- ref_transaction_commit(): delete extra "the" from error message
- ref_transaction_commit(): provide better error messages
- rename_ref(): integrate lock_ref_sha1_basic() errors into ours
- lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
- lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
- verify_refname_available(): report errors via a "struct strbuf *err"
- verify_refname_available(): rename function
- refs: check for D/F conflicts among refs processed in a transaction
- ref_transaction_commit(): use a string_list for detecting duplicates
- is_refname_available(): use dirname in first loop
- struct nonmatching_ref_data: store a refname instead of a ref_entry
- report_refname_conflict(): inline function
- entry_matches(): inline function
- is_refname_available(): convert local variable "dirname" to strbuf
- is_refname_available(): avoid shadowing "dir" variable
- is_refname_available(): explain the reason for an early exit
- t1404: new tests of D/F conflicts within ref transactions
(this branch uses mh/ref-lock-avoid-running-out-of-fds.)
Expecting a reroll.
* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
(merged to 'next' on 2015-05-07 at 8176de7)
+ pathspec: avoid the need of "--" when wildcard is used
A heuristic to help the "git <cmd> <revs> <pathspec>" command line
convention to catch mistyped paths is to make sure all the non-rev
parameters in the later part of the command line are names of the
files in the working tree, but that means "git grep $str -- \*.c"
must always be disambiguated with "--", because nobody sane will
create a file whose name literally is asterisk-dot-see. Loosen the
heuristic to declare that with a wildcard string the user likely
meant to give us a pathspec.
Will merge to 'master' in the third batch.
* pt/pull-tests (2015-05-03) 7 commits
- t5521: test --dry-run does not make any changes
- t5520: test --rebase failure on unborn branch with index
- t5520: test --rebase with multiple branches
- t5520: test work tree fast-forward when fetch updates head
- t5520: test for failure if index has unresolved entries
- t5520: implement tests for no merge candidates cases
- t5520: test pulling multiple branches into an empty repository
Add more test coverage to "git pull". This conflicts slightly with
a new test jc/merge topic adds, but resolution is fairly trivial.
Expecting a reroll ($gmane/268391).
* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
(merged to 'next' on 2015-05-07 at 2beb429)
+ completion: fix and update 'git log --decorate=' options
The completion for "log --decorate=" parameter value was incorrect.
Will merge to 'master' in the second batch.
* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
(merged to 'next' on 2015-05-07 at 00b4bd9)
+ completion: remove redundant __git_compute_all_commands() call
Code simplification.
Will merge to 'master' in the second batch.
* jc/hash-object (2015-05-05) 4 commits
(merged to 'next' on 2015-05-07 at 9b81a06)
+ write_sha1_file(): do not use a separate sha1[] array
+ t1007: add hash-object --literally tests
+ hash-object --literally: fix buffer overrun with extra-long object type
+ git-hash-object.txt: document --literally option
"hash-object --literally" introduced in v2.2 was not prepared to
take a really long object type name.
Will merge to 'master' in the second batch.
* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
(merged to 'next' on 2015-05-05 at 12391f1)
+ config: use error() instead of fprintf(stderr, ...)
Some error messages in "git config" were emitted without calling
the usual error() facility.
Will merge to 'master' in the second batch.
* jc/clone-bundle (2015-04-30) 1 commit
- repack: optionally create a clone.bundle
Still an early WIP
* jk/at-push-sha1 (2015-05-03) 12 commits
- for-each-ref: accept "%(push)" format
- for-each-ref: use skip_prefix instead of starts_with
- sha1_name: implement @{push} shorthand
- sha1_name: refactor interpret_upstream_mark
- sha1_name: refactor upstream_mark
- remote.c: add branch_get_push
- remote.c: report specific errors from branch_get_upstream
- remote.c: introduce branch_get_upstream helper
- remote.c: provide per-branch pushremote name
- remote.c: hoist branch.*.remote lookup out of remote_get_1
- remote.c: drop "remote" pointer from "struct branch"
- remote.c: drop default_remote_name variable
Introduce <branch>@{push} short-hand to denote the remote-tracking
branch that tracks the branch at the remote the <branch> would be
pushed to.
Expecting a reroll ($gmane/268419, etc.).
* jk/rebase-quiet-noop (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 82780b9)
+ rebase: silence "git checkout" for noop rebase
"git rebase --quiet" was not quite quiet when there is nothing to
do.
Will merge to 'master' in the second batch.
* ld/p4-case-fold (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 03ecbd0)
+ git-p4: add failing tests for case-folding p4d
Will merge to 'master' in the second batch.
* va/fix-git-p4-tests (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 795e858)
+ git-p4: t9814: prevent --chain-lint failure
Will merge to 'master' in the second batch.
* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
(merged to 'next' on 2015-05-07 at 849a24d)
+ filter-branch: avoid passing commit message through sed
"filter-branch" corrupted commit log message that ends with an
incomplete line on platforms with some "sed" implementations that
munge such a line. Work it around by avoiding to use "sed".
Will merge to 'master' in the second batch.
* ph/rebase-i-redo (2015-04-29) 1 commit
(merged to 'next' on 2015-05-07 at 8fc1f52)
+ rebase -i: redo tasks that die during cherry-pick
"git rebase -i" moved the "current" command from "todo" to "done" a
bit too prematurely, losing a step when a "pick" did not even start.
Will merge to 'master' in the third batch.
* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
(merged to 'next' on 2015-05-07 at 64d9a20)
+ git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
Catch a programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.
Will merge to 'master' in the second batch.
* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
(merged to 'next' on 2015-05-05 at 8e1974e)
+ blame: CRLF in the working tree and LF in the repo
Some time ago, "git blame" (incorrectly) lost the convert_to_git()
call when synthesizing a fake "tip" commit that represents the
state in the working tree, which broke folks who record the history
with LF line ending to make their project portabile across
platforms while terminating lines in their working tree files with
CRLF for their platform.
Will merge to 'master' in the second batch.
* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
(merged to 'next' on 2015-05-05 at bd94828)
+ fmt-merge-msg: plug small leak of commit buffer
Originally merged to 'next' on 2015-04-21
Will merge to 'master' in the second batch.
* ee/clean-remove-dirs (2015-04-26) 5 commits
- clean: improve performance when removing lots of directories
- p7300: add performance tests for clean
- t7300: add tests to document behavior of clean and nested git
- setup: sanity check file size in read_gitfile_gently
- setup: add gentle version of read_gitfile
Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.
Waiting for a reroll.
* jk/still-interesting (2015-04-17) 1 commit
(merged to 'next' on 2015-05-05 at 6a5c89c)
+ limit_list: avoid quadratic behavior from still_interesting
Originally merged to 'next' on 2015-04-21
"git rev-list --objects $old --not --all" to see if everything that
is reachable from $old is already connected to the existing refs
was very inefficient.
Will merge to 'master' in the second batch.
* ls/p4-changes-block-size (2015-04-20) 1 commit
(merged to 'next' on 2015-05-05 at 92596d4)
+ git-p4: use -m when running p4 changes
Originally merged to 'next' on 2015-04-21
"git p4" learned "--changes-block-size <n>" to read the changes in
chunks from Perforce, instead of making one call to "p4 changes"
that may trigger "too many rows scanned" error from Perforce.
Will merge to 'master' in the second batch.
* mm/add-p-split-error (2015-04-16) 5 commits
(merged to 'next' on 2015-05-05 at c556011)
+ stash -p: demonstrate failure of split with mixed y/n
+ t3904-stash-patch: factor PERL prereq at the top of the file
+ t3904-stash-patch: fix test description
+ add -p: demonstrate failure when running 'edit' after a split
+ t3701-add-interactive: simplify code
Originally merged to 'next' on 2015-04-23
When "add--interactive" splits a hunk into two overlapping hunks
and then let the user choose only one, it sometimes feeds an
incorrect patch text to "git apply". Add tests to demonstrate
this.
I have a slight suspicion that this may be $gmane/87202 coming back
and biting us (I seem to have said "let's run with this and see
what happens" back then).
Will merge to 'master' in the second batch.
* tb/t0027-crlf (2015-04-25) 3 commits
(merged to 'next' on 2015-05-05 at 36accbb)
+ t0027: Add repoMIX and LF_nul
+ t0027: support NATIVE_CRLF platforms
+ t0027: cleanup: rename functions; avoid non-leading TABs
Originally merged to 'next' on 2015-04-21
More line-ending tests.
Will merge to 'master' in the second batch.
* jc/gitignore-precedence (2015-04-22) 1 commit
(merged to 'next' on 2015-05-05 at 6ef85da)
+ ignore: info/exclude should trump core.excludesfile
core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
to be overridden by repository-specific .git/info/exclude file, but
the order was swapped from the beginning. This belatedly fixes it.
Will merge to 'master' in the third batch.
* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
(merged to 'next' on 2015-05-05 at b3f9a45)
+ stop putting argv[0] dirname at front of PATH
We have prepended $GIT_EXEC_PATH and the path "git" is installed in
(typically "/usr/bin") to $PATH when invoking subprograms and hooks
for almost eternity, but the original use case the latter tried to
support was semi-bogus (i.e. install git to /opt/foo/git and run it
without having /opt/foo on $PATH), and more importantly it has
become less and less relevant as Git grew more mainstream (i.e. the
users would _want_ to have it on their $PATH). Stop prepending the
path in which "git" is installed to users' $PATH, as that would
interfere the command search order people depend on (e.g. they may
not like versions of programs that are unrelated to Git in /usr/bin
and want to override them by having different ones in /usr/local/bin
and have the latter directory earlier in their $PATH).
Will merge to 'master' in the third batch.
* jk/stash-require-clean-index (2015-04-22) 3 commits
(merged to 'next' on 2015-05-05 at b5f6c32)
+ stash: require a clean index to apply
+ t3903: avoid applying onto dirty index
+ t3903: stop hard-coding commit sha1s
"git stash pop/apply" forgot to make sure that not just the working
tree is clean but also the index is clean. The latter is important
as a stash application can conflict and the index will be used for
conflict resolution.
Will merge to 'master' in the third batch.
* jc/merge (2015-04-29) 15 commits
(merged to 'next' on 2015-05-07 at 1c56512)
+ merge: deprecate 'git merge <message> HEAD <commit>' syntax
+ merge: handle FETCH_HEAD internally
+ merge: decide if we auto-generate the message early in collect_parents()
+ merge: make collect_parents() auto-generate the merge message
+ merge: extract prepare_merge_message() logic out
+ merge: narrow scope of merge_names
+ merge: split reduce_parents() out of collect_parents()
+ merge: clarify collect_parents() logic
+ merge: small leakfix and code simplification
+ merge: do not check argc to determine number of remote heads
+ merge: clarify "pulling into void" special case
+ t5520: test pulling an octopus into an unborn branch
+ t5520: style fixes
+ merge: simplify code flow
+ merge: test the top-level merge driver
(this branch is used by jc/merge-drop-old-syntax.)
"git merge FETCH_HEAD" learned that the previous "git fetch" could
be to create an Octopus merge, i.e. recording multiple branches
that are not marked as "not-for-merge"; this allows us to lose an
old style invocation "git merge <msg> HEAD $commits..." in the
implementation of "git pull" script; the old style syntax can now
be deprecated.
Will merge to 'master' in the third batch.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
- merge: drop 'git merge <message> HEAD <commit>' syntax
(this branch uses jc/merge.)
Stop supporting "git merge <messsage> HEAD <commit>" syntax that
has been deprecated since October 2007.
Will merge to 'next' and keep there during the 2.5 cycle.
* jk/test-chain-lint (2015-04-28) 2 commits
(merged to 'next' on 2015-05-05 at e6f0290)
+ test-lib: turn on GIT_TEST_CHAIN_LINT by default
+ t7502-commit.sh: fix a broken and-chain
Developer support to automatically detect broken &&-chain in the
test scripts is now turned on by default.
Will merge to 'master' in the third batch.
* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
- ref_transaction_commit(): only keep one lockfile open at a time
- ref_transaction_commit(): remove the local flags variables
- write_ref_sha1(): inline function at callers
- commit_ref_update(): new function, extracted from write_ref_sha1()
- write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- refs.c: remove lock_fd from struct ref_lock
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
(this branch is used by mh/ref-directory-file.)
"git update-ref --stdin" was converted to be "transactional" some
time ago, but the ref transaction machinery was not prepared to
handle many refs, primarily because it tried to keep the loose ref
files open at the same time, which would cause us to hit the ENFILE
limit. Fix the ref_transaction_commit() code not to keep the file
descriptors open unnecessarily.
We would want to apply the fix to older codebase, but this fix is
unfortunately done to apply only on v2.4.x track.
Expecting a rebase to older codebase.
* bc/connect-plink (2015-04-28) 3 commits
(merged to 'next' on 2015-05-05 at 9def2e1)
+ connect: improve check for plink to reduce false positives
+ t5601: fix quotation error leading to skipped tests
+ connect: simplify SSH connection code path
The connection initiation code for "ssh" transport tried to absorb
differences between the stock "ssh" and Putty-supplied "plink" and
its derivatives, but the logic to tell that we are using "plink"
variants were too loose and falsely triggered when "plink" appeared
anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
Will merge to 'master' in the third batch.
* jc/test-prereq-validate (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at a30464c)
+ test: validate prerequistes syntax
Help us to find broken test script that splits the body part of the
test by mistaken use of wrong kind of quotes.
Will merge to 'master' in the third batch.
* fg/document-commit-message-stripping (2015-04-27) 1 commit
(merged to 'next' on 2015-05-05 at 1892a99)
+ Documentation: clarify how "git commit" cleans up the edited log message
Will merge to 'master' in the third batch.
* ah/usage-strings (2015-05-03) 2 commits
- branch: fix funny-sounding error message
- blame, log: format usage strings similarly to those in documentation
A few usage string updates. The tip one still needs work.
* jk/reading-packed-refs (2015-04-16) 9 commits
(merged to 'next' on 2015-05-05 at 89b5694)
+ t1430: add another refs-escape test
+ read_packed_refs: avoid double-checking sane refs
+ strbuf_getwholeline: use getdelim if it is available
+ strbuf_getwholeline: avoid calling strbuf_grow
+ strbuf_addch: avoid calling strbuf_grow
+ config: use getc_unlocked when reading from file
+ strbuf_getwholeline: use getc_unlocked
+ git-compat-util: add fallbacks for unlocked stdio
+ strbuf_getwholeline: use getc macro
Originally merged to 'next' on 2015-04-21
An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
to read packed-refs file revealed that the former is unacceptably
inefficient.
Will merge to 'master' in the second batch.
* kn/cat-file-literally (2015-05-06) 4 commits
- t1006: add tests for git cat-file --allow-unknown-type
- cat-file: teach cat-file a '--allow-unknown-type' option
- cat-file: make the options mutually exclusive
- sha1_file: support reading from a loose object of unknown type
Add the "--allow-unknown-type" option to "cat-file" to allow
inspecting loose objects of an experimental or a broken type.
This is v10 $gmane/267960 with fixup! squashed in.
* lm/squelch-bg-progress (2015-04-15) 2 commits
(merged to 'next' on 2015-05-05 at a2fe74d)
+ compat/mingw: stubs for getpgid() and tcgetpgrp()
+ progress: no progress in background
Originally merged to 'next' on 2015-04-21
Many long-running operations show progress eye-candy, even when
they are later backgrounded. Hide the eye-candy when the process
is sent to the background instead.
Will merge to 'master' in the second batch.
* va/p4-client-path (2015-04-23) 2 commits
(merged to 'next' on 2015-05-05 at 852facc)
+ git-p4: improve client path detection when branches are used
+ t9801: check git-p4's branch detection with client spec enabled
Originally merged to 'next' on 2015-04-23
git p4 attempts to better handle branches in Perforce.
Will merge to 'master' in the second batch.
* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
(merged to 'next' on 2015-05-05 at a8de68e)
+ sha1_file: squelch "packfile cannot be accessed" warnings
Originally merged to 'next' on 2015-04-21
Will merge to 'master' in the second batch.
* pt/credential-xdg (2015-03-25) 4 commits
(merged to 'next' on 2015-05-05 at 0d6711f)
+ t0302: "unreadable" test needs POSIXPERM
+ t0302: test credential-store support for XDG_CONFIG_HOME
+ git-credential-store: support XDG_CONFIG_HOME
+ git-credential-store: support multiple credential files
(this branch is used by pt/xdg-config-path.)
Originally merged to 'next' on 2015-03-25
Tweak the sample "store" backend of the credential helper to honor
XDG configuration file locations when specified.
Will merge to 'master' in the second batch.
* pt/xdg-config-path (2015-05-06) 7 commits
(merged to 'next' on 2015-05-07 at 38e7071)
+ path.c: remove home_config_paths()
+ git-config: replace use of home_config_paths()
+ git-commit: replace use of home_config_paths()
+ credential-store.c: replace home_config_paths() with xdg_config_home()
+ dir.c: replace home_config_paths() with xdg_config_home()
+ attr.c: replace home_config_paths() with xdg_config_home()
+ path.c: implement xdg_config_home()
(this branch uses pt/credential-xdg.)
Code clean-up for xdg configuration path support.
Will merge to 'master' in the second batch.
* nd/diff-i-t-a (2015-03-23) 1 commit
(merged to 'next' on 2015-05-05 at cba9cd9)
+ diff-lib.c: adjust position of i-t-a entries in diff
Originally merged to 'next' on 2015-03-24
After "git add -N", the path appeared in output of "git diff HEAD"
and "git diff --cached HEAD", leading "git status" to classify it
as "Changes to be committed". Such a path, however, is not yet to
be scheduled to be committed. "git diff" showed the change to the
path as modification, not as a "new file", in the header of its
output.
Treat such paths as "yet to be added to the index but Git already
know about them"; "git diff HEAD" and "git diff --cached HEAD"
should not talk about them, and "git diff" should show them as new
files yet to be added to the index.
Will merge to 'master' in the third batch.
* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
(merged to 'next' on 2015-05-05 at 42bd845)
+ index-pack: kill union delta_base to save memory
+ index-pack: reduce object_entry size to save memory
Originally merged to 'next' on 2015-04-21
Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
Will merge to 'master' in the second batch.
* nd/multiple-work-trees (2015-03-31) 41 commits
(merged to 'next' on 2015-05-05 at 0f04a1c)
+ prune --worktrees: fix expire vs worktree existence condition
+ t1501: fix test with split index
+ t2026: fix broken &&-chain
+ t2026 needs procondition SANITY
+ git-checkout.txt: a note about multiple checkout support for submodules
+ checkout: add --ignore-other-wortrees
+ checkout: pass whole struct to parse_branchname_arg instead of individual flags
+ git-common-dir: make "modules/" per-working-directory directory
+ checkout: do not fail if target is an empty directory
+ t2025: add a test to make sure grafts is working from a linked checkout
+ checkout: don't require a work tree when checking out into a new one
+ git_path(): keep "info/sparse-checkout" per work-tree
+ count-objects: report unused files in $GIT_DIR/worktrees/...
+ gc: support prune --worktrees
+ gc: factor out gc.pruneexpire parsing code
+ gc: style change -- no SP before closing parenthesis
+ checkout: clean up half-prepared directories in --to mode
+ checkout: reject if the branch is already checked out elsewhere
+ prune: strategies for linked checkouts
+ checkout: support checking out into a new working directory
+ use new wrapper write_file() for simple file writing
+ wrapper.c: wrapper to open a file, fprintf then close
+ setup.c: support multi-checkout repo setup
+ setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
+ setup.c: convert check_repository_format_gently to use strbuf
+ setup.c: detect $GIT_COMMON_DIR in is_git_directory()
+ setup.c: convert is_git_directory() to use strbuf
+ git-stash: avoid hardcoding $GIT_DIR/logs/....
+ *.sh: avoid hardcoding $GIT_DIR/hooks/...
+ git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
+ $GIT_COMMON_DIR: a new environment variable
+ commit: use SEQ_DIR instead of hardcoding "sequencer"
+ fast-import: use git_path() for accessing .git dir instead of get_git_dir()
+ reflog: avoid constructing .lock path with git_path
+ *.sh: respect $GIT_INDEX_FILE
+ git_path(): be aware of file relocation in $GIT_DIR
+ path.c: group git_path(), git_pathdup() and strbuf_git_path() together
+ path.c: rename vsnpath() to do_git_path()
+ git_snpath(): retire and replace with strbuf_git_path()
+ path.c: make get_pathname() call sites return const char *
+ path.c: make get_pathname() return strbuf instead of static buffer
Originally merged to 'next' on 2015-04-02
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
Will merge to 'master' in the second batch.
^ permalink raw reply [relevance 6%]
* What's cooking in git.git (May 2015, #02; Wed, 6)
@ 2015-05-06 19:59 5% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-06 19:59 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The first batch for the next feature release (tentatively called 2.5)
has been merged to 'master'. They mostly are fixes that are meant
for the first maintenance release for 2.4.x track. The tip of 'next'
has been rewound and rebuilt.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* bc/object-id (2015-03-13) 10 commits
(merged to 'next' on 2015-05-05 at 975002f)
+ apply: convert threeway_stage to object_id
+ patch-id: convert to use struct object_id
+ commit: convert parts to struct object_id
+ diff: convert struct combine_diff_path to object_id
+ bulk-checkin.c: convert to use struct object_id
+ zip: use GIT_SHA1_HEXSZ for trailers
+ archive.c: convert to use struct object_id
+ bisect.c: convert leaf functions to use struct object_id
+ define utility functions for object IDs
+ define a structure for object IDs
Originally merged to 'next' on 2015-03-24
Identify parts of the code that knows that we use SHA-1 hash to
name our objects too much, and use (1) symbolic constants instead
of hardcoded 20 as byte count and/or (2) use struct object_id
instead of unsigned char [20] for object names.
* cn/bom-in-gitignore (2015-04-16) 5 commits
(merged to 'next' on 2015-05-05 at 8aa8b91)
+ attr: skip UTF8 BOM at the beginning of the input file
+ config: use utf8_bom[] from utf.[ch] in git_parse_source()
+ utf8-bom: introduce skip_utf8_bom() helper
+ add_excludes_from_file: clarify the bom skipping logic
+ dir: allow a BOM at the beginning of exclude files
Originally merged to 'next' on 2015-04-21
Teach the codepaths that read .gitignore and .gitattributes files
that these files encoded in UTF-8 may have UTF-8 BOM marker at the
beginning; this makes it in line with what we do for configuration
files already.
* ep/fix-test-lib-functions-report (2015-04-16) 1 commit
(merged to 'next' on 2015-05-05 at e49e876)
+ test-lib-functions.sh: fix the second argument to some helper functions
Originally merged to 'next' on 2015-04-21
* jc/diff-no-index-d-f (2015-03-26) 2 commits
(merged to 'next' on 2015-05-05 at 61538ca)
+ diff-no-index: align D/F handling with that of normal Git
+ diff-no-index: DWIM "diff D F" into "diff D/F F"
Originally merged to 'next' on 2015-03-27
The usual "git diff" when seeing a file turning into a directory
showed a patchset to remove the file and create all files in the
directory, but "git diff --no-index" simply refused to work. Also,
when asked to compare a file and a directory, imitate POSIX "diff"
and compare the file with the file with the same name in the
directory, instead of refusing to run.
* jc/epochtime-wo-tz (2015-04-15) 2 commits
(merged to 'next' on 2015-05-05 at 3d10988)
+ parse_date_basic(): let the system handle DST conversion
+ parse_date_basic(): return early when given a bogus timestamp
Originally merged to 'next' on 2015-04-21
"git commit --date=now" or anything that relies on approxidate lost
the daylight-saving-time offset.
* jk/init-core-worktree-at-root (2015-04-02) 1 commit
(merged to 'next' on 2015-05-05 at 65c7453)
+ init: don't set core.worktree when initializing /.git
Originally merged to 'next' on 2015-04-08
We avoid setting core.worktree when the repository location is the
".git" directory directly at the top level of the working tree, but
the code misdetected the case in which the working tree is at the
root level of the filesystem (which arguably is a silly thing to
do, but still valid).
* jk/prune-mtime (2015-04-20) 3 commits
(merged to 'next' on 2015-05-05 at 6c0a311)
+ sha1_file: only freshen packs once per run
+ sha1_file: freshen pack objects before loose
+ reachable: only mark local objects as recent
Originally merged to 'next' on 2015-04-21
Access to objects in repositories that borrow from another one on a
slow NFS server unnecessarily got more expensive due to recent code
becoming more cautious in a naive way not to lose objects to pruning.
* jk/type-from-string-gently (2015-04-17) 1 commit
(merged to 'next' on 2015-05-05 at 73b5c2a)
+ type_from_string_gently: make sure length matches
Originally merged to 'next' on 2015-04-20
"git cat-file bl $blob" failed to barf even though there is no
object type that is "bl".
* ld/p4-filetype-detection (2015-04-04) 3 commits
(merged to 'next' on 2015-05-05 at ce95858)
+ git-p4: fix filetype detection on files opened exclusively
+ git-p4: small fix for locked-file-move-test
+ git-p4: fix small bug in locked test scripts
Originally merged to 'next' on 2015-04-08
* mh/show-branch-topic (2015-03-31) 1 commit
(merged to 'next' on 2015-05-05 at 43c6237)
+ show-branch: show all local heads when only giving one rev along --topics
Originally merged to 'next' on 2015-04-08
"git show-branch --topics HEAD" (with no other arguments) did not
do anything interesting. Instead, contrast the given revision
against all the local branches by default.
* mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
(merged to 'next' on 2015-05-05 at dbe590c)
+ log -L: improve error message on malformed argument
+ Documentation: change -L:<regex> to -L:<funcname>
Originally merged to 'next' on 2015-04-21
Documentation fix.
* nd/t1509-chroot-test (2015-04-18) 1 commit
(merged to 'next' on 2015-05-05 at e93f60e)
+ t1509: update prepare script to be able to run t1509 in chroot again
Originally merged to 'next' on 2015-04-21
Correct test bitrot.
* oh/fix-config-default-user-name-section (2015-04-17) 1 commit
(merged to 'next' on 2015-05-05 at b4778c2)
+ config: fix settings in default_user_config template
Originally merged to 'next' on 2015-04-20
The default $HOME/.gitconfig file created upon "git config --global"
that edits it had incorrectly spelled user.name and user.email
entries in it.
* sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
(merged to 'next' on 2015-05-05 at 3d8e735)
+ line-log.c: fix a memleak
Originally merged to 'next' on 2015-04-08
* sb/test-bitmap-free-at-end (2015-04-12) 1 commit
(merged to 'next' on 2015-05-05 at 2b83c75)
+ pack-bitmap.c: fix a memleak
Originally merged to 'next' on 2015-04-14
* ts/checkout-advice-plural (2015-04-02) 1 commit
(merged to 'next' on 2015-05-05 at 546f824)
+ checkout: call a single commit "it" intead of "them"
Originally merged to 'next' on 2015-04-08
--------------------------------------------------
[New Topics]
* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
(merged to 'next' on 2015-05-05 at 1eb279f)
+ daemon: unbreak NO_IPV6 build regression
"git daemon" fails to build from the source under NO_IPV6
configuration (regression in 2.4).
Will merge to 'master' in the second batch.
* sb/prefix-path-free-results (2015-05-05) 1 commit
- prefix_path(): unconditionally free results in the callers
Code clean-up (not a leak-fix).
Will merge to 'next'.
* sg/completion-omit-credential-helpers (2015-05-05) 2 commits
- SQUASH???
- completion: remove credential helpers from porcelain commands
The Git subcommand completion (in contrib/) listed credential
helpers among candidates, which is not something the end user would
invoke interatively.
Will merge to 'next' after squashing the fix in.
* jk/skip-http-tests-under-no-curl (2015-05-06) 1 commit
- t/lib-httpd.sh: skip tests if NO_CURL is defined
Test clean-up.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* kk/log-merges-config (2015-04-21) 5 commits
- bash-completion: add support for git-log --merges= and log.merges
- t4202-log: add tests for --merges=
- Documentation: add git-log --merges= option and log.merges config. var
- log: honor log.merges= option
- revision: add --merges={show|only|hide} option
"git log" (but not other commands in the "log" family) learned to
pay attention to the log.merges configuration variable that can be
set to "show" (the normal behaviour), "only" (hide non-merge
commits), or "hide" (hide merge commits). --merges=(show|only|hide)
can be used to override the setting from the command line.
The documentation may need to be updated once more ($gmane/267250).
Waiting for a reroll.
* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
- t/lib-git-svn: check same httpd module dirs as lib-httpd
- t/lib-httpd: load mod_unixd
This is the first two commits in a three-patch series $gmane/266962
Will be rerolled.
with updated log message ($gmane/268061).
* mh/numparse (2015-03-19) 14 commits
- diff_opt_parse(): use convert_i() when handling --abbrev=<num>
- diff_opt_parse(): use convert_i() when handling "-l<num>"
- opt_arg(): simplify pointer handling
- opt_arg(): report errors parsing option values
- opt_arg(): use convert_i() in implementation
- opt_arg(): val is always non-NULL
- builtin_diff(): detect errors when parsing --unified argument
- handle_revision_opt(): use convert_ui() when handling "--abbrev="
- strtoul_ui(), strtol_i(): remove functions
- handle_revision_opt(): use convert_i() when handling "-<digit>"
- handle_revision_opt(): use skip_prefix() in many places
- write_subdirectory(): use convert_ui() for parsing mode
- cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
- numparse: new module for parsing integral numbers
Many codepaths use unchecked use of strtol() and friends (or even
worse, atoi()). Introduce a set of wrappers that try to be more
careful.
Will be rerolled.
($gmane/268058).
* tf/gitweb-project-listing (2015-03-19) 5 commits
- gitweb: make category headings into links when they are directories
- gitweb: optionally set project category from its pathname
- gitweb: add a link under the search box to clear a project filter
- gitweb: if the PATH_INFO is incomplete, use it as a project_filter
- gitweb: fix typo in man page
Update gitweb to make it more pleasant to deal with a hierarchical
forest of repositories.
Any comments from those who use or have their own code in Gitweb?
* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
- "-" and "@{-1}" on various programs
Lose special case code to make a lone dash "-" mean the previous
branch aka "@{-1}" from a handful subcommands, and instead support
the notation throughout the system by reimplementing it at the
revisions layer.
Needs tests, documentation updates, etc. Also does only a half-way
job dealing with range notation, which needs to be fixed before the
series goes anywhere.
* nd/list-files (2015-02-09) 21 commits
- t3080: tests for git-list-files
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: make alias 'ls' default to 'list-files'
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
Reroll to base on wt-status work ($gmane/265142) has seen some
positive discussions.
Waiting for a further polished reroll ($gmane/265534).
* js/fsck-opt (2015-01-21) 19 commits
- fsck: support ignoring objects in `git fsck` via fsck.skiplist
- fsck: git receive-pack: support excluding objects from fsck'ing
- fsck: introduce `git fsck --quick`
- fsck: support demoting errors to warnings
- fsck: document the new receive.fsck.* options
- fsck: allow upgrading fsck warnings to errors
- fsck: optionally ignore specific fsck issues completely
- fsck: disallow demoting grave fsck errors to warnings
- fsck: add a simple test for receive.fsck.*
- fsck: make fsck_tag() warn-friendly
- fsck: handle multiple authors in commits specially
- fsck: make fsck_commit() warn-friendly
- fsck: make fsck_ident() warn-friendly
- fsck: report the ID of the error/warning
- fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
- fsck: offer a function to demote fsck errors to warnings
- fsck: provide a function to parse fsck message IDs
- fsck: introduce identifiers for fsck messages
- fsck: introduce fsck options
"fsck.warnings = <list of error tokens>" I suggested turned out to
be an unpopular choice (sorry Dscho).
Expecting a reroll.
* nd/untracked-cache (2015-03-12) 24 commits
- git-status.txt: advertisement for untracked cache
- untracked cache: guard and disable on system changes
- mingw32: add uname()
- t7063: tests for untracked cache
- update-index: test the system before enabling untracked cache
- update-index: manually enable or disable untracked cache
- status: enable untracked cache
- untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- untracked cache: mark index dirty if untracked cache is updated
- untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- untracked cache: avoid racy timestamps
- read-cache.c: split racy stat test to a separate function
- untracked cache: invalidate at index addition or removal
- untracked cache: load from UNTR index extension
- untracked cache: save to an index extension
- ewah: add convenient wrapper ewah_serialize_strbuf()
- untracked cache: don't open non-existent .gitignore
- untracked cache: mark what dirs should be recursed/saved
- untracked cache: record/validate dir mtime and reuse cached output
- untracked cache: make a wrapper around {open,read,close}dir()
- untracked cache: invalidate dirs recursively if .gitignore changes
- untracked cache: initial untracked cache validation
- untracked cache: record .gitignore information and dir hierarchy
- dir.c: optionally compute sha-1 of a .gitignore file
Need extra sets of eyes to review this.
* nd/pathspec-strip-fix (2015-04-18) 1 commit
- pathspec: adjust prefixlen after striping trailing slash
Does not quite fix ($gmane/267614).
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
* pw/remote-set-url-fetch (2014-11-26) 1 commit
- remote: add --fetch and --both options to set-url
Expecting a reroll.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll ($gmane/256591).
* hv/submodule-config (2014-11-11) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit.
--------------------------------------------------
[Cooking]
* mh/ref-directory-file (2015-05-05) 19 commits
- SQUASH???
- reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
- ref_transaction_commit(): delete extra "the" from error message
- ref_transaction_commit(): provide better error messages
- rename_ref(): integrate lock_ref_sha1_basic() errors into ours
- lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
- lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
- verify_refname_available(): report errors via a "struct strbuf *err"
- verify_refname_available(): rename function
- refs: check for D/F conflicts among refs processed in a transaction
- ref_transaction_commit(): use a string_list for detecting duplicates
- is_refname_available(): use dirname in first loop
- struct nonmatching_ref_data: store a refname instead of a ref_entry
- report_refname_conflict(): inline function
- entry_matches(): inline function
- is_refname_available(): convert local variable "dirname" to strbuf
- is_refname_available(): avoid shadowing "dir" variable
- is_refname_available(): explain the reason for an early exit
- t1404: new tests of D/F conflicts within ref transactions
(this branch uses mh/ref-lock-avoid-running-out-of-fds.)
Expecting a reroll.
* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
- pathspec: avoid the need of "--" when wildcard is used
A heuristic to help the "git <cmd> <revs> <pathspec>" command line
convention to catch mistyped paths is to make sure all the non-rev
parameters in the later part of the command line are names of the
files in the working tree, but that means "git grep $str -- \*.c"
must always be disambiguated with "--", because nobody sane will
create a file whose name literally is asterisk-dot-see. Loosen the
heuristic to declare that with a wildcard string the user likely
meant to give us a pathspec.
Will merge to 'next'.
* pt/pull-tests (2015-05-03) 7 commits
- t5521: test --dry-run does not make any changes
- t5520: test --rebase failure on unborn branch with index
- t5520: test --rebase with multiple branches
- t5520: test work tree fast-forward when fetch updates head
- t5520: test for failure if index has unresolved entries
- t5520: implement tests for no merge candidates cases
- t5520: test pulling multiple branches into an empty repository
Add more test coverage to "git pull". This conflicts slightly with
a new test jc/merge topic adds, but resolution is fairly trivial.
Expecting a reroll ($gmane/268391).
* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
- completion: fix and update 'git log --decorate=' options
The completion for "log --decorate=" parameter value was incorrect.
Will merge to 'next'.
* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
- completion: remove redundant __git_compute_all_commands() call
Code simplification.
Will merge to 'next'.
* jc/hash-object (2015-05-05) 4 commits
- write_sha1_file(): do not use a separate sha1[] array
- t1007: add hash-object --literally tests
- hash-object --literally: fix buffer overrun with extra-long object type
- git-hash-object.txt: document --literally option
"hash-object --literally" introduced in v2.2 days was not prepared
to take a really long object type name.
Will merge to 'next'.
* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
(merged to 'next' on 2015-05-05 at 12391f1)
+ config: use error() instead of fprintf(stderr, ...)
Some error messages in "git config" were emitted without calling
the usual error() facility.
Will merge to 'master' in the second batch.
* jc/clone-bundle (2015-04-30) 1 commit
- repack: optionally create a clone.bundle
Still an early WIP
* jk/at-push-sha1 (2015-05-03) 12 commits
- for-each-ref: accept "%(push)" format
- for-each-ref: use skip_prefix instead of starts_with
- sha1_name: implement @{push} shorthand
- sha1_name: refactor interpret_upstream_mark
- sha1_name: refactor upstream_mark
- remote.c: add branch_get_push
- remote.c: report specific errors from branch_get_upstream
- remote.c: introduce branch_get_upstream helper
- remote.c: provide per-branch pushremote name
- remote.c: hoist branch.*.remote lookup out of remote_get_1
- remote.c: drop "remote" pointer from "struct branch"
- remote.c: drop default_remote_name variable
Introduce <branch>@{push} short-hand to denote the remote-tracking
branch that tracks the branch at the remote the <branch> would be
pushed to.
Expecting a reroll ($gmane/268419, etc.).
* jk/rebase-quiet-noop (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 82780b9)
+ rebase: silence "git checkout" for noop rebase
"git rebase --quiet" was not quite quiet when there is nothing to
do.
Will merge to 'master' in the second batch.
* ld/p4-case-fold (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 03ecbd0)
+ git-p4: add failing tests for case-folding p4d
Will merge to 'master' in the second batch.
* va/fix-git-p4-tests (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at 795e858)
+ git-p4: t9814: prevent --chain-lint failure
Will merge to 'master' in the second batch.
* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
- filter-branch: avoid passing commit message through sed
"filter-branch" was broken by some "sed" implementations that
corrupt commit log message that ends with an incomplete line.
Work it around by avoiding to use "sed".
Will merge to 'next'.
* ph/rebase-i-redo (2015-04-29) 1 commit
- rebase -i: redo tasks that die during cherry-pick
"git rebase -i" moved the "current" command from "todo" to "done" a
bit too prematurely, losing a step when a "pick" did not even start.
Will merge to 'next'.
* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
- git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
Catch programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.
Will merge to 'next'.
* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
(merged to 'next' on 2015-05-05 at 8e1974e)
+ blame: CRLF in the working tree and LF in the repo
Some time ago, "git blame" (incorrectly) lost the convert_to_git()
call when synthesizing a fake "tip" commit that represents the
state in the working tree, which broke folks who record the history
with LF line ending to make their project portabile across
platforms while terminating lines in their working tree files with
CRLF for their platform.
Will merge to 'master' in the second batch.
* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
(merged to 'next' on 2015-05-05 at bd94828)
+ fmt-merge-msg: plug small leak of commit buffer
Originally merged to 'next' on 2015-04-21
Will merge to 'master' in the second batch.
* ee/clean-remove-dirs (2015-04-26) 5 commits
- clean: improve performance when removing lots of directories
- p7300: add performance tests for clean
- t7300: add tests to document behavior of clean and nested git
- setup: sanity check file size in read_gitfile_gently
- setup: add gentle version of read_gitfile
Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.
Waiting for a reroll.
* jk/still-interesting (2015-04-17) 1 commit
(merged to 'next' on 2015-05-05 at 6a5c89c)
+ limit_list: avoid quadratic behavior from still_interesting
Originally merged to 'next' on 2015-04-21
"git rev-list --objects $old --not --all" to see if everything that
is reachable from $old is already connected to the existing refs
was very inefficient.
Will merge to 'master' in the second batch.
* ls/p4-changes-block-size (2015-04-20) 1 commit
(merged to 'next' on 2015-05-05 at 92596d4)
+ git-p4: use -m when running p4 changes
Originally merged to 'next' on 2015-04-21
"git p4" learned "--changes-block-size <n>" to read the changes in
chunks from Perforce, instead of making one call to "p4 changes"
that may trigger "too many rows scanned" error from Perforce.
Will merge to 'master' in the second batch.
* mm/add-p-split-error (2015-04-16) 5 commits
(merged to 'next' on 2015-05-05 at c556011)
+ stash -p: demonstrate failure of split with mixed y/n
+ t3904-stash-patch: factor PERL prereq at the top of the file
+ t3904-stash-patch: fix test description
+ add -p: demonstrate failure when running 'edit' after a split
+ t3701-add-interactive: simplify code
Originally merged to 'next' on 2015-04-23
When "add--interactive" splits a hunk into two overlapping hunks
and then let the user choose only one, it sometimes feeds an
incorrect patch text to "git apply". Add tests to demonstrate
this.
I have a slight suspicion that this may be $gmane/87202 coming back
and biting us (I seem to have said "let's run with this and see
what happens" back then).
Will merge to 'master' in the second batch.
* tb/t0027-crlf (2015-04-25) 3 commits
(merged to 'next' on 2015-05-05 at 36accbb)
+ t0027: Add repoMIX and LF_nul
+ t0027: support NATIVE_CRLF platforms
+ t0027: cleanup: rename functions; avoid non-leading TABs
Originally merged to 'next' on 2015-04-21
More line-ending tests.
Will merge to 'master' in the second batch.
* jc/gitignore-precedence (2015-04-22) 1 commit
(merged to 'next' on 2015-05-05 at 6ef85da)
+ ignore: info/exclude should trump core.excludesfile
core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
to be overridden by repository-specific .git/info/exclude file, but
the order was swapped from the beginning. This belatedly fixes it.
Will merge to 'master' in the third batch.
* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
(merged to 'next' on 2015-05-05 at b3f9a45)
+ stop putting argv[0] dirname at front of PATH
We have prepended $GIT_EXEC_PATH and the path "git" is installed in
(typically "/usr/bin") to $PATH when invoking subprograms and hooks
for almost eternity, but the original use case the latter tried to
support was semi-bogus (i.e. install git to /opt/foo/git and run it
without having /opt/foo on $PATH), and more importantly it has
become less and less relevant as Git grew more mainstream (i.e. the
users would _want_ to have it on their $PATH). Stop prepending the
path in which "git" is installed to users' $PATH, as that would
interfere the command search order people depend on (e.g. they may
not like versions of programs that are unrelated to Git in /usr/bin
and want to override them by having different ones in /usr/local/bin
and have the latter directory earlier in their $PATH).
Will merge to 'master' in the third batch.
* jk/stash-require-clean-index (2015-04-22) 3 commits
(merged to 'next' on 2015-05-05 at b5f6c32)
+ stash: require a clean index to apply
+ t3903: avoid applying onto dirty index
+ t3903: stop hard-coding commit sha1s
"git stash pop/apply" forgot to make sure that not just the working
tree is clean but also the index is clean. The latter is important
as a stash application can conflict and the index will be used for
conflict resolution.
Will merge to 'master' in the third batch.
* jc/merge (2015-04-29) 15 commits
- merge: deprecate 'git merge <message> HEAD <commit>' syntax
- merge: handle FETCH_HEAD internally
- merge: decide if we auto-generate the message early in collect_parents()
- merge: make collect_parents() auto-generate the merge message
- merge: extract prepare_merge_message() logic out
- merge: narrow scope of merge_names
- merge: split reduce_parents() out of collect_parents()
- merge: clarify collect_parents() logic
- merge: small leakfix and code simplification
- merge: do not check argc to determine number of remote heads
- merge: clarify "pulling into void" special case
- t5520: test pulling an octopus into an unborn branch
- t5520: style fixes
- merge: simplify code flow
- merge: test the top-level merge driver
(this branch is used by jc/merge-drop-old-syntax.)
"git merge FETCH_HEAD" learned that the previous "git fetch" could
be to create an Octopus merge, i.e. recording multiple branches
that are not marked as "not-for-merge"; this allows us to lose an
old style invocation "git merge <msg> HEAD $commits..." in the
implementation of "git pull" script; the old style syntax can now
be deprecated.
Will merge to 'next'.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
- merge: drop 'git merge <message> HEAD <commit>' syntax
(this branch uses jc/merge.)
Stop supporting "git merge <messsage> HEAD <commit>" syntax that
has been deprecated since October 2007.
Will merge to 'next' and keep there during the 2.5 cycle.
* jk/test-chain-lint (2015-04-28) 2 commits
(merged to 'next' on 2015-05-05 at e6f0290)
+ test-lib: turn on GIT_TEST_CHAIN_LINT by default
+ t7502-commit.sh: fix a broken and-chain
Developer support to automatically detect broken &&-chain in the
test scripts is now turned on by default.
Will merge to 'master' in the third batch.
* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
- ref_transaction_commit(): only keep one lockfile open at a time
- ref_transaction_commit(): remove the local flags variables
- write_ref_sha1(): inline function at callers
- commit_ref_update(): new function, extracted from write_ref_sha1()
- write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- refs.c: remove lock_fd from struct ref_lock
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
(this branch is used by mh/ref-directory-file.)
"git update-ref --stdin" was converted to be "transactional" some
time ago, but the ref transaction machinery was not prepared to
handle many refs, primarily because it tried to keep the loose ref
files open at the same time, which would cause us to hit the ENFILE
limit. Fix the ref_transaction_commit() code not to keep the file
descriptors open unnecessarily.
We would want to apply the fix to older codebase, but this fix is
unfortunately done to apply only on v2.4.x track.
Expecting a rebase to older codebase.
* bc/connect-plink (2015-04-28) 3 commits
(merged to 'next' on 2015-05-05 at 9def2e1)
+ connect: improve check for plink to reduce false positives
+ t5601: fix quotation error leading to skipped tests
+ connect: simplify SSH connection code path
The connection initiation code for "ssh" transport tried to absorb
differences between the stock "ssh" and Putty-supplied "plink" and
its derivatives, but the logic to tell that we are using "plink"
variants were too loose and falsely triggered when "plink" appeared
anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
Will merge to 'master' in the third batch.
* jc/test-prereq-validate (2015-04-28) 1 commit
(merged to 'next' on 2015-05-05 at a30464c)
+ test: validate prerequistes syntax
Help us to find broken test script that splits the body part of the
test by mistaken use of wrong kind of quotes.
Will merge to 'master' in the third batch.
* fg/document-commit-message-stripping (2015-04-27) 1 commit
(merged to 'next' on 2015-05-05 at 1892a99)
+ Documentation: clarify how "git commit" cleans up the edited log message
Will merge to 'master' in the third batch.
* ah/usage-strings (2015-05-03) 2 commits
- branch: fix funny-sounding error message
- blame, log: format usage strings similarly to those in documentation
A few usage string updates. The tip one still needs work.
* jk/reading-packed-refs (2015-04-16) 9 commits
(merged to 'next' on 2015-05-05 at 89b5694)
+ t1430: add another refs-escape test
+ read_packed_refs: avoid double-checking sane refs
+ strbuf_getwholeline: use getdelim if it is available
+ strbuf_getwholeline: avoid calling strbuf_grow
+ strbuf_addch: avoid calling strbuf_grow
+ config: use getc_unlocked when reading from file
+ strbuf_getwholeline: use getc_unlocked
+ git-compat-util: add fallbacks for unlocked stdio
+ strbuf_getwholeline: use getc macro
Originally merged to 'next' on 2015-04-21
An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
to read packed-refs file revealed that the former is unacceptably
inefficient.
Will merge to 'master' in the second batch.
* kn/cat-file-literally (2015-05-04) 5 commits
- fixup! sha1_file: support reading from a loose object of unknown type
- t1006: add tests for git cat-file --allow-unknown-type
- cat-file: teach cat-file a '--allow-unknown-type' option
- cat-file: make the options mutually exclusive
- sha1_file: support reading from a loose object of unknown type
Add the "--allow-unknown-type" option to "cat-file" to allow
inspecting loose objects of an experimental or a broken type.
This is v10 $gmane/267960; I think with fixup! squashed in the
series is in a good shape (the test may fail without Eric's fix
to "hash-object --literally" elsewhere, though).
* lm/squelch-bg-progress (2015-04-15) 2 commits
(merged to 'next' on 2015-05-05 at a2fe74d)
+ compat/mingw: stubs for getpgid() and tcgetpgrp()
+ progress: no progress in background
Originally merged to 'next' on 2015-04-21
Many long-running operations show progress eye-candy, even when
they are later backgrounded. Hide the eye-candy when the process
is sent to the background instead.
Will merge to 'master' in the second batch.
* va/p4-client-path (2015-04-23) 2 commits
(merged to 'next' on 2015-05-05 at 852facc)
+ git-p4: improve client path detection when branches are used
+ t9801: check git-p4's branch detection with client spec enabled
Originally merged to 'next' on 2015-04-23
git p4 attempts to better handle branches in Perforce.
Will merge to 'master' in the second batch.
* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
(merged to 'next' on 2015-05-05 at a8de68e)
+ sha1_file: squelch "packfile cannot be accessed" warnings
Originally merged to 'next' on 2015-04-21
Will merge to 'master' in the second batch.
* pt/credential-xdg (2015-03-25) 4 commits
(merged to 'next' on 2015-05-05 at 0d6711f)
+ t0302: "unreadable" test needs POSIXPERM
+ t0302: test credential-store support for XDG_CONFIG_HOME
+ git-credential-store: support XDG_CONFIG_HOME
+ git-credential-store: support multiple credential files
(this branch is used by pt/xdg-config-path.)
Originally merged to 'next' on 2015-03-25
Tweak the sample "store" backend of the credential helper to honor
XDG configuration file locations when specified.
Will merge to 'master' in the second batch.
* pt/xdg-config-path (2015-05-06) 7 commits
- path.c: remove home_config_paths()
- git-config: replace use of home_config_paths()
- git-commit: replace use of home_config_paths()
- credential-store.c: replace home_config_paths() with xdg_config_home()
- dir.c: replace home_config_paths() with xdg_config_home()
- attr.c: replace home_config_paths() with xdg_config_home()
- path.c: implement xdg_config_home()
(this branch uses pt/credential-xdg.)
Code clean-up for xdg configuration path support.
Will merge to 'next'.
* nd/diff-i-t-a (2015-03-23) 1 commit
(merged to 'next' on 2015-05-05 at cba9cd9)
+ diff-lib.c: adjust position of i-t-a entries in diff
Originally merged to 'next' on 2015-03-24
After "git add -N", the path appeared in output of "git diff HEAD"
and "git diff --cached HEAD", leading "git status" to classify it
as "Changes to be committed". Such a path, however, is not yet to
be scheduled to be committed. "git diff" showed the change to the
path as modification, not as a "new file", in the header of its
output.
Treat such paths as "yet to be added to the index but Git already
know about them"; "git diff HEAD" and "git diff --cached HEAD"
should not talk about them, and "git diff" should show them as new
files yet to be added to the index.
Will merge to 'master' in the third batch.
* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
(merged to 'next' on 2015-05-05 at 42bd845)
+ index-pack: kill union delta_base to save memory
+ index-pack: reduce object_entry size to save memory
Originally merged to 'next' on 2015-04-21
Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
Will merge to 'master' in the second batch.
* nd/multiple-work-trees (2015-03-31) 41 commits
(merged to 'next' on 2015-05-05 at 0f04a1c)
+ prune --worktrees: fix expire vs worktree existence condition
+ t1501: fix test with split index
+ t2026: fix broken &&-chain
+ t2026 needs procondition SANITY
+ git-checkout.txt: a note about multiple checkout support for submodules
+ checkout: add --ignore-other-wortrees
+ checkout: pass whole struct to parse_branchname_arg instead of individual flags
+ git-common-dir: make "modules/" per-working-directory directory
+ checkout: do not fail if target is an empty directory
+ t2025: add a test to make sure grafts is working from a linked checkout
+ checkout: don't require a work tree when checking out into a new one
+ git_path(): keep "info/sparse-checkout" per work-tree
+ count-objects: report unused files in $GIT_DIR/worktrees/...
+ gc: support prune --worktrees
+ gc: factor out gc.pruneexpire parsing code
+ gc: style change -- no SP before closing parenthesis
+ checkout: clean up half-prepared directories in --to mode
+ checkout: reject if the branch is already checked out elsewhere
+ prune: strategies for linked checkouts
+ checkout: support checking out into a new working directory
+ use new wrapper write_file() for simple file writing
+ wrapper.c: wrapper to open a file, fprintf then close
+ setup.c: support multi-checkout repo setup
+ setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
+ setup.c: convert check_repository_format_gently to use strbuf
+ setup.c: detect $GIT_COMMON_DIR in is_git_directory()
+ setup.c: convert is_git_directory() to use strbuf
+ git-stash: avoid hardcoding $GIT_DIR/logs/....
+ *.sh: avoid hardcoding $GIT_DIR/hooks/...
+ git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
+ $GIT_COMMON_DIR: a new environment variable
+ commit: use SEQ_DIR instead of hardcoding "sequencer"
+ fast-import: use git_path() for accessing .git dir instead of get_git_dir()
+ reflog: avoid constructing .lock path with git_path
+ *.sh: respect $GIT_INDEX_FILE
+ git_path(): be aware of file relocation in $GIT_DIR
+ path.c: group git_path(), git_pathdup() and strbuf_git_path() together
+ path.c: rename vsnpath() to do_git_path()
+ git_snpath(): retire and replace with strbuf_git_path()
+ path.c: make get_pathname() call sites return const char *
+ path.c: make get_pathname() return strbuf instead of static buffer
Originally merged to 'next' on 2015-04-02
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
Will merge to 'master' in the second batch.
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (May 2015, #01; Mon, 4)
@ 2015-05-04 22:25 4% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-04 22:25 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
Git 2.4 final has been tagged. We'll wait for a few days to see
if there are brown-paper-bag bugs, fix them if there are any, and
then rewind 'next' and rebuild it to kick off the next cycle.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* mh/ref-directory-file (2015-05-03) 18 commits
- reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
- ref_transaction_commit(): delete extra "the" from error message
- ref_transaction_commit(): provide better error messages
- rename_ref(): integrate lock_ref_sha1_basic() errors into ours
- lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
- lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
- verify_refname_available(): report errors via a "struct strbuf *err"
- verify_refname_available(): rename function
- refs: check for D/F conflicts among refs processed in a transaction
- ref_transaction_commit(): use a string_list for detecting duplicates
- is_refname_available(): use dirname in first loop
- struct nonmatching_ref_data: store a refname instead of a ref_entry
- report_refname_conflict(): inline function
- entry_matches(): inline function
- is_refname_available(): convert local variable "dirname" to strbuf
- is_refname_available(): avoid shadowing "dir" variable
- is_refname_available(): explain the reason for an early exit
- t1404: new tests of D/F conflicts within ref transactions
(this branch uses mh/ref-lock-avoid-running-out-of-fds.)
Somehow this does not seem to pass its own test.
* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
- pathspec: avoid the need of "--" when wildcard is used
A heuristic to help the "git <cmd> <revs> <pathspec>" command line
convention to catch mistyped paths is to make sure all the non-rev
parameters in the later part of the command line are names of the
files in the working tree, but that means "git grep $str -- \*.c"
must always be disambiguated with "--", because nobody sane will
create a file whose name literally is asterisk-dot-see. Loosen the
heuristic to declare that with a wildcard string the user likely
meant to give us a pathspec.
Will merge to 'next'.
* pt/pull-tests (2015-05-03) 7 commits
- t5521: test --dry-run does not make any changes
- t5520: test --rebase failure on unborn branch with index
- t5520: test --rebase with multiple branches
- t5520: test work tree fast-forward when fetch updates head
- t5520: test for failure if index has unresolved entries
- t5520: implement tests for no merge candidates cases
- t5520: test pulling multiple branches into an empty repository
Add more test coverage to "git pull". This conflicts slightly with
a new test jc/merge topic adds, but resolution is fairly trivial.
Will merge to 'next'.
* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
- completion: fix and update 'git log --decorate=' options
The completion for "log --decorate=" parameter value was incorrect.
Will merge to 'next'.
* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
- completion: remove redundant __git_compute_all_commands() call
Will merge to 'next'.
* jc/hash-object (2015-05-04) 4 commits
- write_sha1_file(): do not use a separate sha1[] array
- t1007: add hash-object --literally tests
- write_sha1_file_prepare: fix buffer overrun with extra-long object type
- git-hash-object.txt: document --literally option
"hash-object --literally" introduced in v2.2 days was not prepared
to take a really long object type name.
Will merge to 'next'.
* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
- config: use error() instead of fprintf(stderr, ...)
Some error messages in "git config" were emitted without calling
the usual error() facility.
Will merge to 'next'.
* jc/clone-bundle (2015-04-30) 1 commit
- repack: optionally create a clone.bundle
Still an early WIP
--------------------------------------------------
[Stalled]
* kk/log-merges-config (2015-04-21) 5 commits
- bash-completion: add support for git-log --merges= and log.merges
- t4202-log: add tests for --merges=
- Documentation: add git-log --merges= option and log.merges config. var
- log: honor log.merges= option
- revision: add --merges={show|only|hide} option
"git log" (but not other commands in the "log" family) learned to
pay attention to the log.merges configuration variable that can be
set to "show" (the normal behaviour), "only" (hide non-merge
commits), or "hide" (hide merge commits). --merges=(show|only|hide)
can be used to override the setting from the command line.
The documentation may need to be updated once more ($gmane/267250).
Waiting for a reroll.
* mh/fdopen-with-retry (2015-03-06) 6 commits
- buffer_fdinit(): use fdopen_with_retry()
- update_info_file(): use fdopen_with_retry()
- copy_to_log(): use fdopen_with_retry()
- fdopen_lock_file(): use fdopen_with_retry()
- SQUASH??? $gmane/264889
- xfdopen(): if first attempt fails, free memory and try again
Various parts of the code where they call fdopen() can fail when
they run out of memory; attempt to proceed by retrying the
operation after freeing some resource.
Will discard.
* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
- t/lib-git-svn: check same httpd module dirs as lib-httpd
- t/lib-httpd: load mod_unixd
This is the first two commits in a three-patch series $gmane/266962
Will be rerolled.
with updated log message ($gmane/268061).
* pt/xdg-config-path (2015-04-12) 7 commits
- path.c: remove home_config_paths()
- git-config: replace use of home_config_paths()
- git-commit: replace use of home_config_paths()
- credential-store.c: replace home_config_paths() with xdg_config_home()
- dir.c: replace home_config_paths() with xdg_config_home()
- attr.c: replace home_config_paths() with xdg_config_home()
- path.c: implement xdg_config_home()
(this branch uses pt/credential-xdg.)
Seen some discussions.
Waiting for a reroll ($gmane/267518).
* mh/numparse (2015-03-19) 14 commits
- diff_opt_parse(): use convert_i() when handling --abbrev=<num>
- diff_opt_parse(): use convert_i() when handling "-l<num>"
- opt_arg(): simplify pointer handling
- opt_arg(): report errors parsing option values
- opt_arg(): use convert_i() in implementation
- opt_arg(): val is always non-NULL
- builtin_diff(): detect errors when parsing --unified argument
- handle_revision_opt(): use convert_ui() when handling "--abbrev="
- strtoul_ui(), strtol_i(): remove functions
- handle_revision_opt(): use convert_i() when handling "-<digit>"
- handle_revision_opt(): use skip_prefix() in many places
- write_subdirectory(): use convert_ui() for parsing mode
- cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
- numparse: new module for parsing integral numbers
Many codepaths use unchecked use of strtol() and friends (or even
worse, atoi()). Introduce a set of wrappers that try to be more
careful.
Will be rerolled.
($gmane/268058).
* tf/gitweb-project-listing (2015-03-19) 5 commits
- gitweb: make category headings into links when they are directories
- gitweb: optionally set project category from its pathname
- gitweb: add a link under the search box to clear a project filter
- gitweb: if the PATH_INFO is incomplete, use it as a project_filter
- gitweb: fix typo in man page
Update gitweb to make it more pleasant to deal with a hierarchical
forest of repositories.
Any comments from those who use or have their own code in Gitweb?
* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
- "-" and "@{-1}" on various programs
Lose special case code to make a lone dash "-" mean the previous
branch aka "@{-1}" from a handful subcommands, and instead support
the notation throughout the system by reimplementing it at the
revisions layer.
Needs tests, documentation updates, etc. Also does only a half-way
job dealing with range notation, which needs to be fixed before the
series goes anywhere.
* nd/list-files (2015-02-09) 21 commits
- t3080: tests for git-list-files
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: make alias 'ls' default to 'list-files'
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
Reroll to base on wt-status work ($gmane/265142) has seen some
positive discussions.
Waiting for a further polished reroll ($gmane/265534).
* js/fsck-opt (2015-01-21) 19 commits
- fsck: support ignoring objects in `git fsck` via fsck.skiplist
- fsck: git receive-pack: support excluding objects from fsck'ing
- fsck: introduce `git fsck --quick`
- fsck: support demoting errors to warnings
- fsck: document the new receive.fsck.* options
- fsck: allow upgrading fsck warnings to errors
- fsck: optionally ignore specific fsck issues completely
- fsck: disallow demoting grave fsck errors to warnings
- fsck: add a simple test for receive.fsck.*
- fsck: make fsck_tag() warn-friendly
- fsck: handle multiple authors in commits specially
- fsck: make fsck_commit() warn-friendly
- fsck: make fsck_ident() warn-friendly
- fsck: report the ID of the error/warning
- fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
- fsck: offer a function to demote fsck errors to warnings
- fsck: provide a function to parse fsck message IDs
- fsck: introduce identifiers for fsck messages
- fsck: introduce fsck options
"fsck.warnings = <list of error tokens>" I suggested turned out to
be an unpopular choice (sorry Dscho).
Expecting a reroll.
* nd/untracked-cache (2015-03-12) 24 commits
- git-status.txt: advertisement for untracked cache
- untracked cache: guard and disable on system changes
- mingw32: add uname()
- t7063: tests for untracked cache
- update-index: test the system before enabling untracked cache
- update-index: manually enable or disable untracked cache
- status: enable untracked cache
- untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- untracked cache: mark index dirty if untracked cache is updated
- untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- untracked cache: avoid racy timestamps
- read-cache.c: split racy stat test to a separate function
- untracked cache: invalidate at index addition or removal
- untracked cache: load from UNTR index extension
- untracked cache: save to an index extension
- ewah: add convenient wrapper ewah_serialize_strbuf()
- untracked cache: don't open non-existent .gitignore
- untracked cache: mark what dirs should be recursed/saved
- untracked cache: record/validate dir mtime and reuse cached output
- untracked cache: make a wrapper around {open,read,close}dir()
- untracked cache: invalidate dirs recursively if .gitignore changes
- untracked cache: initial untracked cache validation
- untracked cache: record .gitignore information and dir hierarchy
- dir.c: optionally compute sha-1 of a .gitignore file
Need extra sets of eyes to review this.
* nd/pathspec-strip-fix (2015-04-18) 1 commit
- pathspec: adjust prefixlen after striping trailing slash
Does not quite fix ($gmane/267614).
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
* pw/remote-set-url-fetch (2014-11-26) 1 commit
- remote: add --fetch and --both options to set-url
Expecting a reroll.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll ($gmane/256591).
* hv/submodule-config (2014-11-11) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit.
--------------------------------------------------
[Cooking]
* jk/at-push-sha1 (2015-05-03) 12 commits
- for-each-ref: accept "%(push)" format
- for-each-ref: use skip_prefix instead of starts_with
- sha1_name: implement @{push} shorthand
- sha1_name: refactor interpret_upstream_mark
- sha1_name: refactor upstream_mark
- remote.c: add branch_get_push
- remote.c: report specific errors from branch_get_upstream
- remote.c: introduce branch_get_upstream helper
- remote.c: provide per-branch pushremote name
- remote.c: hoist branch.*.remote lookup out of remote_get_1
- remote.c: drop "remote" pointer from "struct branch"
- remote.c: drop default_remote_name variable
Introduce <branch>@{push} short-hand to denote the remote-tracking
branch that tracks the branch at the remote the <branch> would be
pushed to.
Rerolled (not reviewed yet).
* jk/rebase-quiet-noop (2015-04-28) 1 commit
- rebase: silence "git checkout" for noop rebase
"git rebase --quiet" was not quite quiet when there is nothing to
do.
Will merge to 'next'.
* ld/p4-case-fold (2015-04-28) 1 commit
- git-p4: add failing tests for case-folding p4d
Will merge to 'next'.
* va/fix-git-p4-tests (2015-04-28) 1 commit
- git-p4: t9814: prevent --chain-lint failure
Will merge to 'next'.
* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
- filter-branch: avoid passing commit message through sed
"filter-branch" was broken by some "sed" implementations that
corrupt commit log message that ends with an incomplete line.
Work it around by avoiding to use "sed".
Will merge to 'next'.
* ph/rebase-i-redo (2015-04-29) 1 commit
- rebase -i: redo tasks that die during cherry-pick
"git rebase -i" moved the "current" command from "todo" to "done" a
bit too prematurely, losing a step when a "pick" did not even start.
Will merge to 'next'.
* ep/do-not-feed-a-pointer-to-array-size (2015-04-30) 2 commits
- SQUASH???
- git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
Catch programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.
With the fix-up, will merge to 'next'.
* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
- blame: CRLF in the working tree and LF in the repo
Some time ago, "git blame" (incorrectly) lost the convert_to_git()
call when synthesizing a fake "tip" commit that represents the
state in the working tree, which broke folks who record the history
with LF line ending to make their project portabile across
platforms while terminating lines in their working tree files with
CRLF for their platform.
Will merge to 'next'.
* jc/epochtime-wo-tz (2015-04-15) 2 commits
(merged to 'next' on 2015-04-21 at b926f72)
+ parse_date_basic(): let the system handle DST conversion
+ parse_date_basic(): return early when given a bogus timestamp
"git commit --date=now" or anything that relies on approxidate lost
the daylight-saving-time offset.
Will merge to 'master' in the second batch of post v2.4 cycle.
* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
(merged to 'next' on 2015-04-21 at 443c728)
+ fmt-merge-msg: plug small leak of commit buffer
Will merge to 'master' in the second batch of post v2.4 cycle.
* cn/bom-in-gitignore (2015-04-16) 5 commits
(merged to 'next' on 2015-04-21 at f7d56f1)
+ attr: skip UTF8 BOM at the beginning of the input file
+ config: use utf8_bom[] from utf.[ch] in git_parse_source()
+ utf8-bom: introduce skip_utf8_bom() helper
+ add_excludes_from_file: clarify the bom skipping logic
+ dir: allow a BOM at the beginning of exclude files
Teach the codepaths that read .gitignore and .gitattributes files
that these files encoded in UTF-8 may have UTF-8 BOM marker at the
beginning; this makes it in line with what we do for configuration
files already.
Will merge to 'master' in the second batch of post v2.4 cycle.
* ee/clean-remove-dirs (2015-04-26) 5 commits
- clean: improve performance when removing lots of directories
- p7300: add performance tests for clean
- t7300: add tests to document behavior of clean and nested git
- setup: sanity check file size in read_gitfile_gently
- setup: add gentle version of read_gitfile
Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.
Waiting for a reroll.
* ep/fix-test-lib-functions-report (2015-04-16) 1 commit
(merged to 'next' on 2015-04-21 at 23e584f)
+ test-lib-functions.sh: fix the second argument to some helper functions
Will merge to 'master' in the second batch of post v2.4 cycle.
* jk/still-interesting (2015-04-17) 1 commit
(merged to 'next' on 2015-04-21 at 58b54af)
+ limit_list: avoid quadratic behavior from still_interesting
"git rev-list --objects $old --not --all" to see if everything that
is reachable from $old is already connected to the existing refs
was very inefficient.
Will merge to 'master' in the second batch of post v2.4 cycle.
* jk/type-from-string-gently (2015-04-17) 1 commit
(merged to 'next' on 2015-04-20 at a97611f)
+ type_from_string_gently: make sure length matches
"git cat-file bl $blob" failed to barf even though there is no
object type that is "bl".
Will merge to 'master' in the first batch of post v2.4 cycle.
* ls/p4-changes-block-size (2015-04-20) 1 commit
(merged to 'next' on 2015-04-21 at 830eeed)
+ git-p4: use -m when running p4 changes
"git p4" learned "--changes-block-size <n>" to read the changes in
chunks from Perforce, instead of making one call to "p4 changes"
that may trigger "too many rows scanned" error from Perforce.
Will merge to 'master' in the second batch of post v2.4 cycle.
* mm/add-p-split-error (2015-04-16) 5 commits
(merged to 'next' on 2015-04-23 at b1bd21a)
+ stash -p: demonstrate failure of split with mixed y/n
+ t3904-stash-patch: factor PERL prereq at the top of the file
+ t3904-stash-patch: fix test description
+ add -p: demonstrate failure when running 'edit' after a split
+ t3701-add-interactive: simplify code
When "add--interactive" splits a hunk into two overlapping hunks
and then let the user choose only one, it sometimes feeds an
incorrect patch text to "git apply". Add tests to demonstrate
this.
I have a slight suspicion that this may be $gmane/87202 coming back
and biting us (I seem to have said "let's run with this and see
what happens" back then).
Will merge to 'master' in the third batch of post v2.4 cycle.
* mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
(merged to 'next' on 2015-04-21 at 03e951c)
+ log -L: improve error message on malformed argument
+ Documentation: change -L:<regex> to -L:<funcname>
Will merge to 'master' in the second batch of post v2.4 cycle.
* nd/t1509-chroot-test (2015-04-18) 1 commit
(merged to 'next' on 2015-04-21 at 60d35d3)
+ t1509: update prepare script to be able to run t1509 in chroot again
Correct test bitrot.
Will merge to 'master' in the first batch of post v2.4 cycle.
* oh/fix-config-default-user-name-section (2015-04-17) 1 commit
(merged to 'next' on 2015-04-20 at b74b914)
+ config: fix settings in default_user_config template
The default $HOME/.gitconfig file created upon "git config --global"
that edits it had incorrectly spelled user.name and user.email
entries in it.
Will merge to 'master' in the first batch of post v2.4 cycle.
* tb/t0027-crlf (2015-04-25) 3 commits
- t0027: Add repoMIX and LF_nul
(merged to 'next' on 2015-04-21 at 142cb99)
+ t0027: support NATIVE_CRLF platforms
+ t0027: cleanup: rename functions; avoid non-leading TABs
Will merge to 'next'.
* jk/prune-mtime (2015-04-20) 3 commits
(merged to 'next' on 2015-04-21 at 9990d41)
+ sha1_file: only freshen packs once per run
+ sha1_file: freshen pack objects before loose
+ reachable: only mark local objects as recent
Access to objects in repositories that borrow from another one on a
slow NFS server unnecessarily got more expensive due to recent code
becoming more cautious in a naive way not to lose objects to pruning.
Will merge to 'master' in the second batch of post v2.4 cycle.
* jc/gitignore-precedence (2015-04-22) 1 commit
- ignore: info/exclude should trump core.excludesfile
core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
to be overridden by repository-specific .git/info/exclude file, but
the order was swapped from the beginning. This belatedly fixes it.
Will merge to 'next'.
* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
- stop putting argv[0] dirname at front of PATH
We have prepended $GIT_EXEC_PATH and the path "git" is installed in
(typically "/usr/bin") to $PATH when invoking subprograms and hooks
for almost eternity, but the original use case the latter tried to
support was semi-bogus (i.e. install git to /opt/foo/git and run it
without having /opt/foo on $PATH), and more importantly it has
become less and less relevant as Git grew more mainstream (i.e. the
users would _want_ to have it on their $PATH). Stop prepending the
path in which "git" is installed to users' $PATH, as that would
interfere the command search order people depend on (e.g. they may
not like versions of programs that are unrelated to Git in /usr/bin
and want to override them by having different ones in /usr/local/bin
and have the latter directory earlier in their $PATH).
Will merge to 'next'.
* jk/stash-require-clean-index (2015-04-22) 3 commits
- stash: require a clean index to apply
- t3903: avoid applying onto dirty index
- t3903: stop hard-coding commit sha1s
"git stash pop/apply" forgot to make sure that not just the working
tree is clean but also the index is clean. The latter is important
as a stash application can conflict and the index will be used for
conflict resolution.
Will merge to 'next'.
* jc/merge (2015-04-29) 15 commits
- merge: deprecate 'git merge <message> HEAD <commit>' syntax
- merge: handle FETCH_HEAD internally
- merge: decide if we auto-generate the message early in collect_parents()
- merge: make collect_parents() auto-generate the merge message
- merge: extract prepare_merge_message() logic out
- merge: narrow scope of merge_names
- merge: split reduce_parents() out of collect_parents()
- merge: clarify collect_parents() logic
- merge: small leakfix and code simplification
- merge: do not check argc to determine number of remote heads
- merge: clarify "pulling into void" special case
- t5520: test pulling an octopus into an unborn branch
- t5520: style fixes
- merge: simplify code flow
- merge: test the top-level merge driver
(this branch is used by jc/merge-drop-old-syntax.)
"git merge FETCH_HEAD" learned that the previous "git fetch" could
be to create an Octopus merge, i.e. recording multiple branches
that are not marked as "not-for-merge"; this allows us to lose an
old style invocation "git merge <msg> HEAD $commits..." in the
implementation of "git pull" script; the old style syntax can now
be deprecated.
Will merge to 'next'.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
- merge: drop 'git merge <message> HEAD <commit>' syntax
(this branch uses jc/merge.)
Stop supporting "git merge <messsage> HEAD <commit>" syntax that
has been deprecated since October 2007.
Will merge to 'next'.
* jk/test-chain-lint (2015-04-28) 2 commits
- test-lib: turn on GIT_TEST_CHAIN_LINT by default
- t7502-commit.sh: fix a broken and-chain
Will merge to 'next'.
* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
- ref_transaction_commit(): only keep one lockfile open at a time
- ref_transaction_commit(): remove the local flags variables
- write_ref_sha1(): inline function at callers
- commit_ref_update(): new function, extracted from write_ref_sha1()
- write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- refs.c: remove lock_fd from struct ref_lock
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
(this branch is used by mh/ref-directory-file.)
"git update-ref --stdin" was converted to be "transactional" some
time ago, but the ref transaction machinery was not prepared to
handle many refs, primarily because it tried to keep the loose ref
files open at the same time, which would cause us to hit the ENFILE
limit. Fix the ref_transaction_commit() code not to keep the file
descriptors open unnecessarily.
We would want to apply the fix to older codebase, but this fix is
unfortunately done to apply only on v2.4.x track.
Expecting a rebase to older codebase.
* bc/connect-plink (2015-04-28) 3 commits
- connect: improve check for plink to reduce false positives
- t5601: fix quotation error leading to skipped tests
- connect: simplify SSH connection code path
The connection initiation code for "ssh" transport tried to absorb
differences between the stock "ssh" and Putty-supplied "plink" and
its derivatives, but the logic to tell that we are using "plink"
variants were too loose and falsely triggered when "plink" appeared
anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
Will merge to 'next'.
* jc/test-prereq-validate (2015-04-28) 1 commit
- test: validate prerequistes syntax
Help us to find broken test script that splits the body part of the
test by mistaken use of wrong kind of quotes.
Will merge to 'next'.
* fg/document-commit-message-stripping (2015-04-27) 1 commit
- Documentation: clarify how "git commit" cleans up the edited log message
Will merge to 'next'.
* ah/usage-strings (2015-05-03) 2 commits
- branch: fix funny-sounding error message
- blame, log: format usage strings similarly to those in documentation
A few usage string updates. The tip one still needs work.
* jk/reading-packed-refs (2015-04-16) 9 commits
(merged to 'next' on 2015-04-21 at c9bce73)
+ t1430: add another refs-escape test
+ read_packed_refs: avoid double-checking sane refs
+ strbuf_getwholeline: use getdelim if it is available
+ strbuf_getwholeline: avoid calling strbuf_grow
+ strbuf_addch: avoid calling strbuf_grow
+ config: use getc_unlocked when reading from file
+ strbuf_getwholeline: use getc_unlocked
+ git-compat-util: add fallbacks for unlocked stdio
+ strbuf_getwholeline: use getc macro
An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
to read packed-refs file revealed that the former is unacceptably
inefficient.
Will merge to 'master' in the second batch of post v2.4 cycle.
* kn/cat-file-literally (2015-05-04) 5 commits
- fixup! sha1_file: support reading from a loose object of unknown type
- t1006: add tests for git cat-file --allow-unknown-type
- cat-file: teach cat-file a '--allow-unknown-type' option
- cat-file: make the options mutually exclusive
- sha1_file: support reading from a loose object of unknown type
Add the "--allow-unknown-type" option to "cat-file" to allow
inspecting loose objects of an experimental or a broken type.
This is v10 $gmane/267960; I think with fixup! squashed in the
series is in a good shape (the test may fail without Eric's fix
to "hash-object --literally" elsewhere, though).
Will merge to 'next'.
* ld/p4-filetype-detection (2015-04-04) 3 commits
(merged to 'next' on 2015-04-08 at da735b4)
+ git-p4: fix filetype detection on files opened exclusively
+ git-p4: small fix for locked-file-move-test
+ git-p4: fix small bug in locked test scripts
Will merge to 'master' in the first batch of post v2.4 cycle.
* lm/squelch-bg-progress (2015-04-15) 2 commits
(merged to 'next' on 2015-04-21 at 9a8b1e9)
+ compat/mingw: stubs for getpgid() and tcgetpgrp()
+ progress: no progress in background
Many long-running operations show progress eye-candy, even when
they are later backgrounded. Hide the eye-candy when the process
is sent to the background instead.
Will merge to 'master' in the second batch of post v2.4 cycle.
* sb/test-bitmap-free-at-end (2015-04-12) 1 commit
(merged to 'next' on 2015-04-14 at 0ae4759)
+ pack-bitmap.c: fix a memleak
Will merge to 'master' in the first batch of post v2.4 cycle.
* va/p4-client-path (2015-04-23) 2 commits
(merged to 'next' on 2015-04-23 at e0d2065)
+ git-p4: improve client path detection when branches are used
+ t9801: check git-p4's branch detection with client spec enabled
git p4 attempts to better handle branches in Perforce.
Will merge to 'master' in the third batch of post v2.4 cycle.
* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
(merged to 'next' on 2015-04-21 at a8bd995)
+ sha1_file: squelch "packfile cannot be accessed" warnings
Will merge to 'master' in the second batch of post v2.4 cycle.
* mh/show-branch-topic (2015-03-31) 1 commit
(merged to 'next' on 2015-04-08 at 628ada5)
+ show-branch: show all local heads when only giving one rev along --topics
"git show-branch --topics HEAD" (with no other arguments) did not
do anything interesting. Instead, contrast the given revision
against all the local branches by default.
Will merge to 'master' in the first batch of post v2.4 cycle.
* sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
(merged to 'next' on 2015-04-08 at 6ea8b71)
+ line-log.c: fix a memleak
Will merge to 'master' in the first batch of post v2.4 cycle.
* jk/init-core-worktree-at-root (2015-04-02) 1 commit
(merged to 'next' on 2015-04-08 at 92a942b)
+ init: don't set core.worktree when initializing /.git
We avoid setting core.worktree when the repository location is the
".git" directory directly at the top level of the working tree, but
the code misdetected the case in which the working tree is at the
root level of the filesystem (which arguably is a silly thing to
do, but still valid).
Will merge to 'master' in the first batch of post v2.4 cycle.
* ts/checkout-advice-plural (2015-04-02) 1 commit
(merged to 'next' on 2015-04-08 at dd5c436)
+ checkout: call a single commit "it" intead of "them"
Will merge to 'master' in the first batch of post v2.4 cycle.
* pt/credential-xdg (2015-03-25) 4 commits
(merged to 'next' on 2015-03-25 at 765128e)
+ t0302: "unreadable" test needs POSIXPERM
(merged to 'next' on 2015-03-24 at 9a3706e)
+ t0302: test credential-store support for XDG_CONFIG_HOME
+ git-credential-store: support XDG_CONFIG_HOME
+ git-credential-store: support multiple credential files
(this branch is used by pt/xdg-config-path.)
Tweak the sample "store" backend of the credential helper to honor
XDG configuration file locations when specified.
As this may see further updates, and also this is not an urgent
issue anyway, I'll give it a bit more time for it to simmer.
Will cook in 'next'.
* jc/diff-no-index-d-f (2015-03-26) 2 commits
(merged to 'next' on 2015-03-27 at 1f270f9)
+ diff-no-index: align D/F handling with that of normal Git
+ diff-no-index: DWIM "diff D F" into "diff D/F F"
The usual "git diff" when seeing a file turning into a directory
showed a patchset to remove the file and create all files in the
directory, but "git diff --no-index" simply refused to work. Also,
when asked to compare a file and a directory, imitate POSIX "diff"
and compare the file with the file with the same name in the
directory, instead of refusing to run.
Will merge to 'master' in the first batch of post v2.4 cycle.
* nd/diff-i-t-a (2015-03-23) 1 commit
(merged to 'next' on 2015-03-24 at a6be89f)
+ diff-lib.c: adjust position of i-t-a entries in diff
After "git add -N", the path appeared in output of "git diff HEAD"
and "git diff --cached HEAD", leading "git status" to classify it
as "Changes to be committed". Such a path, however, is not yet to
be scheduled to be committed. "git diff" showed the change to the
path as modification, not as a "new file", in the header of its
output.
Treat such paths as "yet to be added to the index but Git already
know about them"; "git diff HEAD" and "git diff --cached HEAD"
should not talk about them, and "git diff" should show them as new
files yet to be added to the index.
Will cook in 'next', as this brings in a new world order.
* bc/object-id (2015-03-13) 10 commits
(merged to 'next' on 2015-03-24 at 3ec4f83)
+ apply: convert threeway_stage to object_id
+ patch-id: convert to use struct object_id
+ commit: convert parts to struct object_id
+ diff: convert struct combine_diff_path to object_id
+ bulk-checkin.c: convert to use struct object_id
+ zip: use GIT_SHA1_HEXSZ for trailers
+ archive.c: convert to use struct object_id
+ bisect.c: convert leaf functions to use struct object_id
+ define utility functions for object IDs
+ define a structure for object IDs
Identify parts of the code that knows that we use SHA-1 hash to
name our objects too much, and use (1) symbolic constants instead
of hardcoded 20 as byte count and/or (2) use struct object_id
instead of unsigned char [20] for object names.
Will merge to 'master' in the first batch of post v2.4 cycle.
* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
(merged to 'next' on 2015-04-21 at 919b80d)
+ index-pack: kill union delta_base to save memory
+ index-pack: reduce object_entry size to save memory
Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
Will merge to 'master' in the second batch of post v2.4 cycle.
* nd/multiple-work-trees (2015-03-31) 41 commits
(merged to 'next' on 2015-04-02 at 7ea51b4)
+ prune --worktrees: fix expire vs worktree existence condition
(merged to 'next' on 2015-03-24 at 58b5a60)
+ t1501: fix test with split index
(merged to 'next' on 2015-03-20 at cc98ed0)
+ t2026: fix broken &&-chain
(merged to 'next' on 2015-02-18 at b51f696)
+ t2026 needs procondition SANITY
+ git-checkout.txt: a note about multiple checkout support for submodules
+ checkout: add --ignore-other-wortrees
+ checkout: pass whole struct to parse_branchname_arg instead of individual flags
+ git-common-dir: make "modules/" per-working-directory directory
+ checkout: do not fail if target is an empty directory
+ t2025: add a test to make sure grafts is working from a linked checkout
+ checkout: don't require a work tree when checking out into a new one
+ git_path(): keep "info/sparse-checkout" per work-tree
+ count-objects: report unused files in $GIT_DIR/worktrees/...
+ gc: support prune --worktrees
+ gc: factor out gc.pruneexpire parsing code
+ gc: style change -- no SP before closing parenthesis
+ checkout: clean up half-prepared directories in --to mode
+ checkout: reject if the branch is already checked out elsewhere
+ prune: strategies for linked checkouts
+ checkout: support checking out into a new working directory
+ use new wrapper write_file() for simple file writing
+ wrapper.c: wrapper to open a file, fprintf then close
+ setup.c: support multi-checkout repo setup
+ setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
+ setup.c: convert check_repository_format_gently to use strbuf
+ setup.c: detect $GIT_COMMON_DIR in is_git_directory()
+ setup.c: convert is_git_directory() to use strbuf
+ git-stash: avoid hardcoding $GIT_DIR/logs/....
+ *.sh: avoid hardcoding $GIT_DIR/hooks/...
+ git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
+ $GIT_COMMON_DIR: a new environment variable
+ commit: use SEQ_DIR instead of hardcoding "sequencer"
+ fast-import: use git_path() for accessing .git dir instead of get_git_dir()
+ reflog: avoid constructing .lock path with git_path
+ *.sh: respect $GIT_INDEX_FILE
+ git_path(): be aware of file relocation in $GIT_DIR
+ path.c: group git_path(), git_pathdup() and strbuf_git_path() together
+ path.c: rename vsnpath() to do_git_path()
+ git_snpath(): retire and replace with strbuf_git_path()
+ path.c: make get_pathname() call sites return const char *
+ path.c: make get_pathname() return strbuf instead of static buffer
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
Will cook in 'next'.
--------------------------------------------------
[Discarded]
* as/userdiff-sh (2015-03-13) 1 commit
. userdiff: funcname and word patterns for sh
Add a built-in "userdiff" patterns to word-split and identify
notable lines in shell scripts to help presentation of diff and
grep output.
* sb/ref-lock-avoid-running-out-of-fds (2015-04-23) 5 commits
. refs.c: enable large transactions
. sha1_file.c: move get_max_fd_limit(void) to wrapper.c
- refs.c: remove lock_fd from struct ref_lock
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
* jc/merge-deprecate-old-syntax (2015-03-26) 1 commit
. merge: deprecate 'git merge <message> HEAD <commit>' syntax
The first step to really start the process of removing the ancient
syntax to invoke a two-way merge, which has been deprecated since
October 2007.
This regresses "git pull" in various ways; do not merge ($gmane/267432).
^ permalink raw reply [relevance 4%]
* What's cooking in git.git (Apr 2015, #05; Thu, 30)
@ 2015-04-30 19:51 4% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-04-30 19:51 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
Git 2.4 final has been tagged. We'll wait for a few days to see
if there are brown-paper-bag bugs, fix them if there are any, and
then rewind 'next' and rebuild it to kick off the next cycle.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* mg/show-notes-doc (2015-04-17) 1 commit
(merged to 'next' on 2015-04-20 at 2e93969)
+ rev-list-options.txt: complete sentence about notes matching
Documentation fix.
* mg/status-v-v (2015-04-23) 1 commit
(merged to 'next' on 2015-04-25 at cbcaca4)
+ status: document the -v/--verbose option
Documentation fix.
* nd/versioncmp-prereleases (2015-04-23) 1 commit
(merged to 'next' on 2015-04-25 at f824d7f)
+ git tag: mention versionsort.prereleaseSuffix in manpage
Documentation fix.
--------------------------------------------------
[New Topics]
* jk/rebase-quiet-noop (2015-04-28) 1 commit
- rebase: silence "git checkout" for noop rebase
"git rebase --quiet" was not quite quiet when there is nothing to
do.
Will merge to 'next'.
* ld/p4-case-fold (2015-04-28) 1 commit
- git-p4: add failing tests for case-folding p4d
Will merge to 'next'.
* va/fix-git-p4-tests (2015-04-28) 1 commit
- git-p4: t9814: prevent --chain-lint failure
Will merge to 'next'.
* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
- filter-branch: avoid passing commit message through sed
"filter-branch" was broken by some "sed" implementations that
corrupt commit log message that ends with an incomplete line.
Work it around by avoiding to use "sed".
Will merge to 'next'.
* ph/rebase-i-redo (2015-04-29) 1 commit
- rebase -i: redo tasks that die during cherry-pick
"git rebase -i" moved the "current" command from "todo" to "done" a
bit too prematurely, losing a step when a "pick" did not even start.
Will merge to 'next'.
* ep/do-not-feed-a-pointer-to-array-size (2015-04-30) 2 commits
- SQUASH???
- git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
Catch programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.
* tb/blame-resurrect-convert-to-git (2015-04-30) 1 commit
- blame: CRLF in the working tree and LF in the repo
Some time ago, "git blame" (incorrectly) lost the convert_to_git()
call when synthesizing a fake "tip" commit that represents the
state in the working tree, which broke folks who record the history
with LF line ending to make their project portabile across
platforms while terminating lines in their working tree files with
CRLF for their platform.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* kk/log-merges-config (2015-04-21) 5 commits
- bash-completion: add support for git-log --merges= and log.merges
- t4202-log: add tests for --merges=
- Documentation: add git-log --merges= option and log.merges config. var
- log: honor log.merges= option
- revision: add --merges={show|only|hide} option
"git log" (but not other commands in the "log" family) learned to
pay attention to the log.merges configuration variable that can be
set to "show" (the normal behaviour), "only" (hide non-merge
commits), or "hide" (hide merge commits). --merges=(show|only|hide)
can be used to override the setting from the command line.
The documentation may need to be updated once more ($gmane/267250).
Waiting for a reroll.
* mh/fdopen-with-retry (2015-03-06) 6 commits
- buffer_fdinit(): use fdopen_with_retry()
- update_info_file(): use fdopen_with_retry()
- copy_to_log(): use fdopen_with_retry()
- fdopen_lock_file(): use fdopen_with_retry()
- SQUASH??? $gmane/264889
- xfdopen(): if first attempt fails, free memory and try again
Various parts of the code where they call fdopen() can fail when
they run out of memory; attempt to proceed by retrying the
operation after freeing some resource.
Will discard.
* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
- t/lib-git-svn: check same httpd module dirs as lib-httpd
- t/lib-httpd: load mod_unixd
This is the first two commits in a three-patch series $gmane/266962
Will be rerolled.
with updated log message ($gmane/268061).
* jk/at-push-sha1 (2015-03-31) 6 commits
- sha1_name: implement @{push} shorthand
- sha1_name: refactor upstream_mark
- remote.c: provide per-branch pushremote name
- remote.c: hoist branch.*.remote lookup out of remote_get_1
- remote.c: drop "remote" pointer from "struct branch"
- remote.c: drop default_remote_name variable
Introduce <branch>@{push} short-hand to denote the remote-tracking
branch that tracks the branch at the remote the <branch> would be
pushed to.
Will be rerolled ($gmane/268040).
* pt/xdg-config-path (2015-04-12) 7 commits
- path.c: remove home_config_paths()
- git-config: replace use of home_config_paths()
- git-commit: replace use of home_config_paths()
- credential-store.c: replace home_config_paths() with xdg_config_home()
- dir.c: replace home_config_paths() with xdg_config_home()
- attr.c: replace home_config_paths() with xdg_config_home()
- path.c: implement xdg_config_home()
(this branch uses pt/credential-xdg.)
Seen some discussions.
Waiting for a reroll ($gmane/267518).
* mh/numparse (2015-03-19) 14 commits
- diff_opt_parse(): use convert_i() when handling --abbrev=<num>
- diff_opt_parse(): use convert_i() when handling "-l<num>"
- opt_arg(): simplify pointer handling
- opt_arg(): report errors parsing option values
- opt_arg(): use convert_i() in implementation
- opt_arg(): val is always non-NULL
- builtin_diff(): detect errors when parsing --unified argument
- handle_revision_opt(): use convert_ui() when handling "--abbrev="
- strtoul_ui(), strtol_i(): remove functions
- handle_revision_opt(): use convert_i() when handling "-<digit>"
- handle_revision_opt(): use skip_prefix() in many places
- write_subdirectory(): use convert_ui() for parsing mode
- cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
- numparse: new module for parsing integral numbers
Many codepaths use unchecked use of strtol() and friends (or even
worse, atoi()). Introduce a set of wrappers that try to be more
careful.
Will be rerolled.
($gmane/268058).
* tf/gitweb-project-listing (2015-03-19) 5 commits
- gitweb: make category headings into links when they are directories
- gitweb: optionally set project category from its pathname
- gitweb: add a link under the search box to clear a project filter
- gitweb: if the PATH_INFO is incomplete, use it as a project_filter
- gitweb: fix typo in man page
Update gitweb to make it more pleasant to deal with a hierarchical
forest of repositories.
Any comments from those who use or have their own code in Gitweb?
* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
- "-" and "@{-1}" on various programs
Lose special case code to make a lone dash "-" mean the previous
branch aka "@{-1}" from a handful subcommands, and instead support
the notation throughout the system by reimplementing it at the
revisions layer.
Needs tests, documentation updates, etc. Also does only a half-way
job dealing with range notation, which needs to be fixed before the
series goes anywhere.
* nd/list-files (2015-02-09) 21 commits
- t3080: tests for git-list-files
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: make alias 'ls' default to 'list-files'
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
Reroll to base on wt-status work ($gmane/265142) has seen some
positive discussions.
Waiting for a further polished reroll ($gmane/265534).
* js/fsck-opt (2015-01-21) 19 commits
- fsck: support ignoring objects in `git fsck` via fsck.skiplist
- fsck: git receive-pack: support excluding objects from fsck'ing
- fsck: introduce `git fsck --quick`
- fsck: support demoting errors to warnings
- fsck: document the new receive.fsck.* options
- fsck: allow upgrading fsck warnings to errors
- fsck: optionally ignore specific fsck issues completely
- fsck: disallow demoting grave fsck errors to warnings
- fsck: add a simple test for receive.fsck.*
- fsck: make fsck_tag() warn-friendly
- fsck: handle multiple authors in commits specially
- fsck: make fsck_commit() warn-friendly
- fsck: make fsck_ident() warn-friendly
- fsck: report the ID of the error/warning
- fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
- fsck: offer a function to demote fsck errors to warnings
- fsck: provide a function to parse fsck message IDs
- fsck: introduce identifiers for fsck messages
- fsck: introduce fsck options
"fsck.warnings = <list of error tokens>" I suggested turned out to
be an unpopular choice (sorry Dscho).
Expecting a reroll.
* nd/untracked-cache (2015-03-12) 24 commits
- git-status.txt: advertisement for untracked cache
- untracked cache: guard and disable on system changes
- mingw32: add uname()
- t7063: tests for untracked cache
- update-index: test the system before enabling untracked cache
- update-index: manually enable or disable untracked cache
- status: enable untracked cache
- untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- untracked cache: mark index dirty if untracked cache is updated
- untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- untracked cache: avoid racy timestamps
- read-cache.c: split racy stat test to a separate function
- untracked cache: invalidate at index addition or removal
- untracked cache: load from UNTR index extension
- untracked cache: save to an index extension
- ewah: add convenient wrapper ewah_serialize_strbuf()
- untracked cache: don't open non-existent .gitignore
- untracked cache: mark what dirs should be recursed/saved
- untracked cache: record/validate dir mtime and reuse cached output
- untracked cache: make a wrapper around {open,read,close}dir()
- untracked cache: invalidate dirs recursively if .gitignore changes
- untracked cache: initial untracked cache validation
- untracked cache: record .gitignore information and dir hierarchy
- dir.c: optionally compute sha-1 of a .gitignore file
Need extra sets of eyes to review this.
* nd/pathspec-strip-fix (2015-04-18) 1 commit
- pathspec: adjust prefixlen after striping trailing slash
Does not quite fix ($gmane/267614).
* jc/diff-b-m (2015-02-23) 5 commits
. WIPWIP
. WIP: diff-b-m
- diffcore-rename: allow easier debugging
- diffcore-rename.c: add locate_rename_src()
- diffcore-break: allow debugging
"git diff -B -M" produced incorrect patch when the postimage of a
completely rewritten file is similar to the preimage of a removed
file; such a resulting file must not be expressed as a rename from
other place.
The fix in this patch is broken, unfortunately.
* pw/remote-set-url-fetch (2014-11-26) 1 commit
- remote: add --fetch and --both options to set-url
Expecting a reroll.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll ($gmane/256591).
* hv/submodule-config (2014-11-11) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit.
--------------------------------------------------
[Cooking]
* jc/epochtime-wo-tz (2015-04-15) 2 commits
(merged to 'next' on 2015-04-21 at b926f72)
+ parse_date_basic(): let the system handle DST conversion
+ parse_date_basic(): return early when given a bogus timestamp
"git commit --date=now" or anything that relies on approxidate lost
the daylight-saving-time offset.
Will merge to 'master' in the second batch of post v2.4 cycle.
* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
(merged to 'next' on 2015-04-21 at 443c728)
+ fmt-merge-msg: plug small leak of commit buffer
Will merge to 'master' in the second batch of post v2.4 cycle.
* cn/bom-in-gitignore (2015-04-16) 5 commits
(merged to 'next' on 2015-04-21 at f7d56f1)
+ attr: skip UTF8 BOM at the beginning of the input file
+ config: use utf8_bom[] from utf.[ch] in git_parse_source()
+ utf8-bom: introduce skip_utf8_bom() helper
+ add_excludes_from_file: clarify the bom skipping logic
+ dir: allow a BOM at the beginning of exclude files
Teach the codepaths that read .gitignore and .gitattributes files
that these files encoded in UTF-8 may have UTF-8 BOM marker at the
beginning; this makes it in line with what we do for configuration
files already.
Will merge to 'master' in the second batch of post v2.4 cycle.
* ee/clean-remove-dirs (2015-04-26) 5 commits
- clean: improve performance when removing lots of directories
- p7300: add performance tests for clean
- t7300: add tests to document behavior of clean and nested git
- setup: sanity check file size in read_gitfile_gently
- setup: add gentle version of read_gitfile
Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.
Waiting for a reroll.
* ep/fix-test-lib-functions-report (2015-04-16) 1 commit
(merged to 'next' on 2015-04-21 at 23e584f)
+ test-lib-functions.sh: fix the second argument to some helper functions
Will merge to 'master' in the second batch of post v2.4 cycle.
* jk/still-interesting (2015-04-17) 1 commit
(merged to 'next' on 2015-04-21 at 58b54af)
+ limit_list: avoid quadratic behavior from still_interesting
"git rev-list --objects $old --not --all" to see if everything that
is reachable from $old is already connected to the existing refs
was very inefficient.
Will merge to 'master' in the second batch of post v2.4 cycle.
* jk/type-from-string-gently (2015-04-17) 1 commit
(merged to 'next' on 2015-04-20 at a97611f)
+ type_from_string_gently: make sure length matches
"git cat-file bl $blob" failed to barf even though there is no
object type that is "bl".
Will merge to 'master' in the first batch of post v2.4 cycle.
* ls/p4-changes-block-size (2015-04-20) 1 commit
(merged to 'next' on 2015-04-21 at 830eeed)
+ git-p4: use -m when running p4 changes
"git p4" learned "--changes-block-size <n>" to read the changes in
chunks from Perforce, instead of making one call to "p4 changes"
that may trigger "too many rows scanned" error from Perforce.
Will merge to 'master' in the second batch of post v2.4 cycle.
* mm/add-p-split-error (2015-04-16) 5 commits
(merged to 'next' on 2015-04-23 at b1bd21a)
+ stash -p: demonstrate failure of split with mixed y/n
+ t3904-stash-patch: factor PERL prereq at the top of the file
+ t3904-stash-patch: fix test description
+ add -p: demonstrate failure when running 'edit' after a split
+ t3701-add-interactive: simplify code
When "add--interactive" splits a hunk into two overlapping hunks
and then let the user choose only one, it sometimes feeds an
incorrect patch text to "git apply". Add tests to demonstrate
this.
I have a slight suspicion that this may be $gmane/87202 coming back
and biting us (I seem to have said "let's run with this and see
what happens" back then).
Will merge to 'master' in the third batch of post v2.4 cycle.
* mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
(merged to 'next' on 2015-04-21 at 03e951c)
+ log -L: improve error message on malformed argument
+ Documentation: change -L:<regex> to -L:<funcname>
Will merge to 'master' in the second batch of post v2.4 cycle.
* nd/t1509-chroot-test (2015-04-18) 1 commit
(merged to 'next' on 2015-04-21 at 60d35d3)
+ t1509: update prepare script to be able to run t1509 in chroot again
Correct test bitrot.
Will merge to 'master' in the first batch of post v2.4 cycle.
* oh/fix-config-default-user-name-section (2015-04-17) 1 commit
(merged to 'next' on 2015-04-20 at b74b914)
+ config: fix settings in default_user_config template
The default $HOME/.gitconfig file created upon "git config --global"
that edits it had incorrectly spelled user.name and user.email
entries in it.
Will merge to 'master' in the first batch of post v2.4 cycle.
* tb/t0027-crlf (2015-04-25) 3 commits
- t0027: Add repoMIX and LF_nul
(merged to 'next' on 2015-04-21 at 142cb99)
+ t0027: support NATIVE_CRLF platforms
+ t0027: cleanup: rename functions; avoid non-leading TABs
Will merge to 'next'.
* jk/prune-mtime (2015-04-20) 3 commits
(merged to 'next' on 2015-04-21 at 9990d41)
+ sha1_file: only freshen packs once per run
+ sha1_file: freshen pack objects before loose
+ reachable: only mark local objects as recent
Access to objects in repositories that borrow from another one on a
slow NFS server unnecessarily got more expensive due to recent code
becoming more cautious in a naive way not to lose objects to pruning.
Will merge to 'master' in the second batch of post v2.4 cycle.
* jc/gitignore-precedence (2015-04-22) 1 commit
- ignore: info/exclude should trump core.excludesfile
core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
to be overridden by repository-specific .git/info/exclude file, but
the order was swapped from the beginning. This belatedly fixes it.
Will merge to 'next'.
* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
- stop putting argv[0] dirname at front of PATH
We have prepended $GIT_EXEC_PATH and the path "git" is installed in
(typically "/usr/bin") to $PATH when invoking subprograms and hooks
for almost eternity, but the original use case the latter tried to
support was semi-bogus (i.e. install git to /opt/foo/git and run it
without having /opt/foo on $PATH), and more importantly it has
become less and less relevant as Git grew more mainstream (i.e. the
users would _want_ to have it on their $PATH). Stop prepending the
path in which "git" is installed to users' $PATH, as that would
interfere the command search order people depend on (e.g. they may
not like versions of programs that are unrelated to Git in /usr/bin
and want to override them by having different ones in /usr/local/bin
and have the latter directory earlier in their $PATH).
Will merge to 'next'.
* jk/stash-require-clean-index (2015-04-22) 3 commits
- stash: require a clean index to apply
- t3903: avoid applying onto dirty index
- t3903: stop hard-coding commit sha1s
"git stash pop/apply" forgot to make sure that not just the working
tree is clean but also the index is clean. The latter is important
as a stash application can conflict and the index will be used for
conflict resolution.
Will merge to 'next'.
* jc/merge (2015-04-29) 15 commits
- merge: deprecate 'git merge <message> HEAD <commit>' syntax
- merge: handle FETCH_HEAD internally
- merge: decide if we auto-generate the message early in collect_parents()
- merge: make collect_parents() auto-generate the merge message
- merge: extract prepare_merge_message() logic out
- merge: narrow scope of merge_names
- merge: split reduce_parents() out of collect_parents()
- merge: clarify collect_parents() logic
- merge: small leakfix and code simplification
- merge: do not check argc to determine number of remote heads
- merge: clarify "pulling into void" special case
- t5520: test pulling an octopus into an unborn branch
- t5520: style fixes
- merge: simplify code flow
- merge: test the top-level merge driver
(this branch is used by jc/merge-drop-old-syntax.)
"git merge FETCH_HEAD" learned that the previous "git fetch" could
be to create an Octopus merge, i.e. recording multiple branches
that are not marked as "not-for-merge"; this allows us to lose an
old style invocation "git merge <msg> HEAD $commits..." in the
implementation of "git pull" script; the old style syntax can now
be deprecated.
* jc/merge-drop-old-syntax (2015-04-29) 1 commit
- merge: drop 'git merge <message> HEAD <commit>' syntax
(this branch uses jc/merge.)
Stop supporting "git merge <messsage> HEAD <commit>" syntax that
has been deprecated since October 2007.
* jk/test-chain-lint (2015-04-28) 2 commits
- test-lib: turn on GIT_TEST_CHAIN_LINT by default
- t7502-commit.sh: fix a broken and-chain
Will merge to 'next'.
* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
- ref_transaction_commit(): only keep one lockfile open at a time
- ref_transaction_commit(): remove the local flags variables
- write_ref_sha1(): inline function at callers
- commit_ref_update(): new function, extracted from write_ref_sha1()
- write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- refs.c: remove lock_fd from struct ref_lock
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
(this branch is tangled with sb/ref-lock-avoid-running-out-of-fds.)
"git update-ref --stdin" was converted to be "transactional" some
time ago, but the ref transaction machinery was not prepared to
handle many refs, primarily because it tried to keep the loose ref
files open at the same time, which would cause us to hit the ENFILE
limit. Fix the ref_transaction_commit() code not to keep the file
descriptors open unnecessarily.
We would probably want to apply the fix to older codebase, but this
fix is unfortunately done to apply only on v2.4.x track.
* bc/connect-plink (2015-04-28) 3 commits
- connect: improve check for plink to reduce false positives
- t5601: fix quotation error leading to skipped tests
- connect: simplify SSH connection code path
The connection initiation code for "ssh" transport tried to absorb
differences between the stock "ssh" and Putty-supplied "plink" and
its derivatives, but the logic to tell that we are using "plink"
variants were too loose and falsely triggered when "plink" appeared
anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
Will merge to 'next'.
* jc/test-prereq-validate (2015-04-28) 1 commit
- test: validate prerequistes syntax
Help us to find broken test script that splits the body part of the
test by mistaken use of wrong kind of quotes.
Will merge to 'next'.
* fg/document-commit-message-stripping (2015-04-27) 1 commit
- Documentation: clarify how "git commit" cleans up the edited log message
Will merge to 'next'.
* ah/usage-strings (2015-04-02) 2 commits
- branch: fix funny-sounding error message
- standardize usage strings that were missed the first time
A few usage string updates.
Will merge to 'next'.
* jk/reading-packed-refs (2015-04-16) 9 commits
(merged to 'next' on 2015-04-21 at c9bce73)
+ t1430: add another refs-escape test
+ read_packed_refs: avoid double-checking sane refs
+ strbuf_getwholeline: use getdelim if it is available
+ strbuf_getwholeline: avoid calling strbuf_grow
+ strbuf_addch: avoid calling strbuf_grow
+ config: use getc_unlocked when reading from file
+ strbuf_getwholeline: use getc_unlocked
+ git-compat-util: add fallbacks for unlocked stdio
+ strbuf_getwholeline: use getc macro
An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
to read packed-refs file revealed that the former is unacceptably
inefficient.
Will merge to 'master' in the second batch of post v2.4 cycle.
* kn/cat-file-literally (2015-04-15) 5 commits
- SQUASH???
- t1006: add tests for git cat-file --literally
- cat-file: add documentation for '--literally' option.
- cat-file: teach cat-file a '--literally' option
- sha1_file.c: support reading from a loose object of unknown type
Add the "--literally" option to "cat-file" to allow inspecting
loose objects of an experimental or a broken type.
This is v8 $gmane/267213; v9 was posted but it will still needs reroll.
Waiting for reroll.
* ld/p4-filetype-detection (2015-04-04) 3 commits
(merged to 'next' on 2015-04-08 at da735b4)
+ git-p4: fix filetype detection on files opened exclusively
+ git-p4: small fix for locked-file-move-test
+ git-p4: fix small bug in locked test scripts
Will merge to 'master' in the first batch of post v2.4 cycle.
* lm/squelch-bg-progress (2015-04-15) 2 commits
(merged to 'next' on 2015-04-21 at 9a8b1e9)
+ compat/mingw: stubs for getpgid() and tcgetpgrp()
+ progress: no progress in background
Many long-running operations show progress eye-candy, even when
they are later backgrounded. Hide the eye-candy when the process
is sent to the background instead.
Will merge to 'master' in the second batch of post v2.4 cycle.
* sb/test-bitmap-free-at-end (2015-04-12) 1 commit
(merged to 'next' on 2015-04-14 at 0ae4759)
+ pack-bitmap.c: fix a memleak
Will merge to 'master' in the first batch of post v2.4 cycle.
* va/p4-client-path (2015-04-23) 2 commits
(merged to 'next' on 2015-04-23 at e0d2065)
+ git-p4: improve client path detection when branches are used
+ t9801: check git-p4's branch detection with client spec enabled
git p4 attempts to better handle branches in Perforce.
Will merge to 'master' in the third batch of post v2.4 cycle.
* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
(merged to 'next' on 2015-04-21 at a8bd995)
+ sha1_file: squelch "packfile cannot be accessed" warnings
Will merge to 'master' in the second batch of post v2.4 cycle.
* mh/show-branch-topic (2015-03-31) 1 commit
(merged to 'next' on 2015-04-08 at 628ada5)
+ show-branch: show all local heads when only giving one rev along --topics
"git show-branch --topics HEAD" (with no other arguments) did not
do anything interesting. Instead, contrast the given revision
against all the local branches by default.
Will merge to 'master' in the first batch of post v2.4 cycle.
* sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
(merged to 'next' on 2015-04-08 at 6ea8b71)
+ line-log.c: fix a memleak
Will merge to 'master' in the first batch of post v2.4 cycle.
* jk/init-core-worktree-at-root (2015-04-02) 1 commit
(merged to 'next' on 2015-04-08 at 92a942b)
+ init: don't set core.worktree when initializing /.git
We avoid setting core.worktree when the repository location is the
".git" directory directly at the top level of the working tree, but
the code misdetected the case in which the working tree is at the
root level of the filesystem (which arguably is a silly thing to
do, but still valid).
Will merge to 'master' in the first batch of post v2.4 cycle.
* ts/checkout-advice-plural (2015-04-02) 1 commit
(merged to 'next' on 2015-04-08 at dd5c436)
+ checkout: call a single commit "it" intead of "them"
Will merge to 'master' in the first batch of post v2.4 cycle.
* pt/credential-xdg (2015-03-25) 4 commits
(merged to 'next' on 2015-03-25 at 765128e)
+ t0302: "unreadable" test needs POSIXPERM
(merged to 'next' on 2015-03-24 at 9a3706e)
+ t0302: test credential-store support for XDG_CONFIG_HOME
+ git-credential-store: support XDG_CONFIG_HOME
+ git-credential-store: support multiple credential files
(this branch is used by pt/xdg-config-path.)
Tweak the sample "store" backend of the credential helper to honor
XDG configuration file locations when specified.
As this may see further updates, and also this is not an urgent
issue anyway, I'll give it a bit more time for it to simmer.
Will cook in 'next'.
* jc/diff-no-index-d-f (2015-03-26) 2 commits
(merged to 'next' on 2015-03-27 at 1f270f9)
+ diff-no-index: align D/F handling with that of normal Git
+ diff-no-index: DWIM "diff D F" into "diff D/F F"
The usual "git diff" when seeing a file turning into a directory
showed a patchset to remove the file and create all files in the
directory, but "git diff --no-index" simply refused to work. Also,
when asked to compare a file and a directory, imitate POSIX "diff"
and compare the file with the file with the same name in the
directory, instead of refusing to run.
Will merge to 'master' in the first batch of post v2.4 cycle.
* nd/diff-i-t-a (2015-03-23) 1 commit
(merged to 'next' on 2015-03-24 at a6be89f)
+ diff-lib.c: adjust position of i-t-a entries in diff
After "git add -N", the path appeared in output of "git diff HEAD"
and "git diff --cached HEAD", leading "git status" to classify it
as "Changes to be committed". Such a path, however, is not yet to
be scheduled to be committed. "git diff" showed the change to the
path as modification, not as a "new file", in the header of its
output.
Treat such paths as "yet to be added to the index but Git already
know about them"; "git diff HEAD" and "git diff --cached HEAD"
should not talk about them, and "git diff" should show them as new
files yet to be added to the index.
Will cook in 'next', as this brings in a new world order.
* bc/object-id (2015-03-13) 10 commits
(merged to 'next' on 2015-03-24 at 3ec4f83)
+ apply: convert threeway_stage to object_id
+ patch-id: convert to use struct object_id
+ commit: convert parts to struct object_id
+ diff: convert struct combine_diff_path to object_id
+ bulk-checkin.c: convert to use struct object_id
+ zip: use GIT_SHA1_HEXSZ for trailers
+ archive.c: convert to use struct object_id
+ bisect.c: convert leaf functions to use struct object_id
+ define utility functions for object IDs
+ define a structure for object IDs
Identify parts of the code that knows that we use SHA-1 hash to
name our objects too much, and use (1) symbolic constants instead
of hardcoded 20 as byte count and/or (2) use struct object_id
instead of unsigned char [20] for object names.
Will merge to 'master' in the first batch of post v2.4 cycle.
* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
(merged to 'next' on 2015-04-21 at 919b80d)
+ index-pack: kill union delta_base to save memory
+ index-pack: reduce object_entry size to save memory
Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
Will merge to 'master' in the second batch of post v2.4 cycle.
* nd/multiple-work-trees (2015-03-31) 41 commits
(merged to 'next' on 2015-04-02 at 7ea51b4)
+ prune --worktrees: fix expire vs worktree existence condition
(merged to 'next' on 2015-03-24 at 58b5a60)
+ t1501: fix test with split index
(merged to 'next' on 2015-03-20 at cc98ed0)
+ t2026: fix broken &&-chain
(merged to 'next' on 2015-02-18 at b51f696)
+ t2026 needs procondition SANITY
+ git-checkout.txt: a note about multiple checkout support for submodules
+ checkout: add --ignore-other-wortrees
+ checkout: pass whole struct to parse_branchname_arg instead of individual flags
+ git-common-dir: make "modules/" per-working-directory directory
+ checkout: do not fail if target is an empty directory
+ t2025: add a test to make sure grafts is working from a linked checkout
+ checkout: don't require a work tree when checking out into a new one
+ git_path(): keep "info/sparse-checkout" per work-tree
+ count-objects: report unused files in $GIT_DIR/worktrees/...
+ gc: support prune --worktrees
+ gc: factor out gc.pruneexpire parsing code
+ gc: style change -- no SP before closing parenthesis
+ checkout: clean up half-prepared directories in --to mode
+ checkout: reject if the branch is already checked out elsewhere
+ prune: strategies for linked checkouts
+ checkout: support checking out into a new working directory
+ use new wrapper write_file() for simple file writing
+ wrapper.c: wrapper to open a file, fprintf then close
+ setup.c: support multi-checkout repo setup
+ setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
+ setup.c: convert check_repository_format_gently to use strbuf
+ setup.c: detect $GIT_COMMON_DIR in is_git_directory()
+ setup.c: convert is_git_directory() to use strbuf
+ git-stash: avoid hardcoding $GIT_DIR/logs/....
+ *.sh: avoid hardcoding $GIT_DIR/hooks/...
+ git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
+ $GIT_COMMON_DIR: a new environment variable
+ commit: use SEQ_DIR instead of hardcoding "sequencer"
+ fast-import: use git_path() for accessing .git dir instead of get_git_dir()
+ reflog: avoid constructing .lock path with git_path
+ *.sh: respect $GIT_INDEX_FILE
+ git_path(): be aware of file relocation in $GIT_DIR
+ path.c: group git_path(), git_pathdup() and strbuf_git_path() together
+ path.c: rename vsnpath() to do_git_path()
+ git_snpath(): retire and replace with strbuf_git_path()
+ path.c: make get_pathname() call sites return const char *
+ path.c: make get_pathname() return strbuf instead of static buffer
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
Will cook in 'next'.
--------------------------------------------------
[Discarded]
* as/userdiff-sh (2015-03-13) 1 commit
. userdiff: funcname and word patterns for sh
Add a built-in "userdiff" patterns to word-split and identify
notable lines in shell scripts to help presentation of diff and
grep output.
* sb/ref-lock-avoid-running-out-of-fds (2015-04-23) 5 commits
. refs.c: enable large transactions
. sha1_file.c: move get_max_fd_limit(void) to wrapper.c
- refs.c: remove lock_fd from struct ref_lock
- t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- update-ref: test handling large transactions properly
(this branch is tangled with mh/ref-lock-avoid-running-out-of-fds.)
* jc/merge-deprecate-old-syntax (2015-03-26) 1 commit
. merge: deprecate 'git merge <message> HEAD <commit>' syntax
The first step to really start the process of removing the ancient
syntax to invoke a two-way merge, which has been deprecated since
October 2007.
This regresses "git pull" in various ways; do not merge ($gmane/267432).
^ permalink raw reply [relevance 4%]
* What's cooking in git.git (Dec 2014, #04; Mon, 22)
@ 2014-12-22 23:17 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2014-12-22 23:17 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
Quite a few topics have been merged to 'master' as the third batch
for this cycle, on top of the recent "case sensitive .Git" fix that
has been publicized very widely. The next release which is expected
to be a small one is taking shape.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* cc/interpret-trailers-more (2014-11-10) 4 commits
(merged to 'next' on 2014-12-15 at 77f6c6a)
+ trailer: add test with an old style conflict block
+ trailer: reuse ignore_non_trailer() to ignore conflict lines
+ commit: make ignore_non_trailer() non static
+ Merge branch 'jc/conflict-hint' into cc/interpret-trailers-more
(this branch uses jc/conflict-hint.)
"git interpret-trailers" learned to properly handle the
"Conflicts:" block at the end.
* ch/new-gpg-drops-rfc-1991 (2014-12-12) 4 commits
(merged to 'next' on 2014-12-15 at 32d7d50)
+ tests: squelch noise from GPG machinery set-up
+ tests: replace binary GPG keyrings with ASCII-armored keys
+ tests: skip RFC1991 tests for gnupg 2.1
+ tests: create gpg homedir on the fly
Recent GPG changes the keyring format and drops support for RFC1991
formatted signatures, breaking our existing tests.
* dm/compat-s-ifmt-for-zos (2014-12-04) 1 commit
(merged to 'next' on 2014-12-15 at 0eb2fe6)
+ compat: convert modes to use portable file type values
Long overdue departure from the assumption that S_IFMT is shared by
everybody made in 2005.
* dw/shell-basename-dashdash-before-stripping-leading-dash-from-login (2014-11-25) 1 commit
(merged to 'next' on 2014-12-15 at 42937b7)
+ git-sh-setup.sh: use dashdash with basename call
* jc/conflict-hint (2014-10-28) 4 commits
(merged to 'next' on 2014-12-15 at b72475f)
+ merge & sequencer: turn "Conflicts:" hint into a comment
+ builtin/commit.c: extract ignore_non_trailer() helper function
+ merge & sequencer: unify codepaths that write "Conflicts:" hint
+ builtin/merge.c: drop a parameter that is never used
(this branch is used by cc/interpret-trailers-more.)
Unlike all the other hints given in the commit log editor, the list
of conflicted paths were appended at the end without commented out.
* jc/exec-cmd-system-path-leak-fix (2014-11-30) 1 commit
(merged to 'next' on 2014-12-15 at f926ee5)
+ system_path(): always return free'able memory to the caller
The function sometimes returned a non-freeable memory and some
other times returned a piece of memory that must be freed.
* jc/hook-cleanup (2014-12-01) 1 commit
(merged to 'next' on 2014-12-15 at f5759d0)
+ run-command.c: retire unused run_hook_with_custom_index()
Remove unused code.
* jc/refer-to-t-readme-from-submitting-patches (2014-11-24) 2 commits
(merged to 'next' on 2014-12-15 at 0e88699)
+ t/README: justify why "! grep foo" is sufficient
+ SubmittingPatches: refer to t/README for tests
* jg/prompt-localize-temporary (2014-12-12) 1 commit
(merged to 'next' on 2014-12-15 at bb9cac9)
+ git-prompt.sh: make $f local to __git_eread()
"git-prompt" (in contrib/) used a variable from the global scope,
possibly contaminating end-user's namespace.
* jk/always-allow-large-packets (2014-12-10) 1 commit
(merged to 'next' on 2014-12-15 at c3fb2c8)
+ pkt-line: allow writing of LARGE_PACKET_MAX buffers
"git push" and "git fetch" did not communicate an overlong refname
correctly.
* jk/colors (2014-12-09) 6 commits
(merged to 'next' on 2014-12-15 at 20b045f)
+ parse_color: drop COLOR_BACKGROUND macro
+ diff-highlight: allow configurable colors
+ parse_color: recognize "no$foo" to clear the $foo attribute
+ parse_color: support 24-bit RGB values
+ parse_color: refactor color storage
+ Merge branch 'jn/parse-config-slot' into jk/colors
"diff-highlight" filter (in contrib/) allows its color output
to be customized via configuration variables.
* jk/commit-date-approxidate (2014-12-11) 2 commits
(merged to 'next' on 2014-12-15 at 047530e)
+ commit: always populate GIT_AUTHOR_* variables
+ commit: loosen ident checks when generating template
Recent update to "git commit" broke amending an existing commit
with bogus author/committer lines without a valid e-mail address.
* jk/credential-quit (2014-12-04) 2 commits
(merged to 'next' on 2014-12-15 at 4cfd999)
+ prompt: respect GIT_TERMINAL_PROMPT to disable terminal prompts
+ credential: let helpers tell us to quit
Credential helpers are asked in turn until one of them give
positive response, which is cumbersome to turn off when you need to
run Git in an automated setting. The credential helper interface
learned to allow a helper to say "stop, don't ask other helpers."
Also GIT_TERMINAL_PROMPT environment can be set to false to disable
our built-in prompt mechanism for passwords.
* jk/for-each-reflog-ent-reverse (2014-12-05) 2 commits
(merged to 'next' on 2014-12-15 at de71f08)
+ for_each_reflog_ent_reverse: turn leftover check into assertion
+ for_each_reflog_ent_reverse: fix newlines on block boundaries
The code that reads the reflog from the newer to the older entries
did not handle an entry that crosses a boundary of block it uses to
read them correctly.
* jk/lock-ref-sha1-basic-return-errors (2014-11-20) 1 commit
(merged to 'next' on 2014-12-15 at c48b110)
+ lock_ref_sha1_basic: do not die on locking errors
Correct an API anomaly.
* jk/read-packed-refs-without-path-max (2014-12-10) 3 commits
(merged to 'next' on 2014-12-15 at c6d6f56)
+ read_packed_refs: use skip_prefix instead of static array
+ read_packed_refs: pass strbuf to parse_ref_line
+ read_packed_refs: use a strbuf for reading lines
Git did not correctly read an overlong refname from a packed refs
file.
* jk/test-asan (2014-12-11) 1 commit
(merged to 'next' on 2014-12-15 at d24cb92)
+ t: support clang/gcc AddressSanitizer
* js/fsck-tag-validation (2014-12-09) 2 commits
(merged to 'next' on 2014-12-15 at 455f26c)
+ index-pack: terminate object buffers with NUL
+ fsck: properly bound "invalid tag name" error message
New tag object format validation added in 2.2 showed garbage
after a tagname it reported in its error message.
* js/push-to-deploy (2014-11-30) 2 commits
(merged to 'next' on 2014-12-15 at ef8c99f)
+ t5516: more tests for receive.denyCurrentBranch=updateInstead
+ receive-pack: add another option for receive.denyCurrentBranch
(this branch is used by jc/push-to-checkout.)
"git push" into a repository with a working tree normally refuses
to modify the branch that is checked out. The command learned to
optionally do an equivalent of "git reset --hard" only when there
is no change to the working tree and the index instead, which would
be useful to "deploy" by pushing into a repository.
* js/t5000-dont-copy-bin-sh (2014-11-24) 1 commit
(merged to 'next' on 2014-12-15 at 65ffd05)
+ t5000 on Windows: do not mistake "sh.exe" as "sh"
* js/test-hashmap-squelch-gcc (2014-12-09) 1 commit
(merged to 'next' on 2014-12-15 at a8da691)
+ test-hashmap: squelch gcc compiler warning
* mg/add-ignore-errors (2014-11-21) 1 commit
(merged to 'next' on 2014-12-15 at 3834789)
+ add: ignore only ignored files
"git add --ignore-errors ..." did not ignore an error to
give a file that did not exist.
* mg/branch-d-m-f (2014-12-09) 2 commits
(merged to 'next' on 2014-12-15 at 8366f2c)
+ branch: allow -f with -m and -d
+ t3200-branch: test -M
"git branch -d" (delete) and "git branch -m" (move) learned to
honor "-f" (force) flag; unlike many other subcommands, the way to
force these have been with separate "-D/-M" options, which was
inconsistent.
* mg/doc-check-ignore-tracked-are-not-ignored (2014-12-04) 1 commit
(merged to 'next' on 2014-12-15 at c50f748)
+ check-ignore: clarify treatment of tracked files
* mh/find-uniq-abbrev (2014-11-26) 1 commit
(merged to 'next' on 2014-12-15 at e3b2b62)
+ sha1_name: avoid unnecessary sha1 lookup in find_unique_abbrev
The code to abbreviate an object name to its short unique prefix
has been optimized when no abbreviation was requested.
* mh/simplify-repack-without-refs (2014-11-25) 7 commits
(merged to 'next' on 2014-12-15 at 351e03e)
+ sort_string_list(): rename to string_list_sort()
+ prune_remote(): iterate using for_each_string_list_item()
+ prune_remote(): rename local variable
+ repack_without_refs(): make the refnames argument a string_list
+ prune_remote(): sort delete_refs_list references en masse
+ prune_remote(): initialize both delete_refs lists in a single loop
+ prune_remote(): exit early if there are no stale references
"git remote update --prune" to drop many refs has been optimized.
* nd/ls-tree-pathspec (2014-12-01) 5 commits
(merged to 'next' on 2014-12-15 at 8da6e09)
+ t3102: style modernization
+ t3102: document that ls-tree does not yet support negated pathspec
+ ls-tree: disable negative pathspec because it's not supported
+ ls-tree: remove path filtering logic in show_tree
+ tree.c: update read_tree_recursive callback to pass strbuf as base
"git ls-tree" does not support path selection based on negative
pathspecs, but did not error out when negative pathspecs are given.
* nd/split-index (2014-12-11) 1 commit
(merged to 'next' on 2014-12-15 at ed6490c)
+ index-format.txt: add a missing closing quote
A typofix to the documentation of a feature already in the release.
* ok/rebase-i-count-todo (2014-12-10) 1 commit
(merged to 'next' on 2014-12-15 at 4a1f7ed)
+ Show number of TODO items for interactive rebase
* pb/am-message-id-footer (2014-11-25) 2 commits
(merged to 'next' on 2014-12-15 at b44b6bd)
+ git-am: add --message-id/--no-message-id
+ git-mailinfo: add --message-id
"git am" learned "--message-id" option to copy the message ID of
the incoming e-mail to the log message of resulting commit.
* pb/send-email-te (2014-11-25) 2 commits
(merged to 'next' on 2014-12-15 at 38c2810)
+ git-send-email: add --transfer-encoding option
+ git-send-email: delay creation of MIME headers
(this branch is used by jc/t9001-modernise.)
"git send-email" learned "--transfer-encoding" option to force
a non-fault Content-Transfer-Encoding header (e.g. base64).
* po/doc-assume-unchanged (2014-12-09) 2 commits
(merged to 'next' on 2014-12-15 at 646e77e)
+ gitignore.txt: do not suggest assume-unchanged
+ doc: make clear --assume-unchanged's user contract
Fixes long-standing misunderstanding of what assume-unchanged is
about. Some text near what is removed by the bottom patch may also
have to be removed.
* ps/new-workdir-into-empty-directory (2014-12-03) 1 commit
(merged to 'next' on 2014-12-15 at 0787b56)
+ git-new-workdir: don't fail if the target directory is empty
"git new-workdir" (in contrib/) can be used to populate an empty
and existing directory now.
* rj/no-xopen-source-for-cygwin (2014-11-24) 1 commit
(merged to 'next' on 2014-12-15 at 6e8e9ff)
+ git-compat-util.h: don't define _XOPEN_SOURCE on cygwin
Avoid compilation warnings on recent gcc toolchain on Cygwin.
* rj/t0050-passes (2014-11-30) 1 commit
(merged to 'next' on 2014-12-15 at f56c339)
+ t0050-*.sh: mark the rename (case change) test as passing
* rs/use-strbuf-complete-line (2014-12-12) 1 commit
(merged to 'next' on 2014-12-15 at d6426a0)
+ use strbuf_complete_line() for adding a newline if needed
* rt/completion-tag (2014-12-04) 1 commit
(merged to 'next' on 2014-12-15 at b03ee39)
+ completion: add git-tag options
* rt/for-each-ref-spell-tcl-as-Tcl (2014-11-30) 1 commit
(merged to 'next' on 2014-12-15 at c0fcefb)
+ for-each-ref: correct spelling of Tcl in option description
* rw/apply-does-not-take-ignore-date (2014-12-09) 1 commit
(merged to 'next' on 2014-12-15 at ded2f99)
+ git-am.txt: --ignore-date flag is not passed to git-apply
* sb/string-list (2014-12-04) 3 commits
(merged to 'next' on 2014-12-15 at 8bb8ddd)
+ string_list: remove string_list_insert_at_index() from its API
+ mailmap: use higher level string list functions
+ string_list: document string_list_(insert,lookup)
API simplification.
* sv/doc-stripspace (2014-12-04) 1 commit
(merged to 'next' on 2014-12-15 at e86f8ba)
+ Documentation/git-stripspace: add synopsis for --comment-lines
* tb/config-core-filemode-check-on-broken-fs (2014-11-21) 1 commit
(merged to 'next' on 2014-12-15 at 3e5490b)
+ init-db: improve the filemode trustability check
Some filesystems assign filemodes in a strange way, fooling then
automatic "filemode trustability" check done during a new
repository creation.
* tb/t0027-eol-conversion (2014-12-05) 1 commit
(merged to 'next' on 2014-12-15 at ba24e75)
+ t0027: check the eol conversion warnings
--------------------------------------------------
[New Topics]
* bb/update-unicode-table (2014-12-22) 5 commits
- update_unicode.sh: delete the command group
- update_unicode.sh: make the output structure visible
- update_unicode.sh: shorten uniset invocation path
- update_unicode.sh: set UNICODE_DIR only once
- update_unicode.sh: simplify output capture
Simplify the procedure to generate unicode table.
Will merge to 'next'.
* bc/fetch-thin-less-aggressive-in-normal-repository (2014-12-22) 3 commits
- pack-objects: use --objects-edge-aggressive only for shallow repos
- rev-list: add an option to mark fewer edges as uninteresting
- Documentation: add missing article in rev-list-options.txt
Earlier we made "rev-list --object-edge" more aggressively list the
objects at the edge commits, in order to reduce number of objects
fetched into a shallow repository, but the change affected cases
other than "fetching into a shallow repository" and made it
unusably slow (e.g. fetching into a normal repository should not
have to suffer the overhead from extra processing). Limit it to a
more specific case by introducing --objects-edge-aggressive, a new
option to rev-list.
Seems to break t5500 when merged to 'pu'.
* es/squelch-openssl-warnings-on-macosx (2014-12-18) 1 commit
- git-compat-util: suppress unavoidable Apple-specific deprecation warnings
Squelch useless compiler warnings on Mac OS X.
Will merge to 'next'.
* jh/pre-push-sample-no-custom-ifs (2014-12-22) 1 commit
- pre-push.sample: remove unnecessary and misleading IFS=' '
The sample pre-push hook used customized IFS=' ' for no good reason.
Will merge to 'next'.
* mh/update-ref-verify (2014-12-11) 2 commits
- update-ref: fix "verify" command with missing <oldvalue>
- t1400: add some more tests of "update-ref --stdin"'s verify command
"git update-ref --stdin"'s verify command did not work well when
<oldvalue>, which is documented as optional, was missing.
Will merge to 'next'.
* sb/atomic-push (2014-12-22) 7 commits
- t5543-atomic-push.sh: add basic tests for atomic pushes
- push.c: add an --atomic argument
- receive-pack: move execute_commands_non_atomic before execute_commands
- receive-pack.c: receive-pack.c: use a single ref_transaction for atomic pushes
- send-pack.c: add --atomic command line argument
- send-pack: rename ref_update_to_be_sent to check_to_send_update
- receive-pack.c: add protocol support to negotiate atomic-push
(this branch uses mh/reflog-expire.)
"git push" has been taught a "--atomic" option that makes push to
update more than one ref an "all-or-none" affair.
Will merge to 'next'.
* sb/dco-indentation-fix (2014-12-22) 1 commit
- Documentation/SubmittingPatches: unify whitespace/tabs for the DCO
Will merge to 'next'.
* sb/t5400-remove-unused (2014-12-16) 1 commit
- t5400: remove dead code
Will merge to 'next'.
* tf/prompt-preserve-exit-status (2014-12-22) 1 commit
- git-prompt: preserve value of $? inside shell prompt
Using the exit status of the last command in the prompt, e.g.
PS1='$(__git_ps1) $? ', did not work well because the helper
function stomped on the exit status.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* pw/remote-set-url-fetch (2014-11-26) 1 commit
- remote: add --fetch and --both options to set-url
Expecting a reroll.
* ms/submodule-update-config-doc (2014-11-03) 1 commit
- submodule: clarify documentation for update subcommand
Needs a reroll ($gmane/259037).
* je/quiltimport-no-fuzz (2014-10-21) 2 commits
- git-quiltimport: flip the default not to allow fuzz
- git-quiltimport.sh: allow declining fuzz with --exact option
"quiltimport" drove "git apply" always with -C1 option to reduce
context of the patch in order to give more chance to somewhat stale
patches to apply. Add an "--exact" option to disable, and also
"-C$n" option to customize this behaviour. The top patch
optionally flips the default to "--exact".
Tired of waiting for an Ack; will discard.
* jc/push-cert-hmac-optim (2014-09-25) 2 commits
- receive-pack: truncate hmac early and convert only necessary bytes
- sha1_to_hex: split out "hex-format n bytes" helper and use it
This is "we could do this if we wanted to", not "we measured and it
improves performance critical codepath".
Will perhaps drop.
* mt/patch-id-stable (2014-06-10) 1 commit
- patch-id: change default to stable
Teaches "git patch-id" to compute the patch ID that does not change
when the files in a single patch is reordered. As this new algorithm
is backward incompatible, the last bit to flip it to be the default
is left out of 'master' for now.
Nobody seems to be jumping up & down requesting this last step,
which makes the result somewhat backward incompatible.
Will perhaps drop.
* tr/remerge-diff (2014-11-10) 9 commits
- t4213: avoid "|" in sed regexp
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Waiting for a reroll ($gmane/256591).
* hv/submodule-config (2014-11-11) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
- SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
- git-add--interactive: Preserve diff heading when splitting hunks
Waiting for a reroll.
* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
- gitweb: Harden UTF-8 handling in generated links
$gmane/250758?
* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
- userdiff: support Java try keyword
- userdiff: support C# async methods and correct C# keywords
Reviews sent; waiting for a response.
* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
- git-rebase: print name of rev when using shorthand
Teach "git rebase -" to report the concrete name of the branch
(i.e. the previous one).
But it stops short and does not do the same for "git rebase @{-1}".
Expecting a reroll.
* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
- merge: drop unused arg from abort_commit method signature
- merge: make prepare_to_commit responsible for write_merge_state
- t7505: ensure cleanup after hook blocks merge
- t7505: add missing &&
Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
run during "git merge". The log message stresses too much on one
hook, prepare-commit-msg, but it would equally apply to other hooks
like post-merge, I think.
Waiting for a reroll.
* jc/graph-post-root-gap (2013-12-30) 3 commits
- WIP: document what we want at the end
- graph: remove unused code a bit
- graph: stuff the current commit into graph->columns[]
This was primarily a RFH ($gmane/239580).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit before sending it out.
--------------------------------------------------
[Cooking]
* ye/http-accept-language (2014-12-22) 1 commit
- http: Add Accept-Language header if possible
An earlier iteration broke various people ($gmane/260903). Please
retest and comment.
* jk/strbuf-doc-to-header (2014-12-12) 4 commits
- strbuf.h: reorganize api function grouping headers
- strbuf.h: format asciidoc code blocks as 4-space indent
- strbuf.h: drop asciidoc list formatting from API docs
- strbuf: migrate api-strbuf.txt documentation to strbuf.h
Resolve the "doc vs header" to favor the latter.
Expecting to be rerolled.
* mh/reflog-expire (2014-12-22) 24 commits
- refs.c: let fprintf handle the formatting
- refs.c: don't expose the internal struct ref_lock in the header file
- lock_any_ref_for_update(): inline function
- refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
- reflog_expire(): new function in the reference API
- expire_reflog(): treat the policy callback data as opaque
- Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
- expire_reflog(): move rewrite to flags argument
- expire_reflog(): move verbose to flags argument
- expire_reflog(): pass flags through to expire_reflog_ent()
- struct expire_reflog_cb: a new callback data type
- Rename expire_reflog_cb to expire_reflog_policy_cb
- expire_reflog(): move updateref to flags argument
- expire_reflog(): move dry_run to flags argument
- expire_reflog(): add a "flags" argument
- expire_reflog(): extract two policy-related functions
- Extract function should_expire_reflog_ent()
- expire_reflog(): use a lock_file for rewriting the reflog file
- expire_reflog(): return early if the reference has no reflog
- expire_reflog(): rename "ref" parameter to "refname"
- expire_reflog(): it's not an each_ref_fn anymore
- refs.c: add a function to append a reflog entry to a fd
- refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
- refs.c: make ref_transaction_create a wrapper for ref_transaction_update
(this branch is used by sb/atomic-push.)
Restructure "reflog expire" to fit the reflogs better with the
recently updated ref API.
Looked reasonable (except that some shortlog entries stood out like
a sore thumb).
* po/doc-core-ignorestat (2014-12-12) 1 commit
- doc: core.ignoreStat clarify the --assume-unchanged effect
Expecting a reroll.
* jk/add-i-read-error (2014-12-15) 1 commit
- add--interactive: leave main loop on read error
"git add -i" did not notice when the interactive command input
stream went away and kept asking.
Will merge to 'next'.
* pd/completion-filenames-fix (2014-12-15) 1 commit
- Update documentation occurrences of filename .sh
The top-of-the-file instruction for completion scripts (in contrib/)
did not name the files correctly.
Will merge to 'next'.
* rd/send-email-2047-fix (2014-12-15) 2 commits
- send-email: handle adjacent RFC 2047-encoded words properly
- send-email: align RFC 2047 decoding more closely with the spec
"git send-email" did not handle RFC 2047 encoded headers quite
right.
Will merge to 'next'.
* jn/doc-api-errors (2014-12-04) 1 commit
- doc: document error handling functions and conventions
For discussion.
* jn/rerere-fail-on-auto-update-failure (2014-12-03) 2 commits
- SQUASH???
- rerere: error out on autoupdate failure
Will be rerolled as a part of a larger series.
* jc/push-to-checkout (2014-12-01) 2 commits
- receive-pack: support push-to-checkout hook
- receive-pack: refactor updateInstead codepath
Extending the js/push-to-deploy topic, the behaviour of "git push"
when updating the working tree and the index with an update to the
branch that is checked out can be tweaked by push-to-checkout hook.
Needs docs.
* lh/send-email-hide-x-mailer (2014-12-15) 2 commits
- test/send-email: --[no-]xmailer tests
- send-email: add --[no-]xmailer option
"git send-email" normally identifies itself via X-Mailer: header
in the message it sends out. A new command line flag allows the
header to be squelched.
Will merge to 'next'.
* nd/list-files (2014-12-01) 19 commits
- list-files: -M aka diff-cached
- list-files -F: show submodules with the new indicator '&'
- list-files: add -F/--classify
- list-files: show directories as well as files
- list-files: do not show duplicate cached entries
- list-files: sort output and remove duplicates
- list-files: add -t back
- list-files: add -1 short for --no-column
- list-files: add -R/--recursive short for --max-depth=-1
- list-files: -u does not imply showing stages
- list-files: a user friendly version of ls-files and more
- ls-files: support --max-depth
- ls-files: add --column
- ls-files: add --color to highlight file names
- ls-files: buffer full item in strbuf before printing
- ls_colors.c: highlight submodules like directories
- ls_colors.c: add a function to color a file name
- ls_colors.c: parse color.ls.* from config file
- ls_colors.c: add $LS_COLORS parsing code
A new "git list-files" Porcelain command, "ls-files" with bells and
whistles.
* nd/multiple-work-trees (2014-12-01) 34 commits
- git-common-dir: make "modules/" per-working-directory directory
- checkout: do not fail if target is an empty directory
- t2025: add a test to make sure grafts is working from a linked checkout
- checkout: don't require a work tree when checking out into a new one
- git_path(): keep "info/sparse-checkout" per work-tree
- count-objects: report unused files in $GIT_DIR/worktrees/...
- gc: support prune --worktrees
- gc: factor out gc.pruneexpire parsing code
- gc: style change -- no SP before closing parenthesis
- checkout: clean up half-prepared directories in --to mode
- checkout: reject if the branch is already checked out elsewhere
- prune: strategies for linked checkouts
- checkout: support checking out into a new working directory
- use new wrapper write_file() for simple file writing
- wrapper.c: wrapper to open a file, fprintf then close
- setup.c: support multi-checkout repo setup
- setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
- setup.c: convert check_repository_format_gently to use strbuf
- setup.c: detect $GIT_COMMON_DIR in is_git_directory()
- setup.c: convert is_git_directory() to use strbuf
- git-stash: avoid hardcoding $GIT_DIR/logs/....
- *.sh: avoid hardcoding $GIT_DIR/hooks/...
- git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
- $GIT_COMMON_DIR: a new environment variable
- commit: use SEQ_DIR instead of hardcoding "sequencer"
- fast-import: use git_path() for accessing .git dir instead of get_git_dir()
- reflog: avoid constructing .lock path with git_path
- *.sh: respect $GIT_INDEX_FILE
- git_path(): be aware of file relocation in $GIT_DIR
- path.c: group git_path(), git_pathdup() and strbuf_git_path() together
- path.c: rename vsnpath() to do_git_path()
- git_snpath(): retire and replace with strbuf_git_path()
- path.c: make get_pathname() call sites return const char *
- path.c: make get_pathname() return strbuf instead of static buffer
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
* sb/copy-fd-errno (2014-11-17) 1 commit
- copy.c: make copy_fd preserve meaningful errno
Will be rerolled as a part of a larger series.
* jc/t9001-modernise (2014-11-25) 5 commits
- t9001: style modernisation phase #5
- t9001: style modernisation phase #4
- t9001: style modernisation phase #3
- t9001: style modernisation phase #2
- t9001: style modernisation phase #1
* jk/approxidate-avoid-y-d-m-over-future-dates (2014-11-13) 2 commits
(merged to 'next' on 2014-12-15 at 397e986)
+ approxidate: allow ISO-like dates far in the future
+ pass TIME_DATE_NOW to approxidate future-check
Traditionally we tried to avoid interpreting date strings given by
the user as future dates, e.g. GIT_COMMITTER_DATE=2014-12-10 when
used early November 2014 was taken as "October 12, 2014" because it
is likely that a date in the future, December 10, is a mistake.
Loosen this and do not tiebreak by future-ness of the date when
(1) ISO-like format is used, and
(2) the string can make sense interpreted as both y-m-d and y-d-m.
Will cook in 'next'.
* br/imap-send-verbosity (2014-11-05) 1 commit
(merged to 'next' on 2014-12-15 at 504af0b)
+ imap-send: use parse options API to determine verbosity
(this branch is used by br/imap-send-via-libcurl.)
Will cook in 'next'.
* br/imap-send-via-libcurl (2014-11-10) 1 commit
(merged to 'next' on 2014-12-15 at 90db637)
+ git-imap-send: use libcurl for implementation
(this branch uses br/imap-send-verbosity.)
Newer libCurl knows how to talk IMAP; "git imap-send" has been
updated to use this instead of a hand-rolled OpenSSL calls.
Will cook in 'next'.
* nd/lockfile-absolute (2014-11-03) 1 commit
(merged to 'next' on 2014-12-15 at 34db9af)
+ lockfile.c: store absolute path
The lockfile API can get confused which file to clean up when the
process moved the $cwd after creating a lockfile.
Will cook in 'next'.
* jc/merge-bases (2014-10-30) 2 commits
(merged to 'next' on 2014-12-15 at cac279e)
+ get_merge_bases(): always clean-up object flags
+ bisect: clean flags after checking merge bases
The get_merge_bases*() API was easy to misuse by careless
copy&paste coders, leaving object flags tainted in the commits that
needed to be traversed.
Will cook in 'next'.
* jc/strbuf-add-lines-avoid-sp-ht-sequence (2014-10-27) 1 commit
(merged to 'next' on 2014-12-15 at b499889)
+ strbuf_add_commented_lines(): avoid SP-HT sequence in commented lines
The commented output used to blindly add a SP before the payload
line, resulting in "# \t<indented text>\n" when the payload began
with a HT. Instead, produce "#\t<indented text>\n".
Will cook in 'next'.
* nd/untracked-cache (2014-12-15) 24 commits
- SQUASH???
- untracked cache: guard and disable on system changes
- mingw32: add uname()
- t7063: tests for untracked cache
- update-index: test the system before enabling untracked cache
- update-index: manually enable or disable untracked cache
- status: enable untracked cache
- untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- untracked cache: mark index dirty if untracked cache is updated
- untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- untracked cache: avoid racy timestamps
- read-cache.c: split racy stat test to a separate function
- untracked cache: invalidate at index addition or removal
- untracked cache: load from UNTR index extension
- untracked cache: save to an index extension
- ewah: add convenient wrapper ewah_serialize_strbuf()
- untracked cache: don't open non-existent .gitignore
- untracked cache: mark what dirs should be recursed/saved
- untracked cache: record/validate dir mtime and reuse cached output
- untracked cache: make a wrapper around {open,read,close}dir()
- untracked cache: invalidate dirs recursively if .gitignore changes
- untracked cache: initial untracked cache validation
- untracked cache: record .gitignore information and dir hierarchy
- dir.c: optionally compute sha-1 of a .gitignore file
Comments?
* jc/diff-b-m (2014-10-23) 1 commit
(merged to 'next' on 2014-12-15 at 59c6636)
+ diff -B -M: fix output for "copy and then rewrite" case
Fix long-standing bug in "diff -B -M" output.
Will cook in 'next'.
* jc/checkout-local-track-report (2014-10-14) 1 commit
(merged to 'next' on 2014-12-15 at e91a7df)
+ checkout: report upstream correctly even with loosely defined branch.*.merge
The report from "git checkout" on a branch that builds on another
local branch by setting its branch.*.merge to branch name (not a
full refname) incorrectly said that the upstream is gone.
Will cook in 'next'.
* jc/clone-borrow (2014-10-15) 1 commit
(merged to 'next' on 2014-12-15 at 08fdf77)
+ clone: --dissociate option to mark that reference is only temporary
Allow "git clone --reference" to be used more safely.
Will cook in 'next'.
--------------------------------------------------
[Discarded]
* mb/enable-lib-terminal-test-on-newer-darwin (2014-11-14) 1 commit
. t/lib-terminal: allow TTY tests to run under recent Mac OS
We probably should drop this ($gmane/259609).
* zk/grep-color-words (2014-10-27) 2 commits
. Revert "grep: fix match highlighting for combined patterns with context lines"
. grep: fix match highlighting for combined patterns with context lines
rs/grep-color-words topic solves it in a different way.
Will discard.
* jn/dedup-doc-header (2014-12-10) 2 commits
. put string-list API documentation in one place
. put strbuf API documentation in one place
We would want to have an easy way for developers to learn about
APIs, and also a way to encourage them to keep the API
documentation up to date when they make changes. Having header
comments and API documentation duplicated in two different places
risked them going out of sync.
The approach taken by jk/strbuf-doc-to-header is the other way
around, which people seem to prefer, so this is discarded.
* jt/timer-settime (2014-08-29) 6 commits
. use timer_settime() for new platforms
. autoconf: check for timer_settime()
. autoconf: check for struct itimerspec
. autoconf: check for struct sigevent
. autoconf: check for struct timespec
. autoconf: check for timer_t
Was wanting for a reroll.
* rs/ref-transaction-reflog (2014-11-03) 15 commits
. refs.c: allow deleting refs with a broken sha1
. refs.c: remove lock_any_ref_for_update
. refs.c: make unlock_ref/close_ref/commit_ref static
. refs.c: rename log_ref_setup to create_reflog
. reflog.c: use a reflog transaction when writing during expire
. refs.c: allow multiple reflog updates during a single transaction
. refs.c: only write reflog update if msg is non-NULL
. refs.c: add a flag to allow reflog updates to truncate the log
. refs.c: add a transaction function to append a reflog entry
. copy.c: make copy_fd preserve meaningful errno
. refs.c: add a function to append a reflog entry to a fd
. refs.c: add a new update_type field to ref_update
. refs.c: rename the transaction functions
. refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
. refs.c make ref_transaction_create a wrapper to ref_transaction_update
(this branch is used by rs/ref-transaction-rename and rs/ref-transaction-send-pack.)
Stefan Beller started working on reorganizing these three series,
which unfortunately did not see much reviews.
* rs/ref-transaction-rename (2014-11-07) 16 commits
. refs.c: add an err argument to pack_refs
. refs.c: make lock_packed_refs take an err argument
. refs.c: make add_packed_ref return an error instead of calling die
. refs.c: replace the onerr argument in update_ref with a strbuf err
. refs.c: make the *_packed_refs functions static
. refs.c: make repack_without_refs static
. remote.c: use a transaction for deleting refs
. refs.c: write updates to packed refs when a transaction has more than one ref
. refs.c: move reflog updates into its own function
. refs.c: rollback the lockfile before we die() in repack_without_refs
. refs.c: update rename_ref to use a transaction
. refs.c: add transaction support for renaming a reflog
. refs.c: use a stringlist for repack_without_refs
. refs.c: use packed refs when deleting refs during a transaction
. refs.c: return error instead of dying when locking fails during transaction
. refs.c: allow passing raw git_committer_info as email to _update_reflog
(this branch is used by rs/ref-transaction-send-pack; uses rs/ref-transaction-reflog.)
Stefan Beller started working on reorganizing these three series,
which unfortunately did not see much reviews.
* rs/ref-transaction-send-pack (2014-11-07) 7 commits
. refs.c: add an err argument to create_symref
. refs.c: add an err argument to create_reflog
. t5543-atomic-push.sh: add basic tests for atomic pushes
. push.c: add an --atomic-push argument
. receive-pack.c: use a single transaction when atomic-push is negotiated
. send-pack.c: add an --atomic-push command line argument
. receive-pack.c: add protocol support to negotiate atomic-push
(this branch uses rs/ref-transaction-reflog and rs/ref-transaction-rename.)
Stefan Beller started working on reorganizing these three series,
which unfortunately did not see much reviews.
* sb/simplify-repack-without-refs (2014-11-20) 1 commit
. refs.c: use a string_list for repack_without_refs
* sb/log-ref-write-fd (2014-11-20) 1 commit
. refs.c: add a function to append a reflog entry to a fd
Will be rerolled as a part of a larger series.
* sb/ref-transaction-unify-to-update (2014-11-20) 2 commits
. refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
. refs.c: make ref_transaction_create a wrapper for ref_transaction_update
(this branch is used by sb/ref-transaction-reflog.)
Code simplification.
Will be rerolled as a part of a larger series.
* sb/write-sha1-update-reflog (2014-11-24) 1 commit
. refs.c: move reflog updates into its own function
Moves a part of function around to add a helper that still only has
one caller. Need to see how this helps in a bigger picture.
* sb/ref-transaction-reflog (2014-12-03) 2 commits
. refs.c: rename transaction.updates to transaction.ref_updates
. refs.c: rename the transaction functions
(this branch uses sb/ref-transaction-unify-to-update.)
Will be rerolled as a part of a larger series.
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Sep 2014, #03; Thu, 11)
@ 2014-09-11 22:52 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2014-09-11 22:52 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The third batch of topics have graduated to 'master'. There are too
many topics waiting to be in 'next' but without comments and reviews
on the list, which is somewhat disturbing.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* br/http-init-fix (2014-08-21) 2 commits
(merged to 'next' on 2014-09-03 at 6d42f5e)
+ http: style fixes for curl_multi_init error check
+ http.c: die if curl_*_init fails
Code clean-up.
* br/imap-send-simplify-tunnel-child-process (2014-09-02) 3 commits
(merged to 'next' on 2014-09-04 at a182987)
+ imap-send: simplify v_issue_imap_cmd() and get_cmd_result() using starts_with()
+ imap-send.c: imap_folder -> imap_server_conf.folder
+ git-imap-send: simplify tunnel construction
Code clean-up.
* dt/cache-tree-repair (2014-09-03) 5 commits
(merged to 'next' on 2014-09-03 at 1c8ff65)
+ cache-tree: do not try to use an invalidated subtree info to build a tree
(merged to 'next' on 2014-08-26 at 6faccdb)
+ cache-tree: Write updated cache-tree after commit
+ cache-tree: subdirectory tests
+ test-dump-cache-tree: invalid trees are not errors
+ cache-tree: create/update cache-tree on checkout
Add a few more places in "commit" and "checkout" that make sure
that the cache-tree is fully populated in the index.
* et/spell-poll-infinite-with-minus-one-only (2014-08-22) 1 commit
(merged to 'next' on 2014-09-03 at 5be5957)
+ upload-pack: keep poll(2)'s timeout to -1
We used to pass -1000 to poll(2), expecting it to also mean "no
timeout", which should be spelled as -1.
* jk/contrib-subtree-make-all (2014-08-18) 1 commit
(merged to 'next' on 2014-09-03 at 919d889)
+ subtree: make "all" default target of Makefile
* jk/fast-import-fixes (2014-08-25) 2 commits
(merged to 'next' on 2014-09-04 at 74838e5)
+ fast-import: fix buffer overflow in dump_tags
+ fast-import: clean up pack_data pointer in end_packfile
With sufficiently long refnames, fast-import could have overflown
an on-stack buffer.
* jk/make-simplify-dependencies (2014-08-26) 3 commits
(merged to 'next' on 2014-09-03 at 820a600)
+ Makefile: drop CHECK_HEADER_DEPENDENCIES code
+ Makefile: use `find` to determine static header dependencies
+ i18n: treat "make pot" as an explicitly-invoked target
Admit that keeping LIB_H up-to-date, only for those that do not use
the automatically generated dependencies, is a losing battle, and
make it conservative by making everything depend on anything.
* jk/name-decoration-alloc (2014-08-27) 3 commits
(merged to 'next' on 2014-09-04 at 05f0d29)
+ log-tree: use FLEX_ARRAY in name_decoration
+ log-tree: make name_decoration hash static
+ log-tree: make add_name_decoration a public function
The API to allocate the structure to keep track of commit
decoration was cumbersome to use, inviting lazy code to
overallocate memory.
* jk/prune-top-level-refs-after-packing (2014-08-25) 1 commit
(merged to 'next' on 2014-09-04 at bfe3873)
+ pack-refs: prune top-level refs like "refs/foo"
After "pack-refs --prune" packed refs at the top-level, it failed
to prune them.
* jn/unpack-trees-checkout-m-carry-deletion (2014-08-25) 3 commits
(merged to 'next' on 2014-09-04 at e15803a)
+ checkout -m: attempt merge when deletion of path was staged
+ unpack-trees: use 'cuddled' style for if-else cascade
+ unpack-trees: simplify 'all other failures' case
"git checkout -m" did not switch to another branch while carrying
the local changes forward when a path was deleted from the index.
* mm/discourage-commit-a-to-finish-conflict-resolution (2014-08-28) 1 commit
(merged to 'next' on 2014-09-03 at e3f872f)
+ merge, pull: stop advising 'commit -a' in case of conflict
* nd/fetch-pass-quiet-to-gc-child-process (2014-08-18) 2 commits
(merged to 'next' on 2014-09-04 at 028cd42)
+ fetch: silence git-gc if --quiet is given
+ fetch: convert argv_gc_auto to struct argv_array
Progress output from "git gc --auto" was visible in "git fetch -q".
* nd/large-blobs (2014-08-18) 5 commits
(merged to 'next' on 2014-09-04 at 16d7c62)
+ diff: shortcut for diff'ing two binary SHA-1 objects
+ diff --stat: mark any file larger than core.bigfilethreshold binary
+ diff.c: allow to pass more flags to diff_populate_filespec
+ sha1_file.c: do not die failing to malloc in unpack_compressed_entry
+ wrapper.c: introduce gentle xmallocz that does not die()
Teach a few codepaths to punt (instead of dying) when large blobs
that would not fit in core are involved in the operation.
* nd/mv-code-cleaning (2014-09-03) 8 commits
(merged to 'next' on 2014-09-03 at 4315447)
+ mv: no SP between function name and the first opening parenthese
+ mv: combine two if(s)
+ mv: unindent one level for directory move code
+ mv: move index search code out
+ mv: remove an "if" that's always true
+ mv: split submodule move preparation code out
+ mv: flatten error handling code block
+ mv: mark strings for translations
Code clean-up.
* rs/child-process-init (2014-08-20) 4 commits
(merged to 'next' on 2014-09-03 at c17c06c)
+ run-command: inline prepare_run_command_v_opt()
+ run-command: call run_command_v_opt_cd_env() instead of duplicating it
+ run-command: introduce child_process_init()
+ run-command: introduce CHILD_PROCESS_INIT
Code clean-up.
* rs/list-optim (2014-08-25) 2 commits
(merged to 'next' on 2014-09-04 at eecaf99)
+ walker: avoid quadratic list insertion in mark_complete
+ sha1_name: avoid quadratic list insertion in handle_one_ref
Fix a couple of "accumulate into a sorted list" to "accumulate and
then sort the list".
* rs/ref-transaction-1 (2014-09-03) 22 commits
(merged to 'next' on 2014-09-03 at 68e20b8)
+ update-ref --stdin: pass transaction around explicitly
+ update-ref --stdin: narrow scope of err strbuf
+ refs.c: make delete_ref use a transaction
+ refs.c: make prune_ref use a transaction to delete the ref
+ refs.c: remove lock_ref_sha1
+ refs.c: remove the update_ref_write function
+ refs.c: remove the update_ref_lock function
+ refs.c: make lock_ref_sha1 static
+ walker.c: use ref transaction for ref updates
+ fast-import.c: use a ref transaction when dumping tags
+ receive-pack.c: use a reference transaction for updating the refs
+ refs.c: change update_ref to use a transaction
+ branch.c: use ref transaction for all ref updates
+ fast-import.c: change update_branch to use ref transactions
+ sequencer.c: use ref transactions for all ref updates
+ commit.c: use ref transactions for updates
+ replace.c: use the ref transaction functions for updates
+ tag.c: use ref transactions when doing updates
+ refs.c: add transaction.status and track OPEN/CLOSED
+ refs.c: make ref_transaction_begin take an err argument
+ refs.c: update ref_transaction_delete to check for error and return status
+ refs.c: change ref_transaction_create to do error checking and return status
(this branch is used by rs/ref-transaction, rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
The second batch of the transactional ref update series.
* ta/config-set-1 (2014-08-07) 8 commits
(merged to 'next' on 2014-09-03 at 184b2ef)
+ add tests for `git_config_get_string_const()`
+ add a test for semantic errors in config files
+ rewrite git_config() to use the config-set API
+ config: add `git_die_config()` to the config-set API
+ change `git_config()` return value to void
+ add line number and file name info to `config_set`
+ config.c: fix accuracy of line number in errors
+ config.c: mark error and warnings strings for translation
(this branch is used by ta/config-set-2.)
Use the new caching config-set API in git_config() calls.
* ta/config-set-2 (2014-08-13) 15 commits
(merged to 'next' on 2014-09-03 at f2eff02)
+ builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
+ merge-recursive.c: replace `git_config()` with `git_config_get_int()`
+ ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
+ fast-import.c: replace `git_config()` with `git_config_get_*()` family
+ branch.c: replace `git_config()` with `git_config_get_string()
+ alias.c: replace `git_config()` with `git_config_get_string()`
+ imap-send.c: replace `git_config()` with `git_config_get_*()` family
+ pager.c: replace `git_config()` with `git_config_get_value()`
+ builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
+ rerere.c: replace `git_config()` with `git_config_get_*()` family
+ fetchpack.c: replace `git_config()` with `git_config_get_*()` family
+ archive.c: replace `git_config()` with `git_config_get_bool()` family
+ read-cache.c: replace `git_config()` with `git_config_get_*()` family
+ http-backend.c: replace `git_config()` with `git_config_get_bool()` family
+ daemon.c: replace `git_config()` with `git_config_get_bool()` family
(this branch uses ta/config-set-1.)
Update git_config() users with callback functions for a very narrow
scope with calls to config-set API that lets us query a single
variable.
--------------------------------------------------
[New Topics]
* jc/hash-object (2014-09-11) 3 commits
- hash-object: add --literally option
- hash-object: pass 'write_object' as a flag
- hash-object: reduce file-scope statics
(this branch is used by jc/hash-object-fsck-tag.)
"hash-object" learned a new "--literally" option to hash any random
garbage into a loose object, to allow us to create a test data for
mechanisms to catch corrupt objects.
* jc/hash-object-fsck-tag (2014-09-11) 2 commits
- t1450: make sure fsck detects a malformed tagger line
- Merge branch 'js/fsck-tag-validation' into HEAD
(this branch uses jc/hash-object and js/fsck-tag-validation.)
Using "hash-object --literally", test one of the new breakages
js/fsck-tag-validation topic teaches "fsck" to catch is caught.
* jk/fsck-exit-code-fix (2014-09-10) 1 commit
- fsck: exit with non-zero status upon error from fsck_obj()
"git fsck" failed to report that it found corrupt objects via its
exit status in some cases.
Will merge to 'next'.
* js/fsck-tag-validation (2014-09-11) 6 commits
- Make sure that index-pack --strict checks tag objects
- Add regression tests for stricter tag fsck'ing
- fsck: check tag objects' headers
- Make sure fsck_commit_buffer() does not run out of the buffer
- fsck_object(): allow passing object data separately from the object itself
- Refactor type_from_string() to allow continuing after detecting an error
(this branch is used by jc/hash-object-fsck-tag.)
Teach "git fsck" to inspect the contents of annotated tag objects.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* rs/ref-transaction-multi (2014-09-03) 7 commits
- ### rs/ref-transaction-multi
- refs.c: make the *_packed_refs functions static
- refs.c: make repack_without_refs static
- remote.c: use a transaction for deleting refs
- refs.c: write updates to packed refs when a transaction has more than one ref
- refs.c: move reflog updates into its own function
- ### rs/ref-transaction-rename
(this branch uses rs/ref-transaction, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
Follow-up on rs/ref-transaction series to use the packed-ref to
achieve atomicity when multiple refs are involved.
It appears that rs/ref-transaction series is being rerolled, so
these will be rerolled as well.
* rs/ref-transaction-rename (2014-09-03) 6 commits
- refs.c: rollback the lockfile before we die() in repack_without_refs
- refs.c: update rename_ref to use a transaction
- refs.c: use packed refs when deleting refs during a transaction
- refs.c: return error instead of dying when locking fails during transaction
- refs.c: allow passing raw git_committer_info as email to _update_reflog
- ### rs/ref-transaction-reflog
(this branch is used by rs/ref-transaction-multi; uses rs/ref-transaction and rs/ref-transaction-reflog.)
Follow-up on rs/ref-transaction series to make renaming a ref
transactional (i.e. "delete old and create new" should not leave
an in-between state behind when it fails).
It appears that rs/ref-transaction series is being rerolled, so
these will be rerolled as well.
* rs/ref-transaction-reflog (2014-09-03) 16 commits
- refs.c: allow deleting refs with a broken sha1
- refs.c: remove lock_any_ref_for_update
- refs.c: make unlock_ref/close_ref/commit_ref static
- refs.c: rename log_ref_setup to create_reflog
- reflog.c: use a reflog transaction when writing during expire
- refs.c: allow multiple reflog updates during a single transaction
- refs.c: only write reflog update if msg is non-NULL
- refs.c: add a flag to allow reflog updates to truncate the log
- refs.c: add a transaction function to append a reflog entry
- lockfile.c: make hold_lock_file_for_append preserve meaningful errno
- refs.c: add a function to append a reflog entry to a fd
- refs.c: add a new update_type field to ref_update
- refs.c: rename the transaction functions
- refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
- refs.c: make ref_transaction_create a wrapper to ref_transaction_update
- ### rs/ref-transaction
(this branch is used by rs/ref-transaction-multi and rs/ref-transaction-rename; uses rs/ref-transaction.)
Cover updates to reflog with the same transaction mechanism as used
for reflog manipulations.
It appears that rs/ref-transaction series is being rerolled, so
these will be rerolled as well.
* rs/ref-transaction (2014-09-03) 13 commits
- refs.c: fix handling of badly named refs
- refs.c: make write_ref_sha1 static
- fetch.c: change s_update_ref to use a ref transaction
- refs.c: propagate any errno==ENOTDIR from _commit back to the callers
- refs.c: pass a skip list to name_conflict_fn
- refs.c: call lock_ref_sha1_basic directly from commit
- refs.c: move the check for valid refname to lock_ref_sha1_basic
- refs.c: pass NULL as *flags to read_ref_full
- refs.c: pass the ref log message to _create/delete/update instead of _commit
- refs.c: add an err argument to delete_ref_loose
- wrapper.c: add a new function unlink_or_msg
- wrapper.c: simplify warn_if_unremovable
- ### rs/ref-transaction-1
(this branch is used by rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)
Rerolled and was asked to wait. Seems to break "git remote rm".
* hv/submodule-config (2014-06-30) 4 commits
- do not die on error of parsing fetchrecursesubmodules option
- use new config API for worktree configurations of submodules
- extract functions for submodule config set and lookup
- implement submodule config cache for lookup of submodule names
Kicked back to 'pu' per request ($gmane/255610).
* jt/timer-settime (2014-08-29) 9 commits
- use timer_settime() for new platforms
- autoconf: check for timer_settime()
- autoconf: check for struct itimerspec
- autoconf: check for struct sigevent
- autoconf: check for struct timespec
- autoconf: check for timer_t
- autoconf: check for setitimer()
- autoconf: check for struct itimerval
- git-compat-util.h: add missing semicolon after struct itimerval
Reviewed, discussed and wanting for a reroll.
* jk/pack-bitmap (2014-08-04) 1 commit
- pack-bitmap: do not use gcc packed attribute
Hold, waiting for Karsten's replacement.
* cb/mergetool-difftool (2014-07-21) 2 commits
- difftool: don't assume that default sh is sane
- mergetool: don't require a work tree for --tool-help
Update the way the "difftool --help" shows the help message that is
shared with the "mergetool" to reduce one shell dependency.
Will be rerolled.
* rr/mergetool-temporary-filename-tweak (2014-08-21) 1 commit
- Allow the user to change the temporary file name for mergetool
Needs rerolling (new paragraph in doc seems to be in a wrong place)
* jk/tag-contains (2014-06-30) 8 commits
. perf: add tests for tag --contains
. tag: use commit_contains
. commit: provide a fast multi-tip contains function
. string-list: add pos to iterator callback
. add functions for memory-efficient bitmaps
. paint_down_to_common: use prio_queue
. tag: factor out decision to stream tags
. tag: allow --sort with -n
Expecting a reroll.
* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
- SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
- git-add--interactive: Preserve diff heading when splitting hunks
Waiting for a reroll.
* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
- gitweb: Harden UTF-8 handling in generated links
$gmane/250758?
* rh/prompt-tests (2014-06-05) 11 commits
- t9904: new __git_ps1 tests for Zsh
- test-lib: make it possible to override how test code is eval'd
- lib-prompt-tests.sh: add variable for string that encodes percent in PS1
- lib-prompt-tests.sh: put all tests inside a function
- t9903: move prompt tests to a new lib-prompt-tests.sh file
- t9903: move PS1 color code variable definitions to lib-bash.sh
- t9903: include "Bash" in test names via new $shellname var
- t9903: run pc mode tests again with PS1 expansion disabled
- t9903: move test name prefix to a separate variable
- t9903: put the Bash pc mode prompt test cases in a function
- t9903: remove Zsh test from the suite of Bash prompt tests
Expecting a reroll to limit the damage to test_eval_; also reported
to be broken with older zsh that are still in the field ($gmane/251231).
* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
- userdiff: support Java try keyword
- userdiff: support C# async methods and correct C# keywords
Reviews sent; waiting for a response.
* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
- git-rebase: print name of rev when using shorthand
Teach "git rebase -" to report the concrete name of the branch
(i.e. the previous one).
But it stops short and does not do the same for "git rebase @{-1}".
Expecting a reroll.
* jk/makefile (2014-02-05) 16 commits
. FIXUP
. move LESS/LV pager environment to Makefile
. Makefile: teach scripts to include make variables
. FIXUP
. Makefile: auto-build C strings from make variables
. Makefile: drop *_SQ variables
. FIXUP
. Makefile: add c-quote helper function
. Makefile: introduce sq function for shell-quoting
. Makefile: always create files via make-var
. Makefile: store GIT-* sentinel files in MAKE/
. Makefile: prefer printf to echo for GIT-*
. Makefile: use tempfile/mv strategy for GIT-*
. Makefile: introduce make-var helper function
. Makefile: fix git-instaweb dependency on gitweb
. Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS
Simplify the Makefile rules and macros that exist primarily for
quoting purposes, and make it easier to robustly express the
dependency rules.
Expecting a reroll.
* po/everyday-doc (2014-01-27) 1 commit
- Make 'git help everyday' work
This may make the said command to emit something, but the source is
not meant to be formatted into a manual pages to begin with, and
also its contents are a bit stale. It may be a good first step in
the right direction, but needs more work to at least get the
mark-up right before public consumption.
Waiting for a reroll (thread ending at $gmane/254746)
* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
- merge: drop unused arg from abort_commit method signature
- merge: make prepare_to_commit responsible for write_merge_state
- t7505: ensure cleanup after hook blocks merge
- t7505: add missing &&
Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
run during "git merge". The log message stresses too much on one
hook, prepare-commit-msg, but it would equally apply to other hooks
like post-merge, I think.
Waiting for a reroll.
* jc/graph-post-root-gap (2013-12-30) 3 commits
- WIP: document what we want at the end
- graph: remove unused code a bit
- graph: stuff the current commit into graph->columns[]
This was primarily a RFH ($gmane/239580).
* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
- perf-lib: add test_perf_cleanup target
- perf-lib: split starting the test from the execution
Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.
Will hold.
* jc/show-branch (2014-03-24) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit before sending it out.
--------------------------------------------------
[Cooking]
* as/calloc-takes-nmemb-then-size (2014-09-03) 1 commit
- calloc() and xcalloc() takes nmemb and then size
Code clean-up.
Will merge to 'next'.
* tb/complete-diff-ignore-blank-lines (2014-09-03) 1 commit
- completion: Add --ignore-blank-lines for diff
Will merge to 'next'.
* jc/parseopt-verify-short-name (2014-09-04) 1 commit
- parse-options: detect attempt to add a duplicate short option name
Add checks for a common programming mistake to assign the same
short option name to two separate options to help developers.
Will merge to 'next'.
* rs/more-uses-of-skip-prefix (2014-09-02) 2 commits
- pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
- connect: simplify check_ref() using skip_prefix() and starts_with()
Code clean-up.
Will merge to 'next'.
* kb/perf-trace (2014-09-08) 1 commit
- trace: correct trace_strbuf() parameter type for !HAVE_VARIADIC_MACROS
Compilation fix for some compilers.
Will merge to 'next'.
* rs/export-strbuf-addchars (2014-09-08) 2 commits
- strbuf: use strbuf_addchars() for adding a char multiple times
- strbuf: export strbuf_addchars()
Code clean-up.
Will merge to 'next'.
* tr/remerge-diff (2014-09-08) 8 commits
- log --remerge-diff: show what the conflict resolution changed
- name-hash: allow dir hashing even when !ignore_case
- merge-recursive: allow storing conflict hunks in index
- merge_diff_mode: fold all merge diff variants into an enum
- combine-diff: do not pass revs->dense_combined_merges redundantly
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: internal flag to avoid touching the worktree
- merge-recursive: remove dead conditional in update_stages()
"log -p" output learns a new way to let users inspect a merge
commit by showing the differences between the automerged result
with conflicts the person who recorded the merge would have seen
and the final conflict resolution that was recorded in the merge.
Review comments sent.
* mh/lockfile (2014-09-11) 33 commits
- lockfile.c: store absolute path
- Extract a function commit_lock_file_to()
- trim_last_path_elm(): replace last_path_elm()
- resolve_symlink(): take a strbuf parameter
- resolve_symlink(): use a strbuf for internal scratch space
- Change lock_file::filename into a strbuf
- commit_lock_file(): use a strbuf to manage temporary space
- try_merge_strategy(): use a statically-allocated lock_file object
- try_merge_strategy(): remove redundant lock_file allocation
- struct lock_file: declare some fields volatile
- lockfile: avoid transitory invalid states
- git_config_set_multivar_in_file(): avoid call to rollback_lock_file()
- dump_marks(): remove a redundant call to rollback_lock_file()
- api-lockfile: document edge cases
- commit_lock_file(): rollback lock file on failure to rename
- commit_lock_file(): if close fails, roll back
- commit_lock_file(): die() if called for unlocked lockfile object
- commit_lock_file(): inline temporary variable
- remove_lock_file(): call rollback_lock_file()
- lock_file(): exit early if lockfile cannot be opened
- write_packed_entry_fn(): convert cb_data into a (const int *)
- prepare_index(): declare return value to be (const char *)
- delete_ref_loose(): don't muck around in the lock_file's filename
- cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
- lockfile.c: document the various states of lock_file objects
- lock_file(): always add lock_file object to lock_file_list
- hold_lock_file_for_append(): release lock on errors
- lockfile: unlock file if lockfile permissions cannot be adjusted
- rollback_lock_file(): set fd to -1
- rollback_lock_file(): exit early if lock is not active
- rollback_lock_file(): do not clear filename redundantly
- api-lockfile: expand the documentation
- unable_to_lock_die(): rename function from unable_to_lock_index_die()
Rerolled and reviews starting.
* nd/multiple-work-trees (2014-09-03) 32 commits
. t2025: add a test to make sure grafts is working from a linked checkout
. checkout: don't require a work tree when checking out into a new one
. git_path(): keep "info/sparse-checkout" per work-tree
. count-objects: report unused files in $GIT_DIR/repos/...
. gc: support prune --repos
. gc: factor out gc.pruneexpire parsing code
. gc: style change -- no SP before closing parenthesis
. prune: strategies for linked checkouts
. checkout: reject if the branch is already checked out elsewhere
. checkout: clean up half-prepared directories in --to mode
. checkout: support checking out into a new working directory
. use new wrapper write_file() for simple file writing
. wrapper.c: wrapper to open a file, fprintf then close
. setup.c: support multi-checkout repo setup
. setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
. setup.c: convert check_repository_format_gently to use strbuf
. setup.c: detect $GIT_COMMON_DIR in is_git_directory()
. setup.c: convert is_git_directory() to use strbuf
. git-stash: avoid hardcoding $GIT_DIR/logs/....
. *.sh: avoid hardcoding $GIT_DIR/hooks/...
. git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
. $GIT_COMMON_DIR: a new environment variable
. commit: use SEQ_DIR instead of hardcoding "sequencer"
. fast-import: use git_path() for accessing .git dir instead of get_git_dir()
. reflog: avoid constructing .lock path with git_path
. *.sh: respect $GIT_INDEX_FILE
. git_path(): be aware of file relocation in $GIT_DIR
. path.c: group git_path(), git_pathdup() and strbuf_git_path() together
. path.c: rename vsnpath() to do_git_path()
. git_snpath(): retire and replace with strbuf_git_path()
. path.c: make get_pathname() call sites return const char *
. path.c: make get_pathname() return strbuf instead of static buffer
A replacement for contrib/workdir/git-new-workdir that does not
rely on symbolic links and make sharing of objects and refs safer
by making the borrowee and borrowers aware of each other.
Re-reroll posted but haven't had a chance to pick it up yet.
The series already received a few comments.
* cc/interpret-trailers (2014-05-28) 11 commits
- Documentation: add documentation for 'git interpret-trailers'
- trailer: add tests for commands in config file
- trailer: execute command from 'trailer.<name>.command'
- trailer: add tests for "git interpret-trailers"
- trailer: add interpret-trailers command
- trailer: put all the processing together and print
- trailer: parse trailers from file or stdin
- trailer: process command line trailer arguments
- trailer: read and process config information
- trailer: process trailers from input message and arguments
- trailer: add data structures and basic functions
A new filter to programatically edit the tail end of the commit log
messages.
Comments & reviews?
* bb/date-iso-strict (2014-08-29) 1 commit
- pretty: provide a strict ISO 8601 date format
"log --date=iso" uses a slight variant of ISO 8601 format that is
made more human readable. A new "--date=iso-strict" option gives
datetime output that is more strictly conformant.
Will merge to 'next'.
* jk/commit-author-parsing (2014-08-29) 6 commits
- determine_author_info(): copy getenv output
- determine_author_info(): reuse parsing functions
- date: use strbufs in date-formatting functions
- record_author_date(): use find_commit_header()
- record_author_date(): fix memory leak on malformed commit
- commit: provide a function to find a header in a buffer
Code clean-up.
Will merge to 'next'.
* jk/fast-export-anonymize (2014-08-28) 2 commits
- docs/fast-export: explain --anonymize more completely
- teach fast-export an --anonymize option
Sometimes users want to report a bug they experience on their
repository, but they are not at liberty to share the contents of
the repository. "fast-export" was taught an "--anonymize" option
to replace blob contents, names of people and paths and log
messages with bland and simple strings to help them.
Will merge to 'next'.
* jk/index-pack-threading-races (2014-08-29) 1 commit
- index-pack: fix race condition with duplicate bases
When receiving an invalid pack stream that records the same object
twice, multiple threads got confused due to a race. We should
reject or correct such a stream upon receiving, but that will be a
larger change.
Will merge to 'next'.
* jk/send-pack-many-refspecs (2014-08-26) 1 commit
- send-pack: take refspecs over stdin
The number of refs that can be pushed at once over smart HTTP was
limited by the command line length. The limitation has been lifted
by passing these refs from the standard input of send-pack.
Will merge to 'next'.
* jp/index-with-corrupt-stages (2014-08-29) 2 commits
- read_index_unmerged(): remove unnecessary loop index adjustment
- read_index_from(): catch out of order entries when reading an index file
A broken reimplementation of Git could write an invalid index that
records both stage #0 and higher stage entries for the same path.
Notice and reject such an index, as there is no sensible fallback
(we do not know if the broken tool wanted to resolve and forgot to
remove higher stage entries, or if it wanted to unresolve and
forgot to remove the stage#0 entry).
Will merge to 'next'.
* mb/build-contrib-svn-fe (2014-08-28) 1 commit
- contrib/svn-fe: fix Makefile
Will merge to 'next'.
* mb/fast-import-delete-root (2014-08-29) 2 commits
- fast-import: fix segfault in store_tree()
- t9300: test filedelete command
An attempt to remove the entire tree in the "git fast-import" input
stream caused it to misbehave.
Will merge to 'next'.
* ah/grammofix (2014-09-02) 1 commit
- grammofix in user-facing messages
Will merge to 'next'.
* da/styles (2014-09-02) 1 commit
- stylefix: asterisks stick to the variable, not the type
Will merge to 'next'.
* da/use-rev-parse-verify-quiet-in-stash (2014-09-09) 1 commit
- stash: prefer --quiet over shell redirection of the standard error stream
Will merge to 'next'.
* mk/reachable-protect-detached-head (2014-09-03) 1 commit
- reachable.c: add HEAD to reachability starting commits
Will merge to 'next'.
* rs/merge-tree-simplify (2014-09-02) 1 commit
- merge-tree: remove unused df_conflict arguments
Code clean-up.
Will merge to 'next'.
* rs/simplify-config-include (2014-09-02) 1 commit
- config: simplify git_config_include()
Code clean-up.
Will merge to 'next'.
* rs/simplify-http-walker (2014-09-02) 1 commit
- http-walker: simplify process_alternates_response() using strbuf
Code clean-up.
Will merge to 'next'.
* tb/crlf-tests (2014-09-02) 3 commits
- MinGW: update tests to handle a native eol of crlf
- Makefile: propagate NATIVE_CRLF to C
- t0027: Tests for core.eol=native, eol=lf, eol=crlf
Will merge to 'next'.
* ta/config-add-to-empty-or-true-fix (2014-08-18) 1 commit
(merged to 'next' on 2014-08-29 at d219212)
+ make config --add behave correctly for empty and NULL values
We may want to undo the "a^" bit along the lines of $gmane/255445
* sp/stream-clean-filter (2014-08-28) 6 commits
- convert: stream from fd to required clean filter to reduce used address space
- copy_fd(): do not close the input file descriptor
- mmap_limit: introduce GIT_MMAP_LIMIT to allow testing expected mmap size
- memory_limit: use git_env_ulong() to parse GIT_ALLOC_LIMIT
- config.c: add git_env_ulong() to parse environment variable
- convert: drop arguments other than 'path' from would_convert_to_git()
Rerolled. Comments & reviews?
* jc/push-cert (2014-09-08) 22 commits
- signed push: allow stale nonce in stateless mode
- signed push: fortify against replay attacks
- signed push: add "pushee" header to push certificate
- signed push: remove duplicated protocol info
- send-pack: send feature request on push-cert packet
- receive-pack: GPG-validate push certificates
- push: the beginning of "git push --signed"
- pack-protocol doc: typofix for PKT-LINE
- gpg-interface: move parse_signature() to where it should be
- gpg-interface: move parse_gpg_output() to where it should be
- send-pack: clarify that cmds_sent is a boolean
- send-pack: refactor inspecting and resetting status and sending commands
- send-pack: rename "new_refs" to "need_pack_data"
- receive-pack: factor out capability string generation
- send-pack: factor out capability string generation
- send-pack: always send capabilities
- send-pack: refactor decision to send update per ref
- send-pack: move REF_STATUS_REJECT_NODELETE logic a bit higher
- receive-pack: factor out queueing of command
- receive-pack: do not reuse old_sha1[] for other things
- receive-pack: parse feature request a bit earlier
- receive-pack: do not overallocate command structure
Allow "git push" request to be signed, so that it can be verified
audited, using the GPG signature of the person who pushed, that the
tips of branches at a public repository really point the commits
the pusher wanted to, without having to "trust" the server.
Comments & reviews?
* jc/test-lazy-prereq (2014-06-13) 1 commit
- tests: drop GIT_*_TIMING_TESTS environment variable support
Test-script clean-up.
Comments & reviews?
Otherwise will merge to 'next'.
* mt/patch-id-stable (2014-06-10) 1 commit
- patch-id: change default to stable
Teaches "git patch-id" to compute the patch ID that does not change
when the files in a single patch is reordered. As this new algorithm
is backward incompatible, the last bit to flip it to be the default
is left out of 'master' for now.
Nobody seems to be jumping up & down requesting this last step.
Perhaps will drop.
^ permalink raw reply [relevance 1%]
* [PATCH v3 23/26] file-watcher: tests for the daemon
@ 2014-02-03 4:29 4% ` Nguyễn Thái Ngọc Duy
0 siblings, 0 replies; 162+ results
From: Nguyễn Thái Ngọc Duy @ 2014-02-03 4:29 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
test-file-watcher is a simple chat program to talk to file
watcher. Typically you would write something like this
cat >expect <<EOF
# send "hello". Oh and this is a comment!
<hello
# Wait for reply and print to stdout.
# test-file-watcher does not care about anything after '>'
>hello
<index foo bar
>ok
EOF
test-file-watcher . <expect >actual
and test-file-watcher will execute the commands and get responses. If
all go well, "actual" should be the same as "expect". '<' and '>'
denote send and receive packets respectively. '<<' and '>>' can be
used to send and receive a list of NUL-terminated paths.
$GIT_TEST_WATCHER enables a few more commands for testing purposes.
The most important one is 'test-mode' where system inotify is taken
out and inotify events could be injected via test-file-watcher.
There are two debug commands in file-watcher that's not used by the
test suite, but would help debugging: setenv and log. They can be used
to turn on GIT_TRACE_PACKET then any "log" command will show, which
functions as barrier between events file watcher.
GIT_TRACE_WATCHER can also be enabled (dynamically or at startup) to
track inotify events.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
.gitignore | 1 +
Makefile | 1 +
file-watcher.c | 181 ++++++++++++++++++-
t/t7513-file-watcher.sh (new +x) | 382 +++++++++++++++++++++++++++++++++++++++
test-file-watcher.c (new) | 96 ++++++++++
5 files changed, 657 insertions(+), 4 deletions(-)
create mode 100755 t/t7513-file-watcher.sh
create mode 100644 test-file-watcher.c
diff --git a/.gitignore b/.gitignore
index 12c78f0..277f929 100644
--- a/.gitignore
+++ b/.gitignore
@@ -181,6 +181,7 @@
/test-date
/test-delta
/test-dump-cache-tree
+/test-file-watcher
/test-scrap-cache-tree
/test-genrandom
/test-index-version
diff --git a/Makefile b/Makefile
index 1c4d659..f0dc2cc 100644
--- a/Makefile
+++ b/Makefile
@@ -555,6 +555,7 @@ TEST_PROGRAMS_NEED_X += test-ctype
TEST_PROGRAMS_NEED_X += test-date
TEST_PROGRAMS_NEED_X += test-delta
TEST_PROGRAMS_NEED_X += test-dump-cache-tree
+TEST_PROGRAMS_NEED_X += test-file-watcher
TEST_PROGRAMS_NEED_X += test-genrandom
TEST_PROGRAMS_NEED_X += test-index-version
TEST_PROGRAMS_NEED_X += test-line-buffer
diff --git a/file-watcher.c b/file-watcher.c
index 1e45b25..3ab0a11 100644
--- a/file-watcher.c
+++ b/file-watcher.c
@@ -65,7 +65,8 @@ struct connection {
static struct connection **conns;
static struct pollfd *pfd;
static int conns_alloc, pfd_nr, pfd_alloc;
-static int inotify_fd;
+static int inotify_fd, test_mode;
+static int wd_counter = 1;
/*
* IN_DONT_FOLLOW does not matter now as we do not monitor
@@ -78,10 +79,19 @@ static struct dir *create_dir(struct dir *parent, const char *path,
const char *basename)
{
struct dir *d;
- int wd = inotify_add_watch(inotify_fd, path, INOTIFY_MASKS);
+ int wd;
+ if (!test_mode)
+ wd = inotify_add_watch(inotify_fd, path, INOTIFY_MASKS);
+ else {
+ wd = wd_counter++;
+ if (wd > 8)
+ wd = -1;
+ }
if (wd < 0)
return NULL;
+ trace_printf_key("GIT_TRACE_WATCHER", "inotify: watch %d %s\n",
+ wd, path);
d = xmalloc(sizeof(*d));
memset(d, 0, sizeof(*d));
d->wd = wd;
@@ -124,7 +134,9 @@ static void free_dir(struct dir *d, int topdown)
if (d->repo)
d->repo->root = NULL;
wds[d->wd] = NULL;
- inotify_rm_watch(inotify_fd, d->wd);
+ if (!test_mode)
+ inotify_rm_watch(inotify_fd, d->wd);
+ trace_printf_key("GIT_TRACE_WATCHER", "inotify: unwatch %d\n", d->wd);
if (topdown) {
int i;
for (i = 0; i < d->nr_subdirs; i++)
@@ -265,6 +277,7 @@ static inline void queue_file_changed(struct file *f, struct strbuf *sb)
int len = sb->len;
strbuf_addf(sb, "%s%s", f->parent->parent ? "/" : "", f->name);
string_list_append(&f->repo->updated, sb->buf);
+ trace_printf_key("GIT_TRACE_WATCHER", "watcher: changed %s\n", sb->buf);
f->repo->updated_sorted = 0;
strbuf_setlen(sb, len);
}
@@ -324,6 +337,10 @@ static int do_handle_inotify(const struct inotify_event *event)
struct dir *d;
int pos;
+ trace_printf_key("GIT_TRACE_WATCHER", "inotify: event %08x wd %d %s\n",
+ event->mask, event->wd,
+ event->len ? event->name : "N/A");
+
if (event->mask & (IN_Q_OVERFLOW | IN_UNMOUNT)) {
int i;
for (i = 0; i < nr_repos; i++)
@@ -385,6 +402,81 @@ static int handle_inotify(int fd)
return ret;
}
+struct constant {
+ const char *name;
+ int value;
+};
+
+#define CONSTANT(x) { #x, x }
+static const struct constant inotify_masks[] = {
+ CONSTANT(IN_DELETE_SELF),
+ CONSTANT(IN_MOVE_SELF),
+ CONSTANT(IN_ATTRIB),
+ CONSTANT(IN_DELETE),
+ CONSTANT(IN_MODIFY),
+ CONSTANT(IN_MOVED_FROM),
+ CONSTANT(IN_MOVED_TO),
+ CONSTANT(IN_Q_OVERFLOW),
+ CONSTANT(IN_UNMOUNT),
+ { NULL, 0 },
+};
+
+static void inject_inotify(const char *msg)
+{
+ char buf[sizeof(struct inotify_event) + NAME_MAX + 1];
+ struct inotify_event *event = (struct inotify_event *)buf;
+ char *end, *p;
+ int i;
+ memset(event, 0, sizeof(*event));
+ event->wd = strtol(msg, &end, 0);
+ if (*end++ != ' ')
+ die("expect a space after watch descriptor");
+ p = end;
+ end = strchrnul(p, ' ');
+ if (*end)
+ strcpy(event->name, end + 1);
+ while (p < end) {
+ char *sep = strchrnul(p, '|');
+ if (sep > end)
+ sep = end;
+ *sep = '\0';
+ for (i = 0; inotify_masks[i].name; i++)
+ if (!strcmp(inotify_masks[i].name, p))
+ break;
+ if (!inotify_masks[i].name)
+ die("unrecognize event mask %s", p);
+ event->mask |= inotify_masks[i].value;
+ p = sep + 1;
+ }
+ do_handle_inotify(event);
+}
+
+static void dump_watches(struct dir *d, struct strbuf *sb, struct strbuf *out)
+{
+ int i, len = sb->len;
+ strbuf_addstr(sb, d->name);
+ strbuf_addf(out, "%s %d%c", sb->buf[0] ? sb->buf : ".", d->wd, '\0');
+ if (d->name[0])
+ strbuf_addch(sb, '/');
+ for (i = 0; i < d->nr_subdirs; i++)
+ dump_watches(d->subdirs[i], sb, out);
+ for (i = 0; i < d->nr_files; i++)
+ strbuf_addf(out, "%s%s%c", sb->buf, d->files[i]->name, '\0');
+ strbuf_setlen(sb, len);
+}
+
+static void dump_changes(struct repository *repo, struct strbuf *sb)
+{
+ int i;
+ if (!repo->updated_sorted) {
+ sort_string_list(&repo->updated);
+ repo->updated_sorted = 1;
+ }
+ for (i = 0; i < repo->updated.nr; i++)
+ strbuf_add(sb, repo->updated.items[i].string,
+ strlen(repo->updated.items[i].string) + 1);
+}
+
static void get_changed_list(int conn_id)
{
struct strbuf sb = STRBUF_INIT;
@@ -483,11 +575,13 @@ static void unchange(int conn_id, unsigned long size)
item = string_list_lookup(&repo->updated, p);
if (!item)
continue;
+ trace_printf_key("GIT_TRACE_WATCHER", "watcher: unchange %s\n", p);
unsorted_string_list_delete_item(&repo->updated,
item - repo->updated.items, 0);
}
strbuf_release(&sb);
}
+ trace_printf_key("GIT_TRACE_WATCHER", "watcher: unchange complete\n");
memcpy(repo->index_signature, conn->new_index, 40);
/*
* If other connections on this repo are in some sort of
@@ -540,6 +634,13 @@ static void reset_watches(struct repository *repo)
static void reset_repo(struct repository *repo, ino_t inode)
{
+ if (test_mode)
+ /*
+ * test-mode is designed for single repo, we can
+ * safely reset wd counter because all wd should be
+ * deleted
+ */
+ wd_counter = 1;
reset_watches(repo);
string_list_clear(&repo->updated, 0);
memcpy(repo->index_signature, invalid_signature, 40);
@@ -560,6 +661,7 @@ static int shutdown_connection(int id)
return 0;
}
+static void cleanup(void);
static int handle_command(int conn_id)
{
int fd = conns[conn_id]->sock;
@@ -754,6 +856,71 @@ static int handle_command(int conn_id)
}
unchange(conn_id, n);
}
+
+ /*
+ * Testing and debugging support
+ */
+ else if (!strcmp(msg, "test-mode") && getenv("GIT_TEST_WATCHER")) {
+ test_mode = 1;
+ packet_write(fd, "test mode on");
+ }
+ else if (starts_with(msg, "setenv ")) {
+ /* useful for setting GIT_TRACE_WATCHER or GIT_TRACE_PACKET */
+ char *sep = strchr(msg + 7, ' ');
+ if (!sep) {
+ packet_write(fd, "error invalid setenv line %s", msg);
+ return shutdown_connection(conn_id);
+ }
+ *sep = '\0';
+ setenv(msg + 7, sep + 1, 1);
+ }
+ else if (starts_with(msg, "log ")) {
+ ; /* do nothing, if GIT_TRACE_PACKET is on, it's already logged */
+ }
+ else if (!strcmp(msg, "die") && getenv("GIT_TEST_WATCHER")) {
+ /*
+ * The client will wait for "see you" before it may
+ * run another daemon with the same path. So there's
+ * no racing on unlink() and listen() on the same
+ * socket path.
+ */
+ cleanup();
+ packet_write(fd, "see you");
+ close(fd);
+ exit(0);
+ }
+ else if (starts_with(msg, "dump ") && getenv("GIT_TEST_WATCHER")) {
+ struct strbuf sb = STRBUF_INIT;
+ struct strbuf out = STRBUF_INIT;
+ const char *reply = NULL;
+ if (!strcmp(msg + 5, "watches")) {
+ if (conns[conn_id]->repo) {
+ if (conns[conn_id]->repo->root)
+ dump_watches(conns[conn_id]->repo->root, &sb, &out);
+ } else {
+ int i;
+ for (i = 0; i < nr_repos; i++) {
+ strbuf_addf(&out, "%s%c", repos[i]->work_tree, '\0');
+ if (repos[i]->root)
+ dump_watches(repos[i]->root, &sb, &out);
+ strbuf_reset(&out);
+ strbuf_reset(&sb);
+ }
+ }
+ reply = "watching";
+ } else if (!strcmp(msg + 5, "changes")) {
+ dump_changes(conns[conn_id]->repo, &out);
+ reply = "changed";
+ }
+ packet_write(fd, "%s %d", reply, (int)out.len);
+ if (out.len)
+ write_in_full(fd, out.buf, out.len);
+ strbuf_release(&out);
+ strbuf_release(&sb);
+ }
+ else if (starts_with(msg, "inotify ") && getenv("GIT_TEST_WATCHER")) {
+ inject_inotify(msg + 8);
+ }
else {
packet_write(fd, "error unrecognized command %s", msg);
return shutdown_connection(conn_id);
@@ -848,11 +1015,13 @@ int main(int argc, const char **argv)
{
struct strbuf sb = STRBUF_INIT;
int i, new_nr, fd, quit = 0, nr_common;
- int daemon = 0;
+ int daemon = 0, check_support = 0;
time_t last_checked;
struct option options[] = {
OPT_BOOL(0, "detach", &daemon,
N_("run in background")),
+ OPT_BOOL(0, "check-support", &check_support,
+ N_("return zero file watcher is available")),
OPT_END()
};
@@ -865,6 +1034,10 @@ int main(int argc, const char **argv)
argc = parse_options(argc, argv, NULL, options,
file_watcher_usage, 0);
+
+ if (check_support)
+ return 0;
+
if (argc < 1)
die(_("socket path missing"));
else if (argc > 1)
diff --git a/t/t7513-file-watcher.sh b/t/t7513-file-watcher.sh
new file mode 100755
index 0000000..bf64fc4
--- /dev/null
+++ b/t/t7513-file-watcher.sh
@@ -0,0 +1,382 @@
+#!/bin/sh
+
+test_description='File watcher daemon tests'
+
+. ./test-lib.sh
+
+if git file-watcher --check-support && test_have_prereq POSIXPERM; then
+ : # good
+else
+ skip_all="file-watcher not supported on this system"
+ test_done
+fi
+
+kill_it() {
+ test-file-watcher "$1" <<EOF >/dev/null
+<die
+>see you
+EOF
+}
+
+GIT_TEST_WATCHER=1
+export GIT_TEST_WATCHER
+
+test_expect_success 'test-file-watcher can kill the daemon' '
+ chmod 700 . &&
+ git file-watcher --detach . &&
+ cat >expect <<EOF &&
+<die
+>see you
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual &&
+ ! test -S socket
+'
+
+test_expect_success 'exchange hello' '
+ git file-watcher --detach . &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<die
+>see you
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'normal index sequence' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual &&
+ cat >expect2 <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+# inconsistent again because new-index has not been issued yet
+>inconsistent
+<new-index $SIG
+<<unchange
+<<
+EOF
+ test-file-watcher . >actual2 <expect2 &&
+ test_cmp expect2 actual2 &&
+ cat >expect3 <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<die
+>see you
+EOF
+ test-file-watcher . >actual3 <expect3 &&
+ test_cmp expect3 actual3
+'
+
+test_expect_success 'unaccepted index: hello not sent' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<index $SIG $TRASH_DIRECTORY
+>error why did you not greet me? go away
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual &&
+ kill_it .
+'
+
+test_expect_success 'unaccepted index: signature too short' '
+ git file-watcher --detach . &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index 1234 $TRASH_DIRECTORY
+>error invalid index line index 1234 $TRASH_DIRECTORY
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual &&
+ kill_it .
+'
+
+test_expect_success 'unaccepted index: worktree unavailable' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY/non-existent
+>error work tree does not exist: No such file or directory
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual &&
+ kill_it .
+'
+
+test_expect_success 'watch foo and abc/bar' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+<test-mode
+>test mode on
+<<watch
+<<foo
+<<abc/bar
+<<
+>watched 2
+<dump watches
+>>watching
+>>. 1
+>>abc 2
+>>abc/bar
+>>foo
+<new-index $SIG
+<<unchange
+<<
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'modify abc/bar' '
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<inotify 2 IN_MODIFY bar
+<dump watches
+>>watching
+>>. 1
+>>foo
+<dump changes
+>>changed
+>>abc/bar
+<die
+>see you
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'delete abc makes abc/bar changed' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+<test-mode
+>test mode on
+<<watch
+<<foo/abc/bar
+<<
+>watched 1
+<dump watches
+>>watching
+>>. 1
+>>foo 2
+>>foo/abc 3
+>>foo/abc/bar
+<inotify 2 IN_DELETE_SELF
+<dump watches
+>>watching
+<dump changes
+>>changed
+>>foo/abc/bar
+<new-index $SIG
+<<unchange
+<<
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'get changed list' '
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<get-changed
+>>changed
+>>foo/abc/bar
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'incomplete new-index request' '
+ SIG=0123456789012345678901234567890123456789 &&
+ SIG2=9123456789012345678901234567890123456780 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<new-index $SIG2
+<dump changes
+>>changed
+>>foo/abc/bar
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'delete abc/bar from changed list' '
+ SIG=0123456789012345678901234567890123456789 &&
+ SIG2=9123456789012345678901234567890123456780 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<new-index $SIG2
+<<unchange
+<<foo/abc/bar
+<<
+<dump changes
+>>changed
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'file-watcher index updated after new-index' '
+ SIG2=9123456789012345678901234567890123456780 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG2 $TRASH_DIRECTORY
+>ok
+<die
+>see you
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+# When test-mode is on, file-watch only accepts 8 directories
+test_expect_success 'watch too many directories' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+# Do not call inotify_add_watch()
+<test-mode
+>test mode on
+# First batch should be all ok
+<<watch
+<<dir1/foo
+<<dir2/foo
+<<dir3/foo
+<<dir4/foo
+<<
+>watched 4
+# Second batch hits the limit
+<<watch
+<<dir5/foo
+<<dir6/foo
+<<dir7/foo
+<<dir8/foo
+<<dir9/foo
+<<
+>watched 3
+# The third batch is already registered, should accept too
+<<watch
+<<dir5/foo
+<<dir6/foo
+<<dir7/foo
+<<
+>watched 3
+# Try again, see if it still rejects
+<<watch
+<<dir8/foo
+<<dir9/foo
+<<
+>watched 0
+<dump watches
+>>watching
+>>. 1
+>>dir1 2
+>>dir1/foo
+>>dir2 3
+>>dir2/foo
+>>dir3 4
+>>dir3/foo
+>>dir4 5
+>>dir4/foo
+>>dir5 6
+>>dir5/foo
+>>dir6 7
+>>dir6/foo
+>>dir7 8
+>>dir7/foo
+<die
+>see you
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'event overflow' '
+ git file-watcher --detach . &&
+ SIG=0123456789012345678901234567890123456789 &&
+ cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+<test-mode
+>test mode on
+<<watch
+<<foo
+<<abc/bar
+<<
+>watched 2
+<inotify 2 IN_MODIFY bar
+<dump watches
+>>watching
+>>. 1
+>>foo
+<dump changes
+>>changed
+>>abc/bar
+<inotify -1 IN_Q_OVERFLOW
+<dump watches
+>>watching
+<dump changes
+>>changed
+EOF
+ test-file-watcher . >actual <expect &&
+ test_cmp expect actual &&
+ cat >expect2 <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+# Must be inconsistent because of IN_Q_OVERFLOW
+>inconsistent
+<die
+>see you
+EOF
+ test-file-watcher . >actual2 <expect2 &&
+ test_cmp expect2 actual2
+'
+
+test_done
diff --git a/test-file-watcher.c b/test-file-watcher.c
new file mode 100644
index 0000000..ffff198
--- /dev/null
+++ b/test-file-watcher.c
@@ -0,0 +1,96 @@
+#include "cache.h"
+#include "unix-socket.h"
+#include "pkt-line.h"
+#include "strbuf.h"
+
+int main(int ac, char **av)
+{
+ struct strbuf sb = STRBUF_INIT;
+ struct strbuf packed = STRBUF_INIT;
+ char *packing = NULL;
+ int last_command_is_reply = 0;
+ int fd;
+
+ strbuf_addf(&sb, "%s/socket", av[1]);
+ fd = unix_stream_connect(sb.buf);
+ if (fd < 0)
+ die_errno("connect");
+ strbuf_reset(&sb);
+
+ /*
+ * test-file-watcher crashes sometimes, make sure to flush
+ */
+ setbuf(stdout, NULL);
+
+ while (!strbuf_getline(&sb, stdin, '\n')) {
+ if (sb.buf[0] == '#') {
+ puts(sb.buf);
+ continue;
+ }
+ if (sb.buf[0] == '>') {
+ if (last_command_is_reply)
+ continue;
+ last_command_is_reply = 1;
+ } else
+ last_command_is_reply = 0;
+
+ if (sb.buf[0] == '<' && sb.buf[1] == '<') {
+ puts(sb.buf);
+ if (!packing) {
+ packing = xstrdup(sb.buf + 2);
+ strbuf_reset(&packed);
+ continue;
+ }
+ if (!sb.buf[2]) {
+ packet_write(fd, "%s %d", packing, (int)packed.len);
+ if (packed.len)
+ write_in_full(fd, packed.buf, packed.len);
+ free(packing);
+ packing = NULL;
+ } else
+ strbuf_add(&packed, sb.buf + 2, sb.len - 2 + 1);
+ continue;
+ }
+ if (sb.buf[0] == '<') {
+ packet_write(fd, "%s", sb.buf + 1);
+ puts(sb.buf);
+ continue;
+ }
+ if (sb.buf[0] == '>' && sb.buf[1] == '>') {
+ int len;
+ char *p, *reply = packet_read_line(fd, &len);
+ if (!starts_with(reply, sb.buf + 2) ||
+ reply[sb.len - 2] != ' ') {
+ printf(">%s\n", reply);
+ continue;
+ } else {
+ p = reply + sb.len - 2;
+ printf(">>%.*s\n", (int)(p - reply), reply);
+ len = atoi(p + 1);
+ if (!len)
+ continue;
+ }
+ strbuf_reset(&packed);
+ strbuf_grow(&packed, len);
+ if (read_in_full(fd, packed.buf, len) <= 0)
+ return 1;
+ strbuf_setlen(&packed, len);
+ for (p = packed.buf; p - packed.buf < packed.len; p += len + 1) {
+ len = strlen(p);
+ printf(">>%s\n", p);
+ }
+ continue;
+ }
+ if (sb.buf[0] == '>') {
+ int len;
+ char *reply = packet_read_line(fd, &len);
+ if (!reply)
+ puts(">");
+ else
+ printf(">%s\n", reply);
+ continue;
+ }
+ die("unrecognize command %s", sb.buf);
+ }
+ return 0;
+}
--
1.8.5.2.240.g8478abd
^ permalink raw reply related [relevance 4%]
* What's cooking in git.git (Sep 2013, #04; Fri, 13)
@ 2013-09-13 22:18 4% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2013-09-13 22:18 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The third batch of topics are now in 'master'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* jc/commit-is-spelled-with-two-ems (2013-09-05) 2 commits
(merged to 'next' on 2013-09-05 at 982aef2)
+ typofix: cherry is spelled with two ars
+ typofix: commit is spelled with two ems
* jc/pager-configuration-doc (2013-08-29) 1 commit
(merged to 'next' on 2013-09-05 at 3169083)
+ config: rewrite core.pager documentation
It was unclear in the documentation how various configurations and
environment variables determine which pager is eventually used.
* jk/config-int-range-check (2013-09-09) 5 commits
(merged to 'next' on 2013-09-09 at 9ab779d)
+ git-config: always treat --int as 64-bit internally
+ config: make numeric parsing errors more clear
+ config: set errno in numeric git_parse_* functions
+ config: properly range-check integer values
+ config: factor out integer parsing from range checks
"git config" did not provide a way to set or access numbers larger
than a native "int" on the platform; it now provides 64-bit signed
integers on all platforms.
* mm/fast-import-feature-doc (2013-08-25) 1 commit
(merged to 'next' on 2013-09-05 at 83802e2)
+ Documentation/fast-import: clarify summary for `feature` command
* mm/mediawiki-dumb-push-fix (2013-09-03) 4 commits
(merged to 'next' on 2013-09-05 at f8313f4)
+ git-remote-mediawiki: no need to update private ref in non-dumb push
+ git-remote-mediawiki: use no-private-update capability on dumb push
+ transport-helper: add no-private-update capability
+ git-remote-mediawiki: add test and check Makefile targets
* mm/remote-helpers-doc (2013-08-26) 1 commit
(merged to 'next' on 2013-09-05 at c181b35)
+ Documentation/remote-helpers: document common use-case for private ref
* mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
(merged to 'next' on 2013-09-05 at 5caecec)
+ remove dead pastebin link from pack-heuristics document
--------------------------------------------------
[New Topics]
* jc/url-match (2013-09-12) 1 commit
(merged to 'next' on 2013-09-13 at 7b94f8e)
+ urlmatch.c: recompute pointer after append_normalized_escapes
While normalizing a URL, we forgot that the buffer that holds it
could be relocated when it grows, which was a brown-paper-bag bug
that can lead to a crash introduced on 'master' post 1.8.4 release.
Will merge to 'master' in the fourth batch.
* jx/relative-path-regression-fix (2013-09-13) 3 commits
- Use simpler relative_path when set_git_dir
- relative_path should honor dos_drive_prefix
- test: use unambigous leading path (/foo) for mingw
(this branch uses jx/clean-interactive.)
* nd/unpack-entry-optim-in-pack-objects (2013-09-13) 1 commit
- pack-objects: no crc check when the cached version is used
The codepath to use data from packfiles that is only exercised in
pack-objects unnecessarily checked crc checksum of the pack data,
even when it ends up using in-core copy that it got by reading from
the pack (at which point the checksum was validated).
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* jc/ref-excludes (2013-09-03) 2 commits
- document --exclude option
- revision: introduce --exclude=<glob> to tame wildcards
People often wished a way to tell "git log --branches" (and "git
log --remotes --not --branches") to exclude some local branches
from the expansion of "--branches" (similarly for "--tags", "--all"
and "--glob=<pattern>"). Now they have one.
Needs a matching change to rev-parse.
* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
- git-send-email: Cache generated message-ids, use them when prompting
- git-send-email: add optional 'choices' parameter to the ask sub
* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
- ### DONTMERGE: needs better explanation on what config they need
- pack-refs.c: Add missing call to git_config()
- show-ref.c: Add missing call to git_config()
The changes themselves are probably good, but it is unclear what
basic setting needs to be read for which exact operation.
Waiting for clarification.
$gmane/228294
* jh/shorten-refname (2013-05-07) 4 commits
- t1514: refname shortening is done after dereferencing symbolic refs
- shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
- t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
- t1514: Add tests of shortening refnames in strict/loose mode
When remotes/origin/HEAD is not a symbolic ref, "rev-parse
--abbrev-ref remotes/origin/HEAD" ought to show "origin", not
"origin/HEAD", which is fixed with this series (if it is a symbolic
ref that points at remotes/origin/something, then it should show
"origin/something" and it already does).
Expecting a reroll, as an early part of a larger series.
$gmane/225137
* mg/more-textconv (2013-05-10) 7 commits
- grep: honor --textconv for the case rev:path
- grep: allow to use textconv filters
- t7008: demonstrate behavior of grep with textconv
- cat-file: do not die on --textconv without textconv filters
- show: honor --textconv for blobs
- diff_opt: track whether flags have been set explicitly
- t4030: demonstrate behavior of show with textconv
Make "git grep" and "git show" pay attention to --textconv when
dealing with blob objects.
I thought this was pretty well designed and executed, but it seems
there are some doubts on the list; kicked back to 'pu'.
* jc/format-patch (2013-04-22) 2 commits
- format-patch: --inline-single
- format-patch: rename "no_inline" field
A new option to send a single patch to the standard output to be
appended at the bottom of a message. I personally have no need for
this, but it was easy enough to cobble together. Tests, docs and
stripping out more MIMEy stuff are left as exercises to interested
parties.
Not ready for inclusion.
Will discard unless we hear from anybody who is interested in
tying its loose ends.
* jk/gitweb-utf8 (2013-04-08) 4 commits
- gitweb: Fix broken blob action parameters on blob/commitdiff pages
- gitweb: Don't append ';js=(0|1)' to external links
- gitweb: Make feed title valid utf8
- gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
Various fixes to gitweb.
Drew Northup volunteered to take a look into this.
$gmane/226216
* jc/show-branch (2013-06-07) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit before sending it out.
--------------------------------------------------
[Cooking]
* bc/send-email-ssl-die-message-fix (2013-09-10) 1 commit
(merged to 'next' on 2013-09-13 at c6fcdf4)
+ send-email: don't call methods on undefined values
When send-email comes up with an error message to die with upon
failure to start an SSL session, it tried to read the error string
from a wrong place.
Will merge to 'master' in the fourth batch.
* jc/checkout-detach-doc (2013-09-11) 1 commit
- checkout: update synopsys and documentation on detaching HEAD
"git checkout [--detach] <commit>" was listed poorly in the
synopsis section of its documentation.
* jc/cvsserver-perm-bit-fix (2013-09-11) 1 commit
(merged to 'next' on 2013-09-13 at 56db105)
+ cvsserver: pick up the right mode bits
"git cvsserver" computed the permission mode bits incorrectly for
executable files.
Will merge to 'master' in the fourth batch.
* jk/trailing-slash-in-pathspec (2013-09-13) 2 commits
- reset: handle submodule with trailing slash
- rm: re-use parse_pathspec's trailing-slash removal
Code refactoring.
Will merge to 'next'.
* kb/msvc-compile (2013-09-11) 5 commits
- Windows: do not redefine _WIN32_WINNT
- MinGW: Fix stat definitions to work with MinGW runtime version 4.0
- MSVC: fix stat definition hell
- MSVC: fix compile errors due to macro redefinitions
- MSVC: fix compile errors due to missing libintl.h
Build updates for Windows port.
Will merge to 'next'.
* lc/filter-branch-too-many-refs (2013-09-12) 1 commit
- Allow git-filter-branch to process large repositories with lots of branches.
"git filter-branch" in a repository with many refs blew limit of
command line length.
Will merge to 'next'.
* mm/commit-template-squelch-advice-messages (2013-09-12) 3 commits
(merged to 'next' on 2013-09-13 at 410d207)
+ commit: disable status hints when writing to COMMIT_EDITMSG
+ wt-status: turn advice_status_hints into a field of wt_status
+ commit: factor status configuration is a helper function
From the commit log template, remove irrelevant "advice" messages
that are shared with "git status" output.
Will merge to 'master' in the fifth batch.
* np/lookup-object-hashing (2013-09-11) 1 commit
(merged to 'next' on 2013-09-12 at d835ef6)
+ lookup_object: remove hashtable_index() and optimize hash_obj()
Micro optimize hash function used in the object hash table.
Will merge to 'master' in the fifth batch.
* js/add-i-mingw (2013-09-04) 1 commit
(merged to 'next' on 2013-09-10 at 50ab841)
+ add--interactive: fix external command invocation on Windows
The implementation of "add -i" has a crippling code to work around
ActiveState Perl limitation but it by mistake also triggered on Git
for Windows where MSYS perl is used.
Will merge to 'master' in the fourth batch.
* rh/ishes-doc (2013-09-04) 7 commits
(merged to 'next' on 2013-09-10 at 3611e8a)
+ glossary: fix and clarify the definition of 'ref'
+ revisions.txt: fix and clarify <rev>^{<type>}
+ glossary: more precise definition of tree-ish (a.k.a. treeish)
+ use 'commit-ish' instead of 'committish'
+ use 'tree-ish' instead of 'treeish'
+ glossary: define commit-ish (a.k.a. committish)
+ glossary: mention 'treeish' as an alternative to 'tree-ish'
We liberally use "committish" and "commit-ish" (and "treeish" and
"tree-ish"); as these are non-words, let's unify these terms to
their dashed form. More importantly, clarify the documentation on
object peeling using these terms.
Will merge to 'master' in the fourth batch.
* bc/http-backend-allow-405 (2013-09-12) 1 commit
(merged to 'next' on 2013-09-12 at bc1719f)
+ http-backend: provide Allow header for 405
When the webserver responds with "405 Method Not Allowed", it
should tell the client what methods are allowed with the "Allow"
header.
Will merge to 'master' in the fifth batch.
* dw/check-ignore-sans-index (2013-09-12) 1 commit
(merged to 'next' on 2013-09-13 at 8daec3c)
+ check-ignore: Add option to ignore index contents
"git check-ignore" follows the same rule as "git add" and "git
status" in that the ignore/exclude mechanism does not take effect
on paths that are already tracked. With "--no-index" option, it
can be used to diagnose which paths that should have been ignored
have been mistakenly added to the index.
Will merge to 'master' in the fifth batch.
* hu/cherry-pick-previous-branch (2013-09-09) 1 commit
(merged to 'next' on 2013-09-12 at 36e4d9b)
+ cherry-pick: allow "-" as abbreviation of '@{-1}'
Just like "git checkout -" knows to check out and "git merge -"
knows to merge the branch you were previously on, teach "git
cherry-pick" to understand "-" as the previous branch.
Will merge to 'master' in the fifth batch.
* jh/checkout-auto-tracking (2013-09-09) 5 commits
(merged to 'next' on 2013-09-13 at 2aa1553)
+ branch.c: Relax unnecessary requirement on upstream's remote ref name
+ t3200: Add test demonstrating minor regression in 41c21f2
+ Refer to branch.<name>.remote/merge when documenting --track
+ t3200: Minor fix when preparing for tracking failure
+ t2024: Fix &&-chaining and a couple of typos
Fix a minor regression in v1.8.3.2 and later that made it
impossible to base your local work on anything but a local branch
of the upstream repository you are tracking from.
Will merge to 'master' in the fifth batch.
* jk/remove-remote-helpers-in-python (2013-09-09) 1 commit
(merged to 'next' on 2013-09-10 at 49c7a74)
+ git_remote_helpers: remove little used Python library
Remove now disused remote-helpers framework for helpers written in
Python.
Will merge to 'master' in the fourth batch.
* jk/upload-pack-keepalive (2013-09-09) 2 commits
- upload-pack: bump keepalive default to 5 seconds
- upload-pack: send keepalive packets during pack computation
When running "fetch -q", a long silence while the sender side
computes the set of objects to send can be mistaken by proxies as
dropped connection.
Will merge to 'next'.
* mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
(merged to 'next' on 2013-09-13 at 82e8b91)
+ rebase: fix run_specific_rebase's use of "return" on FreeBSD
Work around a bug in FreeBSD shell that caused a regression to "git
rebase" in v1.8.4. It would be lovely to hear from FreeBSD folks a
success report to make sure we didn't miss any other use of a bare
"return" from dot-sourced script.
Will merge to 'master' in the fifth batch.
* ss/doclinks (2013-09-06) 1 commit
(merged to 'next' on 2013-09-10 at 2d029a9)
+ Documentation: make AsciiDoc links always point to HTML files
When we converted many documents that were traditionally text-only
to be formatted to AsciiDoc, we did not update links that point at
them to refer to the formatted HTML files.
Will merge to 'master' in the fourth batch.
* uh/git-svn-serf-fix (2013-09-06) 1 commit
(merged to 'next' on 2013-09-13 at d65a9a1)
+ git-svn: fix termination issues for remote svn connections
"git-svn" used with SVN 1.8.0 when talking over https:// connection
dumped core due to a bug in the serf library that SVN uses. Work
it around on our side, even though the SVN side is being fixed.
Will merge to 'master' in the fourth batch.
* fc/contrib-bzr-hg-fixes (2013-09-03) 10 commits
(merged to 'next' on 2013-09-12 at f5e8684)
+ contrib/remote-helpers: quote variable references in redirection targets
+ contrib/remote-helpers: style updates for test scripts
+ remote-hg: use notes to keep track of Hg revisions
+ remote-helpers: cleanup more global variables
+ remote-helpers: trivial style fixes
+ remote-hg: improve basic test
+ remote-hg: add missing &&s in the test
+ remote-hg: fix test
+ remote-bzr: make bzr branches configurable per-repo
+ remote-bzr: fix export of utf-8 authors
Will merge to 'master' in the fourth batch.
* np/pack-v4 (2013-09-11) 88 commits
- t1050: replace one instance of show-index with verify-pack
- index-pack, pack-objects: allow creating .idx v2 with .pack v4
- unpack-objects: decode v4 trees
- unpack-objects: allow to save processed bytes to a buffer
- unpack-objects: decode v4 commits
- ...
Nico and Duy advancing the eternal vaporware pack-v4. This is here
primarily for wider distribution of the preview edition.
* jk/free-tree-buffer (2013-06-06) 1 commit
(merged to 'next' on 2013-09-09 at 3576189)
+ clear parsed flag when we free tree buffers
Will merge to 'master' in the fourth batch.
* jk/has-sha1-file-retry-packed (2013-08-30) 1 commit
(merged to 'next' on 2013-09-09 at fc42e9b)
+ has_sha1_file: re-check pack directory before giving up
When an object is not found after checking the packfiles and then
loose object directory, read_sha1_file() re-checks the packfiles to
prevent racing with a concurrent repacker; teach the same logic to
has_sha1_file().
Will merge to 'master' in the fourth batch.
* ab/gitweb-author-initials (2013-08-30) 1 commit
(merged to 'next' on 2013-09-09 at ecb924d)
+ gitweb: Fix the author initials in blame for non-ASCII names
Will merge to 'master' in the fourth batch.
* bk/refs-multi-update (2013-09-11) 8 commits
(merged to 'next' on 2013-09-13 at e6d21af)
+ update-ref: add test cases covering --stdin signature
+ update-ref: support multiple simultaneous updates
+ refs: add update_refs for multiple simultaneous updates
+ refs: add function to repack without multiple refs
+ refs: factor delete_ref loose ref step into a helper
+ refs: factor update_ref steps into helpers
+ refs: report ref type from lock_any_ref_for_update
+ reset: rename update_refs to reset_refs
Give "update-refs" a "--stdin" option to read multiple update
requests and perform them in an all-or-none fashion.
Will merge to 'master' in the fifth batch.
* fc/at-head (2013-09-12) 2 commits
(merged to 'next' on 2013-09-13 at d3800c2)
+ Add new @ shortcut for HEAD
+ sha1-name: pass len argument to interpret_branch_name()
Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
a genuine code improvement, but identifying cases where "@" means
HEAD were harder than it should have been. I think the result of
squashing the tip one in covers all the necessary cases.
Will merge to 'master' in the fifth batch.
* fc/fast-export (2013-09-03) 2 commits
(merged to 'next' on 2013-09-09 at 8d5d396)
+ fast-export: refactor get_tags_and_duplicates()
+ fast-export: make extra_refs global
Code simpification.
Will merge to 'master' in the fourth batch.
* fc/rev-parse-test-updates (2013-09-03) 4 commits
(merged to 'next' on 2013-09-09 at 92c51ef)
+ rev-parse test: use standard test functions for setup
+ rev-parse test: use test_cmp instead of "test" builtin
+ rev-parse test: use test_must_fail, not "if <command>; then false; fi"
+ rev-parse test: modernize quoting and whitespace
Modernize tests.
Will merge to 'master' in the fourth batch.
* fc/t3200-fixes (2013-09-03) 3 commits
(merged to 'next' on 2013-09-09 at 3626363)
+ t: branch: fix broken && chains
+ t: branch: fix typo
+ t: branch: trivial style fix
Will merge to 'master' in the fourth batch.
* fc/trivial (2013-09-08) 5 commits
(merged to 'next' on 2013-09-09 at a8ad2e1)
+ pull: use $curr_branch_short more
+ add: trivial style cleanup
+ reset: trivial style cleanup
+ branch: trivial style fix
+ reset: trivial refactoring
Will merge to 'master' in the fourth batch.
* jk/pager-bypass-cat-for-default-pager (2013-09-03) 1 commit
(merged to 'next' on 2013-09-09 at c9cfbaa)
+ pager: turn on "cat" optimization for DEFAULT_PAGER
If a build-time fallback is set to "cat" instead of "less", we
should apply the same "no subprocess or pipe" optimization as we
apply to user-supplied GIT_PAGER=cat.
Will merge to 'master' in the fourth batch.
* nd/git-dir-pointing-at-gitfile (2013-09-03) 1 commit
(merged to 'next' on 2013-09-09 at 5b0a4bf)
+ Make setup_git_env() resolve .git file when $GIT_DIR is not specified
We made sure that we notice the user-supplied GIT_DIR is actually a
gitfile, but failed to do so when the default ".git" is a gitfile.
Will merge to 'master' in the fourth batch.
* nr/git-cd-to-a-directory (2013-09-09) 1 commit
(merged to 'next' on 2013-09-13 at 2b07af9)
+ git: run in a directory given with -C option
Just like "make -C <directory>", make "git -C <directory> ..." to
go there before doing anything else.
Will merge to 'master' in the fifth batch.
* rh/peeling-tag-to-tag (2013-09-03) 2 commits
(merged to 'next' on 2013-09-12 at 3a1d906)
+ peel_onion: do not assume length of x_type globals
+ peel_onion(): add support for <rev>^{tag}
Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
"foo" is not a tag.
Will merge to 'master' in the fifth batch.
* cc/replace-with-the-same-type (2013-09-09) 8 commits
- Doc: 'replace' merge and non-merge commits
- t6050-replace: use some long option names
- replace: allow long option names
- Documentation/replace: add Creating Replacement Objects section
- t6050-replace: add test to clean up all the replace refs
- t6050-replace: test that objects are of the same type
- Documentation/replace: state that objects must be of the same type
- replace: forbid replacing an object with one of a different type
Using the replace mechanism to swap an object with another object
of a different type can introduce inconsistency (e.g. a tree
expects an object name to refer to a blob, but the blob object can
be mistakenly or maliciously replaced with an object with a
different type). Attempt to forbid such.
Will merge to 'next'.
* jx/clean-interactive (2013-08-28) 1 commit
(merged to 'next' on 2013-09-09 at 477fec6)
+ documentation: clarify notes for clean.requireForce
(this branch is used by jx/relative-path-regression-fix.)
Finishing touches to update the document to adjust to a new option
"git clean" learned recently.
Will merge to 'master' in the fourth batch.
* mm/status-without-comment-char (2013-09-06) 6 commits
(merged to 'next' on 2013-09-12 at 89161b8)
+ status: add missing blank line after list of "other" files
+ tests: don't set status.displayCommentPrefix file-wide
+ status: disable display of '#' comment prefix by default
+ submodule summary: ignore --for-status option
+ wt-status: use argv_array API
+ builtin/stripspace.c: fix broken indentation
Allow "git status" to omit the prefix to make its output a comment
in a commit log editor, which is not necessary for human
consumption.
We may want to tighten the output to omit unnecessary trailing
blank lines, but that does not have to be in the scope of this
series.
Will merge to 'master' in the fifth batch.
* bc/submodule-status-ignored (2013-09-11) 3 commits
(merged to 'next' on 2013-09-11 at 9f66712)
+ Improve documentation concerning the status.submodulesummary setting
(merged to 'next' on 2013-09-10 at a417960)
+ submodule: don't print status output with ignore=all
+ submodule: fix confusing variable name
Will cook in 'next' a bit.
* jk/duplicate-objects-in-packs (2013-09-04) 5 commits
(merged to 'next' on 2013-09-09 at 72f2c3d)
+ t5308: check that index-pack --strict detects duplicate objects
+ test index-pack on packs with recoverable delta cycles
+ add tests for indexing packs with delta cycles
+ sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
+ test-sha1: add a binary output mode
A packfile that stores the same object more than once is broken and
will be rejected.
Will merge to 'master' in the fourth batch.
* dw/diff-no-index-doc (2013-08-28) 2 commits
(merged to 'next' on 2013-09-10 at 423c8f6)
+ diff --no-index: describe in a separate paragraph
+ diff --no-index: clarify operation when not inside a repository
When the user types "git diff" outside a working tree, thinking he
is inside one, the current error message that is a single-liner
"usage: git diff --no-index <path> <path>" may not be sufficient to
make him realize the mistake. Add "Not a git repository" to the
error message when we fell into the "--no-index" mode without an
explicit command line option to instruct us to do so.
Will merge to 'master' in the fourth batch.
* sb/repack-in-c (2013-08-30) 2 commits
- repack: retain the return value of pack-objects
- repack: rewrite the shell script in C
Any further reviews?
* ap/commit-author-mailmap (2013-08-24) 1 commit
(merged to 'next' on 2013-09-09 at 79d5a20)
+ commit: search author pattern against mailmap
"git commit --author=$name", when $name is not in the canonical
"A. U. Thor <au.thor@example.xz>" format, looks for a matching name
from existing history, but did not consult mailmap to grab the
preferred author name.
Will merge to 'master' in the fourth batch.
* jk/write-broken-index-with-nul-sha1 (2013-08-28) 1 commit
(merged to 'next' on 2013-09-09 at 6953f27)
+ write_index: optionally allow broken null sha1s
Earlier we started rejecting an attempt to add 0{40} object name to
the index and to tree objects, but it sometimes is necessary to
allow so to be able to use tools like filter-branch to correct such
broken tree objects.
Will merge to 'master' in the fourth batch.
* kk/tests-with-no-perl (2013-08-24) 4 commits
(merged to 'next' on 2013-09-09 at 67510b1)
+ reset test: modernize style
+ t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
+ add -i test: use skip_all instead of repeated PERL prerequisite
+ Make test "using invalid commit with -C" more strict
Some tests were not skipped under NO_PERL build.
Will merge to 'master' in the fourth batch.
* ta/user-manual (2013-08-27) 11 commits
(merged to 'next' on 2013-09-10 at 1361be1)
+ "git prune" is safe
+ Remove irrelevant reference from "Tying it all together"
+ Remove unnecessary historical note from "Object storage format"
+ Improve section "Merging multiple trees"
+ Improve section "Manipulating branches"
+ Simplify "How to make a commit"
+ Fix some typos and improve wording
+ Use "git merge" instead of "git pull ."
+ Use current output for "git repack"
+ Use current "detached HEAD" message
+ Call it "Git User Manual" and remove reference to very old Git version
Update the user's manual to more recent versions of Git.
Will merge to 'master' in the fourth batch.
* tb/precompose-autodetect-fix (2013-08-27) 1 commit
(merged to 'next' on 2013-09-09 at 9bfdac1)
+ Set core.precomposeunicode to true on e.g. HFS+
On MacOS X, we detected if the filesystem needs the "pre-composed
unicode strings" workaround, but did not automatically enable it.
Now we do.
Will merge to 'master' in the fourth batch.
* jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
(merged to 'next' on 2013-09-12 at b5c37f4)
+ status: always show tracking branch even no change
+ branch: report invalid tracking branch as gone
"git branch -v -v" (and "git status") did not distinguish among a
branch that does not build on any other branch, a branch that is in
sync with the branch it builds on, and a branch that is configured
to build on some other branch that no longer exists.
Will merge to 'master' in the fifth batch.
* nd/fetch-into-shallow (2013-08-28) 7 commits
(merged to 'next' on 2013-09-09 at 87a3b99)
+ Add testcase for needless objects during a shallow fetch
+ list-objects: mark more commits as edges in mark_edges_uninteresting
+ list-objects: reduce one argument in mark_edges_uninteresting
+ upload-pack: delegate rev walking in shallow fetch to pack-objects
+ shallow: add setup_temporary_shallow()
+ shallow: only add shallow graft points to new shallow file
+ move setup_alternate_shallow and write_shallow_commits to shallow.c
When there is no sufficient overlap between old and new history
during a fetch into a shallow repository, we unnecessarily sent
objects the sending side knows the receiving end has.
Will merge to 'master' in the fifth batch.
* ks/p4-view-spec (2013-09-03) 2 commits
(merged to 'next' on 2013-09-10 at 8ceb2ec)
+ git p4: implement view spec wildcards with "p4 where"
+ git p4 test: sanitize P4CHARSET
Replaced with a reroll that was whitespace damaged.
Will merge to 'master' in the fourth batch.
* tr/merge-recursive-index-only (2013-07-07) 3 commits
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: untangle double meaning of o->call_depth
- merge-recursive: remove dead conditional in update_stages()
Will hold, until we get any user.
* jc/reflog-doc (2013-06-19) 1 commit
- setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
Document rules to use GIT_REFLOG_ACTION variable in the scripted
Porcelain. git-rebase--interactive locally violates this, but it
is a leaf user that does not call out to or dot-sources other
scripts, so fixing it is not all that urgent.
* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
- git add: -u/-A now affects the entire working tree
Will cook in 'next' until Git 2.0.
* jc/core-checkstat-2.0 (2013-05-06) 1 commit
- core.statinfo: remove as promised in Git 2.0
Will cook in 'next' until Git 2.0.
* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
- push: switch default from "matching" to "simple"
Will cook in 'next' until Git 2.0.
* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
- git add <pathspec>... defaults to "-A"
Updated endgame for "git add <pathspec>" that defaults to "--all"
aka "--no-ignore-removal".
Will cook in 'next' until Git 2.0.
* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
- diff: remove "diff-files -q" in a version of Git in a distant future
Will cook in 'next' until a distant future.
--------------------------------------------------
[Discarded]
* jc/pull-training-wheel (2013-07-19) 1 commit
(merged to 'next' on 2013-08-28 at c39bd15)
+ pull: require choice between rebase/merge on non-fast-forward pull
Make "git pull" (without arguments that say what branch to
integrate from where) refuse with "it does not fast forward; choose
between 'pull --merge' and 'pull --rebase'".
This topic has been reverted from 'next'. Will wait for the
conclusion of the discussion to seek a more user-friendly
alternative; it is likely that it will be based on the simpler
approach Felipe posted earlier.
^ permalink raw reply [relevance 4%]
* What's cooking in git.git (Sep 2013, #03; Wed, 11)
@ 2013-09-11 23:32 6% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2013-09-11 23:32 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The second batch of topics are now in 'master'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* es/rebase-i-no-abbrev (2013-08-25) 3 commits
(merged to 'next' on 2013-09-04 at 6027805)
+ rebase -i: fix short SHA-1 collision
+ t3404: rebase -i: demonstrate short SHA-1 collision
+ t3404: make tests more self-contained
Originally merged to 'next' on 2013-08-26
The commit object names in the insn sheet that was prepared at the
beginning of "rebase -i" session can become ambiguous as the
rebasing progresses and the repository gains more commits. Make
sure the internal record is kept with full 40-hex object names.
* es/rebase-i-respect-core-commentchar (2013-08-18) 1 commit
(merged to 'next' on 2013-09-04 at 8c1ce68)
+ rebase -i: fix cases ignoring core.commentchar
Originally merged to 'next' on 2013-08-20
"rebase -i" forgot that the comment character can be configurable
while reading its insn sheet.
* jc/ls-files-killed-optim (2013-08-23) 4 commits
(merged to 'next' on 2013-09-04 at 20c2304)
+ dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
+ t3010: update to demonstrate "ls-files -k" optimization pitfalls
+ ls-files -k: a directory only can be killed if the index has a non-directory
+ dir.c: use the cache_* macro to access the current index
Originally merged to 'next' on 2013-08-27
"git ls-files -k" needs to crawl only the part of the working tree
that may overlap the paths in the index to find killed files, but
shared code with the logic to find all the untracked files, which
made it unnecessarily inefficient.
* jn/post-receive-utf8 (2013-08-05) 3 commits
(merged to 'next' on 2013-09-04 at 3a3f480)
+ hooks/post-receive-email: set declared encoding to utf-8
+ hooks/post-receive-email: force log messages in UTF-8
+ hooks/post-receive-email: use plumbing instead of git log/show
Originally merged to 'next' on 2013-08-20
Update post-receive-email script to make sure the message contents
and pathnames are encoded consistently in UTF-8.
* js/xread-in-full (2013-08-20) 1 commit
(merged to 'next' on 2013-09-04 at 5bfb049)
+ stream_to_pack: xread does not guarantee to read all requested bytes
Originally merged to 'next' on 2013-08-20
A call to xread() was used without a loop around to cope with short
read in the codepath to stream new contents to a pack.
* nd/push-no-thin (2013-08-13) 1 commit
(merged to 'next' on 2013-09-04 at faa8c02)
+ push: respect --no-thin
Originally merged to 'next' on 2013-08-14
"git push --no-thin" was a no-op by mistake.
* rt/rebase-p-no-merge-summary (2013-08-21) 1 commit
(merged to 'next' on 2013-09-04 at d8d89ee)
+ rebase --preserve-merges: ignore "merge.log" config
Originally merged to 'next' on 2013-08-22
"git rebase -p" internally used the merge machinery, but when
rebasing, there should not be a need for merge summary.
* sb/mailmap-freeing-NULL-is-ok (2013-08-20) 1 commit
(merged to 'next' on 2013-09-04 at c831015)
+ mailmap: remove redundant check for freeing memory
Originally merged to 'next' on 2013-08-20
* sh/pull-rebase-preserve (2013-09-04) 1 commit
(merged to 'next' on 2013-09-04 at 32a93bb)
+ pull: allow pull to preserve merges when rebasing
Originally merged to 'next' on 2013-08-14
"git pull --rebase" always flattened the history; pull.rebase can
now be set to "preserve" to invoke "rebase --preserve-merges".
* tf/gitweb-ss-tweak (2013-08-20) 4 commits
(merged to 'next' on 2013-09-04 at 774bfbe)
+ gitweb: make search help link less ugly
+ gitweb: omit the repository owner when it is unset
+ gitweb: vertically centre contents of page footer
+ gitweb: ensure OPML text fits inside its box
Originally merged to 'next' on 2013-08-22
Tweak Gitweb CSS to layout some elements better.
--------------------------------------------------
[New Topics]
* bc/send-email-ssl-die-message-fix (2013-09-10) 1 commit
- send-email: don't call methods on undefined values
When send-email comes up with an error message to die with upon
failure to start an SSL session, it tried to read the error string
from a wrong place.
Will merge to 'next'.
* jc/checkout-detach-doc (2013-09-11) 1 commit
- checkout: update synopsys and documentation on detaching HEAD
"git checkout [--detach] <commit>" was listed poorly in the
synopsis section of its documentation.
* jc/cvsserver-perm-bit-fix (2013-09-11) 1 commit
- cvsserver: pick up the right mode bits
"git cvsserver" computed the permission mode bits incorrectly for
executable files.
Will merge to 'next'.
* jk/trailing-slash-in-pathspec (2013-09-10) 2 commits
- rm: re-use parse_pathspec's trailing-slash removal
- reset: handle submodule with trailing slash
Needs a reroll?
* kb/msvc-compile (2013-09-11) 5 commits
- Windows: do not redefine _WIN32_WINNT
- MinGW: Fix stat definitions to work with MinGW runtime version 4.0
- MSVC: fix stat definition hell
- MSVC: fix compile errors due to macro redefinitions
- MSVC: fix compile errors due to missing libintl.h
Build updates for Windows port.
* lc/filter-branch-too-many-refs (2013-09-11) 2 commits
- ### DONOTMERGE - missing sign-off
- Allow git-filter-branch to process large repositories with lots of branches.
"git filter-branch" in a repository with many refs blew limit of
command line length.
Needs a sign-off.
* mm/commit-template-squelch-advice-messages (2013-09-11) 2 commits
- commit: disable status hints when writing to COMMIT_EDITMSG
- wt-status: turn advice_status_hints into a field of wt_status
From the commit log template, remove irrelevant "advice" messages
that are shared with "git status" output.
Will merge to 'next'.
* np/lookup-object-hashing (2013-09-11) 1 commit
- lookup_object: remove hashtable_index() and optimize hash_obj()
Micro optimize hash function used in the object hash table.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
- git-send-email: Cache generated message-ids, use them when prompting
- git-send-email: add optional 'choices' parameter to the ask sub
* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
- ### DONTMERGE: needs better explanation on what config they need
- pack-refs.c: Add missing call to git_config()
- show-ref.c: Add missing call to git_config()
The changes themselves are probably good, but it is unclear what
basic setting needs to be read for which exact operation.
Waiting for clarification.
$gmane/228294
* jh/shorten-refname (2013-05-07) 4 commits
- t1514: refname shortening is done after dereferencing symbolic refs
- shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
- t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
- t1514: Add tests of shortening refnames in strict/loose mode
When remotes/origin/HEAD is not a symbolic ref, "rev-parse
--abbrev-ref remotes/origin/HEAD" ought to show "origin", not
"origin/HEAD", which is fixed with this series (if it is a symbolic
ref that points at remotes/origin/something, then it should show
"origin/something" and it already does).
Expecting a reroll, as an early part of a larger series.
$gmane/225137
* mg/more-textconv (2013-05-10) 7 commits
- grep: honor --textconv for the case rev:path
- grep: allow to use textconv filters
- t7008: demonstrate behavior of grep with textconv
- cat-file: do not die on --textconv without textconv filters
- show: honor --textconv for blobs
- diff_opt: track whether flags have been set explicitly
- t4030: demonstrate behavior of show with textconv
Make "git grep" and "git show" pay attention to --textconv when
dealing with blob objects.
I thought this was pretty well designed and executed, but it seems
there are some doubts on the list; kicked back to 'pu'.
* jc/format-patch (2013-04-22) 2 commits
- format-patch: --inline-single
- format-patch: rename "no_inline" field
A new option to send a single patch to the standard output to be
appended at the bottom of a message. I personally have no need for
this, but it was easy enough to cobble together. Tests, docs and
stripping out more MIMEy stuff are left as exercises to interested
parties.
Not ready for inclusion.
Will discard unless we hear from anybody who is interested in
tying its loose ends.
* jk/gitweb-utf8 (2013-04-08) 4 commits
- gitweb: Fix broken blob action parameters on blob/commitdiff pages
- gitweb: Don't append ';js=(0|1)' to external links
- gitweb: Make feed title valid utf8
- gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
Various fixes to gitweb.
Drew Northup volunteered to take a look into this.
$gmane/226216
* jc/show-branch (2013-06-07) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit before sending it out.
--------------------------------------------------
[Cooking]
* js/add-i-mingw (2013-09-04) 1 commit
(merged to 'next' on 2013-09-10 at 50ab841)
+ add--interactive: fix external command invocation on Windows
The implementation of "add -i" has a crippling code to work around
ActiveState Perl limitation but it by mistake also triggered on Git
for Windows where MSYS perl is used.
Will merge to 'master' in the third batch.
* rh/ishes-doc (2013-09-04) 7 commits
(merged to 'next' on 2013-09-10 at 3611e8a)
+ glossary: fix and clarify the definition of 'ref'
+ revisions.txt: fix and clarify <rev>^{<type>}
+ glossary: more precise definition of tree-ish (a.k.a. treeish)
+ use 'commit-ish' instead of 'committish'
+ use 'tree-ish' instead of 'treeish'
+ glossary: define commit-ish (a.k.a. committish)
+ glossary: mention 'treeish' as an alternative to 'tree-ish'
We liberally use "committish" and "commit-ish" (and "treeish" and
"tree-ish"); as these are non-words, let's unify these terms to
their dashed form. More importantly, clarify the documentation on
object peeling using these terms.
Will merge to 'master' in the third batch.
* jc/commit-is-spelled-with-two-ems (2013-09-05) 2 commits
(merged to 'next' on 2013-09-05 at 982aef2)
+ typofix: cherry is spelled with two ars
+ typofix: commit is spelled with two ems
Will merge to 'master' in the third batch.
* bc/http-backend-allow-405 (2013-09-09) 1 commit
- http-backend: provide Allow header for 405
When the webserver responds with "405 Method Not Allowed", it
should tell the client what methods are allowed with the "Allow"
header.
Will merge to 'next'.
* dw/check-ignore-sans-index (2013-09-05) 2 commits
- SQUASH??? do not let --no-index squat on short-and-sweet -i for now
- check-ignore: Add option to ignore index contents
"git check-ignore" follows the same rule as "git add" and "git
status" in that the ignore/exclude mechanism does not take effect
on paths that are already tracked. With "--no-index" option, it
can be used to diagnose which paths that should have been ignored
have been mistakenly added to the index.
Will squash the tip in and merge to 'next'.
* hu/cherry-pick-previous-branch (2013-09-09) 1 commit
- cherry-pick: allow "-" as abbreviation of '@{-1}'
Just like "git checkout -" knows to check out and "git merge -"
knows to merge the branch you were previously on, teach "git
cherry-pick" to understand "-" as the previous branch.
Will merge to 'next'.
* jh/checkout-auto-tracking (2013-09-09) 5 commits
- branch.c: Relax unnecessary requirement on upstream's remote ref name
- t3200: Add test demonstrating minor regression in 41c21f2
- Refer to branch.<name>.remote/merge when documenting --track
- t3200: Minor fix when preparing for tracking failure
- t2024: Fix &&-chaining and a couple of typos
Fix a minor regression in v1.8.3.2 and later that made it
impossible to base your local work on anything but a local branch
of the upstream repository you are tracking from.
Will merge to 'next'.
* jk/remove-remote-helpers-in-python (2013-09-09) 1 commit
(merged to 'next' on 2013-09-10 at 49c7a74)
+ git_remote_helpers: remove little used Python library
Remove now disused remote-helpers framework for helpers written in
Python.
Will merge to 'master' in the third batch.
* jk/upload-pack-keepalive (2013-09-09) 2 commits
- upload-pack: bump keepalive default to 5 seconds
- upload-pack: send keepalive packets during pack computation
When running "fetch -q", a long silence while the sender side
computes the set of objects to send can be mistaken by proxies as
dropped connection.
Will merge to 'next'.
* mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
- rebase: fix run_specific_rebase's use of "return" on FreeBSD
Work around a bug in FreeBSD shell that caused a regression to "git
rebase" in v1.8.4. It would be lovely to hear from FreeBSD folks a
success report to make sure we didn't miss any other use of a bare
"return" from dot-sourced script.
Will merge to 'next'.
* ss/doclinks (2013-09-06) 1 commit
(merged to 'next' on 2013-09-10 at 2d029a9)
+ Documentation: make AsciiDoc links always point to HTML files
When we converted many documents that were traditionally text-only
to be formatted to AsciiDoc, we did not update links that point at
them to refer to the formatted HTML files.
Will merge to 'master' in the third batch.
* uh/git-svn-serf-fix (2013-09-06) 1 commit
- git-svn: fix termination issues for remote svn connections
"git-svn" used with SVN 1.8.0 when talking over https:// connection
dumped core due to a bug in the serf library that SVN uses. Work
it around on our side, even though the SVN side is being fixed.
* fc/contrib-bzr-hg-fixes (2013-09-03) 10 commits
- contrib/remote-helpers: quote variable references in redirection targets
- contrib/remote-helpers: style updates for test scripts
- remote-hg: use notes to keep track of Hg revisions
- remote-helpers: cleanup more global variables
- remote-helpers: trivial style fixes
- remote-hg: improve basic test
- remote-hg: add missing &&s in the test
- remote-hg: fix test
- remote-bzr: make bzr branches configurable per-repo
- remote-bzr: fix export of utf-8 authors
Will merge to 'next'.
* jc/pager-configuration-doc (2013-08-29) 1 commit
(merged to 'next' on 2013-09-05 at 3169083)
+ config: rewrite core.pager documentation
It was unclear in the documentation how various configurations and
environment variables determine which pager is eventually used.
Will merge to 'master' in the third batch.
* np/pack-v4 (2013-09-11) 88 commits
- t1050: replace one instance of show-index with verify-pack
- index-pack, pack-objects: allow creating .idx v2 with .pack v4
- unpack-objects: decode v4 trees
- unpack-objects: allow to save processed bytes to a buffer
- unpack-objects: decode v4 commits
- ...
Nico and Duy advancing the eternal vaporware pack-v4. This is here
primarily for wider distribution of the preview edition.
* jk/free-tree-buffer (2013-06-06) 1 commit
(merged to 'next' on 2013-09-09 at 3576189)
+ clear parsed flag when we free tree buffers
Will merge to 'master' in the third batch.
* jk/has-sha1-file-retry-packed (2013-08-30) 1 commit
(merged to 'next' on 2013-09-09 at fc42e9b)
+ has_sha1_file: re-check pack directory before giving up
When an object is not found after checking the packfiles and then
loose object directory, read_sha1_file() re-checks the packfiles to
prevent racing with a concurrent repacker; teach the same logic to
has_sha1_file().
Will merge to 'master' in the third batch.
* ab/gitweb-author-initials (2013-08-30) 1 commit
(merged to 'next' on 2013-09-09 at ecb924d)
+ gitweb: Fix the author initials in blame for non-ASCII names
Will merge to 'master' in the fourth batch.
* bk/refs-multi-update (2013-09-11) 8 commits
- update-ref: add test cases covering --stdin signature
- update-ref: support multiple simultaneous updates
- refs: add update_refs for multiple simultaneous updates
- refs: add function to repack without multiple refs
- refs: factor delete_ref loose ref step into a helper
- refs: factor update_ref steps into helpers
- refs: report ref type from lock_any_ref_for_update
- reset: rename update_refs to reset_refs
Give "update-refs" a "--stdin" option to read multiple update
requests and perform them in an all-or-none fashion.
Looking good.
Will merge to 'next'.
* fc/at-head (2013-09-09) 3 commits
- SQUASH??? fixup
- Add new @ shortcut for HEAD
- sha1-name: pass len argument to interpret_branch_name()
Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
a genuine code improvement, but identifying cases where "@" means
HEAD were harder than it should have been. I think the result of
squashing the tip one in covers all the necessary cases.
Will squash the tip in and merge to 'next'.
* fc/fast-export (2013-09-03) 2 commits
(merged to 'next' on 2013-09-09 at 8d5d396)
+ fast-export: refactor get_tags_and_duplicates()
+ fast-export: make extra_refs global
Code simpification.
Will merge to 'master' in the third batch.
* fc/rev-parse-test-updates (2013-09-03) 4 commits
(merged to 'next' on 2013-09-09 at 92c51ef)
+ rev-parse test: use standard test functions for setup
+ rev-parse test: use test_cmp instead of "test" builtin
+ rev-parse test: use test_must_fail, not "if <command>; then false; fi"
+ rev-parse test: modernize quoting and whitespace
Modernize tests.
Will merge to 'master' in the third batch.
* fc/t3200-fixes (2013-09-03) 3 commits
(merged to 'next' on 2013-09-09 at 3626363)
+ t: branch: fix broken && chains
+ t: branch: fix typo
+ t: branch: trivial style fix
Will merge to 'master' in the third batch.
* fc/trivial (2013-09-08) 5 commits
(merged to 'next' on 2013-09-09 at a8ad2e1)
+ pull: use $curr_branch_short more
+ add: trivial style cleanup
+ reset: trivial style cleanup
+ branch: trivial style fix
+ reset: trivial refactoring
Will merge to 'master' in the third batch.
* jc/ref-excludes (2013-09-03) 2 commits
- document --exclude option
- revision: introduce --exclude=<glob> to tame wildcards
People often wished a way to tell "git log --branches" (and "git
log --remotes --not --branches") to exclude some local branches
from the expansion of "--branches" (similarly for "--tags", "--all"
and "--glob=<pattern>"). Now they have one.
Will merge to 'next'.
* jk/pager-bypass-cat-for-default-pager (2013-09-03) 1 commit
(merged to 'next' on 2013-09-09 at c9cfbaa)
+ pager: turn on "cat" optimization for DEFAULT_PAGER
If a build-time fallback is set to "cat" instead of "less", we
should apply the same "no subprocess or pipe" optimization as we
apply to user-supplied GIT_PAGER=cat.
Will merge to 'master' in the fourth batch.
* nd/git-dir-pointing-at-gitfile (2013-09-03) 1 commit
(merged to 'next' on 2013-09-09 at 5b0a4bf)
+ Make setup_git_env() resolve .git file when $GIT_DIR is not specified
We made sure that we notice the user-supplied GIT_DIR is actually a
gitfile, but failed to do so when the default ".git" is a gitfile.
Will merge to 'master' in the fourth batch.
* nr/git-cd-to-a-directory (2013-09-09) 1 commit
- git: run in a directory given with -C option
Just like "make -C <directory>", make "git -C <directory> ..." to
go there before doing anything else.
Will merge to 'next'.
* rh/peeling-tag-to-tag (2013-09-03) 2 commits
- peel_onion: do not assume length of x_type globals
- peel_onion(): add support for <rev>^{tag}
Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
"foo" is not a tag.
Will merge to 'next'.
* cc/replace-with-the-same-type (2013-09-09) 8 commits
- Doc: 'replace' merge and non-merge commits
- t6050-replace: use some long option names
- replace: allow long option names
- Documentation/replace: add Creating Replacement Objects section
- t6050-replace: add test to clean up all the replace refs
- t6050-replace: test that objects are of the same type
- Documentation/replace: state that objects must be of the same type
- replace: forbid replacing an object with one of a different type
Using the replace mechanism to swap an object with another object
of a different type can introduce inconsistency (e.g. a tree
expects an object name to refer to a blob, but the blob object can
be mistakenly or maliciously replaced with an object with a
different type). Attempt to forbid such.
Will merge to 'next'.
* jx/clean-interactive (2013-08-28) 1 commit
(merged to 'next' on 2013-09-09 at 477fec6)
+ documentation: clarify notes for clean.requireForce
Finishing touches to update the document to adjust to a new option
"git clean" learned recently.
Will merge to 'master' in the fourth batch.
* mm/status-without-comment-char (2013-09-06) 6 commits
- status: add missing blank line after list of "other" files
- tests: don't set status.displayCommentPrefix file-wide
- status: disable display of '#' comment prefix by default
- submodule summary: ignore --for-status option
- wt-status: use argv_array API
- builtin/stripspace.c: fix broken indentation
Allow "git status" to omit the prefix to make its output a comment
in a commit log editor, which is not necessary for human
consumption.
We may want to tighten the output to omit unnecessary trailing
blank lines, but that does not have to be in the scope of this
series.
Will merge to 'next'.
* bc/submodule-status-ignored (2013-09-11) 3 commits
(merged to 'next' on 2013-09-11 at 9f66712)
+ Improve documentation concerning the status.submodulesummary setting
(merged to 'next' on 2013-09-10 at a417960)
+ submodule: don't print status output with ignore=all
+ submodule: fix confusing variable name
Originally merged to 'next' on 2013-08-22
Will cook in 'next' a bit.
* jk/config-int-range-check (2013-09-09) 5 commits
(merged to 'next' on 2013-09-09 at 9ab779d)
+ git-config: always treat --int as 64-bit internally
+ config: make numeric parsing errors more clear
+ config: set errno in numeric git_parse_* functions
+ config: properly range-check integer values
+ config: factor out integer parsing from range checks
Originally merged to 'next' on 2013-08-22
"git config --int section.var 3g" should somehow diagnose that the
number does not fit in "int" (on 32-bit platforms anyway) but it
did not.
Will merge to 'master' in the third batch.
* jk/duplicate-objects-in-packs (2013-09-04) 5 commits
(merged to 'next' on 2013-09-09 at 72f2c3d)
+ t5308: check that index-pack --strict detects duplicate objects
+ test index-pack on packs with recoverable delta cycles
+ add tests for indexing packs with delta cycles
+ sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
+ test-sha1: add a binary output mode
A packfile that stores the same object more than once is broken and
will be rejected.
Will merge to 'master' in the fourth batch.
* mm/mediawiki-dumb-push-fix (2013-09-03) 4 commits
(merged to 'next' on 2013-09-05 at f8313f4)
+ git-remote-mediawiki: no need to update private ref in non-dumb push
+ git-remote-mediawiki: use no-private-update capability on dumb push
+ transport-helper: add no-private-update capability
+ git-remote-mediawiki: add test and check Makefile targets
Will merge to 'master' in the third batch.
* dw/diff-no-index-doc (2013-08-28) 2 commits
(merged to 'next' on 2013-09-10 at 423c8f6)
+ diff --no-index: describe in a separate paragraph
+ diff --no-index: clarify operation when not inside a repository
When the user types "git diff" outside a working tree, thinking he
is inside one, the current error message that is a single-liner
"usage: git diff --no-index <path> <path>" may not be sufficient to
make him realize the mistake. Add "Not a git repository" to the
error message when we fell into the "--no-index" mode without an
explicit command line option to instruct us to do so.
Will merge to 'master' in the third batch.
* sb/repack-in-c (2013-08-30) 2 commits
- repack: retain the return value of pack-objects
- repack: rewrite the shell script in C
Any further reviews?
* ap/commit-author-mailmap (2013-08-24) 1 commit
(merged to 'next' on 2013-09-09 at 79d5a20)
+ commit: search author pattern against mailmap
"git commit --author=$name", when $name is not in the canonical
"A. U. Thor <au.thor@example.xz>" format, looks for a matching name
from existing history, but did not consult mailmap to grab the
preferred author name.
Will merge to 'master' in the fourth batch.
* jk/write-broken-index-with-nul-sha1 (2013-08-28) 1 commit
(merged to 'next' on 2013-09-09 at 6953f27)
+ write_index: optionally allow broken null sha1s
Earlier we started rejecting an attempt to add 0{40} object name to
the index and to tree objects, but it sometimes is necessary to
allow so to be able to use tools like filter-branch to correct such
broken tree objects.
Will merge to 'master' in the fourth batch.
* kk/tests-with-no-perl (2013-08-24) 4 commits
(merged to 'next' on 2013-09-09 at 67510b1)
+ reset test: modernize style
+ t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
+ add -i test: use skip_all instead of repeated PERL prerequisite
+ Make test "using invalid commit with -C" more strict
Some tests were not skipped under NO_PERL build.
Will merge to 'master' in the third batch.
* mm/fast-import-feature-doc (2013-08-25) 1 commit
(merged to 'next' on 2013-09-05 at 83802e2)
+ Documentation/fast-import: clarify summary for `feature` command
Will merge to 'master' in the third batch.
* mm/remote-helpers-doc (2013-08-26) 1 commit
(merged to 'next' on 2013-09-05 at c181b35)
+ Documentation/remote-helpers: document common use-case for private ref
Will merge to 'master' in the third batch.
* mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
(merged to 'next' on 2013-09-05 at 5caecec)
+ remove dead pastebin link from pack-heuristics document
Will merge to 'master' in the third batch.
* ta/user-manual (2013-08-27) 11 commits
(merged to 'next' on 2013-09-10 at 1361be1)
+ "git prune" is safe
+ Remove irrelevant reference from "Tying it all together"
+ Remove unnecessary historical note from "Object storage format"
+ Improve section "Merging multiple trees"
+ Improve section "Manipulating branches"
+ Simplify "How to make a commit"
+ Fix some typos and improve wording
+ Use "git merge" instead of "git pull ."
+ Use current output for "git repack"
+ Use current "detached HEAD" message
+ Call it "Git User Manual" and remove reference to very old Git version
Update the user's manual to more recent versions of Git.
Will merge to 'master' in the third batch.
* tb/precompose-autodetect-fix (2013-08-27) 1 commit
(merged to 'next' on 2013-09-09 at 9bfdac1)
+ Set core.precomposeunicode to true on e.g. HFS+
On MacOS X, we detected if the filesystem needs the "pre-composed
unicode strings" workaround, but did not automatically enable it.
Now we do.
Will merge to 'master' in the third batch.
* jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
- status: always show tracking branch even no change
- branch: report invalid tracking branch as gone
"git branch -v -v" (and "git status") did not distinguish among a
branch that does not build on any other branch, a branch that is in
sync with the branch it builds on, and a branch that is configured
to build on some other branch that no longer exists.
Will merge to 'next'.
* nd/fetch-into-shallow (2013-08-28) 7 commits
(merged to 'next' on 2013-09-09 at 87a3b99)
+ Add testcase for needless objects during a shallow fetch
+ list-objects: mark more commits as edges in mark_edges_uninteresting
+ list-objects: reduce one argument in mark_edges_uninteresting
+ upload-pack: delegate rev walking in shallow fetch to pack-objects
+ shallow: add setup_temporary_shallow()
+ shallow: only add shallow graft points to new shallow file
+ move setup_alternate_shallow and write_shallow_commits to shallow.c
When there is no sufficient overlap between old and new history
during a fetch into a shallow repository, we unnecessarily sent
objects the sending side knows the receiving end has.
Will merge to 'master' in the fourth batch.
* ks/p4-view-spec (2013-09-03) 2 commits
(merged to 'next' on 2013-09-10 at 8ceb2ec)
+ git p4: implement view spec wildcards with "p4 where"
+ git p4 test: sanitize P4CHARSET
Replaced with a reroll that was whitespace damaged.
Will merge to 'master' in the third batch.
* tr/merge-recursive-index-only (2013-07-07) 3 commits
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: untangle double meaning of o->call_depth
- merge-recursive: remove dead conditional in update_stages()
Will hold, until we get any user.
* jc/reflog-doc (2013-06-19) 1 commit
- setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
Document rules to use GIT_REFLOG_ACTION variable in the scripted
Porcelain. git-rebase--interactive locally violates this, but it
is a leaf user that does not call out to or dot-sources other
scripts, so fixing it is not all that urgent.
* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
- git add: -u/-A now affects the entire working tree
Will cook in 'next' until Git 2.0.
* jc/core-checkstat-2.0 (2013-05-06) 1 commit
- core.statinfo: remove as promised in Git 2.0
Will cook in 'next' until Git 2.0.
* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
- push: switch default from "matching" to "simple"
Will cook in 'next' until Git 2.0.
* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
- git add <pathspec>... defaults to "-A"
Updated endgame for "git add <pathspec>" that defaults to "--all"
aka "--no-ignore-removal".
Will cook in 'next' until Git 2.0.
* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
- diff: remove "diff-files -q" in a version of Git in a distant future
Will cook in 'next' until a distant future.
--------------------------------------------------
[Discarded]
* jc/pull-training-wheel (2013-07-19) 1 commit
(merged to 'next' on 2013-08-28 at c39bd15)
+ pull: require choice between rebase/merge on non-fast-forward pull
Originally merged to 'next' on 2013-07-22
Make "git pull" (without arguments that say what branch to
integrate from where) refuse with "it does not fast forward; choose
between 'pull --merge' and 'pull --rebase'".
This topic has been reverted from 'next'. Will wait for the
conclusion of the discussion to seek a more user-friendly
alternative; it is likely that it will be based on the simpler
approach Felipe posted earlier.
^ permalink raw reply [relevance 6%]
* What's cooking in git.git (Sep 2013, #02; Mon, 9)
@ 2013-09-09 22:53 4% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2013-09-09 22:53 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The second batch of topics are now in 'master'.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* aj/p4-symlink-lose-nl (2013-08-12) 1 commit
(merged to 'next' on 2013-08-28 at 5ce9ceb)
+ git-p4: Fix occasional truncation of symlink contents.
Originally merged to 'next' on 2013-08-14
* ap/remote-hg-tilde-is-home-directory (2013-08-09) 1 commit
(merged to 'next' on 2013-08-28 at 9bfc430)
+ remote-hg: fix path when cloning with tilde expansion
Originally merged to 'next' on 2013-08-14
* bc/unuse-packfile (2013-08-02) 2 commits
(merged to 'next' on 2013-08-28 at 9029801)
+ Don't close pack fd when free'ing pack windows
+ sha1_file: introduce close_one_pack() to close packs on fd pressure
Originally merged to 'next' on 2013-08-06
Handle memory pressure and file descriptor pressure separately when
deciding to release pack windows to honor resource limits.
* da/darwin (2013-08-05) 3 commits
(merged to 'next' on 2013-08-28 at 6e4c5ae)
+ OS X: Fix redeclaration of die warning
+ Makefile: Fix APPLE_COMMON_CRYPTO with BLK_SHA1
+ imap-send: use Apple's Security framework for base64 encoding
Originally merged to 'next' on 2013-08-05
* db/http-savecookies (2013-08-05) 2 commits
(merged to 'next' on 2013-08-28 at 22a8464)
+ t5551: Remove header from curl cookie file
+ http: add http.savecookies option to write out HTTP cookies
Originally merged to 'next' on 2013-08-05
* es/blame-L-more (2013-08-05) 11 commits
(merged to 'next' on 2013-08-28 at b73cdc9)
+ blame: reject empty ranges -L,+0 and -L,-0
+ t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
+ blame: reject empty ranges -LX,+0 and -LX,-0
+ t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
+ log: fix -L bounds checking bug
+ t4211: retire soon-to-be unimplementable tests
+ t4211: log: demonstrate -L bounds checking bug
+ blame: fix -L bounds checking bug
+ t8001/t8002: blame: add empty file & partial-line tests
+ t8001/t8002: blame: demonstrate -L bounds checking bug
+ t8001/t8002: blame: decompose overly-large test
(this branch is used by es/blame-L-twice and es/contacts-blame-L-multi.)
Originally merged to 'next' on 2013-08-06
More fixes to the code to parse the "-L" option in "log" and "blame".
* es/blame-L-twice (2013-08-06) 16 commits
(merged to 'next' on 2013-08-28 at e83ae2e)
+ line-range: reject -L line numbers less than 1
+ t8001/t8002: blame: add tests of -L line numbers less than 1
+ line-range: teach -L^:RE to search from start of file
+ line-range: teach -L:RE to search from end of previous -L range
+ line-range: teach -L^/RE/ to search from start of file
+ line-range-format.txt: document -L/RE/ relative search
+ log: teach -L/RE/ to search from end of previous -L range
+ blame: teach -L/RE/ to search from end of previous -L range
+ line-range: teach -L/RE/ to search relative to anchor point
+ blame: document multiple -L support
+ t8001/t8002: blame: add tests of multiple -L options
+ blame: accept multiple -L ranges
+ blame: inline one-line function into its lone caller
+ range-set: publish API for re-use by git-blame -L
+ line-range-format.txt: clarify -L:regex usage form
+ git-log.txt: place each -L option variation on its own line
(this branch is used by es/contacts-blame-L-multi; uses es/blame-L-more.)
Originally merged to 'next' on 2013-08-08
Teaches "git blame" to take more than one -L ranges.
* es/contacts-blame-L-multi (2013-08-13) 3 commits
(merged to 'next' on 2013-08-28 at 24ff8b4)
+ contacts: reduce git-blame invocations
+ contacts: gather all blame sources prior to invoking git-blame
+ contacts: validate hunk length earlier
(this branch uses es/blame-L-more and es/blame-L-twice.)
Originally merged to 'next' on 2013-08-14
* fc/remote-hg-shared-setup (2013-08-11) 2 commits
(merged to 'next' on 2013-08-28 at 41ee3fe)
+ remote-hg: add shared repo upgrade
+ remote-hg: ensure shared repo is initialized
Originally merged to 'next' on 2013-08-14
* fc/unpack-trees-leakfix (2013-08-13) 1 commit
(merged to 'next' on 2013-08-28 at 3ad1f21)
+ unpack-trees: plug a memory leak
Originally merged to 'next' on 2013-08-14
* jc/check-x-z (2013-07-11) 4 commits
(merged to 'next' on 2013-08-28 at a7670ce)
+ check-attr -z: a single -z should apply to both input and output
+ check-ignore -z: a single -z should apply to both input and output
+ check-attr: the name of the character is NUL, not NULL
+ check-ignore: the name of the character is NUL, not NULL
Originally merged to 'next' on 2013-07-15
"git check-ignore -z" applied the NUL termination to both its input
(with --stdin) and its output, but "git check-attr -z" ignored the
option on the output side.
This is potentially a backward incompatible fix. Let's see if
anybody screams before deciding if we want to do anything to help
existing users (there may be none).
* jc/diff-filter-negation (2013-07-19) 6 commits
(merged to 'next' on 2013-08-28 at 5cc7720)
+ diff: deprecate -q option to diff-files
+ diff: allow lowercase letter to specify what change class to exclude
+ diff: reject unknown change class given to --diff-filter
+ diff: preparse --diff-filter string argument
+ diff: factor out match_filter()
+ diff: pass the whole diff_options to diffcore_apply_filter()
(this branch is used by jc/hold-diff-remove-q-synonym-for-no-deletion.)
Originally merged to 'next' on 2013-07-22
Teach "git diff --diff-filter" to express "I do not want to see
these classes of changes" more directly by listing only the
unwanted ones in lowercase (e.g. "--diff-filter=d" will show
everything but deletion) and deprecate "diff-files -q" which did
the same thing as "--diff-filter=d".
* jc/parseopt-command-modes (2013-07-30) 2 commits
(merged to 'next' on 2013-08-28 at 738b399)
+ tag: use OPT_CMDMODE
+ parse-options: add OPT_CMDMODE()
(this branch is used by sb/parseopt-boolean-removal.)
Many commands use --dashed-option as a operation mode selector
(e.g. "git tag --delete") that the user can use at most one
(e.g. "git tag --delete --verify" is a nonsense) and you cannot
negate (e.g. "git tag --no-delete" is a nonsense). Make it easier
for users of parse_options() to enforce these restrictions.
* jc/push-cas (2013-08-02) 9 commits
(merged to 'next' on 2013-08-28 at 784281f)
+ push: teach --force-with-lease to smart-http transport
+ send-pack: fix parsing of --force-with-lease option
+ t5540/5541: smart-http does not support "--force-with-lease"
+ t5533: test "push --force-with-lease"
+ push --force-with-lease: tie it all together
+ push --force-with-lease: implement logic to populate old_sha1_expect[]
+ remote.c: add command line option parser for "--force-with-lease"
+ builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
+ cache.h: move remote/connect API out of it
Originally merged to 'next' on 2013-08-05
Allow a safer "rewind of the remote tip" push than blind "--force",
by requiring that the overwritten remote ref to be unchanged since
the new history to replace it was prepared.
The machinery is more or less ready. The "--force" option is again
the big red button to override any safety, thanks to J6t's sanity
(the original round allowed --lockref to defeat --force).
The logic to choose the default implemented here is fragile
(e.g. "git fetch" after seeing a failure will update the
remote-tracking branch and will make the next "push" pass,
defeating the safety pretty easily). It is suitable only for the
simplest workflows, and it may hurt users more than it helps them.
* jc/transport-do-not-use-connect-twice-in-fetch (2013-08-28) 6 commits
(merged to 'next' on 2013-08-29 at f88a6da)
+ builtin/fetch.c: Fix a sparse warning
(merged to 'next' on 2013-08-28 at 2ed86df)
+ fetch: work around "transport-take-over" hack
+ fetch: refactor code that fetches leftover tags
+ fetch: refactor code that prepares a transport
+ fetch: rename file-scope global "transport" to "gtransport"
+ t5802: add test for connect helper
Originally merged to 'next' on 2013-08-20
The auto-tag-following code in "git fetch" tries to reuse the same
transport twice when the serving end does not cooperate and does
not give tags that point to commits that are asked for as part of
the primary transfer. Unfortunately, Git-aware transport helper
interface is not designed to be used more than once, hence this
does not work over smart-http transfer.
* jc/url-match (2013-08-09) 7 commits
(merged to 'next' on 2013-08-28 at 2a9fd23)
+ builtin/config.c: compilation fix
+ config: "git config --get-urlmatch" parses section.<url>.key
+ builtin/config: refactor collect_config()
+ config: parse http.<url>.<variable> using urlmatch
+ config: add generic callback wrapper to parse section.<url>.key
+ config: add helper to normalize and match URLs
+ http.c: fix parsing of http.sslCertPasswordProtected variable
Originally merged to 'next' on 2013-08-12
Allow section.<urlpattern>.var configuration variables to be
treated as a "virtual" section.var given a URL, and use the
mechanism to enhance http.* configuration variables.
This is a reroll of Kyle J. McKay's work.
* jk/cat-file-batch-optim (2013-08-05) 1 commit
(merged to 'next' on 2013-08-28 at 624e60d)
+ cat-file: only split on whitespace when %(rest) is used
Originally merged to 'next' on 2013-08-06
Rework the reverted change to `cat-file --batch-check`.
* jk/fast-import-empty-ls (2013-06-23) 4 commits
(merged to 'next' on 2013-08-28 at 876a39d)
+ fast-import: allow moving the root tree
+ fast-import: allow ls or filecopy of the root tree
+ fast-import: set valid mode on root tree in "ls"
+ t9300: document fast-import empty path issues
Originally merged to 'next' on 2013-07-22
* jk/mailmap-incomplete-line (2013-08-28) 1 commit
(merged to 'next' on 2013-09-04 at e77e887)
+ mailmap: handle mailmap blobs without trailing newlines
Will merge later to 'maint'.
* jl/some-submodule-config-are-not-boolean (2013-08-19) 1 commit
(merged to 'next' on 2013-08-28 at 7fabc3e)
+ avoid segfault on submodule.*.path set to an empty "true"
Originally merged to 'next' on 2013-08-20
* jl/submodule-mv (2013-08-06) 5 commits
(merged to 'next' on 2013-08-28 at 4ec6b41)
+ rm: delete .gitmodules entry of submodules removed from the work tree
+ mv: update the path entry in .gitmodules for moved submodules
+ submodule.c: add .gitmodules staging helper functions
+ mv: move submodules using a gitfile
+ mv: move submodules together with their work trees
(this branch is tangled with nd/magic-pathspec.)
Originally merged to 'next' on 2013-08-08
"git mv A B" when moving a submodule A does "the right thing",
inclusing relocating its working tree and adjusting the paths in
the .gitmodules file.
* km/svn-1.8-serf-only (2013-07-18) 3 commits
(merged to 'next' on 2013-08-28 at 1119134)
+ Git.pm: revert _temp_cache use of temp_is_locked
+ git-svn: allow git-svn fetching to work using serf
+ Git.pm: add new temp_is_locked function
Originally merged to 'next' on 2013-07-19
Subversion 1.8.0 that was recently released breaks older subversion
clients coming over http/https in various ways.
* mm/no-shell-escape-in-die-message (2013-08-07) 1 commit
(merged to 'next' on 2013-08-28 at 86b300f)
+ die_with_status: use "printf '%s\n'", not "echo"
Originally merged to 'next' on 2013-08-08
Fixes a minor bug in "git rebase -i" (there could be others, as the
root cause is pretty generic) where the code feeds a random, data
dependeant string to 'echo' and expects it to come out literally.
* ms/fetch-prune-configuration (2013-07-18) 1 commit
(merged to 'next' on 2013-08-28 at fa6ffc7)
+ fetch: make --prune configurable
Originally merged to 'next' on 2013-07-21
Allow fetch.prune and remote.*.prune configuration variables to be set,
and "git fetch" to behave as if "--prune" is given.
"git fetch" that honors remote.*.prune is fine, but I wonder if we
should somehow make "git push" aware of it as well. Perhaps
remote.*.prune should not be just a boolean, but a 4-way "none",
"push", "fetch", "both"?
* nd/clone-connectivity-shortcut (2013-07-23) 1 commit
(merged to 'next' on 2013-08-28 at d227f9f)
+ smart http: use the same connectivity check on cloning
Originally merged to 'next' on 2013-07-30
* nd/gc-lock-against-each-other (2013-08-09) 1 commit
(merged to 'next' on 2013-08-28 at 46e072b)
+ gc: reject if another gc is running, unless --force is given
Originally merged to 'next' on 2013-08-14
* nd/magic-pathspec (2013-09-05) 50 commits
(merged to 'next' on 2013-09-05 at b832b8d)
+ add: lift the pathspec magic restriction on "add -p"
+ pathspec: catch prepending :(prefix) on pathspec with short magic
(merged to 'next' on 2013-08-28 at 305c6e9)
+ rm: do not set a variable twice without intermediate reading.
+ t6131 - skip tests if on case-insensitive file system
+ parse_pathspec: accept :(icase)path syntax
+ pathspec: support :(glob) syntax
+ pathspec: make --literal-pathspecs disable pathspec magic
+ pathspec: support :(literal) syntax for noglob pathspec
+ kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
+ parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
+ parse_pathspec: make sure the prefix part is wildcard-free
+ rename field "raw" to "_raw" in struct pathspec
+ tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
+ remove match_pathspec() in favor of match_pathspec_depth()
+ remove init_pathspec() in favor of parse_pathspec()
+ remove diff_tree_{setup,release}_paths
+ convert common_prefix() to use struct pathspec
+ convert add_files_to_cache to take struct pathspec
+ convert {read,fill}_directory to take struct pathspec
+ convert refresh_index to take struct pathspec
+ convert report_path_error to take struct pathspec
+ checkout: convert read_tree_some to take struct pathspec
+ convert unmerge_cache to take struct pathspec
+ convert run_add_interactive to use struct pathspec
+ convert read_cache_preload() to take struct pathspec
+ line-log: convert to use parse_pathspec
+ reset: convert to use parse_pathspec
+ add: convert to use parse_pathspec
+ check-ignore: convert to use parse_pathspec
+ archive: convert to use parse_pathspec
+ ls-files: convert to use parse_pathspec
+ rm: convert to use parse_pathspec
+ checkout: convert to use parse_pathspec
+ rerere: convert to use parse_pathspec
+ status: convert to use parse_pathspec
+ commit: convert to use parse_pathspec
+ clean: convert to use parse_pathspec
+ guard against new pathspec magic in pathspec matching code
+ parse_pathspec: support prefixing original patterns
+ parse_pathspec: support stripping/checking submodule paths
+ parse_pathspec: support stripping submodule trailing slashes
+ parse_pathspec: add special flag for max_depth feature
+ convert some get_pathspec() calls to parse_pathspec()
+ parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} flags
+ parse_pathspec: save original pathspec for reporting
+ add parse_pathspec() that converts cmdline args to struct pathspec
+ pathspec: add copy_pathspec
+ pathspec: i18n-ize error strings in pathspec parsing code
+ move struct pathspec and related functions to pathspec.[ch]
+ clean: remove unused variable "seen"
(this branch is tangled with jl/submodule-mv.)
Originally merged to 'next' on 2013-07-23
Use "struct pathspec" interface in more places, instead of array of
characters, the latter of which cannot express magic pathspecs
(e.g. ":(icase)makefile" that matches both Makefile and makefile).
* nd/sq-quote-buf (2013-07-30) 3 commits
(merged to 'next' on 2013-08-28 at d0ffd55)
+ quote: remove sq_quote_print()
+ tar-tree: remove dependency on sq_quote_print()
+ for-each-ref, quote: convert *_quote_print -> *_quote_buf
Originally merged to 'next' on 2013-08-01
Code simplification as a preparatory step to something larger.
* rr/feed-real-path-to-editor (2013-07-29) 1 commit
(merged to 'next' on 2013-08-28 at 7458fa4)
+ editor: use canonicalized absolute path
Originally merged to 'next' on 2013-07-30
* sb/diff-delta-remove-needless-comparison (2013-08-18) 1 commit
(merged to 'next' on 2013-08-28 at ba09c3f)
+ create_delta_index: simplify condition always evaluating to true
Originally merged to 'next' on 2013-08-20
* sb/misc-cleanup (2013-08-09) 3 commits
(merged to 'next' on 2013-08-28 at bc2045b)
+ rm: remove unneeded null pointer check
+ diff: fix a possible null pointer dereference
+ diff: remove ternary operator evaluating always to true
Originally merged to 'next' on 2013-08-14
* sb/parseopt-boolean-removal (2013-08-07) 9 commits
(merged to 'next' on 2013-08-28 at 2f3f21f)
+ revert: use the OPT_CMDMODE for parsing, reducing code
+ checkout-index: fix negations of even numbers of -n
+ config parsing options: allow one flag multiple times
+ hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
+ branch, commit, name-rev: ease up boolean conditions
+ checkout: remove superfluous local variable
+ log, format-patch: parsing uses OPT__QUIET
+ Replace deprecated OPT_BOOLEAN by OPT_BOOL
+ Remove deprecated OPTION_BOOLEAN for parsing arguments
(this branch uses jc/parseopt-command-modes.)
Convert most uses of OPT_BOOLEAN/OPTION_BOOLEAN that can use
OPT_BOOL/OPTION_BOOLEAN which have much saner semantics, and turn
remaining ones into OPT_SET_INT, OPT_COUNTUP, etc. as necessary.
* sg/bash-prompt-lf-in-cwd-test (2013-08-18) 1 commit
(merged to 'next' on 2013-08-28 at eb449b5)
+ bash prompt: test the prompt with newline in repository path
Originally merged to 'next' on 2013-08-20
* sp/clip-read-write-to-8mb (2013-08-20) 2 commits
(merged to 'next' on 2013-08-28 at c9840d7)
+ Revert "compat/clipped-write.c: large write(2) fails on Mac OS X/XNU"
+ xread, xwrite: limit size of IO to 8MB
Originally merged to 'next' on 2013-08-22
Send a large request to read(2)/write(2) as a smaller but still
reasonably large chunks, which would improve the latency when the
operation needs to be killed and incidentally works around broken
64-bit systems that cannot take a 2GB write or read in one go.
* tg/index-struct-sizes (2013-08-20) 1 commit
(merged to 'next' on 2013-08-28 at c815042)
+ read-cache: use fixed width integer types
Originally merged to 'next' on 2013-08-22
The code that reads from a region that mmaps an on-disk index
assumed that "int"/"short" are always 32/16 bits.
* tr/fd-gotcha-fixes (2013-08-06) 1 commit
(merged to 'next' on 2013-08-28 at 5305271)
+ t0070: test that git_mkstemps correctly checks return value of open()
Originally merged to 'next' on 2013-08-08
Finishing touches to an earlier fix already in 'master'.
* tr/log-full-diff-keep-true-parents (2013-08-05) 2 commits
(merged to 'next' on 2013-08-28 at e86ec11)
+ log: use true parents for diff when walking reflogs
+ log: use true parents for diff even when rewriting
Originally merged to 'next' on 2013-08-08
Output from "git log --full-diff -- <pathspec>" looked strange,
because comparison was done with the previous ancestor that touched
the specified <pathspec>, causing the patches for paths outside the
pathspec to show more than the single commit has changed.
Tweak "git reflog -p" for the same reason using the same mechanism.
--------------------------------------------------
[New Topics]
* js/add-i-mingw (2013-09-04) 1 commit
- add--interactive: fix external command invocation on Windows
The implementation of "add -i" has a crippling code to work around
ActiveState Perl limitation but it by mistake also triggered on Git
for Windows where MSYS perl is used.
Will merge to 'next'.
* rh/ishes-doc (2013-09-04) 7 commits
- glossary: fix and clarify the definition of 'ref'
- revisions.txt: fix and clarify <rev>^{<type>}
- glossary: more precise definition of tree-ish (a.k.a. treeish)
- use 'commit-ish' instead of 'committish'
- use 'tree-ish' instead of 'treeish'
- glossary: define commit-ish (a.k.a. committish)
- glossary: mention 'treeish' as an alternative to 'tree-ish'
We liberally use "committish" and "commit-ish" (and "treeish" and
"tree-ish"); as these are non-words, let's unify these terms to
their dashed form. More importantly, clarify the documentation on
object peeling using these terms.
Will merge to 'next'.
* jc/commit-is-spelled-with-two-ems (2013-09-05) 2 commits
(merged to 'next' on 2013-09-05 at 982aef2)
+ typofix: cherry is spelled with two ars
+ typofix: commit is spelled with two ems
Will merge to 'master'.
* bc/http-backend-allow-405 (2013-09-09) 1 commit
- http-backend: provide Allow header for 405
When the webserver responds with "405 Method Not Allowed", it
should tell the client what methods are allowed with the "Allow"
header.
Will merge to 'next'.
* dw/check-ignore-sans-index (2013-09-05) 2 commits
- SQUASH??? do not let --no-index squat on short-and-sweet -i for now
- check-ignore: Add option to ignore index contents
"git check-ignore" follows the same rule as "git add" and "git
status" in that the ignore/exclude mechanism does not take effect
on paths that are already tracked. With "--no-index" option, it
can be used to diagnose which paths that should have been ignored
have been mistakenly added to the index.
Will squash the tip in and merge to 'next'.
* hu/cherry-pick-previous-branch (2013-09-09) 1 commit
- cherry-pick: allow "-" as abbreviation of '@{-1}'
Just like "git checkout -" knows to check out and "git merge -"
knows to merge the branch you were previously on, teach "git
cherry-pick" to understand "-" as the previous branch.
Will merge to 'next'.
* jh/checkout-auto-tracking (2013-09-09) 5 commits
- branch.c: Relax unnecessary requirement on upstream's remote ref name
- t3200: Add test demonstrating minor regression in 41c21f2
- Refer to branch.<name>.remote/merge when documenting --track
- t3200: Minor fix when preparing for tracking failure
- t2024: Fix &&-chaining and a couple of typos
Fix a minor regression in v1.8.3.2 and later that made it
impossible to base your local work on anything but a local branch
of the upstream repository you are tracking from.
Will merge to 'next'.
* jk/remove-remote-helpers-in-python (2013-09-09) 1 commit
- git_remote_helpers: remove little used Python library
Remove now disused remote-helpers framework for helpers written in
Python.
Will merge to 'next'.
* jk/upload-pack-keepalive (2013-09-09) 2 commits
- upload-pack: bump keepalive default to 5 seconds
- upload-pack: send keepalive packets during pack computation
When running "fetch -q", a long silence while the sender side
computes the set of objects to send can be mistaken by proxies as
dropped connection.
Will merge to 'next'.
* mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
- rebase: fix run_specific_rebase's use of "return" on FreeBSD
Work around a bug in FreeBSD shell that caused a regression to "git
rebase" in v1.8.4. It would be lovely to hear from FreeBSD folks a
success report to make sure we didn't miss any other use of a bare
"return" from dot-sourced script.
Will merge to 'next'.
* ss/doclinks (2013-09-06) 1 commit
- Documentation: make AsciiDoc links always point to HTML files
When we converted many documents that were traditionally text-only
to be formatted to AsciiDoc, we did not update links that point at
them to refer to the formatted HTML files.
Will merge to 'next'.
* uh/git-svn-serf-fix (2013-09-06) 1 commit
- git-svn: fix termination issues for remote svn connections
"git-svn" used with SVN 1.8.0 when talking over https:// connection
dumped core due to a bug in the serf library that SVN uses. Work
it around on our side, even though the SVN side is being fixed.
--------------------------------------------------
[Stalled]
* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
- git-send-email: Cache generated message-ids, use them when prompting
- git-send-email: add optional 'choices' parameter to the ask sub
* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
- ### DONTMERGE: needs better explanation on what config they need
- pack-refs.c: Add missing call to git_config()
- show-ref.c: Add missing call to git_config()
The changes themselves are probably good, but it is unclear what
basic setting needs to be read for which exact operation.
Waiting for clarification.
$gmane/228294
* jh/shorten-refname (2013-05-07) 4 commits
- t1514: refname shortening is done after dereferencing symbolic refs
- shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
- t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
- t1514: Add tests of shortening refnames in strict/loose mode
When remotes/origin/HEAD is not a symbolic ref, "rev-parse
--abbrev-ref remotes/origin/HEAD" ought to show "origin", not
"origin/HEAD", which is fixed with this series (if it is a symbolic
ref that points at remotes/origin/something, then it should show
"origin/something" and it already does).
Expecting a reroll, as an early part of a larger series.
$gmane/225137
* mg/more-textconv (2013-05-10) 7 commits
- grep: honor --textconv for the case rev:path
- grep: allow to use textconv filters
- t7008: demonstrate behavior of grep with textconv
- cat-file: do not die on --textconv without textconv filters
- show: honor --textconv for blobs
- diff_opt: track whether flags have been set explicitly
- t4030: demonstrate behavior of show with textconv
Make "git grep" and "git show" pay attention to --textconv when
dealing with blob objects.
I thought this was pretty well designed and executed, but it seems
there are some doubts on the list; kicked back to 'pu'.
* jc/format-patch (2013-04-22) 2 commits
- format-patch: --inline-single
- format-patch: rename "no_inline" field
A new option to send a single patch to the standard output to be
appended at the bottom of a message. I personally have no need for
this, but it was easy enough to cobble together. Tests, docs and
stripping out more MIMEy stuff are left as exercises to interested
parties.
Not ready for inclusion.
Will discard unless we hear from anybody who is interested in
tying its loose ends.
* jk/gitweb-utf8 (2013-04-08) 4 commits
- gitweb: Fix broken blob action parameters on blob/commitdiff pages
- gitweb: Don't append ';js=(0|1)' to external links
- gitweb: Make feed title valid utf8
- gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch
Various fixes to gitweb.
Drew Northup volunteered to take a look into this.
$gmane/226216
* jc/show-branch (2013-06-07) 5 commits
- show-branch: use commit slab to represent bitflags of arbitrary width
- show-branch.c: remove "all_mask"
- show-branch.c: abstract out "flags" operation
- show-branch.c: lift all_mask/all_revs to a global static
- show-branch.c: update comment style
Waiting for the final step to lift the hard-limit before sending it out.
--------------------------------------------------
[Cooking]
* fc/contrib-bzr-hg-fixes (2013-09-03) 10 commits
- contrib/remote-helpers: quote variable references in redirection targets
- contrib/remote-helpers: style updates for test scripts
- remote-hg: use notes to keep track of Hg revisions
- remote-helpers: cleanup more global variables
- remote-helpers: trivial style fixes
- remote-hg: improve basic test
- remote-hg: add missing &&s in the test
- remote-hg: fix test
- remote-bzr: make bzr branches configurable per-repo
- remote-bzr: fix export of utf-8 authors
Will merge to 'next'.
* jc/pager-configuration-doc (2013-08-29) 1 commit
(merged to 'next' on 2013-09-05 at 3169083)
+ config: rewrite core.pager documentation
It was unclear in the documentation how various configurations and
environment variables determine which pager is eventually used.
Will merge to 'master'.
* np/pack-v4 (2013-09-03) 24 commits
- Document pack v4 format
- initial pack index v3 support on the read side
- pack v4: add progress display
- pack v4: normalize pack name to properly generate the pack index file name
- pack index v3
- pack v4: relax commit parsing a bit
- pack v4: honor pack.compression config option
- pack v4: load delta candidate for encoding tree objects
- pack v4: tree object delta encoding
- pack v4: object writing
- pack v4: object data copy
- pack v4: object headers
- pack v4: creation code
- pack v4: dictionary table output
- pack v4: tree object encoding
- pack v4: commit object encoding
- pack v4: basic references encoding
- pack v4: move to struct pack_idx_entry and get rid of our own struct idx_entry
- pack v4: split the object list and dictionary creation
- pack v4: add commit object parsing
- pack v4: add tree entry mode support to dictionary entries
- pack v4: scan tree objects
- export packed_object_info()
- pack v4: initial pack dictionary structure and code
Will replace with a newer version of the series.
* jk/free-tree-buffer (2013-06-06) 1 commit
(merged to 'next' on 2013-09-09 at 3576189)
+ clear parsed flag when we free tree buffers
Will merge to 'master'.
* jk/has-sha1-file-retry-packed (2013-08-30) 1 commit
(merged to 'next' on 2013-09-09 at fc42e9b)
+ has_sha1_file: re-check pack directory before giving up
When an object is not found after checking the packfiles and then
loose object directory, read_sha1_file() re-checks the packfiles to
prevent racing with a concurrent repacker; teach the same logic to
has_sha1_file().
Will merge to 'master'.
* ab/gitweb-author-initials (2013-08-30) 1 commit
(merged to 'next' on 2013-09-09 at ecb924d)
+ gitweb: Fix the author initials in blame for non-ASCII names
Will merge to 'master'.
* bk/refs-multi-update (2013-09-09) 8 commits
- update-ref: add test cases covering --stdin signature
- update-ref: support multiple simultaneous updates
- refs: add update_refs for multiple simultaneous updates
- refs: add function to repack without multiple refs
- refs: factor delete_ref loose ref step into a helper
- refs: factor update_ref steps into helpers
- refs: report ref type from lock_any_ref_for_update
- reset: rename update_refs to reset_refs
Give "update-refs" a "--stdin" option to read multiple update
requests and perform them in an all-or-none fashion.
Comments?
* fc/at-head (2013-09-09) 3 commits
- SQUASH??? fixup
- Add new @ shortcut for HEAD
- sha1-name: pass len argument to interpret_branch_name()
Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
a genuine code improvement, but identifying cases where "@" means
HEAD were harder than it should have been. I think the result of
squashing the tip one in covers all the necessary cases.
Will squash the tip in and merge to 'next'.
* fc/fast-export (2013-09-03) 2 commits
(merged to 'next' on 2013-09-09 at 8d5d396)
+ fast-export: refactor get_tags_and_duplicates()
+ fast-export: make extra_refs global
Code simpification.
Will merge to 'master'.
* fc/rev-parse-test-updates (2013-09-03) 4 commits
(merged to 'next' on 2013-09-09 at 92c51ef)
+ rev-parse test: use standard test functions for setup
+ rev-parse test: use test_cmp instead of "test" builtin
+ rev-parse test: use test_must_fail, not "if <command>; then false; fi"
+ rev-parse test: modernize quoting and whitespace
Modernize tests.
Will merge to 'master'.
* fc/t3200-fixes (2013-09-03) 3 commits
(merged to 'next' on 2013-09-09 at 3626363)
+ t: branch: fix broken && chains
+ t: branch: fix typo
+ t: branch: trivial style fix
Will merge to 'master'.
* fc/trivial (2013-09-08) 5 commits
(merged to 'next' on 2013-09-09 at a8ad2e1)
+ pull: use $curr_branch_short more
+ add: trivial style cleanup
+ reset: trivial style cleanup
+ branch: trivial style fix
+ reset: trivial refactoring
Will merge to 'master'.
* jc/ref-excludes (2013-09-03) 2 commits
- document --exclude option
- revision: introduce --exclude=<glob> to tame wildcards
People often wished a way to tell "git log --branches" (and "git
log --remotes --not --branches") to exclude some local branches
from the expansion of "--branches" (similarly for "--tags", "--all"
and "--glob=<pattern>"). Now they have one.
Will merge to 'next'.
* jk/pager-bypass-cat-for-default-pager (2013-09-03) 1 commit
(merged to 'next' on 2013-09-09 at c9cfbaa)
+ pager: turn on "cat" optimization for DEFAULT_PAGER
If a build-time fallback is set to "cat" instead of "less", we
should apply the same "no subprocess or pipe" optimization as we
apply to user-supplied GIT_PAGER=cat.
Will merge to 'master'.
* nd/git-dir-pointing-at-gitfile (2013-09-03) 1 commit
(merged to 'next' on 2013-09-09 at 5b0a4bf)
+ Make setup_git_env() resolve .git file when $GIT_DIR is not specified
We made sure that we notice the user-supplied GIT_DIR is actually a
gitfile, but failed to do so when the default ".git" is a gitfile.
Will merge to 'master'.
* nr/git-cd-to-a-directory (2013-09-09) 1 commit
- git: run in a directory given with -C option
Just like "make -C <directory>", make "git -C <directory> ..." to
go there before doing anything else.
Will merge to 'next'.
* rh/peeling-tag-to-tag (2013-09-03) 2 commits
- peel_onion: do not assume length of x_type globals
- peel_onion(): add support for <rev>^{tag}
Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
"foo" is not a tag.
Will merge to 'next'.
* cc/replace-with-the-same-type (2013-09-09) 8 commits
- Doc: 'replace' merge and non-merge commits
- t6050-replace: use some long option names
- replace: allow long option names
- Documentation/replace: add Creating Replacement Objects section
- t6050-replace: add test to clean up all the replace refs
- t6050-replace: test that objects are of the same type
- Documentation/replace: state that objects must be of the same type
- replace: forbid replacing an object with one of a different type
Using the replace mechanism to swap an object with another object
of a different type can introduce inconsistency (e.g. a tree
expects an object name to refer to a blob, but the blob object can
be mistakenly or maliciously replaced with an object with a
different type). Attempt to forbid such.
Will merge to 'next'.
* jx/clean-interactive (2013-08-28) 1 commit
(merged to 'next' on 2013-09-09 at 477fec6)
+ documentation: clarify notes for clean.requireForce
Finishing touches to update the document to adjust to a new option
"git clean" learned recently.
Will merge to 'master'.
* mm/status-without-comment-char (2013-09-06) 6 commits
- status: add missing blank line after list of "other" files
- tests: don't set status.displayCommentPrefix file-wide
- status: disable display of '#' comment prefix by default
- submodule summary: ignore --for-status option
- wt-status: use argv_array API
- builtin/stripspace.c: fix broken indentation
Allow "git status" to omit the prefix to make its output a comment
in a commit log editor, which is not necessary for human
consumption.
We may want to tighten the output to omit unnecessary trailing
blank lines, but that does not have to be in the scope of this
series.
Will merge to 'next'.
* js/xread-in-full (2013-08-20) 1 commit
(merged to 'next' on 2013-09-04 at 5bfb049)
+ stream_to_pack: xread does not guarantee to read all requested bytes
Originally merged to 'next' on 2013-08-20
A call to xread() was used without a loop around to cope with short
read in the codepath to stream new contents to a pack.
Will merge to 'master' in the third batch.
* sb/mailmap-freeing-NULL-is-ok (2013-08-20) 1 commit
(merged to 'next' on 2013-09-04 at c831015)
+ mailmap: remove redundant check for freeing memory
Originally merged to 'next' on 2013-08-20
Will merge to 'master' in the third batch.
* bc/submodule-status-ignored (2013-09-04) 2 commits
- submodule: don't print status output with ignore=all
- submodule: fix confusing variable name
Originally merged to 'next' on 2013-08-22
Will merge to 'next'.
* jk/config-int-range-check (2013-09-09) 5 commits
(merged to 'next' on 2013-09-09 at 9ab779d)
+ git-config: always treat --int as 64-bit internally
+ config: make numeric parsing errors more clear
+ config: set errno in numeric git_parse_* functions
+ config: properly range-check integer values
+ config: factor out integer parsing from range checks
Originally merged to 'next' on 2013-08-22
"git config --int section.var 3g" should somehow diagnose that the
number does not fit in "int" (on 32-bit platforms anyway) but it
did not.
Will merge to 'master'.
* jk/duplicate-objects-in-packs (2013-09-04) 5 commits
(merged to 'next' on 2013-09-09 at 72f2c3d)
+ t5308: check that index-pack --strict detects duplicate objects
+ test index-pack on packs with recoverable delta cycles
+ add tests for indexing packs with delta cycles
+ sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
+ test-sha1: add a binary output mode
A packfile that stores the same object more than once is broken and
will be rejected.
Will merge to 'master'.
* mm/mediawiki-dumb-push-fix (2013-09-03) 4 commits
(merged to 'next' on 2013-09-05 at f8313f4)
+ git-remote-mediawiki: no need to update private ref in non-dumb push
+ git-remote-mediawiki: use no-private-update capability on dumb push
+ transport-helper: add no-private-update capability
+ git-remote-mediawiki: add test and check Makefile targets
Will merge to 'master'.
* rt/rebase-p-no-merge-summary (2013-08-21) 1 commit
(merged to 'next' on 2013-09-04 at d8d89ee)
+ rebase --preserve-merges: ignore "merge.log" config
Originally merged to 'next' on 2013-08-22
"git rebase -p" internally used the merge machinery, but when
rebasing, there should not be a need for merge summary.
Will merge to 'master' in the third batch.
* dw/diff-no-index-doc (2013-08-28) 2 commits
- diff --no-index: describe in a separate paragraph
- diff --no-index: clarify operation when not inside a repository
When the user types "git diff" outside a working tree, thinking he
is inside one, the current error message that is a single-liner
"usage: git diff --no-index <path> <path>" may not be sufficient to
make him realize the mistake. Add "Not a git repository" to the
error message when we fell into the "--no-index" mode without an
explicit command line option to instruct us to do so.
Will merge to 'next'.
* sb/repack-in-c (2013-08-30) 2 commits
- repack: retain the return value of pack-objects
- repack: rewrite the shell script in C
Any further reviews?
* ap/commit-author-mailmap (2013-08-24) 1 commit
(merged to 'next' on 2013-09-09 at 79d5a20)
+ commit: search author pattern against mailmap
"git commit --author=$name", when $name is not in the canonical
"A. U. Thor <au.thor@example.xz>" format, looks for a matching name
from existing history, but did not consult mailmap to grab the
preferred author name.
Will merge to 'master'.
* jk/write-broken-index-with-nul-sha1 (2013-08-28) 1 commit
(merged to 'next' on 2013-09-09 at 6953f27)
+ write_index: optionally allow broken null sha1s
Earlier we started rejecting an attempt to add 0{40} object name to
the index and to tree objects, but it sometimes is necessary to
allow so to be able to use tools like filter-branch to correct such
broken tree objects.
Will merge to 'master'.
* kk/tests-with-no-perl (2013-08-24) 4 commits
(merged to 'next' on 2013-09-09 at 67510b1)
+ reset test: modernize style
+ t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
+ add -i test: use skip_all instead of repeated PERL prerequisite
+ Make test "using invalid commit with -C" more strict
Some tests were not skipped under NO_PERL build.
Will merge to 'master'.
* mm/fast-import-feature-doc (2013-08-25) 1 commit
(merged to 'next' on 2013-09-05 at 83802e2)
+ Documentation/fast-import: clarify summary for `feature` command
Will merge to 'master'.
* mm/remote-helpers-doc (2013-08-26) 1 commit
(merged to 'next' on 2013-09-05 at c181b35)
+ Documentation/remote-helpers: document common use-case for private ref
Will merge to 'master'.
* mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
(merged to 'next' on 2013-09-05 at 5caecec)
+ remove dead pastebin link from pack-heuristics document
Will merge to 'master'.
* ta/user-manual (2013-08-27) 11 commits
- "git prune" is safe
- Remove irrelevant reference from "Tying it all together"
- Remove unnecessary historical note from "Object storage format"
- Improve section "Merging multiple trees"
- Improve section "Manipulating branches"
- Simplify "How to make a commit"
- Fix some typos and improve wording
- Use "git merge" instead of "git pull ."
- Use current output for "git repack"
- Use current "detached HEAD" message
- Call it "Git User Manual" and remove reference to very old Git version
Update the user's manual to more recent versions of Git.
Will merge to 'next'.
* tb/precompose-autodetect-fix (2013-08-27) 1 commit
(merged to 'next' on 2013-09-09 at 9bfdac1)
+ Set core.precomposeunicode to true on e.g. HFS+
On MacOS X, we detected if the filesystem needs the "pre-composed
unicode strings" workaround, but did not automatically enable it.
Now we do.
Will merge to 'master'.
* tf/gitweb-ss-tweak (2013-08-20) 4 commits
(merged to 'next' on 2013-09-04 at 774bfbe)
+ gitweb: make search help link less ugly
+ gitweb: omit the repository owner when it is unset
+ gitweb: vertically centre contents of page footer
+ gitweb: ensure OPML text fits inside its box
Originally merged to 'next' on 2013-08-22
Tweak Gitweb CSS to layout some elements better.
Will merge to 'master' in the third batch.
* es/rebase-i-respect-core-commentchar (2013-08-18) 1 commit
(merged to 'next' on 2013-09-04 at 8c1ce68)
+ rebase -i: fix cases ignoring core.commentchar
Originally merged to 'next' on 2013-08-20
"rebase -i" forgot that the comment character can be configurable
while reading its insn sheet.
Will merge to 'master' in the third batch.
* jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
- status: always show tracking branch even no change
- branch: report invalid tracking branch as gone
"git branch -v -v" (and "git status") did not distinguish among a
branch that does not build on any other branch, a branch that is in
sync with the branch it builds on, and a branch that is configured
to build on some other branch that no longer exists.
Will merge to 'next'.
* nd/fetch-into-shallow (2013-08-28) 7 commits
(merged to 'next' on 2013-09-09 at 87a3b99)
+ Add testcase for needless objects during a shallow fetch
+ list-objects: mark more commits as edges in mark_edges_uninteresting
+ list-objects: reduce one argument in mark_edges_uninteresting
+ upload-pack: delegate rev walking in shallow fetch to pack-objects
+ shallow: add setup_temporary_shallow()
+ shallow: only add shallow graft points to new shallow file
+ move setup_alternate_shallow and write_shallow_commits to shallow.c
When there is no sufficient overlap between old and new history
during a fetch into a shallow repository, we unnecessarily sent
objects the sending side knows the receiving end has.
Will merge to 'master'.
* jc/ls-files-killed-optim (2013-08-23) 4 commits
(merged to 'next' on 2013-09-04 at 20c2304)
+ dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
+ t3010: update to demonstrate "ls-files -k" optimization pitfalls
+ ls-files -k: a directory only can be killed if the index has a non-directory
+ dir.c: use the cache_* macro to access the current index
Originally merged to 'next' on 2013-08-27
"git ls-files -k" needs to crawl only the part of the working tree
that may overlap the paths in the index to find killed files, but
shared code with the logic to find all the untracked files, which
made it unnecessarily inefficient.
Will merge to 'master' in the third batch.
* es/rebase-i-no-abbrev (2013-08-25) 3 commits
(merged to 'next' on 2013-09-04 at 6027805)
+ rebase -i: fix short SHA-1 collision
+ t3404: rebase -i: demonstrate short SHA-1 collision
+ t3404: make tests more self-contained
Originally merged to 'next' on 2013-08-26
The commit object names in the insn sheet that was prepared at the
beginning of "rebase -i" session can become ambiguous as the
rebasing progresses and the repository gains more commits. Make
sure the internal record is kept with full 40-hex object names.
Will merge to 'master' in the third batch.
* ks/p4-view-spec (2013-09-03) 2 commits
- git p4: implement view spec wildcards with "p4 where"
- git p4 test: sanitize P4CHARSET
Replaced with a reroll that was whitespace damaged.
Waiting for the final Ack.
* nd/push-no-thin (2013-08-13) 1 commit
(merged to 'next' on 2013-09-04 at faa8c02)
+ push: respect --no-thin
Originally merged to 'next' on 2013-08-14
"git push --no-thin" was a no-op by mistake.
Will merge to 'master' in the third batch.
* sh/pull-rebase-preserve (2013-09-04) 1 commit
(merged to 'next' on 2013-09-04 at 32a93bb)
+ pull: allow pull to preserve merges when rebasing
Originally merged to 'next' on 2013-08-14
"git pull --rebase" always flattened the history; pull.rebase can
now be set to "preserve" to invoke "rebase --preserve-merges".
Will merge to 'master' in the third batch.
* jn/post-receive-utf8 (2013-08-05) 3 commits
(merged to 'next' on 2013-09-04 at 3a3f480)
+ hooks/post-receive-email: set declared encoding to utf-8
+ hooks/post-receive-email: force log messages in UTF-8
+ hooks/post-receive-email: use plumbing instead of git log/show
Originally merged to 'next' on 2013-08-20
Update post-receive-email script to make sure the message contents
and pathnames are encoded consistently in UTF-8.
Will merge to 'master' in the third batch.
* tr/merge-recursive-index-only (2013-07-07) 3 commits
- merge-recursive: -Xindex-only to leave worktree unchanged
- merge-recursive: untangle double meaning of o->call_depth
- merge-recursive: remove dead conditional in update_stages()
Will hold, until we get any user.
* jc/pull-training-wheel (2013-07-19) 1 commit
(merged to 'next' on 2013-08-28 at c39bd15)
+ pull: require choice between rebase/merge on non-fast-forward pull
Originally merged to 'next' on 2013-07-22
Make "git pull" (without arguments that say what branch to
integrate from where) refuse with "it does not fast forward; choose
between 'pull --merge' and 'pull --rebase'".
Will revert the merge, wait for the discussion to settle and
produce a replacement to queue again.
http://thread.gmane.org/gmane.comp.version-control.git/233554/focus=234375
* jc/reflog-doc (2013-06-19) 1 commit
- setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
Document rules to use GIT_REFLOG_ACTION variable in the scripted
Porcelain. git-rebase--interactive locally violates this, but it
is a leaf user that does not call out to or dot-sources other
scripts, so fixing it is not all that urgent.
* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
- git add: -u/-A now affects the entire working tree
Will cook in 'next' until Git 2.0.
* jc/core-checkstat-2.0 (2013-05-06) 1 commit
- core.statinfo: remove as promised in Git 2.0
Will cook in 'next' until Git 2.0.
* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
- push: switch default from "matching" to "simple"
Will cook in 'next' until Git 2.0.
* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
- git add <pathspec>... defaults to "-A"
Updated endgame for "git add <pathspec>" that defaults to "--all"
aka "--no-ignore-removal".
Will cook in 'next' until Git 2.0.
* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
- diff: remove "diff-files -q" in a version of Git in a distant future
Will cook in 'next' until a distant future.
^ permalink raw reply [relevance 4%]
* What's cooking in git.git (Nov 2012, #01; Sun, 4)
@ 2012-11-04 14:56 6% Jeff King
0 siblings, 0 replies; 162+ results
From: Jeff King @ 2012-11-04 14:56 UTC (permalink / raw)
To: git
What's cooking in git.git (Nov 2012, #01; Sun, 4)
--------------------------------------------------
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The third batch of topics has graduated to master.
You can find the changes described here in the integration branches of
my repository at:
git://github.com/peff/git.git
Until Junio returns, kernel.org and the other "usual" places will not be
updated.
--------------------------------------------------
[New Topics]
* as/maint-doc-fix-no-post-rewrite (2012-11-02) 1 commit
- commit: fixup misplacement of --no-post-rewrite description
Will merge to 'next'.
* fc/remote-bzr (2012-11-04) 3 commits
- remote-bzr: add simple tests
- remote-bzr: add support for pushing
- Add new remote-bzr transport helper
New remote helper for bzr.
* fc/remote-hg (2012-11-04) 16 commits
- remote-hg: the author email can be null
- remote-hg: add option to not track branches
- remote-hg: add extra author test
- remote-hg: add tests to compare with hg-git
- remote-hg: add bidirectional tests
- test-lib: avoid full path to store test results
- remote-hg: add basic tests
- remote-hg: fake bookmark when there's none
- remote-hg: add compat for hg-git author fixes
- remote-hg: add support for hg-git compat mode
- remote-hg: match hg merge behavior
- remote-hg: make sure the encoding is correct
- remote-hg: add support to push URLs
- remote-hg: add support for remote pushing
- remote-hg: add support for pushing
- Add new remote-hg transport helper
New remote helper for hg.
May want to do one more round of review on the list.
Most of the discussion so far has been on whether to pursue this versus
what's in msysgit, and not on the specifics of the code. I'd like to
put this in next soon, but it probably makes sense for everybody to
give it a final look-over.
* jk/maint-http-half-auth-fetch (2012-10-31) 2 commits
- remote-curl: retry failed requests for auth even with gzip
- remote-curl: hoist gzip buffer size to top of post_rpc
Fixes fetch from servers that ask for auth only during the actual
packing phase. This is not really a recommended configuration, but it
cleans up the code at the same time.
Will merge to 'next'.
* js/hp-nonstop (2012-10-30) 1 commit
- fix 'make test' for HP NonStop
Will merge to 'next'.
* kb/preload-index-more (2012-11-02) 1 commit
- update-index/diff-index: use core.preloadindex to improve performance
Use preloadindex in more places, which has a nice speedup on systems
with slow stat calls (and even on Linux).
Will merge to 'next'.
* mh/notes-string-list (2012-11-04) 5 commits
- string_list_add_refs_from_colon_sep(): use string_list_split()
- notes: fix handling of colon-separated values
- combine_notes_cat_sort_uniq(): sort and dedup lines all at once
- Initialize sort_uniq_list using named constant
- string_list: add a function string_list_remove_empty_items()
Improve the asymptotic performance of the cat_sort_uniq notes merge
strategy.
Will merge to 'next'.
* mh/strbuf-split (2012-11-04) 4 commits
- strbuf_split*(): document functions
- strbuf_split*(): rename "delim" parameter to "terminator"
- strbuf_split_buf(): simplify iteration
- strbuf_split_buf(): use ALLOC_GROW()
Cleanups and documentation for strbuf_split.
Will merge to 'next'.
* mm/maint-doc-commit-edit (2012-11-02) 1 commit
- Document 'git commit --no-edit' explicitly
Will merge to 'next'.
--------------------------------------------------
[Graduated to "master"]
* gb/maint-doc-svn-log-window-size (2012-10-26) 1 commit
(merged to 'next' on 2012-10-29 at ee50b22)
+ Document git-svn fetch --log-window-size parameter
Will merge to 'master' in the third batch.
* km/maint-doc-git-reset (2012-10-29) 1 commit
(merged to 'next' on 2012-10-29 at cdb4e8f)
+ doc: git-reset: make "<mode>" optional
Will merge to 'master' in the third batch.
* mm/maint-doc-remote-tracking (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at 80f1592)
+ Documentation: remote tracking branch -> remote-tracking branch
We long ago hyphenated "remote-tracking branch"; this
catches some new instances added since then.
Will merge to 'master' in the third batch.
* ph/pull-rebase-detached (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at 73d9d14)
+ git-pull: Avoid merge-base on detached head
Avoids spewing error messages when using "pull --rebase" on a
detached HEAD.
Will merge to 'master' in the third batch.
* po/maint-refs-replace-docs (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at 3874c9d)
+ Doc repository-layout: Show refs/replace
The refs/replace hierarchy was not mentioned in the
repository-layout docs.
Will merge to 'master' in the third batch.
* pp/maint-doc-pager-config (2012-10-29) 1 commit
(merged to 'next' on 2012-10-29 at 434fbd0)
+ Documentation: improve the example of overriding LESS via core.pager
Will merge to 'master' in the third batch.
* rf/maint-mailmap-off-by-one (2012-10-28) 1 commit
(merged to 'next' on 2012-10-29 at 8c2214b)
+ mailmap: avoid out-of-bounds memory access
Will merge to 'master' in the third batch.
* sl/maint-configure-messages (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at e1d7ecd)
+ configure: fix some output message
Minor message fixes for the configure script.
Will merge to 'master' in the third batch.
* sz/maint-submodule-reference-arg (2012-10-26) 1 commit
(merged to 'next' on 2012-10-29 at 1aab03c)
+ submodule add: fix handling of --reference=<repo> option
Will merge to 'master' in the third batch.
* tb/maint-t9200-case-insensitive (2012-10-28) 1 commit
(merged to 'next' on 2012-10-29 at 62af90c)
+ Fix t9200 on case insensitive file systems
Will merge to 'master' in the third batch.
* tj/maint-doc-commit-sign (2012-10-29) 1 commit
(merged to 'next' on 2012-10-29 at 44c61a0)
+ Add -S, --gpg-sign option to manpage of "git commit"
Will merge to 'master' in the third batch.
--------------------------------------------------
[Stalled]
* rc/maint-complete-git-p4 (2012-09-24) 1 commit
(merged to 'next' on 2012-10-29 at af52cef)
+ Teach git-completion about git p4
Comment from Pete will need to be addressed in a follow-up patch.
* as/test-tweaks (2012-09-20) 7 commits
- tests: paint unexpectedly fixed known breakages in bold red
- tests: test the test framework more thoroughly
- [SQUASH] t/t0000-basic.sh: quoting of TEST_DIRECTORY is screwed up
- tests: refactor mechanics of testing in a sub test-lib
- tests: paint skipped tests in bold blue
- tests: test number comes first in 'not ok $count - $message'
- tests: paint known breakages in bold yellow
Various minor tweaks to the test framework to paint its output
lines in colors that match what they mean better.
Has the "is this really blue?" issue Peff raised resolved???
* jc/maint-name-rev (2012-09-17) 7 commits
- describe --contains: use "name-rev --algorithm=weight"
- name-rev --algorithm=weight: tests and documentation
- name-rev --algorithm=weight: cache the computed weight in notes
- name-rev --algorithm=weight: trivial optimization
- name-rev: --algorithm option
- name_rev: clarify the logic to assign a new tip-name to a commit
- name-rev: lose unnecessary typedef
"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev. This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.
I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).
Stalled mostly due to lack of responses.
* jc/xprm-generation (2012-09-14) 1 commit
- test-generation: compute generation numbers and clock skews
A toy to analyze how bad the clock skews are in histories of real
world projects.
Stalled mostly due to lack of responses.
* jc/blame-no-follow (2012-09-21) 2 commits
- blame: pay attention to --no-follow
- diff: accept --no-follow option
Teaches "--no-follow" option to "git blame" to disable its
whole-file rename detection.
Stalled mostly due to lack of responses.
* jc/doc-default-format (2012-10-07) 2 commits
- [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
- Allow generating a non-default set of documentation
Need to address the installation half if this is to be any useful.
* mk/maint-graph-infinity-loop (2012-09-25) 1 commit
- graph.c: infinite loop in git whatchanged --graph -m
The --graph code fell into infinite loop when asked to do what the
code did not expect ;-)
Anybody who worked on "--graph" wants to comment?
Stalled mostly due to lack of responses.
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term.
Waiting for comments.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
--------------------------------------------------
[Cooking]
* mh/ceiling (2012-10-29) 8 commits
- string_list_longest_prefix(): remove function
- setup_git_directory_gently_1(): resolve symlinks in ceiling paths
- longest_ancestor_length(): require prefix list entries to be normalized
- longest_ancestor_length(): take a string_list argument for prefixes
- longest_ancestor_length(): use string_list_split()
- Introduce new function real_path_if_valid()
- real_path_internal(): add comment explaining use of cwd
- Introduce new static function real_path_internal()
Elements of GIT_CEILING_DIRECTORIES list may not match the real
pathname we obtain from getcwd(), leading the GIT_DIR discovery
logic to escape the ceilings the user thought to have specified.
Need to look at v4 which made it to the list.
* mo/cvs-server-cleanup (2012-10-26) 11 commits
(merged to 'next' on 2012-10-29 at 4e70622)
+ Use character class for sed expression instead of \s
(merged to 'next' on 2012-10-25 at c70881d)
+ cvsserver status: provide real sticky info
+ cvsserver: cvs add: do not expand directory arguments
+ cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
+ cvsserver: split up long lines in req_{status,diff,log}
+ cvsserver: clean up client request handler map comments
+ cvsserver: remove unused functions _headrev and gethistory
+ cvsserver update: comment about how we shouldn't remove a user-modified file
+ cvsserver: add comments about database schema/usage
+ cvsserver: removed unused sha1Or-k mode from kopts_from_path
+ cvsserver t9400: add basic 'cvs log' test
(this branch is tangled with mo/cvs-server-updates.)
Cleanups to prepare for mo/cvs-server-updates.
Will merge to 'master' in the fourth batch.
* mo/cvs-server-updates (2012-10-16) 20 commits
- cvsserver Documentation: new cvs ... -r support
- cvsserver: add t9402 to test branch and tag refs
- cvsserver: support -r and sticky tags for most operations
- cvsserver: Add version awareness to argsfromdir
- cvsserver: generalize getmeta() to recognize commit refs
- cvsserver: implement req_Sticky and related utilities
- cvsserver: add misc commit lookup, file meta data, and file listing functions
- cvsserver: define a tag name character escape mechanism
- cvsserver: cleanup extra slashes in filename arguments
- cvsserver: factor out git-log parsing logic
(merged to 'next' on 2012-10-25 at c70881d)
+ cvsserver status: provide real sticky info
+ cvsserver: cvs add: do not expand directory arguments
+ cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
+ cvsserver: split up long lines in req_{status,diff,log}
+ cvsserver: clean up client request handler map comments
+ cvsserver: remove unused functions _headrev and gethistory
+ cvsserver update: comment about how we shouldn't remove a user-modified file
+ cvsserver: add comments about database schema/usage
+ cvsserver: removed unused sha1Or-k mode from kopts_from_path
+ cvsserver t9400: add basic 'cvs log' test
(this branch is tangled with mo/cvs-server-cleanup.)
Needs review by folks interested in cvsserver.
* ta/doc-cleanup (2012-10-25) 6 commits
- Documentation: build html for all files in technical and howto
- Documentation/howto: convert plain text files to asciidoc
- Documentation/technical: convert plain text files to asciidoc
- Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
- Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
- Split over-long synopsis in git-fetch-pack.txt into several lines
Misapplication of a patch fixed; the ones near the tip needs to
update the links to point at the html files, though.
Needs follow-up on Junio's comment above.
* lt/diff-stat-show-0-lines (2012-10-17) 1 commit
- Fix "git diff --stat" for interesting - but empty - file changes
We failed to mention a file without any content change but whose
permission bit was modified, or (worse yet) a new file without any
content in the "git diff --stat" output.
Needs some test updates.
* jc/prettier-pretty-note (2012-10-26) 11 commits
(merged to 'next' on 2012-11-04 at 40e3e48)
+ Doc User-Manual: Patch cover letter, three dashes, and --notes
+ Doc format-patch: clarify --notes use case
+ Doc notes: Include the format-patch --notes option
+ Doc SubmittingPatches: Mention --notes option after "cover letter"
+ Documentation: decribe format-patch --notes
+ format-patch --notes: show notes after three-dashes
+ format-patch: append --signature after notes
+ pretty_print_commit(): do not append notes message
+ pretty: prepare notes message at a centralized place
+ format_note(): simplify API
+ pretty: remove reencode_commit_message()
Now that Philip has submitted some documentation updates, this is
looking more ready.
Will merge to master in the fifth batch.
* sz/maint-curl-multi-timeout (2012-10-19) 1 commit
(merged to 'next' on 2012-11-04 at f696dd8)
+ Fix potential hang in https handshake
Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call.
Detect this and reduce the wait timeout in such a case.
Will merge to master in the fourth batch.
* jc/same-encoding (2012-11-04) 1 commit
(merged to 'next' on 2012-11-04 at 54991f2)
+ reencode_string(): introduce and use same_encoding()
Various codepaths checked if two encoding names are the same using
ad-hoc code and some of them ended up asking iconv() to convert
between "utf8" and "UTF-8". The former is not a valid way to spell
the encoding name, but often people use it by mistake, and we
equated them in some but not all codepaths. Introduce a new helper
function to make these codepaths consistent.
will merge to master in the fourth batch.
* nd/tree-walk-enum-cleanup (2012-10-19) 1 commit
(merged to 'next' on 2012-11-04 at 8ccdf98)
+ tree-walk: use enum interesting instead of integer
Will merge to master in the fourth batch.
* cr/cvsimport-local-zone (2012-11-04) 2 commits
(merged to 'next' on 2012-11-04 at 292f0b4)
+ cvsimport: work around perl tzset issue
+ git-cvsimport: allow author-specific timezones
Allows "cvsimport" to read per-author timezone from the author info
file.
Will merge to master in the fifth batch.
* fc/completion-send-email-with-format-patch (2012-10-16) 1 commit
(merged to 'next' on 2012-11-04 at 0a6366e)
+ completion: add format-patch options to send-email
Will merge to master in the fourth batch.
* fc/zsh-completion (2012-10-29) 3 commits
- completion: add new zsh completion
- completion: add new __gitcompadd helper
- completion: get rid of empty COMPREPLY assignments
Needs comments from completion folks.
* jc/apply-trailing-blank-removal (2012-10-12) 1 commit
- apply.c:update_pre_post_images(): the preimage can be truncated
Fix to update_pre_post_images() that did not take into account the
possibility that whitespace fix could shrink the preimage and
change the number of lines in it.
Extra set of eyeballs appreciated.
* jn/warn-on-inaccessible-loosen (2012-10-14) 4 commits
- config: exit on error accessing any config file
- doc: advertise GIT_CONFIG_NOSYSTEM
- config: treat user and xdg config permission problems as errors
- config, gitignore: failure to access with ENOTDIR is ok
An RFC to deal with a situation where .config/git is a file and we
notice .config/git/config is not readable due to ENOTDIR, not
ENOENT; I think a bit more refactored approach to consistently
address permission errors across config, exclude and attrs is
desirable. Don't we also need a check for an opposite situation
where we open .config/git/config or .gitattributes for reading but
they turn out to be directories?
* rs/lock-correct-ref-during-delete (2012-10-16) 1 commit
(merged to 'next' on 2012-10-25 at 9341eea)
+ refs: lock symref that is to be deleted, not its target
When "update-ref -d --no-deref SYM" tried to delete a symbolic ref
SYM, it incorrectly locked the underlying reference pointed by SYM,
not the symbolic ref itself.
Will merge to 'master' in the fourth batch.
* as/check-ignore (2012-10-29) 13 commits
- Documentation/check-ignore: we show the deciding match, not the first
- Add git-check-ignore sub-command
- dir.c: provide free_directory() for reclaiming dir_struct memory
- pathspec.c: move reusable code from builtin/add.c
- dir.c: refactor treat_gitlinks()
- dir.c: keep track of where patterns came from
- dir.c: refactor is_path_excluded()
- dir.c: refactor is_excluded()
- dir.c: refactor is_excluded_from_list()
- dir.c: rename excluded() to is_excluded()
- dir.c: rename excluded_from_list() to is_excluded_from_list()
- dir.c: rename path_excluded() to is_path_excluded()
- dir.c: rename cryptic 'which' variable to more consistent name
(this branch uses nd/attr-match-optim-more; is tangled with nd/wildmatch.)
Duy helped to reroll this.
Expecting another re-roll.
* js/format-2047 (2012-10-18) 7 commits
(merged to 'next' on 2012-10-25 at 76d91fe)
+ format-patch tests: check quoting/encoding in To: and Cc: headers
+ format-patch: fix rfc2047 address encoding with respect to rfc822 specials
+ format-patch: make rfc2047 encoding more strict
+ format-patch: introduce helper function last_line_length()
+ format-patch: do not wrap rfc2047 encoded headers too late
+ format-patch: do not wrap non-rfc2047 headers too early
+ utf8: fix off-by-one wrapping of text
Fixes many rfc2047 quoting issues in the output from format-patch.
Will merge to 'master' in the fourth batch.
* km/send-email-compose-encoding (2012-10-25) 5 commits
(merged to 'next' on 2012-10-29 at d7d2bb4)
+ git-send-email: add rfc2047 quoting for "=?"
+ git-send-email: introduce quote_subject()
+ git-send-email: skip RFC2047 quoting for ASCII subjects
+ git-send-email: use compose-encoding for Subject
(merged to 'next' on 2012-10-25 at 5447367)
+ git-send-email: introduce compose-encoding
"git send-email --compose" can let the user create a non-ascii
cover letter message, but there was not a way to mark it with
appropriate content type before sending it out.
Further updates fix subject quoting.
Will merge to 'master' in the fourth batch.
* so/prompt-command (2012-10-17) 4 commits
(merged to 'next' on 2012-10-25 at 79565a1)
+ coloured git-prompt: paint detached HEAD marker in red
+ Fix up colored git-prompt
+ show color hints based on state of the git tree
+ Allow __git_ps1 to be used in PROMPT_COMMAND
Updates __git_ps1 so that it can be used as $PROMPT_COMMAND,
instead of being used for command substitution in $PS1, to embed
color escape sequences in its output.
Will 'cook' in next.
* aw/rebase-am-failure-detection (2012-10-11) 1 commit
- rebase: Handle cases where format-patch fails
I am unhappy a bit about the possible performance implications of
having to store the output in a temporary file only for a rare case
of format-patch aborting.
* nd/wildmatch (2012-10-15) 13 commits
(merged to 'next' on 2012-10-25 at 510e8df)
+ Support "**" wildcard in .gitignore and .gitattributes
+ wildmatch: make /**/ match zero or more directories
+ wildmatch: adjust "**" behavior
+ wildmatch: fix case-insensitive matching
+ wildmatch: remove static variable force_lower_case
+ wildmatch: make wildmatch's return value compatible with fnmatch
+ t3070: disable unreliable fnmatch tests
+ Integrate wildmatch to git
+ wildmatch: follow Git's coding convention
+ wildmatch: remove unnecessary functions
+ Import wildmatch from rsync
+ ctype: support iscntrl, ispunct, isxdigit and isprint
+ ctype: make sane_ctype[] const array
(this branch uses nd/attr-match-optim-more; is tangled with as/check-ignore.)
Allows pathname patterns in .gitignore and .gitattributes files
with double-asterisks "foo/**/bar" to match any number of directory
hierarchies.
I suspect that this needs to be plugged to pathspec matching code;
otherwise "git log -- 'Docum*/**/*.txt'" would not show the log for
commits that touch Documentation/git.txt, which would be confusing
to the users.
Will cook in 'next'.
* jk/lua-hackery (2012-10-07) 6 commits
- pretty: fix up one-off format_commit_message calls
- Minimum compilation fixup
- Makefile: make "lua" a bit more configurable
- add a "lua" pretty format
- add basic lua infrastructure
- pretty: make some commit-parsing helpers more public
Interesting exercise. When we do this for real, we probably would want
to wrap a commit to make it more like an "object" with methods like
"parents", etc.
* nd/attr-match-optim-more (2012-10-15) 7 commits
(merged to 'next' on 2012-10-25 at 09f70ce)
+ attr: more matching optimizations from .gitignore
+ gitignore: make pattern parsing code a separate function
+ exclude: split pathname matching code into a separate function
+ exclude: fix a bug in prefix compare optimization
+ exclude: split basename matching code into a separate function
+ exclude: stricten a length check in EXC_FLAG_ENDSWITH case
+ Merge commit 'f9f6e2c' into nd/attr-match-optim-more
(this branch is used by as/check-ignore and nd/wildmatch.)
Start laying the foundation to build the "wildmatch" after we can
agree on its desired semantics.
Will merge to 'master' in the fourth batch.
* nd/pretty-placeholder-with-color-option (2012-09-30) 9 commits
. pretty: support %>> that steal trailing spaces
. pretty: support truncating in %>, %< and %><
. pretty: support padding placeholders, %< %> and %><
. pretty: two phase conversion for non utf-8 commits
. utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
. utf8.c: move display_mode_esc_sequence_len() for use by other functions
. pretty: support %C(auto[,N]) to turn on coloring on next placeholder(s)
. pretty: split parsing %C into a separate function
. pretty: share code between format_decoration and show_decorations
This causes warnings with -Wuninitialized, so I've ejected it from pu
for the time being.
* jc/maint-fetch-tighten-refname-check (2012-10-19) 1 commit
(merged to 'next' on 2012-11-04 at eda85ef)
+ get_fetch_map(): tighten checks on dest refs
This was split out from discarded jc/maint-push-refs-all topic.
Will merge to master in the fifth batch.
* jh/symbolic-ref-d (2012-10-21) 1 commit
(merged to 'next' on 2012-11-04 at b0762f5)
+ git symbolic-ref --delete $symref
Add "symbolic-ref -d SYM" to delete a symbolic ref SYM.
It is already possible to remove a symbolic ref with "update-ref -d
--no-deref", but it may be a good addition for completeness.
Will merge to master in the fifth batch.
* jh/update-ref-d-through-symref (2012-10-21) 2 commits
- Fix failure to delete a packed ref through a symref
- t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
"update-ref -d --deref SYM" to delete a ref through a symbolic ref
that points to it did not remove it correctly.
* jk/config-ignore-duplicates (2012-10-29) 9 commits
(merged to 'next' on 2012-10-29 at 67fa0a2)
+ builtin/config.c: Fix a sparse warning
(merged to 'next' on 2012-10-25 at 233df08)
+ git-config: use git_config_with_options
+ git-config: do not complain about duplicate entries
+ git-config: collect values instead of immediately printing
+ git-config: fix regexp memory leaks on error conditions
+ git-config: remove memory leak of key regexp
+ t1300: test "git config --get-all" more thoroughly
+ t1300: remove redundant test
+ t1300: style updates
Drop duplicate detection from git-config; this lets it
better match the internal config callbacks, which clears up
some corner cases with includes.
Will cook in 'next'.
* ph/submodule-sync-recursive (2012-10-29) 2 commits
(merged to 'next' on 2012-11-04 at a000f78)
+ Add tests for submodule sync --recursive
+ Teach --recursive to submodule sync
Adds "--recursive" option to submodule sync.
Will merge to master in the fifth batch.
* fc/completion-test-simplification (2012-10-29) 2 commits
- completion: simplify __gitcomp test helper
- completion: refactor __gitcomp related tests
Clean up completion tests.
There were some comments on the list.
Expecting a re-roll.
* fc/remote-testgit-feature-done (2012-10-29) 1 commit
- remote-testgit: properly check for errors
Needs review.
* jk/maint-diff-grep-textconv (2012-10-28) 1 commit
(merged to 'next' on 2012-11-04 at 790337b)
+ diff_grep: use textconv buffers for add/deleted files
(this branch is used by jk/pickaxe-textconv.)
Fixes inconsistent use of textconv with "git log -G".
Will merge to 'master' in the fifth batch.
* jk/pickaxe-textconv (2012-10-28) 2 commits
- pickaxe: use textconv for -S counting
- pickaxe: hoist empty needle check
(this branch uses jk/maint-diff-grep-textconv.)
Use textconv filters when searching with "log -S".
Waiting for a sanity check and review from Junio.
* mh/maint-parse-dirstat-fix (2012-10-29) 1 commit
(merged to 'next' on 2012-11-04 at 852d609)
+ parse_dirstat_params(): use string_list to split comma-separated string
Cleans up some code and avoids a potential bug.
Will merge master in the fourth batch.
* nd/builtin-to-libgit (2012-10-29) 7 commits
(merged to 'next' on 2012-11-04 at 06cbf9b)
+ fetch-pack: move core code to libgit.a
+ fetch-pack: remove global (static) configuration variable "args"
+ send-pack: move core code to libgit.a
+ Move setup_diff_pager to libgit.a
+ Move print_commit_list to libgit.a
+ Move estimate_bisect_steps to libgit.a
+ Move try_merge_command and checkout_fast_forward to libgit.a
Code cleanups so that libgit.a does not depend on anything in the
builtin/ directory.
Some of the code movement is pretty big, but there doesn't seem to be
any conflicts with topics in flight.
Will merge to master in the fourth batch.
* ph/maint-submodule-status-fix (2012-10-29) 2 commits
(merged to 'next' on 2012-11-04 at d700e02)
+ submodule status: remove unused orig_* variables
+ t7407: Fix recursive submodule test
Cleans up some leftover bits from an earlier submodule change.
Will merge to master in the fourth batch.
^ permalink raw reply [relevance 6%]
* What's cooking in git.git (Oct 2012, #09; Mon, 29)
@ 2012-10-29 10:21 6% Jeff King
0 siblings, 0 replies; 162+ results
From: Jeff King @ 2012-10-29 10:21 UTC (permalink / raw)
To: git
What's cooking in git.git (Oct 2012, #09; Mon, 29)
--------------------------------------------------
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.
The second batch of topics has graduated to master. Most of the new
topics have been minor bugfixes or documentation updates, so I've merged
a lot of those to master.
You can find the changes described here in the integration branches of
my repository at:
git://github.com/peff/git.git
Until Junio returns, kernel.org and the other "usual" places will not be
updated.
--------------------------------------------------
[New Topics]
* fc/completion-test-simplification (2012-10-29) 2 commits
- completion: simplify __gitcomp test helper
- completion: refactor __gitcomp related tests
Clean up completion tests.
Will merge to 'next'.
* fc/remote-testgit-feature-done (2012-10-29) 1 commit
- remote-testgit: properly check for errors
* jk/maint-diff-grep-textconv (2012-10-28) 1 commit
- diff_grep: use textconv buffers for add/deleted files
(this branch is used by jk/pickaxe-textconv.)
Fixes inconsistent use of textconv with "git log -G".
Will merge to 'next'.
* jk/pickaxe-textconv (2012-10-28) 2 commits
- pickaxe: use textconv for -S counting
- pickaxe: hoist empty needle check
(this branch uses jk/maint-diff-grep-textconv.)
Use textconv filters when searching with "log -S".
Waiting for a sanity check and review from Junio.
* km/maint-doc-git-reset (2012-10-29) 1 commit
(merged to 'next' on 2012-10-29 at cdb4e8f)
+ doc: git-reset: make "<mode>" optional
Will merge to 'master' in the third batch.
* mh/maint-parse-dirstat-fix (2012-10-29) 1 commit
- parse_dirstat_params(): use string_list to split comma-separated string
Cleans up some code and avoids a potential bug.
Will merge to 'next'.
* nd/builtin-to-libgit (2012-10-29) 7 commits
- fetch-pack: move core code to libgit.a
- fetch-pack: remove global (static) configuration variable "args"
- send-pack: move core code to libgit.a
- Move setup_diff_pager to libgit.a
- Move print_commit_list to libgit.a
- Move estimate_bisect_steps to libgit.a
- Move try_merge_command and checkout_fast_forward to libgit.a
Code cleanups so that libgit.a does not depend on anything in the
builtin/ directory.
Some of the code movement is pretty big, but there doesn't seem to be
any conflicts with topics in flight.
Will merge to 'next'.
* ph/maint-submodule-status-fix (2012-10-29) 2 commits
- submodule status: remove unused orig_* variables
- t7407: Fix recursive submodule test
Cleans up some leftover bits from an earlier submodule change.
Will merge to 'next'.
* pp/maint-doc-pager-config (2012-10-29) 1 commit
(merged to 'next' on 2012-10-29 at 434fbd0)
+ Documentation: improve the example of overriding LESS via core.pager
Will merge to 'master' in the third batch.
* rf/maint-mailmap-off-by-one (2012-10-28) 1 commit
(merged to 'next' on 2012-10-29 at 8c2214b)
+ mailmap: avoid out-of-bounds memory access
Will merge to 'master' in the third batch.
* sz/maint-submodule-reference-arg (2012-10-26) 1 commit
(merged to 'next' on 2012-10-29 at 1aab03c)
+ submodule add: fix handling of --reference=<repo> option
Will merge to 'master' in the third batch.
* tb/maint-t9200-case-insensitive (2012-10-28) 1 commit
(merged to 'next' on 2012-10-29 at 62af90c)
+ Fix t9200 on case insensitive file systems
Will merge to 'master' in the third batch.
* tj/maint-doc-commit-sign (2012-10-29) 1 commit
(merged to 'next' on 2012-10-29 at 44c61a0)
+ Add -S, --gpg-sign option to manpage of "git commit"
Will merge to 'master' in the third batch.
--------------------------------------------------
[Graduated to "master"]
* jc/grep-pcre-loose-ends (2012-10-09) 7 commits
(merged to 'next' on 2012-10-25 at 2ea9b27)
+ log: honor grep.* configuration
+ log --grep: accept --basic-regexp and --perl-regexp
+ log --grep: use the same helper to set -E/-F options as "git grep"
+ revisions: initialize revs->grep_filter using grep_init()
+ grep: move pattern-type bits support to top-level grep.[ch]
+ grep: move the configuration parsing logic to grep.[ch]
+ builtin/grep.c: make configuration callback more reusable
"git log -F -E --grep='<ere>'" failed to use the given <ere>
pattern as extended regular expression, and instead looked for the
string literally. The early part of this series is a fix for it.
Will merge to 'master' in the second batch after 1.8.0 ships.
* jk/maint-http-init-not-in-result-handler (2012-10-12) 2 commits
(merged to 'next' on 2012-10-25 at 59d3687)
+ http: do not set up curl auth after a 401
+ remote-curl: do not call run_slot repeatedly
Further clean-up to the http codepath that picks up results after
cURL library is done with one request slot.
Will merge to 'master' in the second batch after 1.8.0 ships.
* jk/sh-setup-in-filter-branch (2012-10-18) 2 commits
(merged to 'next' on 2012-10-25 at 3879f0e)
+ filter-branch: use git-sh-setup's ident parsing functions
+ git-sh-setup: refactor ident-parsing functions
Will merge to 'master' in the second batch after 1.8.0 ships.
* jl/submodule-add-by-name (2012-09-30) 2 commits
(merged to 'next' on 2012-10-25 at a322082)
+ submodule add: Fail when .git/modules/<name> already exists unless forced
+ Teach "git submodule add" the --name option
If you remove a submodule, in order to keep the repository so that
"git checkout" to an older commit in the superproject history can
resurrect the submodule, the real repository will stay in $GIT_DIR
of the superproject. A later "git submodule add $path" to add a
different submodule at the same path will fail. Diagnose this case
a bit better, and if the user really wants to add an unrelated
submodule at the same path, give the "--name" option to give it a
place in $GIT_DIR of the superproject that does not conflict with
the original submodule.
Will merge to 'master' in the second batch after 1.8.0 ships.
* jl/submodule-rm (2012-09-29) 1 commit
(merged to 'next' on 2012-10-25 at 0fb5876)
+ submodule: teach rm to remove submodules unless they contain a git directory
"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.
Will merge to 'master' in the second batch after 1.8.0 ships.
* nd/grep-true-path (2012-10-12) 1 commit
(merged to 'next' on 2012-10-25 at 1c7d320)
+ grep: stop looking at random places for .gitattributes
"git grep -e pattern <tree>" asked the attribute system to read
"<tree>:.gitattributes" file in the working tree, which was
nonsense.
Will merge to 'master' in the second batch after 1.8.0 ships.
* nd/status-long (2012-10-18) 1 commit
(merged to 'next' on 2012-10-25 at ff1b3a0)
+ status: add --long output format option
Allow an earlier "--short" option on the command line to be
countermanded with the "--long" option for "git status" and "git
commit".
Will merge to 'master' in the second batch after 1.8.0 ships.
* rs/branch-del-symref (2012-10-18) 5 commits
(merged to 'next' on 2012-10-25 at c2cd358)
+ branch: show targets of deleted symrefs, not sha1s
+ branch: skip commit checks when deleting symref branches
+ branch: delete symref branch, not its target
+ branch: factor out delete_branch_config()
+ branch: factor out check_branch_commit()
(this branch is used by jh/update-ref-d-through-symref.)
A symbolic ref refs/heads/SYM was not correctly removed with
"git branch -d SYM"; the command removed the ref pointed by
SYM instead.
Will merge to 'master' in the second batch after 1.8.0 ships.
--------------------------------------------------
[Stalled]
* rc/maint-complete-git-p4 (2012-09-24) 1 commit
(merged to 'next' on 2012-10-29 at af52cef)
+ Teach git-completion about git p4
Comment from Pete will need to be addressed in a follow-up patch.
* as/test-tweaks (2012-09-20) 7 commits
- tests: paint unexpectedly fixed known breakages in bold red
- tests: test the test framework more thoroughly
- [SQUASH] t/t0000-basic.sh: quoting of TEST_DIRECTORY is screwed up
- tests: refactor mechanics of testing in a sub test-lib
- tests: paint skipped tests in bold blue
- tests: test number comes first in 'not ok $count - $message'
- tests: paint known breakages in bold yellow
Various minor tweaks to the test framework to paint its output
lines in colors that match what they mean better.
Has the "is this really blue?" issue Peff raised resolved???
* jc/maint-name-rev (2012-09-17) 7 commits
- describe --contains: use "name-rev --algorithm=weight"
- name-rev --algorithm=weight: tests and documentation
- name-rev --algorithm=weight: cache the computed weight in notes
- name-rev --algorithm=weight: trivial optimization
- name-rev: --algorithm option
- name_rev: clarify the logic to assign a new tip-name to a commit
- name-rev: lose unnecessary typedef
"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev. This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.
I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).
Stalled mostly due to lack of responses.
* jc/xprm-generation (2012-09-14) 1 commit
- test-generation: compute generation numbers and clock skews
A toy to analyze how bad the clock skews are in histories of real
world projects.
Stalled mostly due to lack of responses.
* jc/blame-no-follow (2012-09-21) 2 commits
- blame: pay attention to --no-follow
- diff: accept --no-follow option
Teaches "--no-follow" option to "git blame" to disable its
whole-file rename detection.
Stalled mostly due to lack of responses.
* jc/doc-default-format (2012-10-07) 2 commits
- [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
- Allow generating a non-default set of documentation
Need to address the installation half if this is to be any useful.
* mk/maint-graph-infinity-loop (2012-09-25) 1 commit
- graph.c: infinite loop in git whatchanged --graph -m
The --graph code fell into infinite loop when asked to do what the
code did not expect ;-)
Anybody who worked on "--graph" wants to comment?
Stalled mostly due to lack of responses.
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term.
Waiting for comments.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
--------------------------------------------------
[Cooking]
* mh/ceiling (2012-10-29) 8 commits
- string_list_longest_prefix(): remove function
- setup_git_directory_gently_1(): resolve symlinks in ceiling paths
- longest_ancestor_length(): require prefix list entries to be normalized
- longest_ancestor_length(): take a string_list argument for prefixes
- longest_ancestor_length(): use string_list_split()
- Introduce new function real_path_if_valid()
- real_path_internal(): add comment explaining use of cwd
- Introduce new static function real_path_internal()
Elements of GIT_CEILING_DIRECTORIES list may not match the real
pathname we obtain from getcwd(), leading the GIT_DIR discovery
logic to escape the ceilings the user thought to have specified.
* mo/cvs-server-cleanup (2012-10-26) 11 commits
(merged to 'next' on 2012-10-29 at 4e70622)
+ Use character class for sed expression instead of \s
(merged to 'next' on 2012-10-25 at c70881d)
+ cvsserver status: provide real sticky info
+ cvsserver: cvs add: do not expand directory arguments
+ cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
+ cvsserver: split up long lines in req_{status,diff,log}
+ cvsserver: clean up client request handler map comments
+ cvsserver: remove unused functions _headrev and gethistory
+ cvsserver update: comment about how we shouldn't remove a user-modified file
+ cvsserver: add comments about database schema/usage
+ cvsserver: removed unused sha1Or-k mode from kopts_from_path
+ cvsserver t9400: add basic 'cvs log' test
(this branch is tangled with mo/cvs-server-updates.)
Cleanups to prepare for mo/cvs-server-updates.
Will merge to 'master' in the fourth batch.
* mo/cvs-server-updates (2012-10-16) 20 commits
- cvsserver Documentation: new cvs ... -r support
- cvsserver: add t9402 to test branch and tag refs
- cvsserver: support -r and sticky tags for most operations
- cvsserver: Add version awareness to argsfromdir
- cvsserver: generalize getmeta() to recognize commit refs
- cvsserver: implement req_Sticky and related utilities
- cvsserver: add misc commit lookup, file meta data, and file listing functions
- cvsserver: define a tag name character escape mechanism
- cvsserver: cleanup extra slashes in filename arguments
- cvsserver: factor out git-log parsing logic
(merged to 'next' on 2012-10-25 at c70881d)
+ cvsserver status: provide real sticky info
+ cvsserver: cvs add: do not expand directory arguments
+ cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
+ cvsserver: split up long lines in req_{status,diff,log}
+ cvsserver: clean up client request handler map comments
+ cvsserver: remove unused functions _headrev and gethistory
+ cvsserver update: comment about how we shouldn't remove a user-modified file
+ cvsserver: add comments about database schema/usage
+ cvsserver: removed unused sha1Or-k mode from kopts_from_path
+ cvsserver t9400: add basic 'cvs log' test
(this branch is tangled with mo/cvs-server-cleanup.)
Needs review by folks interested in cvsserver.
* ta/doc-cleanup (2012-10-25) 6 commits
- Documentation: build html for all files in technical and howto
- Documentation/howto: convert plain text files to asciidoc
- Documentation/technical: convert plain text files to asciidoc
- Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
- Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
- Split over-long synopsis in git-fetch-pack.txt into several lines
Misapplication of a patch fixed; the ones near the tip needs to
update the links to point at the html files, though.
Needs follow-up on Junio's comment above.
* lt/diff-stat-show-0-lines (2012-10-17) 1 commit
- Fix "git diff --stat" for interesting - but empty - file changes
We failed to mention a file without any content change but whose
permission bit was modified, or (worse yet) a new file without any
content in the "git diff --stat" output.
Needs some test updates.
* jc/prettier-pretty-note (2012-10-26) 11 commits
- Doc User-Manual: Patch cover letter, three dashes, and --notes
- Doc format-patch: clarify --notes use case
- Doc notes: Include the format-patch --notes option
- Doc SubmittingPatches: Mention --notes option after "cover letter"
- Documentation: decribe format-patch --notes
- format-patch --notes: show notes after three-dashes
- format-patch: append --signature after notes
- pretty_print_commit(): do not append notes message
- pretty: prepare notes message at a centralized place
- format_note(): simplify API
- pretty: remove reencode_commit_message()
Now that Philip has submitted some documentation updates, this is
looking more ready.
Will merge to 'next'.
* sz/maint-curl-multi-timeout (2012-10-19) 1 commit
- Fix potential hang in https handshake
Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call.
Detect this and reduce the wait timeout in such a case.
Will merge to 'next'.
* jc/same-encoding (2012-10-18) 1 commit
- reencode_string(): introduce and use same_encoding()
Various codepaths checked if two encoding names are the same using
ad-hoc code and some of them ended up asking iconv() to convert
between "utf8" and "UTF-8". The former is not a valid way to spell
the encoding name, but often people use it by mistake, and we
equated them in some but not all codepaths. Introduce a new helper
function to make these codepaths consistent.
Will merge to 'next' after fixing up commit message.
* nd/tree-walk-enum-cleanup (2012-10-19) 1 commit
- tree-walk: use enum interesting instead of integer
Will merge to 'next'.
* cr/cvsimport-local-zone (2012-10-16) 1 commit
- git-cvsimport: allow author-specific timezones
Allows "cvsimport" to read per-author timezone from the author info
file.
Will merge to 'next'.
* fc/completion-send-email-with-format-patch (2012-10-16) 1 commit
- completion: add format-patch options to send-email
Will merge to 'next'.
* fc/zsh-completion (2012-10-29) 3 commits
- completion: add new zsh completion
- completion: add new __gitcompadd helper
- completion: get rid of empty COMPREPLY assignments
Needs comments from completion folks.
* jc/apply-trailing-blank-removal (2012-10-12) 1 commit
- apply.c:update_pre_post_images(): the preimage can be truncated
Fix to update_pre_post_images() that did not take into account the
possibility that whitespace fix could shrink the preimage and
change the number of lines in it.
Extra set of eyeballs appreciated.
* jn/warn-on-inaccessible-loosen (2012-10-14) 4 commits
- config: exit on error accessing any config file
- doc: advertise GIT_CONFIG_NOSYSTEM
- config: treat user and xdg config permission problems as errors
- config, gitignore: failure to access with ENOTDIR is ok
An RFC to deal with a situation where .config/git is a file and we
notice .config/git/config is not readable due to ENOTDIR, not
ENOENT; I think a bit more refactored approach to consistently
address permission errors across config, exclude and attrs is
desirable. Don't we also need a check for an opposite situation
where we open .config/git/config or .gitattributes for reading but
they turn out to be directories?
* rs/lock-correct-ref-during-delete (2012-10-16) 1 commit
(merged to 'next' on 2012-10-25 at 9341eea)
+ refs: lock symref that is to be deleted, not its target
When "update-ref -d --no-deref SYM" tried to delete a symbolic ref
SYM, it incorrectly locked the underlying reference pointed by SYM,
not the symbolic ref itself.
Will merge to 'master' in the fourth batch.
* as/check-ignore (2012-10-29) 13 commits
- Documentation/check-ignore: we show the deciding match, not the first
- Add git-check-ignore sub-command
- dir.c: provide free_directory() for reclaiming dir_struct memory
- pathspec.c: move reusable code from builtin/add.c
- dir.c: refactor treat_gitlinks()
- dir.c: keep track of where patterns came from
- dir.c: refactor is_path_excluded()
- dir.c: refactor is_excluded()
- dir.c: refactor is_excluded_from_list()
- dir.c: rename excluded() to is_excluded()
- dir.c: rename excluded_from_list() to is_excluded_from_list()
- dir.c: rename path_excluded() to is_path_excluded()
- dir.c: rename cryptic 'which' variable to more consistent name
(this branch uses nd/attr-match-optim-more; is tangled with nd/wildmatch.)
Duy helped to reroll this.
Expecting another re-roll.
* js/format-2047 (2012-10-18) 7 commits
(merged to 'next' on 2012-10-25 at 76d91fe)
+ format-patch tests: check quoting/encoding in To: and Cc: headers
+ format-patch: fix rfc2047 address encoding with respect to rfc822 specials
+ format-patch: make rfc2047 encoding more strict
+ format-patch: introduce helper function last_line_length()
+ format-patch: do not wrap rfc2047 encoded headers too late
+ format-patch: do not wrap non-rfc2047 headers too early
+ utf8: fix off-by-one wrapping of text
Fixes many rfc2047 quoting issues in the output from format-patch.
Will merge to 'master' in the fourth batch.
* km/send-email-compose-encoding (2012-10-25) 5 commits
(merged to 'next' on 2012-10-29 at d7d2bb4)
+ git-send-email: add rfc2047 quoting for "=?"
+ git-send-email: introduce quote_subject()
+ git-send-email: skip RFC2047 quoting for ASCII subjects
+ git-send-email: use compose-encoding for Subject
(merged to 'next' on 2012-10-25 at 5447367)
+ git-send-email: introduce compose-encoding
"git send-email --compose" can let the user create a non-ascii
cover letter message, but there was not a way to mark it with
appropriate content type before sending it out.
Further updates fix subject quoting.
Will merge to 'master' in the fourth batch.
* so/prompt-command (2012-10-17) 4 commits
(merged to 'next' on 2012-10-25 at 79565a1)
+ coloured git-prompt: paint detached HEAD marker in red
+ Fix up colored git-prompt
+ show color hints based on state of the git tree
+ Allow __git_ps1 to be used in PROMPT_COMMAND
Updates __git_ps1 so that it can be used as $PROMPT_COMMAND,
instead of being used for command substitution in $PS1, to embed
color escape sequences in its output.
Will 'cook' in next.
* aw/rebase-am-failure-detection (2012-10-11) 1 commit
- rebase: Handle cases where format-patch fails
I am unhappy a bit about the possible performance implications of
having to store the output in a temporary file only for a rare case
of format-patch aborting.
* nd/wildmatch (2012-10-15) 13 commits
(merged to 'next' on 2012-10-25 at 510e8df)
+ Support "**" wildcard in .gitignore and .gitattributes
+ wildmatch: make /**/ match zero or more directories
+ wildmatch: adjust "**" behavior
+ wildmatch: fix case-insensitive matching
+ wildmatch: remove static variable force_lower_case
+ wildmatch: make wildmatch's return value compatible with fnmatch
+ t3070: disable unreliable fnmatch tests
+ Integrate wildmatch to git
+ wildmatch: follow Git's coding convention
+ wildmatch: remove unnecessary functions
+ Import wildmatch from rsync
+ ctype: support iscntrl, ispunct, isxdigit and isprint
+ ctype: make sane_ctype[] const array
(this branch uses nd/attr-match-optim-more; is tangled with as/check-ignore.)
Allows pathname patterns in .gitignore and .gitattributes files
with double-asterisks "foo/**/bar" to match any number of directory
hierarchies.
I suspect that this needs to be plugged to pathspec matching code;
otherwise "git log -- 'Docum*/**/*.txt'" would not show the log for
commits that touch Documentation/git.txt, which would be confusing
to the users.
Will cook in 'next'.
* jk/lua-hackery (2012-10-07) 6 commits
- pretty: fix up one-off format_commit_message calls
- Minimum compilation fixup
- Makefile: make "lua" a bit more configurable
- add a "lua" pretty format
- add basic lua infrastructure
- pretty: make some commit-parsing helpers more public
Interesting exercise. When we do this for real, we probably would want
to wrap a commit to make it more like an "object" with methods like
"parents", etc.
* nd/attr-match-optim-more (2012-10-15) 7 commits
(merged to 'next' on 2012-10-25 at 09f70ce)
+ attr: more matching optimizations from .gitignore
+ gitignore: make pattern parsing code a separate function
+ exclude: split pathname matching code into a separate function
+ exclude: fix a bug in prefix compare optimization
+ exclude: split basename matching code into a separate function
+ exclude: stricten a length check in EXC_FLAG_ENDSWITH case
+ Merge commit 'f9f6e2c' into nd/attr-match-optim-more
(this branch is used by as/check-ignore and nd/wildmatch.)
Start laying the foundation to build the "wildmatch" after we can
agree on its desired semantics.
Will merge to 'master' in the fourth batch.
* nd/pretty-placeholder-with-color-option (2012-09-30) 9 commits
. pretty: support %>> that steal trailing spaces
. pretty: support truncating in %>, %< and %><
. pretty: support padding placeholders, %< %> and %><
. pretty: two phase conversion for non utf-8 commits
. utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
. utf8.c: move display_mode_esc_sequence_len() for use by other functions
. pretty: support %C(auto[,N]) to turn on coloring on next placeholder(s)
. pretty: split parsing %C into a separate function
. pretty: share code between format_decoration and show_decorations
This causes warnings with -Wuninitialized, so I've ejected it from pu
for the time being.
* jc/maint-fetch-tighten-refname-check (2012-10-19) 1 commit
- get_fetch_map(): tighten checks on dest refs
This was split out from discarded jc/maint-push-refs-all topic.
Will merge to 'next'.
* jh/symbolic-ref-d (2012-10-21) 1 commit
- git symbolic-ref --delete $symref
Add "symbolic-ref -d SYM" to delete a symbolic ref SYM.
It is already possible to remove a symbolic ref with "update-ref -d
--no-deref", but it may be a good addition for completeness.
Will merge to 'next'.
* jh/update-ref-d-through-symref (2012-10-21) 2 commits
- Fix failure to delete a packed ref through a symref
- t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
"update-ref -d --deref SYM" to delete a ref through a symbolic ref
that points to it did not remove it correctly.
* gb/maint-doc-svn-log-window-size (2012-10-26) 1 commit
(merged to 'next' on 2012-10-29 at ee50b22)
+ Document git-svn fetch --log-window-size parameter
Will merge to 'master' in the third batch.
* jk/config-ignore-duplicates (2012-10-29) 9 commits
(merged to 'next' on 2012-10-29 at 67fa0a2)
+ builtin/config.c: Fix a sparse warning
(merged to 'next' on 2012-10-25 at 233df08)
+ git-config: use git_config_with_options
+ git-config: do not complain about duplicate entries
+ git-config: collect values instead of immediately printing
+ git-config: fix regexp memory leaks on error conditions
+ git-config: remove memory leak of key regexp
+ t1300: test "git config --get-all" more thoroughly
+ t1300: remove redundant test
+ t1300: style updates
Drop duplicate detection from git-config; this lets it
better match the internal config callbacks, which clears up
some corner cases with includes.
Will cook in 'next'.
* mm/maint-doc-remote-tracking (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at 80f1592)
+ Documentation: remote tracking branch -> remote-tracking branch
We long ago hyphenated "remote-tracking branch"; this
catches some new instances added since then.
Will merge to 'master' in the third batch.
* ph/pull-rebase-detached (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at 73d9d14)
+ git-pull: Avoid merge-base on detached head
Avoids spewing error messages when using "pull --rebase" on a
detached HEAD.
Will merge to 'master' in the third batch.
* ph/submodule-sync-recursive (2012-10-29) 2 commits
- Add tests for submodule sync --recursive
- Teach --recursive to submodule sync
Adds "--recursive" option to submodule sync.
Will merge to 'next'.
* po/maint-refs-replace-docs (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at 3874c9d)
+ Doc repository-layout: Show refs/replace
The refs/replace hierarchy was not mentioned in the
repository-layout docs.
Will merge to 'master' in the third batch.
* sl/maint-configure-messages (2012-10-25) 1 commit
(merged to 'next' on 2012-10-25 at e1d7ecd)
+ configure: fix some output message
Minor message fixes for the configure script.
Will merge to 'master' in the third batch.
^ permalink raw reply [relevance 6%]
* What's cooking in git.git (Sep 2012, #01; Tue, 4)
@ 2012-09-04 23:21 4% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-09-04 23:21 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
The third batch of topics have graduated to 'master'.
I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks. http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 0dc0590)
+ cherry-pick: add --allow-empty-message option
(Originally merged to 'next' on 2012-08-09)
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
* jc/daemon-access-hook (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at c8f5b2e)
+ daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at e18ddd8)
+ config: "git config baa" should exit with status 1
(Originally merged to 'next' on 2012-07-30)
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at ced5868)
+ mergetool: style fixes
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at 0d76cf2)
+ sane_execvp(): ignore non-directory on $PATH
(Originally merged to 'next' on 2012-08-09)
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
* jc/send-email-reconfirm (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at dffdef6)
+ send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
* js/compat-mkdir (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at e92bf74)
+ compat: some mkdir() do not like a slash at the end
Some mkdir(2) implementations do not want to see trailing slash in
its parameter.
* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at 25e2e7a)
+ http.c: don't use curl_easy_strerror prior to curl-7.12.0
Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.
* js/use-sc-open-max (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at 8b9ac7c)
+ sha1_file.c: introduce get_max_fd_limit() helper
Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).
* ph/stash-rerere (2012-08-17) 2 commits
(merged to 'next' on 2012-08-20 at ae37111)
+ stash: invoke rerere in case of conflict
+ test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
* sz/submodule-force-update (2012-08-24) 1 commit
(merged to 'next' on 2012-08-24 at f82b466)
+ Make 'git submodule update --force' always check out submodules.
"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes. It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.
--------------------------------------------------
[New Topics]
* as/check-ignore (2012-09-02) 10 commits
. fixup: decl-after-stmt etc.
. Add git-check-ignore
. Provide free_directory() for reclaiming dir_struct memory
. Extract some useful pathspec handling code from builtin/add.c into a library
. For each exclude pattern, store information about where it came from
. dir.c: refactor excluded() and path_excluded()
. dir.c: refactor excluded_from_list()
. dir.c: rename cryptic 'which' variable to more consistent name
. Improve documentation and comments regarding directory traversal API
. Update directory listing API doc to match code
Queued, but I think the design of the end-user experience needs to
be discussed further to polish this topic.
* jc/maint-ident-missing-human-name (2012-08-31) 1 commit
- split_ident_line(): make best effort when parsing author/committer line
"git show --format='%ci'" did not give timestamp correctly for
commits created without human readable name on "committer" line.
Will merge to 'next' after eyeballing one more time.
* jk/argv-array (2012-09-02) 4 commits
- submodule: use argv_array instead of hand-building arrays
- fetch: use argv_array instead of hand-building arrays
- argv-array: fix bogus cast when freeing array
- argv-array: add pop function
Use argv-array API in "git fetch" implementation.
Will merge to 'next' after eyeballing one more time.
* rj/tap-fix (2012-09-02) 6 commits
- test-lib.sh: Suppress the "passed all ..." message if no tests run
- test-lib.sh: Add check for invalid use of 'skip_all' facility
- test-lib.sh: Fix some shell coding style violations
- t4016-*.sh: Skip all tests rather than each test
- t3902-*.sh: Skip all tests rather than each test
- t3300-*.sh: Fix a TAP parse error
Will merge to 'next' after eyeballing one more time.
* rj/test-regex (2012-09-02) 1 commit
- test-regex: Add a test to check for a bug in the regex routines
Git ships with a fall-back regexp implementation for platforms with
buggy regexp library; give people a tool to see if they should be
using it on their platform.
Will merge to 'next' after eyeballing one more time.
* jc/maint-checkout-fileglob-doc (2012-09-04) 1 commit
- Document file-glob for "git checkout -- '*.c'"
Will merge to 'next' after eyeballing one more time.
* jc/xprm-generation (2012-09-04) 1 commit
- test-generation: compute generation numbers and clock skews
* rj/path-cleanup (2012-09-04) 5 commits
- Call mkpathdup() rather than xstrdup(mkpath(...))
- Call git_pathdup() rather than xstrdup(git_path("..."))
- path.c: Use vsnpath() in the implementation of git_path()
- path.c: Don't discard the return value of vsnpath()
- path.c: Remove the 'git_' prefix from a file scope function
* rs/archive-zip-utf8 (2012-09-04) 1 commit
- archive-zip: support UTF-8 paths
--------------------------------------------------
[Stalled]
* jx/test-real-path (2012-08-27) 1 commit
- test: set the realpath of CWD as TRASH_DIRECTORY
Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.
Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
Needs rerolling.
* jc/maint-push-refs-all (2012-08-27) 2 commits
- get_fetch_map(): tighten checks on dest refs
- [BROKEN] fetch/push: allow refs/*:refs/*
Allows pushing and fetching everything including refs/stash.
This is broken (see the log message there).
* er/doc-fast-import-done (2012-08-22) 1 commit
- fast-import: document the --done option
Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
Anybody interested in fixing it up? Otherwise may discard.
* tg/index-v5 (2012-08-17) 13 commits
. p0002-index.sh: add perf test for the index formats
. update-index.c: rewrite index when index-version is given
. Write resolve-undo data for index-v5
. Write index-v5 cache-tree data
. Write index-v5
. Read cache-tree in index-v5
. Read resolve-undo data
. Read index-v5
. Make in-memory format aware of stat_crc
. Add documentation of the index-v5 file format
. t2104: Don't fail for index versions other than [23]
. read-cache.c: Re-read index if index file changed
. Move index v2 specific functions to their own file
A GSoC project. Was waiting for comments from mentors and
stakeholders, but nothing seems to be happening, other than breakage
fixes on Cygwin. May discard.
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
Waiting for the dust to settle.
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* mz/cherry-pick-cmdline-order (2012-08-30) 3 commits
(merged to 'next' on 2012-08-31 at fc8eec4)
+ cherry-pick/revert: respect order of revisions to pick
+ demonstrate broken 'git cherry-pick three one two'
+ teach log --no-walk=unsorted, which avoids sorting
"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.
Will merge to 'master' as part of the fifth batch.
* ph/credential-gnome-keyring (2012-08-24) 1 commit
(merged to 'next' on 2012-08-31 at 6f3b1de)
+ contrib: add credential helper for GnomeKeyring
(this branch is used by ph/credential-refactor.)
The later refactoring of the shared code in the original series may
not be worth the trouble, so it is split into a separate topic that
builds on top of this one, which independently should be useful.
Will merge to 'master' as part of the fifth batch.
* ms/contrib-thunderbird-updates (2012-08-31) 2 commits
- [SQUASH] minimum fixup
- Thunderbird: fix appp.sh format problems
Update helper to send out format-patch output using Thunderbird.
Seems to have design regression for silent users.
* nd/i18n-index-pack (2012-08-31) 1 commit
- i18n: mark more index-pack strings for translation
Will merge to 'next'.
* jk/maint-quiet-is-synonym-to-s-in-log (2012-08-28) 1 commit
(merged to 'next' on 2012-08-31 at 06f6953)
+ log: fix --quiet synonym for -s
We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.
Will merge to 'master' as part of the fifth batch.
* nd/checkout-option-parsing-fix (2012-08-30) 3 commits
- checkout: reorder option handling
- checkout: move more parameters to struct checkout_opts
- checkout: pass "struct checkout_opts *" as const pointer
The option parsing of "git checkout" had error checking, dwim and
defaulting missing options, all mixed in the code, and issuing an
appropriate error message with useful context was getting harder.
Reorganize the code and allow giving a proper diagnosis when the
user says "git checkout -b -t foo bar" (e.g. "-t" is not a good name
for a branch).
Will merge to 'next' after eyeballing one more time.
* jc/maint-name-rev (2012-09-04) 7 commits
- describe --contains: use "name-rev --weight"
- name-rev --weight: tests and documentation
- name-rev --weight: cache the computed weight in notes
- name-rev --weight: trivial optimization
- name-rev: --weight option
- name_rev: clarify the logic to assign a new tip-name to a commit
- name-rev: lose unnecessary typedef
"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev. This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.
I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).
Needs another round to at least find a better name for the option,
and possibly a cheaper but still better than the current "close to
the tip" heuristics.
* cn/branch-set-upstream-to (2012-08-30) 3 commits
(merged to 'next' on 2012-08-31 at d550ecd)
+ branch: deprecate --set-upstream and show help if we detect possible mistaken use
+ branch: add --unset-upstream option
+ branch: introduce --set-upstream-to
"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch. With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.
Will merge to 'master' as part of the fifth batch.
* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at 2f2ae87)
+ specifying ranges: we did not mean to make ".." an empty set
"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line. Update the
command line parser to interpret ".." as a path in such a case.
Will merge to 'master' as part of the fourth batch.
* js/compat-itimer (2012-08-24) 1 commit
- Support for setitimer() on platforms lacking it
Pieces to support compilation on __TANDEM.
* ph/credential-refactor (2012-09-02) 5 commits
- wincred: port to generic credential helper
- Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
- osxkeychain: port to generic credential helper implementation
- gnome-keyring: port to generic helper implementation
- contrib: add generic credential helper
(this branch uses ph/credential-gnome-keyring.)
Attempts to refactor to share code among OSX keychain, Gnome keyring
and Win32 credential helpers.
* jc/apply-binary-p0 (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at 6fa690c)
+ apply: compute patch->def_name correctly under -p0
"git apply -p0" did not parse pathnames on "diff --git" line
correctly. This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode). Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.
Will merge to 'master' as part of the fourth batch.
* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
(merged to 'next' on 2012-08-29 at e0d0f5c)
+ doc: "git checkout -b/-B/--orphan" always takes a branch name
The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading. There may be room in documentation pages of other
commands for similar improvements (hint, hint).
Will merge to 'master' as part of the fourth batch.
* jk/maint-http-half-auth-push (2012-08-27) 8 commits
(merged to 'next' on 2012-08-29 at 0ed32f5)
+ http: prompt for credentials on failed POST
+ http: factor out http error code handling
+ t: test http access to "half-auth" repositories
+ t: test basic smart-http authentication
+ t/lib-httpd: recognize */smart/* repos as smart-http
+ t/lib-httpd: only route auth/dumb to dumb repos
+ t5550: factor out http auth setup
+ t5550: put auth-required repo in auth/dumb
Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.
Will merge to 'master' as part of the fourth batch.
* mh/fetch-filter-refs (2012-08-26) 17 commits
- filter_refs(): simplify logic
- fetch_pack(): free matching heads
- cmd_fetch_pack(): simplify computation of return value
- fetch-pack: report missing refs even if no existing refs were received
- cmd_fetch_pack: return early if finish_connect() returns an error
- filter_refs(): compress unmatched refs in heads array
- filter_refs(): do not leave gaps in return_refs
- filter_refs(): simplify by removing optimization
- Pass nr_heads to filter_refs() by reference
- Pass nr_heads to everything_local() by reference
- Pass nr_heads to do_pack_ref() by reference
- Let fetch_pack() inform caller about number of unique heads
- filter_refs(): do not check the same head_pos twice
- fetch-pack.c: name local variables more consistently
- fetch_pack(): reindent function decl and defn
- Rename static function fetch_pack() to http_fetch_pack()
- t5500: add tests of error output for missing refs
Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.
* nd/branch-v-alignment (2012-08-27) 1 commit
(merged to 'next' on 2012-08-29 at 5c0d226)
+ branch -v: align even when branch names are in UTF-8
Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.
Will merge to 'master' as part of the fourth batch.
* jc/merge-bases (2012-08-31) 9 commits
- reduce_heads(): reimplement on top of remove_redundant()
- merge-base: "--is-ancestor A B"
- get_merge_bases_many(): walk from many tips in parallel
- in_merge_bases(): use paint_down_to_common()
- merge_bases_many(): split out the logic to paint history
- in_merge_bases(): omit unnecessary redundant common ancestor reduction
- http-push: use in_merge_bases() for fast-forward check
- receive-pack: use in_merge_bases() for fast-forward check
- in_merge_bases(): support only one "other" commit
Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.
Will merge to 'next'.
* jl/submodule-rm (2012-08-27) 1 commit
- Teach rm to remove submodules unless they contain a git directory
"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.
* nd/am-i18n-fix (2012-08-22) 1 commit
(merged to 'next' on 2012-08-24 at f8e9a63)
+ am: quote string for translation before passing to eval_gettextln
"git am" wasn't marked up for i18n properly.
Will merge to 'master' as part of the fourth batch.
* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
(merged to 'next' on 2012-08-24 at d16ac69)
+ commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
Will merge to 'master' as part of the fourth batch.
* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
(merged to 'next' on 2012-08-24 at 28a5db4)
+ for-each-ref: Fix sort with multiple keys
+ t6300: test sort with multiple keys
"git for-each-ref" did not currectly support more than one --sort
option.
Will merge to 'master' as part of the fourth batch.
* fa/remote-svn (2012-08-28) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Add git-remote-testsvn to Makefile and .gitignore
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
A GSoC project. Looked promising.
Waiting for comments from mentors and stakeholders.
* fa/vcs-svn (2012-08-28) 4 commits
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
(this branch uses fa/remote-svn.)
A GSoC project. Looked promising.
Waiting for comments from mentors and stakeholders.
* nd/i18n-parseopt-help (2012-08-22) 66 commits
(merged to 'next' on 2012-08-24 at 2a04ce0)
+ Use imperative form in help usage to describe an action
+ Reduce translations by using same terminologies
+ i18n: write-tree: mark parseopt strings for translation
+ i18n: verify-tag: mark parseopt strings for translation
+ i18n: verify-pack: mark parseopt strings for translation
+ i18n: update-server-info: mark parseopt strings for translation
+ i18n: update-ref: mark parseopt strings for translation
+ i18n: update-index: mark parseopt strings for translation
+ i18n: tag: mark parseopt strings for translation
+ i18n: symbolic-ref: mark parseopt strings for translation
+ i18n: show-ref: mark parseopt strings for translation
+ i18n: show-branch: mark parseopt strings for translation
+ i18n: shortlog: mark parseopt strings for translation
+ i18n: rm: mark parseopt strings for translation
+ i18n: revert, cherry-pick: mark parseopt strings for translation
+ i18n: rev-parse: mark parseopt strings for translation
+ i18n: reset: mark parseopt strings for translation
+ i18n: rerere: mark parseopt strings for translation
+ i18n: status: mark parseopt strings for translation
+ i18n: replace: mark parseopt strings for translation
+ i18n: remote: mark parseopt strings for translation
+ i18n: read-tree: mark parseopt strings for translation
+ i18n: push: mark parseopt strings for translation
+ i18n: prune: mark parseopt strings for translation
+ i18n: prune-packed: mark parseopt strings for translation
+ i18n: pack-refs: mark parseopt strings for translation
+ i18n: pack-objects: mark parseopt strings for translation
+ i18n: notes: mark parseopt strings for translation
+ i18n: name-rev: mark parseopt strings for translation
+ i18n: mv: mark parseopt strings for translation
+ i18n: mktree: mark parseopt strings for translation
+ i18n: merge: mark parseopt strings for translation
+ i18n: merge-file: mark parseopt strings for translation
+ i18n: merge-base: mark parseopt strings for translation
+ i18n: ls-tree: mark parseopt strings for translation
+ i18n: ls-files: mark parseopt strings for translation
+ i18n: log: mark parseopt strings for translation
+ i18n: init-db: mark parseopt strings for translation
+ i18n: help: mark parseopt strings for translation
+ i18n: hash-object: mark parseopt strings for translation
+ i18n: grep: mark parseopt strings for translation
+ i18n: gc: mark parseopt strings for translation
+ i18n: fsck: mark parseopt strings for translation
+ i18n: format-patch: mark parseopt strings for translation
+ i18n: for-each-ref: mark parseopt strings for translation
+ i18n: fmt-merge-msg: mark parseopt strings for translation
+ i18n: fetch: mark parseopt strings for translation
+ i18n: fast-export: mark parseopt strings for translation
+ i18n: describe: mark parseopt strings for translation
+ i18n: config: mark parseopt strings for translation
+ i18n: count-objects: mark parseopt strings for translation
+ i18n: commit: mark parseopt strings for translation
+ i18n: column: mark parseopt strings for translation
+ i18n: clone: mark parseopt strings for translation
+ i18n: clean: mark parseopt strings for translation
+ i18n: cherry: mark parseopt strings for translation
+ i18n: checkout: mark parseopt strings for translation
+ i18n: checkout-index: mark parseopt strings for translation
+ i18n: check-attr: mark parseopt strings for translation
+ i18n: cat-file: mark parseopt strings for translation
+ i18n: branch: mark parseopt strings for translation
+ i18n: blame: mark parseopt strings for translation
+ i18n: add: mark parseopt strings for translation
+ i18n: bisect--helper: mark parseopt strings for translation
+ i18n: archive: mark parseopt strings for translation
+ i18n: mark "style" in OPT_COLUMN() for translation
A lot of i18n mark-up for the help text from "git <cmd> -h".
Will merge to 'master' as part of the fourth batch.
* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
(merged to 'next' on 2012-08-24 at cffa9a0)
+ gettext: do not translate empty string
A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.
Will merge to 'master' as part of the fourth batch.
* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
(merged to 'next' on 2012-08-24 at 7470bd6)
+ warn_on_inaccessible(): a helper to warn on inaccessible paths
+ attr: warn on inaccessible attribute files
+ gitignore: report access errors of exclude files
+ config: warn on inaccessible files
When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.
Will merge to 'master' as part of the fourth batch.
* nd/i18n-poison-test-updates (2012-08-27) 7 commits
(merged to 'next' on 2012-08-29 at 9b7ff7f)
+ Fix tests under GETTEXT_POISON on parseopt
+ Fix tests under GETTEXT_POISON on git-remote
+ Fix tests under GETTEXT_POISON on pack-object
+ Fix tests under GETTEXT_POISON on git-apply
+ Fix tests under GETTEXT_POISON on diffstat
+ Fix tests under GETTEXT_POISON on git-stash
+ Fix tests under GETTEXT_POISON on relative dates
Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.
Will merge to 'master' as part of the third batch.
* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
(merged to 'next' on 2012-08-24 at 08abc61)
+ git p4: make branch detection work with --use-client-spec
+ git p4: do wildcard decoding in stripRepoPath
+ git p4: set self.branchPrefixes in initialization
+ git p4 test: add broken --use-client-spec --detect-branches tests
+ git p4 test: move client_view() function to library
Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).
Will merge to 'master' as part of the fourth batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
(Originally merged to 'next' on 2012-07-23)
Will defer until the end of the 2012.
while waiting for older "less" to go extinct.
--------------------------------------------------
[Discarded]
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
. macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead. It turns out that there was no noticeable
improvements.
* nd/checkout-branch-name-check (2012-08-27) 1 commit
. checkout: verify new branch name's validity early
"git checkout -b --opt y" errors out saying that creating a new
branch to check it out and grabbing contents for paths out of a
commit are incompatible operations. While it is technically correct
(the command line wants to create a new branch whose name is "--opt"
and check it out, and there shouldn't be anything else left on the
command line, but there is "y"), "--opt" is not a valid name of the
branch to begin with, so even without "y", the command will not
succeed. Treat this case specially to complain that "--opt" is not
a valid branch name.
^ permalink raw reply [relevance 4%]
* What's cooking in git.git (Aug 2012, #10; Fri, 31)
@ 2012-08-31 21:32 6% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-31 21:32 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
The latter half of the second batch of topics are now in 'master'.
I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks. http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* mz/cherry-pick-cmdline-order (2012-08-30) 3 commits
(merged to 'next' on 2012-08-31 at fc8eec4)
+ cherry-pick/revert: respect order of revisions to pick
+ demonstrate broken 'git cherry-pick three one two'
+ teach log --no-walk=unsorted, which avoids sorting
"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.
Will merge to 'master' as part of the fifth batch.
* ph/credential-gnome-keyring (2012-08-24) 1 commit
(merged to 'next' on 2012-08-31 at 6f3b1de)
+ contrib: add credential helper for GnomeKeyring
(this branch is used by ph/credential-refactor.)
The later refactoring of the shared code in the original series may
not be worth the trouble, so it is split into a separate topic that
builds on top of this one, which independently should be useful.
Will merge to 'master' as part of the fifth batch.
* ms/contrib-thunderbird-updates (2012-08-31) 2 commits
- [SQUASH] minimum fixup
- Thunderbird: fix appp.sh format problems
Update helper to send out format-patch output using Thunderbird.
* nd/i18n-index-pack (2012-08-31) 1 commit
- i18n: mark more index-pack strings for translation
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* jc/maint-push-refs-all (2012-08-27) 2 commits
- get_fetch_map(): tighten checks on dest refs
- [BROKEN] fetch/push: allow refs/*:refs/*
Allows pushing and fetching everything including refs/stash.
This is broken (see the log message there).
* er/doc-fast-import-done (2012-08-22) 1 commit
- fast-import: document the --done option
Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
Anybody interested in fixing it up? Otherwise may discard.
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
Waiting for the dust to settle.
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* jk/maint-quiet-is-synonym-to-s-in-log (2012-08-28) 1 commit
(merged to 'next' on 2012-08-31 at 06f6953)
+ log: fix --quiet synonym for -s
We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.
Will merge to 'master' as part of the fifth batch.
* nd/checkout-option-parsing-fix (2012-08-30) 3 commits
- checkout: reorder option handling
- checkout: move more parameters to struct checkout_opts
- checkout: pass "struct checkout_opts *" as const pointer
The option parsing of "git checkout" had error checking, dwim and
defaulting missing options, all mixed in the code, and issuing an
appropriate error message with useful context was getting harder.
Reorganize the code and allow giving a proper diagnosis when the
user says "git checkout -b -t foo bar" (e.g. "-t" is not a good name
for a branch).
* jc/maint-name-rev (2012-08-29) 6 commits
- describe --contains: use "name-rev --weight"
- name-rev --weight: tests and documentation
- name-rev --weight: cache the computed weight in notes
- name-rev: --weight option
- name_rev: clarify the logic to assign a new tip-name to a commit
- name-rev: lose unnecessary typedef
"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev. This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.
I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).
* cn/branch-set-upstream-to (2012-08-30) 3 commits
(merged to 'next' on 2012-08-31 at d550ecd)
+ branch: deprecate --set-upstream and show help if we detect possible mistaken use
+ branch: add --unset-upstream option
+ branch: introduce --set-upstream-to
"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch. With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.
Will merge to 'master' as part of the fifth batch.
* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at 2f2ae87)
+ specifying ranges: we did not mean to make ".." an empty set
"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line. Update the
command line parser to interpret ".." as a path in such a case.
Will merge to 'master' as part of the fourth batch.
* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at ced5868)
+ mergetool: style fixes
Will merge to 'master' as part of the third batch.
* js/compat-itimer (2012-08-24) 1 commit
- Support for setitimer() on platforms lacking it
Pieces to support compilation on __TANDEM.
* js/compat-mkdir (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at e92bf74)
+ compat: some mkdir() do not like a slash at the end
Some mkdir(2) implementations do not want to see trailing slash in
its parameter.
Will merge to 'master' as part of the third batch.
* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at 25e2e7a)
+ http.c: don't use curl_easy_strerror prior to curl-7.12.0
Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.
Will merge to 'master' as part of the third batch.
* js/use-sc-open-max (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at 8b9ac7c)
+ sha1_file.c: introduce get_max_fd_limit() helper
Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).
Will merge to 'master' as part of the third batch.
* ph/credential-refactor (2012-08-27) 5 commits
- wincred: port to generic credential helper (UNTESTED)
- Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
- osxkeychain: port to generic credential helper implementation
- gnome-keyring: port to generic helper implementation
- contrib: add generic credential helper
(this branch uses ph/credential-gnome-keyring.)
Attempts to refactor to share code among OSX keychain, Gnome keyring
and Win32 credential helpers.
* jc/apply-binary-p0 (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at 6fa690c)
+ apply: compute patch->def_name correctly under -p0
"git apply -p0" did not parse pathnames on "diff --git" line
correctly. This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode). Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.
Will merge to 'master' as part of the fourth batch.
* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
(merged to 'next' on 2012-08-29 at e0d0f5c)
+ doc: "git checkout -b/-B/--orphan" always takes a branch name
The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading. There may be room in documentation pages of other
commands for similar improvements (hint, hint).
Will merge to 'master' as part of the fourth batch.
* jk/maint-http-half-auth-push (2012-08-27) 8 commits
(merged to 'next' on 2012-08-29 at 0ed32f5)
+ http: prompt for credentials on failed POST
+ http: factor out http error code handling
+ t: test http access to "half-auth" repositories
+ t: test basic smart-http authentication
+ t/lib-httpd: recognize */smart/* repos as smart-http
+ t/lib-httpd: only route auth/dumb to dumb repos
+ t5550: factor out http auth setup
+ t5550: put auth-required repo in auth/dumb
Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.
Will merge to 'master' as part of the fourth batch.
* jx/test-real-path (2012-08-27) 1 commit
- test: set the realpath of CWD as TRASH_DIRECTORY
Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.
Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
Needs rerolling.
* mh/fetch-filter-refs (2012-08-26) 17 commits
- filter_refs(): simplify logic
- fetch_pack(): free matching heads
- cmd_fetch_pack(): simplify computation of return value
- fetch-pack: report missing refs even if no existing refs were received
- cmd_fetch_pack: return early if finish_connect() returns an error
- filter_refs(): compress unmatched refs in heads array
- filter_refs(): do not leave gaps in return_refs
- filter_refs(): simplify by removing optimization
- Pass nr_heads to filter_refs() by reference
- Pass nr_heads to everything_local() by reference
- Pass nr_heads to do_pack_ref() by reference
- Let fetch_pack() inform caller about number of unique heads
- filter_refs(): do not check the same head_pos twice
- fetch-pack.c: name local variables more consistently
- fetch_pack(): reindent function decl and defn
- Rename static function fetch_pack() to http_fetch_pack()
- t5500: add tests of error output for missing refs
Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.
* nd/branch-v-alignment (2012-08-27) 1 commit
(merged to 'next' on 2012-08-29 at 5c0d226)
+ branch -v: align even when branch names are in UTF-8
Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.
Will merge to 'master' as part of the fourth batch.
* jc/merge-bases (2012-08-31) 9 commits
- reduce_heads(): reimplement on top of remove_redundant()
- merge-base: "--is-ancestor A B"
- get_merge_bases_many(): walk from many tips in parallel
- in_merge_bases(): use paint_down_to_common()
- merge_bases_many(): split out the logic to paint history
- in_merge_bases(): omit unnecessary redundant common ancestor reduction
- http-push: use in_merge_bases() for fast-forward check
- receive-pack: use in_merge_bases() for fast-forward check
- in_merge_bases(): support only one "other" commit
Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.
Will merge to 'next'.
* jl/submodule-rm (2012-08-27) 1 commit
- Teach rm to remove submodules unless they contain a git directory
"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.
* nd/am-i18n-fix (2012-08-22) 1 commit
(merged to 'next' on 2012-08-24 at f8e9a63)
+ am: quote string for translation before passing to eval_gettextln
"git am" wasn't marked up for i18n properly.
Will merge to 'master' as part of the fourth batch.
* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
(merged to 'next' on 2012-08-24 at d16ac69)
+ commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
Will merge to 'master' as part of the fourth batch.
* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
(merged to 'next' on 2012-08-24 at 28a5db4)
+ for-each-ref: Fix sort with multiple keys
+ t6300: test sort with multiple keys
"git for-each-ref" did not currectly support more than one --sort
option.
Will merge to 'master' as part of the fourth batch.
* fa/remote-svn (2012-08-28) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Add git-remote-testsvn to Makefile and .gitignore
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
A GSoC project.
Waiting for comments from mentors and stakeholders.
* fa/vcs-svn (2012-08-28) 4 commits
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
(this branch uses fa/remote-svn.)
A GSoC project.
Waiting for comments from mentors and stakeholders.
* nd/i18n-parseopt-help (2012-08-22) 66 commits
(merged to 'next' on 2012-08-24 at 2a04ce0)
+ Use imperative form in help usage to describe an action
+ Reduce translations by using same terminologies
+ i18n: write-tree: mark parseopt strings for translation
+ i18n: verify-tag: mark parseopt strings for translation
+ i18n: verify-pack: mark parseopt strings for translation
+ i18n: update-server-info: mark parseopt strings for translation
+ i18n: update-ref: mark parseopt strings for translation
+ i18n: update-index: mark parseopt strings for translation
+ i18n: tag: mark parseopt strings for translation
+ i18n: symbolic-ref: mark parseopt strings for translation
+ i18n: show-ref: mark parseopt strings for translation
+ i18n: show-branch: mark parseopt strings for translation
+ i18n: shortlog: mark parseopt strings for translation
+ i18n: rm: mark parseopt strings for translation
+ i18n: revert, cherry-pick: mark parseopt strings for translation
+ i18n: rev-parse: mark parseopt strings for translation
+ i18n: reset: mark parseopt strings for translation
+ i18n: rerere: mark parseopt strings for translation
+ i18n: status: mark parseopt strings for translation
+ i18n: replace: mark parseopt strings for translation
+ i18n: remote: mark parseopt strings for translation
+ i18n: read-tree: mark parseopt strings for translation
+ i18n: push: mark parseopt strings for translation
+ i18n: prune: mark parseopt strings for translation
+ i18n: prune-packed: mark parseopt strings for translation
+ i18n: pack-refs: mark parseopt strings for translation
+ i18n: pack-objects: mark parseopt strings for translation
+ i18n: notes: mark parseopt strings for translation
+ i18n: name-rev: mark parseopt strings for translation
+ i18n: mv: mark parseopt strings for translation
+ i18n: mktree: mark parseopt strings for translation
+ i18n: merge: mark parseopt strings for translation
+ i18n: merge-file: mark parseopt strings for translation
+ i18n: merge-base: mark parseopt strings for translation
+ i18n: ls-tree: mark parseopt strings for translation
+ i18n: ls-files: mark parseopt strings for translation
+ i18n: log: mark parseopt strings for translation
+ i18n: init-db: mark parseopt strings for translation
+ i18n: help: mark parseopt strings for translation
+ i18n: hash-object: mark parseopt strings for translation
+ i18n: grep: mark parseopt strings for translation
+ i18n: gc: mark parseopt strings for translation
+ i18n: fsck: mark parseopt strings for translation
+ i18n: format-patch: mark parseopt strings for translation
+ i18n: for-each-ref: mark parseopt strings for translation
+ i18n: fmt-merge-msg: mark parseopt strings for translation
+ i18n: fetch: mark parseopt strings for translation
+ i18n: fast-export: mark parseopt strings for translation
+ i18n: describe: mark parseopt strings for translation
+ i18n: config: mark parseopt strings for translation
+ i18n: count-objects: mark parseopt strings for translation
+ i18n: commit: mark parseopt strings for translation
+ i18n: column: mark parseopt strings for translation
+ i18n: clone: mark parseopt strings for translation
+ i18n: clean: mark parseopt strings for translation
+ i18n: cherry: mark parseopt strings for translation
+ i18n: checkout: mark parseopt strings for translation
+ i18n: checkout-index: mark parseopt strings for translation
+ i18n: check-attr: mark parseopt strings for translation
+ i18n: cat-file: mark parseopt strings for translation
+ i18n: branch: mark parseopt strings for translation
+ i18n: blame: mark parseopt strings for translation
+ i18n: add: mark parseopt strings for translation
+ i18n: bisect--helper: mark parseopt strings for translation
+ i18n: archive: mark parseopt strings for translation
+ i18n: mark "style" in OPT_COLUMN() for translation
A lot of i18n mark-up for the help text from "git <cmd> -h".
Will merge to 'master' as part of the fourth batch.
* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
(merged to 'next' on 2012-08-24 at cffa9a0)
+ gettext: do not translate empty string
A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.
Will merge to 'master' as part of the fourth batch.
* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
(merged to 'next' on 2012-08-24 at 7470bd6)
+ warn_on_inaccessible(): a helper to warn on inaccessible paths
+ attr: warn on inaccessible attribute files
+ gitignore: report access errors of exclude files
+ config: warn on inaccessible files
When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.
Will merge to 'master' as part of the fourth batch.
* nd/i18n-poison-test-updates (2012-08-27) 7 commits
(merged to 'next' on 2012-08-29 at 9b7ff7f)
+ Fix tests under GETTEXT_POISON on parseopt
+ Fix tests under GETTEXT_POISON on git-remote
+ Fix tests under GETTEXT_POISON on pack-object
+ Fix tests under GETTEXT_POISON on git-apply
+ Fix tests under GETTEXT_POISON on diffstat
+ Fix tests under GETTEXT_POISON on git-stash
+ Fix tests under GETTEXT_POISON on relative dates
Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.
Will merge to 'master' as part of the third batch.
* jc/daemon-access-hook (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at c8f5b2e)
+ daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
Will merge to 'master' as part of the third batch.
* jc/send-email-reconfirm (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at dffdef6)
+ send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
Will merge to 'master' as part of the third batch.
* ph/stash-rerere (2012-08-17) 2 commits
(merged to 'next' on 2012-08-20 at ae37111)
+ stash: invoke rerere in case of conflict
+ test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
Will merge to 'master' as part of the third batch.
* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
(merged to 'next' on 2012-08-24 at 08abc61)
+ git p4: make branch detection work with --use-client-spec
+ git p4: do wildcard decoding in stripRepoPath
+ git p4: set self.branchPrefixes in initialization
+ git p4 test: add broken --use-client-spec --detect-branches tests
+ git p4 test: move client_view() function to library
Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).
Will merge to 'master' as part of the fourth batch.
* tg/index-v5 (2012-08-17) 13 commits
- p0002-index.sh: add perf test for the index formats
- update-index.c: rewrite index when index-version is given
- Write resolve-undo data for index-v5
- Write index-v5 cache-tree data
- Write index-v5
- Read cache-tree in index-v5
- Read resolve-undo data
- Read index-v5
- Make in-memory format aware of stat_crc
- Add documentation of the index-v5 file format
- t2104: Don't fail for index versions other than [23]
- read-cache.c: Re-read index if index file changed
- Move index v2 specific functions to their own file
A GSoC project.
Waiting for comments from mentors and stakeholders.
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at 0d76cf2)
+ sane_execvp(): ignore non-directory on $PATH
(Originally merged to 'next' on 2012-08-09)
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
Will merge to 'master' as part of the third batch.
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 0dc0590)
+ cherry-pick: add --allow-empty-message option
(Originally merged to 'next' on 2012-08-09)
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
Will merge to 'master' as part of the third batch.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at e18ddd8)
+ config: "git config baa" should exit with status 1
(Originally merged to 'next' on 2012-07-30)
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
Will merge to 'master' as part of the third batch.
* sz/submodule-force-update (2012-08-24) 1 commit
(merged to 'next' on 2012-08-24 at f82b466)
+ Make 'git submodule update --force' always check out submodules.
"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes. It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.
Will merge to 'master' as part of the third batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
(Originally merged to 'next' on 2012-07-23)
Will defer until the end of the 2012.
while waiting for older "less" to go extinct.
--------------------------------------------------
[Discarded]
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
. macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead. It turns out that there was no noticeable
improvements.
* nd/checkout-branch-name-check (2012-08-27) 1 commit
. checkout: verify new branch name's validity early
"git checkout -b --opt y" errors out saying that creating a new
branch to check it out and grabbing contents for paths out of a
commit are incompatible operations. While it is technically correct
(the command line wants to create a new branch whose name is "--opt"
and check it out, and there shouldn't be anything else left on the
command line, but there is "y"), "--opt" is not a valid name of the
branch to begin with, so even without "y", the command will not
succeed. Treat this case specially to complain that "--opt" is not
a valid branch name.
^ permalink raw reply [relevance 6%]
* What's cooking in git.git (Aug 2012, #09; Wed, 29)
@ 2012-08-29 23:09 6% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-29 23:09 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
The latter half of the second batch of topics are now in 'master'.
I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks. http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* bc/prune-info (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 1bc9e66)
+ prune.c: only print informational message in show_only or verbose mode
Teach "git prune" without "-v" to be silent about leftover temporary files.
* ef/win32-cred-helper (2012-08-16) 1 commit
(merged to 'next' on 2012-08-20 at bd5c651)
+ contrib: add win32 credential-helper
(this branch is used by ph/credential-refactor.)
Credential helper for Win32 to allow access to the keychain of
the logged-in user.
* hv/submodule-path-unmatch (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at cbe6483)
+ Let submodule command exit with error status if path does not exist
As the title says.
* jc/capabilities (2012-08-13) 3 commits
(merged to 'next' on 2012-08-20 at 1976e47)
+ fetch-pack: mention server version with verbose output
+ parse_feature_request: make it easier to see feature values
+ fetch-pack: do not ask for unadvertised capabilities
(this branch uses jk/version-string.)
Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available. Fix fetch-pack not to do so.
* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
(merged to 'next' on 2012-08-20 at 8b00562)
+ sh-setup: protect from exported IFS
When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.
* jk/version-string (2012-08-10) 3 commits
(merged to 'next' on 2012-08-20 at 6d207bb)
+ do not send client agent unless server does first
+ send-pack: fix capability-sending logic
+ include agent identifier in capability string
(this branch is used by jc/capabilities.)
(Originally merged to 'next' on 2012-08-10)
Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.
* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
(merged to 'next' on 2012-08-20 at f671bd2)
+ rebase -i: use full onto sha1 in reflog
The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.
* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
(merged to 'next' on 2012-08-20 at a484625)
+ git-config doc: unconfuse an example
+ git-config.txt: fix example
A minor documentation update.
* mz/cherry-code-cleanup (2012-07-29) 3 commits
(merged to 'next' on 2012-08-20 at bfb0457)
+ cherry: remove redundant check for merge commit
+ cherry: don't set ignored rev_info options
+ remove unnecessary parameter from get_patch_ids()
Minor code clean-up on the cherry-pick codepath.
* mz/empty-rebase-test (2012-08-09) 1 commit
(merged to 'next' on 2012-08-20 at 53e2419)
+ add tests for 'git rebase --keep-empty'
* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
(merged to 'next' on 2012-08-20 at a883c2a)
+ precompose-utf8: do not call checks for non-ascii "utf8"
+ cleanup precompose_utf8
A style and code cleanup.
--------------------------------------------------
[New Topics]
* jk/maint-quiet-is-synonym-to-s-in-log (2012-08-28) 1 commit
- log: fix --quiet synonym for -s
We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.
Will merge to 'next'.
* nd/checkout-option-parsing-fix (2012-08-29) 3 commits
- checkout: reorder option handling
- checkout: move more parameters to struct checkout_opts
- checkout: pass "struct checkout_opts *" as const pointer
The option parsing of "git checkout" had error checking, dwim and
defaulting missing options, all mixed in the code, and issuing an
appropriate error message with useful context was getting harder.
Reorganize the code and allow giving a proper diagnosis when the
user says "git checkout -b -t foo bar" (e.g. "-t" is not a good name
for a branch).
* jc/maint-name-rev (2012-08-29) 3 commits
- name-rev: --weight option (WIP)
- name_rev: clarify when a new tip-name is assigned to a commit
- name-rev: lose unnecessary typedef
"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev. This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.
--------------------------------------------------
[Stalled]
* er/doc-fast-import-done (2012-08-22) 1 commit
- fast-import: document the --done option
Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
Anybody interested in fixing it up? Otherwise may discard.
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
Waiting for the dust to settle.
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* cn/branch-set-upstream-to (2012-08-23) 3 commits
- branch: deprecate --set-upstream and show help if we detect possible mistaken use
- branch: add --unset-upstream option
- branch: introduce --set-upstream-to
"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch. With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.
Waiting for a reroll
that tightens its error checking.
* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at 2f2ae87)
+ specifying ranges: we did not mean to make ".." an empty set
"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line. Update the
command line parser to interpret ".." as a path in such a case.
Will merge to 'master' as part of the fourth batch.
* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at ced5868)
+ mergetool: style fixes
Will merge to 'master' as part of the third batch.
* js/compat-itimer (2012-08-24) 1 commit
- Support for setitimer() on platforms lacking it
Pieces to support compilation on __TANDEM.
* js/compat-mkdir (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at e92bf74)
+ compat: some mkdir() do not like a slash at the end
Some mkdir(2) implementations do not want to see trailing slash in
its parameter.
Will merge to 'master' as part of the third batch.
* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
(merged to 'next' on 2012-08-28 at 25e2e7a)
+ http.c: don't use curl_easy_strerror prior to curl-7.12.0
Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.
Will merge to 'master' as part of the third batch.
* js/use-sc-open-max (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at 8b9ac7c)
+ sha1_file.c: introduce get_max_fd_limit() helper
Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).
Will merge to 'master' as part of the third batch.
* ph/credential-refactor (2012-08-27) 6 commits
- wincred: port to generic credential helper (UNTESTED)
- Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
- osxkeychain: port to generic credential helper implementation
- gnome-keyring: port to generic helper implementation
- contrib: add generic credential helper
- contrib: add credential helper for GnomeKeyring
Adds a new credential helper to support Gnome keyring and attempts
to refactor to share code among OSX keychain, Gnome keyring and
Win32 credential helpers.
Waiting for test results with the tip one
to decide whether the series should be rerolled or reduced to only
the first one.
* jc/apply-binary-p0 (2012-08-24) 1 commit
(merged to 'next' on 2012-08-28 at 6fa690c)
+ apply: compute patch->def_name correctly under -p0
"git apply -p0" did not parse pathnames on "diff --git" line
correctly. This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode). Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.
Will merge to 'master' as part of the fourth batch.
* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
(merged to 'next' on 2012-08-29 at e0d0f5c)
+ doc: "git checkout -b/-B/--orphan" always takes a branch name
The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading. There may be room in documentation pages of other
commands for similar improvements (hint, hint).
Will merge to 'master' as part of the fourth batch.
* jk/maint-http-half-auth-push (2012-08-27) 8 commits
(merged to 'next' on 2012-08-29 at 0ed32f5)
+ http: prompt for credentials on failed POST
+ http: factor out http error code handling
+ t: test http access to "half-auth" repositories
+ t: test basic smart-http authentication
+ t/lib-httpd: recognize */smart/* repos as smart-http
+ t/lib-httpd: only route auth/dumb to dumb repos
+ t5550: factor out http auth setup
+ t5550: put auth-required repo in auth/dumb
Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.
* jx/test-real-path (2012-08-27) 1 commit
- test: set the realpath of CWD as TRASH_DIRECTORY
Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.
Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
Needs rerolling.
* mh/fetch-filter-refs (2012-08-26) 17 commits
- filter_refs(): simplify logic
- fetch_pack(): free matching heads
- cmd_fetch_pack(): simplify computation of return value
- fetch-pack: report missing refs even if no existing refs were received
- cmd_fetch_pack: return early if finish_connect() returns an error
- filter_refs(): compress unmatched refs in heads array
- filter_refs(): do not leave gaps in return_refs
- filter_refs(): simplify by removing optimization
- Pass nr_heads to filter_refs() by reference
- Pass nr_heads to everything_local() by reference
- Pass nr_heads to do_pack_ref() by reference
- Let fetch_pack() inform caller about number of unique heads
- filter_refs(): do not check the same head_pos twice
- fetch-pack.c: name local variables more consistently
- fetch_pack(): reindent function decl and defn
- Rename static function fetch_pack() to http_fetch_pack()
- t5500: add tests of error output for missing refs
Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.
* nd/branch-v-alignment (2012-08-27) 1 commit
(merged to 'next' on 2012-08-29 at 5c0d226)
+ branch -v: align even when branch names are in UTF-8
Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.
Will merge to 'master' as part of the fourth batch.
* jc/merge-bases (2012-08-28) 5 commits
- get_merge_bases_many(): walk from many tips in parallel
- in_merge_bases(): omit unnecessary redundant common ancestor reduction
- http-push: use in_merge_bases() for fast-forward check
- receive-pack: use in_merge_bases() for fast-forward check
- in_merge_bases(): support only one "other" commit
(this branch is used by jc/xprm-merge-bases-many.)
Optimises the "merge-base" computation a bit, and also updates its
users that do not need the full merge-base information to call a
cheaper subset. The most important one is the second from the tip
done by Thomas.
Will merge to 'next'.
* jl/submodule-rm (2012-08-27) 1 commit
- Teach rm to remove submodules unless they contain a git directory
"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.
* nd/am-i18n-fix (2012-08-22) 1 commit
(merged to 'next' on 2012-08-24 at f8e9a63)
+ am: quote string for translation before passing to eval_gettextln
"git am" wasn't marked up for i18n properly.
Will merge to 'master' as part of the fourth batch.
* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
(merged to 'next' on 2012-08-24 at d16ac69)
+ commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
Will merge to 'master' as part of the fourth batch.
* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
(merged to 'next' on 2012-08-24 at 28a5db4)
+ for-each-ref: Fix sort with multiple keys
+ t6300: test sort with multiple keys
"git for-each-ref" did not currectly support more than one --sort
option.
Will merge to 'master' as part of the fourth batch.
* fa/remote-svn (2012-08-28) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Add git-remote-testsvn to Makefile and .gitignore
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
Waiting for comments from mentors and stakeholders.
* fa/vcs-svn (2012-08-28) 4 commits
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
(this branch uses fa/remote-svn.)
Waiting for comments from mentors and stakeholders.
* nd/i18n-parseopt-help (2012-08-22) 66 commits
(merged to 'next' on 2012-08-24 at 2a04ce0)
+ Use imperative form in help usage to describe an action
+ Reduce translations by using same terminologies
+ i18n: write-tree: mark parseopt strings for translation
+ i18n: verify-tag: mark parseopt strings for translation
+ i18n: verify-pack: mark parseopt strings for translation
+ i18n: update-server-info: mark parseopt strings for translation
+ i18n: update-ref: mark parseopt strings for translation
+ i18n: update-index: mark parseopt strings for translation
+ i18n: tag: mark parseopt strings for translation
+ i18n: symbolic-ref: mark parseopt strings for translation
+ i18n: show-ref: mark parseopt strings for translation
+ i18n: show-branch: mark parseopt strings for translation
+ i18n: shortlog: mark parseopt strings for translation
+ i18n: rm: mark parseopt strings for translation
+ i18n: revert, cherry-pick: mark parseopt strings for translation
+ i18n: rev-parse: mark parseopt strings for translation
+ i18n: reset: mark parseopt strings for translation
+ i18n: rerere: mark parseopt strings for translation
+ i18n: status: mark parseopt strings for translation
+ i18n: replace: mark parseopt strings for translation
+ i18n: remote: mark parseopt strings for translation
+ i18n: read-tree: mark parseopt strings for translation
+ i18n: push: mark parseopt strings for translation
+ i18n: prune: mark parseopt strings for translation
+ i18n: prune-packed: mark parseopt strings for translation
+ i18n: pack-refs: mark parseopt strings for translation
+ i18n: pack-objects: mark parseopt strings for translation
+ i18n: notes: mark parseopt strings for translation
+ i18n: name-rev: mark parseopt strings for translation
+ i18n: mv: mark parseopt strings for translation
+ i18n: mktree: mark parseopt strings for translation
+ i18n: merge: mark parseopt strings for translation
+ i18n: merge-file: mark parseopt strings for translation
+ i18n: merge-base: mark parseopt strings for translation
+ i18n: ls-tree: mark parseopt strings for translation
+ i18n: ls-files: mark parseopt strings for translation
+ i18n: log: mark parseopt strings for translation
+ i18n: init-db: mark parseopt strings for translation
+ i18n: help: mark parseopt strings for translation
+ i18n: hash-object: mark parseopt strings for translation
+ i18n: grep: mark parseopt strings for translation
+ i18n: gc: mark parseopt strings for translation
+ i18n: fsck: mark parseopt strings for translation
+ i18n: format-patch: mark parseopt strings for translation
+ i18n: for-each-ref: mark parseopt strings for translation
+ i18n: fmt-merge-msg: mark parseopt strings for translation
+ i18n: fetch: mark parseopt strings for translation
+ i18n: fast-export: mark parseopt strings for translation
+ i18n: describe: mark parseopt strings for translation
+ i18n: config: mark parseopt strings for translation
+ i18n: count-objects: mark parseopt strings for translation
+ i18n: commit: mark parseopt strings for translation
+ i18n: column: mark parseopt strings for translation
+ i18n: clone: mark parseopt strings for translation
+ i18n: clean: mark parseopt strings for translation
+ i18n: cherry: mark parseopt strings for translation
+ i18n: checkout: mark parseopt strings for translation
+ i18n: checkout-index: mark parseopt strings for translation
+ i18n: check-attr: mark parseopt strings for translation
+ i18n: cat-file: mark parseopt strings for translation
+ i18n: branch: mark parseopt strings for translation
+ i18n: blame: mark parseopt strings for translation
+ i18n: add: mark parseopt strings for translation
+ i18n: bisect--helper: mark parseopt strings for translation
+ i18n: archive: mark parseopt strings for translation
+ i18n: mark "style" in OPT_COLUMN() for translation
A lot of i18n mark-up for the help text from "git <cmd> -h".
Will merge to 'master' as part of the fourth batch.
* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
(merged to 'next' on 2012-08-24 at cffa9a0)
+ gettext: do not translate empty string
A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.
Will merge to 'master' as part of the fourth batch.
* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
(merged to 'next' on 2012-08-24 at 7470bd6)
+ warn_on_inaccessible(): a helper to warn on inaccessible paths
+ attr: warn on inaccessible attribute files
+ gitignore: report access errors of exclude files
+ config: warn on inaccessible files
When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.
Will merge to 'master' as part of the fourth batch.
* nd/i18n-poison-test-updates (2012-08-27) 7 commits
(merged to 'next' on 2012-08-29 at 9b7ff7f)
+ Fix tests under GETTEXT_POISON on parseopt
+ Fix tests under GETTEXT_POISON on git-remote
+ Fix tests under GETTEXT_POISON on pack-object
+ Fix tests under GETTEXT_POISON on git-apply
+ Fix tests under GETTEXT_POISON on diffstat
+ Fix tests under GETTEXT_POISON on git-stash
+ Fix tests under GETTEXT_POISON on relative dates
Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.
Will merge to 'master' as part of the third batch.
* jc/daemon-access-hook (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at c8f5b2e)
+ daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
Will merge to 'master' as part of the third batch.
* jc/send-email-reconfirm (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at dffdef6)
+ send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
Will merge to 'master' as part of the third batch.
* ph/stash-rerere (2012-08-17) 2 commits
(merged to 'next' on 2012-08-20 at ae37111)
+ stash: invoke rerere in case of conflict
+ test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
Will merge to 'master' as part of the third batch.
* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
(merged to 'next' on 2012-08-24 at 08abc61)
+ git p4: make branch detection work with --use-client-spec
+ git p4: do wildcard decoding in stripRepoPath
+ git p4: set self.branchPrefixes in initialization
+ git p4 test: add broken --use-client-spec --detect-branches tests
+ git p4 test: move client_view() function to library
Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).
Will merge to 'master' as part of the fourth batch.
* jc/maint-push-refs-all (2012-08-27) 2 commits
- get_fetch_map(): tighten checks on dest refs
- [BROKEN] fetch/push: allow refs/*:refs/*
Allows pushing and fetching refs/stash.
* tg/index-v5 (2012-08-17) 13 commits
- p0002-index.sh: add perf test for the index formats
- update-index.c: rewrite index when index-version is given
- Write resolve-undo data for index-v5
- Write index-v5 cache-tree data
- Write index-v5
- Read cache-tree in index-v5
- Read resolve-undo data
- Read index-v5
- Make in-memory format aware of stat_crc
- Add documentation of the index-v5 file format
- t2104: Don't fail for index versions other than [23]
- read-cache.c: Re-read index if index file changed
- Move index v2 specific functions to their own file
A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at 0d76cf2)
+ sane_execvp(): ignore non-directory on $PATH
(Originally merged to 'next' on 2012-08-09)
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
Will merge to 'master' as part of the third batch.
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 0dc0590)
+ cherry-pick: add --allow-empty-message option
(Originally merged to 'next' on 2012-08-09)
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
Will merge to 'master' as part of the third batch.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at e18ddd8)
+ config: "git config baa" should exit with status 1
(Originally merged to 'next' on 2012-07-30)
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
Will merge to 'master' as part of the third batch.
* sz/submodule-force-update (2012-08-24) 1 commit
(merged to 'next' on 2012-08-24 at f82b466)
+ Make 'git submodule update --force' always check out submodules.
"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes. It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.
Will merge to 'master' as part of the third batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
(Originally merged to 'next' on 2012-07-23)
Will defer until the end of the 2012.
while waiting for older "less" to go extinct.
--------------------------------------------------
[Discarded]
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
. macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead. It turns out that there was no noticeable
improvements.
* nd/checkout-branch-name-check (2012-08-27) 1 commit
. checkout: verify new branch name's validity early
"git checkout -b --opt y" errors out saying that creating a new
branch to check it out and grabbing contents for paths out of a
commit are incompatible operations. While it is technically correct
(the command line wants to create a new branch whose name is "--opt"
and check it out, and there shouldn't be anything else left on the
command line, but there is "y"), "--opt" is not a valid name of the
branch to begin with, so even without "y", the command will not
succeed. Treat this case specially to complain that "--opt" is not
a valid branch name.
^ permalink raw reply [relevance 6%]
* What's cooking in git.git (Aug 2012, #08; Mon, 27)
@ 2012-08-28 2:43 5% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-28 2:43 UTC (permalink / raw)
To: git
Cc: Eric S. Raymond, Michael Haggerty, Erik Faye-Lund, Pete Wyckoff,
Luke Diamand, Jeff King, Thomas Rast
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
New topics started to flow in at the pace a bit faster than
reviewers give comments on them. I've merged half of the second
batch of topics to 'master', and will do the remainder later this
week. They are a bit more substantial changes than the first batch
we merged earlier.
I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks. http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ab/diff-write-incomplete-line (2012-08-05) 1 commit
(merged to 'next' on 2012-08-20 at e28b804)
+ Fix '\ No newline...' annotation in rewrite diffs
(Originally merged to 'next' on 2012-08-07)
The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.
* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
(merged to 'next' on 2012-08-20 at b1b0d18)
+ receive-pack: do not leak output from auto-gc to standard output
+ t/t5400: demonstrate breakage caused by informational message from prune
(Originally merged to 'next' on 2012-08-07)
When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.
* da/difftool-updates (2012-08-21) 13 commits
(merged to 'next' on 2012-08-21 at 332afe4)
+ difftool: silence warning
(merged to 'next' on 2012-08-20 at 2fecd90)
+ Add Code Compare v2.80.4 as a merge / diff tool for Windows
+ mergetool,difftool: Document --tool-help consistently
+ difftool: Disable --symlinks on cygwin
+ difftool: Handle compare() returning -1
+ difftool: Wrap long lines for readability
+ difftool: Check all return codes from compare()
+ difftool: Handle finding mergetools/ in a path with spaces
+ difftool: Use symlinks when diffing against the worktree
+ difftool: Call the temp directory "git-difftool"
+ difftool: Move option values into a hash
+ difftool: Eliminate global variables
+ difftool: Simplify print_tool_help()
(Originally merged to 'next' on 2012-08-10)
"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.
* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at 3e2598a)
+ t7406: fix misleading "rev-parse --max-count=1 HEAD"
(Originally merged to 'next' on 2012-07-30)
Test clean-up, with no behaviour change.
* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 0ed30dc)
+ docs: monospace listings in docbook output
(Originally merged to 'next' on 2012-08-18)
The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.
* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
+ diff: do not use null sha1 as a sentinel value
(this branch is used by jk/maint-null-in-trees.)
"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.
* jk/maint-null-in-trees (2012-07-29) 2 commits
(merged to 'next' on 2012-08-20 at 5bc2c49)
+ fsck: detect null sha1 in tree entries
+ do not write null sha1s to on-disk index
(this branch uses jk/maint-diff-nul40-as-sentinel.)
(Originally merged to 'next' on 2012-07-30)
We do not want a link to 0{40} object stored anywhere in our objects.
* js/grep-patterntype-config (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 39a0431)
+ grep: add a grep.patternType configuration setting
(Originally merged to 'next' on 2012-08-09)
"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.
* mm/push-default-switch-warning (2012-06-24) 1 commit
(merged to 'next' on 2012-08-20 at 553e6c0)
+ push: start warning upcoming default change for push.default
(Originally merged to 'next' on 2012-06-26)
In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).
--------------------------------------------------
[New Topics]
* cn/branch-set-upstream-to (2012-08-23) 3 commits
- branch: deprecate --set-upstream and show help if we detect possible mistaken use
- branch: add --unset-upstream option
- branch: introduce --set-upstream-to
"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch. With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.
Wainting for a reroll
that tightens its error checking.
* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
- specifying ranges: we did not mean to make ".." an empty set
"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line. Update the
command line parser to interpret ".." as a path in such a case.
Will merge to 'next'.
* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
- mergetool: style fixes
As the title says.
Will merge to 'next'.
* js/compat-itimer (2012-08-24) 1 commit
- Support for setitimer() on platforms lacking it
Pieces to support compilation on __TANDEM.
* js/compat-mkdir (2012-08-24) 1 commit
- compat: some mkdir() do not like a slash at the end
Pieces to support compilation on __TANDEM.
Will merge to 'next'.
* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
- http.c: don't use curl_easy_strerror prior to curl-7.12.0
Pieces to support compilation on __TANDEM.
Will merge to 'next'.
* js/use-sc-open-max (2012-08-24) 1 commit
- sha1_file.c: introduce get_max_fd_limit() helper
Pieces to support compilation on __TANDEM.
Will merge to 'next'.
* ph/credential-refactor (2012-08-27) 6 commits
- wincred: port to generic credential helper (UNTESTED)
- Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
- osxkeychain: port to generic credential helper implementation
- gnome-keyring: port to generic helper implementation
- contrib: add generic credential helper
- contrib: add credential helper for GnomeKeyring
(this branch uses ef/win32-cred-helper.)
Adds a new credential helper to support Gnome keyring and attempts
to refactor to share code among OSX keychain, Gnome keyring and
Win32 credential helpers.
Waiting for test results with the tip one
to decide whether the series should be rerolled or reduced to only
the first one.
* jc/apply-binary-p0 (2012-08-24) 1 commit
- apply: compute patch->def_name correctly under -p0
"git apply -p0" did not parse pathnames on "diff --git" line
correctly. This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode). Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.
Will merge to 'next'.
* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
- doc: "git checkout -b/-B/--orphan" always takes a branch name
The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading. There may be room in documentation pages of other
commands for similar improvements (hint, hint).
Will merge to 'next'.
* jk/maint-http-half-auth-push (2012-08-27) 8 commits
- http: prompt for credentials on failed POST
- http: factor out http error code handling
- t: test http access to "half-auth" repositories
- t: test basic smart-http authentication
- t/lib-httpd: recognize */smart/* repos as smart-http
- t/lib-httpd: only route auth/dumb to dumb repos
- t5550: factor out http auth setup
- t5550: put auth-required repo in auth/dumb
Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.
Will merge to 'next'.
* jx/test-real-path (2012-08-27) 1 commit
- test: set the realpath of CWD as TRASH_DIRECTORY
Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.
Waiting for a Tested-by.
* mh/fetch-filter-refs (2012-08-26) 17 commits
- filter_refs(): simplify logic
- fetch_pack(): free matching heads
- cmd_fetch_pack(): simplify computation of return value
- fetch-pack: report missing refs even if no existing refs were received
- cmd_fetch_pack: return early if finish_connect() returns an error
- filter_refs(): compress unmatched refs in heads array
- filter_refs(): do not leave gaps in return_refs
- filter_refs(): simplify by removing optimization
- Pass nr_heads to filter_refs() by reference
- Pass nr_heads to everything_local() by reference
- Pass nr_heads to do_pack_ref() by reference
- Let fetch_pack() inform caller about number of unique heads
- filter_refs(): do not check the same head_pos twice
- fetch-pack.c: name local variables more consistently
- fetch_pack(): reindent function decl and defn
- Rename static function fetch_pack() to http_fetch_pack()
- t5500: add tests of error output for missing refs
Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.
* nd/branch-v-alignment (2012-08-27) 1 commit
- branch -v: align even when branch names are in UTF-8
Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.
Will merge to 'next'.
* jc/merge-bases (2012-08-27) 5 commits
- get_merge_bases_many(): walk from many tips in parallel
- in_merge_bases(): omit unnecessary redundant common ancestor reduction
- http-push: use in_merge_bases() for fast-forward check
- receive-pack: use in_merge_bases() for fast-forward check
- in_merge_bases(): support only one "other" commit
Optimises the "merge-base" computation a bit, and also updates its
users that do not need the full merge-base information to call a
cheaper subset. The most important one is the second from the tip
done by Thomas.
Needs sign-off.
--------------------------------------------------
[Stalled]
* er/doc-fast-import-done (2012-08-22) 1 commit
- fast-import: document the --done option
Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
Anybody interested in fixing it up? Otherwise may discard.
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
Waiting for the dust to settle.
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* jl/submodule-rm (2012-08-27) 1 commit
- Teach rm to remove submodules unless they contain a git directory
"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.
* nd/am-i18n-fix (2012-08-22) 1 commit
(merged to 'next' on 2012-08-24 at f8e9a63)
+ am: quote string for translation before passing to eval_gettextln
"git am" wasn't marked up for i18n properly.
Will merge to 'master' as part of the fourth batch.
* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
(merged to 'next' on 2012-08-24 at d16ac69)
+ commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
Will merge to 'master' as part of the fourth batch.
* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
(merged to 'next' on 2012-08-24 at 28a5db4)
+ for-each-ref: Fix sort with multiple keys
+ t6300: test sort with multiple keys
"git for-each-ref" did not currectly support more than one --sort
option.
Will merge to 'master' as part of the fourth batch.
* fa/remote-svn (2012-08-22) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Add git-remote-testsvn to Makefile
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
* fa/vcs-svn (2012-08-26) 8 commits
- t9020-*.sh: Skip all tests when python not available
- t9020-*.sh: Fix urls passed to git-remote in test setup
- remote-testsvn.c: avoid use of the getline() function
- vcs-svn: Fix 'fa/remote-svn' and 'fa/vcs-svn' in pu
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
(this branch uses fa/remote-svn.)
The tip ones should be squashed in.
Waiting for a reroll.
* nd/i18n-parseopt-help (2012-08-22) 66 commits
(merged to 'next' on 2012-08-24 at 2a04ce0)
+ Use imperative form in help usage to describe an action
+ Reduce translations by using same terminologies
+ i18n: write-tree: mark parseopt strings for translation
+ i18n: verify-tag: mark parseopt strings for translation
+ i18n: verify-pack: mark parseopt strings for translation
+ i18n: update-server-info: mark parseopt strings for translation
+ i18n: update-ref: mark parseopt strings for translation
+ i18n: update-index: mark parseopt strings for translation
+ i18n: tag: mark parseopt strings for translation
+ i18n: symbolic-ref: mark parseopt strings for translation
+ i18n: show-ref: mark parseopt strings for translation
+ i18n: show-branch: mark parseopt strings for translation
+ i18n: shortlog: mark parseopt strings for translation
+ i18n: rm: mark parseopt strings for translation
+ i18n: revert, cherry-pick: mark parseopt strings for translation
+ i18n: rev-parse: mark parseopt strings for translation
+ i18n: reset: mark parseopt strings for translation
+ i18n: rerere: mark parseopt strings for translation
+ i18n: status: mark parseopt strings for translation
+ i18n: replace: mark parseopt strings for translation
+ i18n: remote: mark parseopt strings for translation
+ i18n: read-tree: mark parseopt strings for translation
+ i18n: push: mark parseopt strings for translation
+ i18n: prune: mark parseopt strings for translation
+ i18n: prune-packed: mark parseopt strings for translation
+ i18n: pack-refs: mark parseopt strings for translation
+ i18n: pack-objects: mark parseopt strings for translation
+ i18n: notes: mark parseopt strings for translation
+ i18n: name-rev: mark parseopt strings for translation
+ i18n: mv: mark parseopt strings for translation
+ i18n: mktree: mark parseopt strings for translation
+ i18n: merge: mark parseopt strings for translation
+ i18n: merge-file: mark parseopt strings for translation
+ i18n: merge-base: mark parseopt strings for translation
+ i18n: ls-tree: mark parseopt strings for translation
+ i18n: ls-files: mark parseopt strings for translation
+ i18n: log: mark parseopt strings for translation
+ i18n: init-db: mark parseopt strings for translation
+ i18n: help: mark parseopt strings for translation
+ i18n: hash-object: mark parseopt strings for translation
+ i18n: grep: mark parseopt strings for translation
+ i18n: gc: mark parseopt strings for translation
+ i18n: fsck: mark parseopt strings for translation
+ i18n: format-patch: mark parseopt strings for translation
+ i18n: for-each-ref: mark parseopt strings for translation
+ i18n: fmt-merge-msg: mark parseopt strings for translation
+ i18n: fetch: mark parseopt strings for translation
+ i18n: fast-export: mark parseopt strings for translation
+ i18n: describe: mark parseopt strings for translation
+ i18n: config: mark parseopt strings for translation
+ i18n: count-objects: mark parseopt strings for translation
+ i18n: commit: mark parseopt strings for translation
+ i18n: column: mark parseopt strings for translation
+ i18n: clone: mark parseopt strings for translation
+ i18n: clean: mark parseopt strings for translation
+ i18n: cherry: mark parseopt strings for translation
+ i18n: checkout: mark parseopt strings for translation
+ i18n: checkout-index: mark parseopt strings for translation
+ i18n: check-attr: mark parseopt strings for translation
+ i18n: cat-file: mark parseopt strings for translation
+ i18n: branch: mark parseopt strings for translation
+ i18n: blame: mark parseopt strings for translation
+ i18n: add: mark parseopt strings for translation
+ i18n: bisect--helper: mark parseopt strings for translation
+ i18n: archive: mark parseopt strings for translation
+ i18n: mark "style" in OPT_COLUMN() for translation
A lot of i18n mark-up for the help text from "git <cmd> -h".
Will merge to 'master' as part of the fourth batch.
* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
(merged to 'next' on 2012-08-24 at cffa9a0)
+ gettext: do not translate empty string
A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.
Will merge to 'master' as part of the fourth batch.
* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
(merged to 'next' on 2012-08-24 at 7470bd6)
+ warn_on_inaccessible(): a helper to warn on inaccessible paths
+ attr: warn on inaccessible attribute files
+ gitignore: report access errors of exclude files
+ config: warn on inaccessible files
When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.
Will merge to 'master' as part of the fourth batch.
* nd/i18n-poison-test-updates (2012-08-27) 7 commits
- Fix tests under GETTEXT_POISON on parseopt
- Fix tests under GETTEXT_POISON on git-remote
- Fix tests under GETTEXT_POISON on pack-object
- Fix tests under GETTEXT_POISON on git-apply
- Fix tests under GETTEXT_POISON on diffstat
- Fix tests under GETTEXT_POISON on git-stash
- Fix tests under GETTEXT_POISON on relative dates
Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.
Will merge to 'next'.
* jc/daemon-access-hook (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at c8f5b2e)
+ daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
Will merge to 'master' as part of the third batch.
* jc/send-email-reconfirm (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at dffdef6)
+ send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
Will merge to 'master' as part of the third batch.
* ef/win32-cred-helper (2012-08-16) 1 commit
(merged to 'next' on 2012-08-20 at bd5c651)
+ contrib: add win32 credential-helper
(this branch is used by ph/credential-refactor.)
Credential helper for Win32 to allow access to the keychain of
the logged-in user.
Will merge to 'master' as part of the second batch.
* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
(merged to 'next' on 2012-08-20 at a883c2a)
+ precompose-utf8: do not call checks for non-ascii "utf8"
+ cleanup precompose_utf8
A style and code cleanup.
Will merge to 'master' as part of the second batch.
* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
(merged to 'next' on 2012-08-20 at a484625)
+ git-config doc: unconfuse an example
+ git-config.txt: fix example
A minor documentation update.
Will merge to 'master' as part of the second batch.
* ph/stash-rerere (2012-08-17) 2 commits
(merged to 'next' on 2012-08-20 at ae37111)
+ stash: invoke rerere in case of conflict
+ test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
Will merge to 'master' as part of the third batch.
* hv/submodule-path-unmatch (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at cbe6483)
+ Let submodule command exit with error status if path does not exist
As the title says.
Will merge to 'master' as part of the second batch.
* bc/prune-info (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 1bc9e66)
+ prune.c: only print informational message in show_only or verbose mode
Teach "git prune" without "-v" to be silent about leftover temporary files.
Will merge to 'master' as part of the second batch.
* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
(merged to 'next' on 2012-08-20 at 8b00562)
+ sh-setup: protect from exported IFS
When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.
Will merge to 'master' as part of the second batch.
* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
(merged to 'next' on 2012-08-20 at f671bd2)
+ rebase -i: use full onto sha1 in reflog
The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.
Will merge to 'master' as part of the second batch.
* mz/empty-rebase-test (2012-08-09) 1 commit
(merged to 'next' on 2012-08-20 at 53e2419)
+ add tests for 'git rebase --keep-empty'
Will merge to 'master' as part of the second batch.
* jc/capabilities (2012-08-13) 3 commits
(merged to 'next' on 2012-08-20 at 1976e47)
+ fetch-pack: mention server version with verbose output
+ parse_feature_request: make it easier to see feature values
+ fetch-pack: do not ask for unadvertised capabilities
(this branch uses jk/version-string.)
Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available. Fix fetch-pack not to do so.
Will merge to 'master' as part of the second batch.
* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
(merged to 'next' on 2012-08-24 at 08abc61)
+ git p4: make branch detection work with --use-client-spec
+ git p4: do wildcard decoding in stripRepoPath
+ git p4: set self.branchPrefixes in initialization
+ git p4 test: add broken --use-client-spec --detect-branches tests
+ git p4 test: move client_view() function to library
Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).
Will merge to 'master' as part of the fourth batch.
* jc/maint-push-refs-all (2012-08-07) 2 commits
- get_fetch_map(): tighten checks on dest refs
- fetch/push: allow refs/*:refs/*
Allows pushing and fetching refs/stash.
Will merge to 'next'.
* jk/version-string (2012-08-10) 3 commits
(merged to 'next' on 2012-08-20 at 6d207bb)
+ do not send client agent unless server does first
+ send-pack: fix capability-sending logic
+ include agent identifier in capability string
(this branch is used by jc/capabilities.)
(Originally merged to 'next' on 2012-08-10)
Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.
Will merge to 'master' as part of the third batch.
* tg/index-v5 (2012-08-17) 13 commits
- p0002-index.sh: add perf test for the index formats
- update-index.c: rewrite index when index-version is given
- Write resolve-undo data for index-v5
- Write index-v5 cache-tree data
- Write index-v5
- Read cache-tree in index-v5
- Read resolve-undo data
- Read index-v5
- Make in-memory format aware of stat_crc
- Add documentation of the index-v5 file format
- t2104: Don't fail for index versions other than [23]
- read-cache.c: Re-read index if index file changed
- Move index v2 specific functions to their own file
A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at 0d76cf2)
+ sane_execvp(): ignore non-directory on $PATH
(Originally merged to 'next' on 2012-08-09)
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
Will merge to 'master' as part of the third batch.
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 0dc0590)
+ cherry-pick: add --allow-empty-message option
(Originally merged to 'next' on 2012-08-09)
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
Will merge to 'master' as part of the third batch.
* mz/cherry-code-cleanup (2012-07-29) 3 commits
(merged to 'next' on 2012-08-20 at bfb0457)
+ cherry: remove redundant check for merge commit
+ cherry: don't set ignored rev_info options
+ remove unnecessary parameter from get_patch_ids()
Minor code clean-up on the cherry-pick codepath.
Will merge to 'master' as part of the second batch.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at e18ddd8)
+ config: "git config baa" should exit with status 1
(Originally merged to 'next' on 2012-07-30)
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
Will merge to 'master' as part of the third batch.
* sz/submodule-force-update (2012-08-24) 1 commit
(merged to 'next' on 2012-08-24 at f82b466)
+ Make 'git submodule update --force' always check out submodules.
"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes. It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.
Will merge to 'master' as part of the third batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
(Originally merged to 'next' on 2012-07-23)
Will defer until the end of the 2012.
while waiting for older "less" to go extinct.
--------------------------------------------------
[Discarded]
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
. macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead. It turns out that there was no noticeable
improvements.
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Aug 2012, #07; Wed, 22)
@ 2012-08-22 21:03 5% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-22 21:03 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
As promised (threatened ;-), the first batch of topics for the next
release are now part of 'master'. They are mostly innocuous
documentation updates, test clean-ups, and all should eventually go
to the maintenance track. In addition, the update to git-svn to
make it work better with subversion 1.7 is also included.
I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks. http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* er/doc-fast-import-done (2012-08-22) 1 commit
- fast-import: document the --done option
Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".
* nd/am-i18n-fix (2012-08-22) 1 commit
- am: quote string for translation before passing to eval_gettextln
"git am" wasn't marked up for i18n properly.
Will merge to 'next', and eventually to maint-1.7.11 track.
--------------------------------------------------
[Graduated to "master"]
* hv/coding-guidelines (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at 4984865)
+ Documentation/CodingGuidelines: spell out more shell guidelines
(Originally merged to 'next' on 2012-08-18)
In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.
* jc/doc-git-updates (2012-08-17) 1 commit
(merged to 'next' on 2012-08-20 at ab1db71)
+ Documentation: update the introductory section
(Originally merged to 'next' on 2012-08-18)
* jc/maint-abbrev-option-cli (2012-08-16) 1 commit
(merged to 'next' on 2012-08-20 at 54d1a5a)
+ gitcli: describe abbreviation of long options
(Originally merged to 'next' on 2012-08-18)
We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.
* jc/maint-rev-list-topo-doc (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at 0f669d2)
+ rev-list docs: clarify --topo-order description
(Originally merged to 'next' on 2012-08-18)
It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".
* jc/tag-doc (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 9eb658e)
+ Documentation: do not mention .git/refs/* directories
(Originally merged to 'next' on 2012-08-18)
Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.
* jc/test-prereq (2012-08-04) 8 commits
(merged to 'next' on 2012-08-20 at dd44c4a)
+ t3910: use the UTF8_NFD_TO_NFC test prereq
+ test-lib: provide UTF8 behaviour as a prerequisite
+ t0050: use the SYMLINKS test prereq
+ t0050: use the CASE_INSENSITIVE_FS test prereq
+ test-lib: provide case insensitivity as a prerequisite
+ test: allow prerequisite to be evaluated lazily
+ test: rename $satisfied to $satisfied_prereq
(Originally merged to 'next' on 2012-08-04)
Teaches the test framework to probe rarely used prerequistes lazily,
and make use of it for detecting SYMLINKS, CASE_INSENSITIVE_FS and
NKD/NKC MacOS x gotcha.
* jk/check-docs-update (2012-08-08) 8 commits
(merged to 'next' on 2012-08-20 at d51021d)
+ check-docs: get documented command list from Makefile
+ check-docs: drop git-help special-case
+ check-docs: list git-gui as a command
+ check-docs: factor out command-list
+ command-list: mention git-credential-* helpers
+ command-list: add git-sh-i18n
+ check-docs: update non-command documentation list
+ check-docs: mention gitweb specially
(Originally merged to 'next' on 2012-08-18)
Simplify "make check-docs" implementation and update its coverage.
* js/gitweb-path-info-unquote (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at a4aa740)
+ gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO
(Originally merged to 'next' on 2012-08-15)
Stripping of PATH_INFO in gitweb did not take url style quoting into
account, failing to notice directories with funny characters e.g. SP
in their paths.
* mk/test-seq (2012-08-04) 1 commit
(merged to 'next' on 2012-08-20 at c373e0e)
+ tests: Introduce test_seq
(this branch is used by ab/diff-write-incomplete-line.)
(Originally merged to 'next' on 2012-08-06)
Add a compatibility/utility function to the test framework.
* mm/die-with-dashdash-help (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at ebe0e1a)
+ setup: clarify error messages for file/revisions ambiguity
(Originally merged to 'next' on 2012-08-09)
Reword error messages.
* ms/git-svn-1.7 (2012-08-02) 20 commits
(merged to 'next' on 2012-08-21 at ae8aff9)
+ git-svn: remove ad-hoc canonicalizations
+ git-svn: canonicalize newly-minted URLs
+ git-svn: introduce add_path_to_url function
+ git-svn: canonicalize earlier
+ git-svn: replace URL escapes with canonicalization
+ git-svn: attempt to mimic SVN 1.7 URL canonicalization
+ t9107: fix typo
+ t9118: workaround inconsistency between SVN versions
+ Git::SVN{,::Ra}: canonicalize earlier
+ git-svn: path canonicalization uses SVN API
+ Git::SVN::Utils: remove irrelevant comment
+ git-svn: add join_paths() to safely concatenate paths
+ git-svn: factor out _collapse_dotdot function
+ git-svn: use SVN 1.7 to canonicalize when possible
+ git-svn: move canonicalization to Git::SVN::Utils
+ use Git::SVN{,::RA}->url accessor globally
+ use Git::SVN->path accessor globally
+ Git::SVN::Ra: use accessor for URLs
+ Git::SVN: use accessor for URLs internally
+ Git::SVN: use accessors internally for path
A series by Michael Schwern via Eric to update git-svn to revamp the
way URLs are internally passed around, to make it work with SVN 1.7.
* mv/pull-r-for-rebase (2012-08-17) 1 commit
(merged to 'next' on 2012-08-20 at 9743071)
+ man: git pull -r is a short for --rebase
(Originally merged to 'next' on 2012-08-18)
A minor documentation update.
* nd/index-errno (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 34076c6)
+ read_index_from: remove bogus errno assignments
(Originally merged to 'next' on 2012-08-06)
Assignments to errno before calling system functions that used to
matter in the old code were left behind after the code structure
changed sufficiently to make them useless.
* pg/maint-apply-remove-unused-variable (2012-08-05) 1 commit
(merged to 'next' on 2012-08-20 at 260975b)
+ apply: delete unused deflate_origlen from patch struct
(Originally merged to 'next' on 2012-08-05)
Remove an unused field.
* tr/maint-send-email-2047 (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at cf5ee1c)
+ send-email: improve RFC2047 quote parsing
(Originally merged to 'next' on 2012-08-09)
"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.
* tr/merge-recursive-flush (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 00aeb19)
+ merge-recursive: eliminate flush_buffer() in favor of write_in_full()
(Originally merged to 'next' on 2012-08-09)
Remove unnecessary code.
* tr/void-diff-setup-done (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 2f21f63)
+ diff_setup_done(): return void
(Originally merged to 'next' on 2012-08-09)
Remove unnecessary code.
--------------------------------------------------
[Stalled]
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
Anybody interested in fixing it up? Otherwise may discard.
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
Waiting for the dust to settle.
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* jl/submodule-rm (2012-07-05) 2 commits
- rm: remove submodules from the index and the .gitmodules file
- rm: don't fail when removing populated submodules
Expecting a reroll.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
- commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
Will merge to 'next'.
* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
- for-each-ref: Fix sort with multiple keys
- t6300: test sort with multiple keys
"git for-each-ref" did not currectly support more than one --sort
option.
Will merge to 'next'.
* fa/remote-svn (2012-08-22) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Add git-remote-testsvn to Makefile
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
* fa/vcs-svn (2012-08-22) 4 commits
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
(this branch uses fa/remote-svn.)
* nd/i18n-parseopt-help (2012-08-22) 66 commits
- Use imperative form in help usage to describe an action
- Reduce translations by using same terminologies
- i18n: write-tree: mark parseopt strings for translation
- i18n: verify-tag: mark parseopt strings for translation
- i18n: verify-pack: mark parseopt strings for translation
- i18n: update-server-info: mark parseopt strings for translation
- i18n: update-ref: mark parseopt strings for translation
- i18n: update-index: mark parseopt strings for translation
- i18n: tag: mark parseopt strings for translation
- i18n: symbolic-ref: mark parseopt strings for translation
- i18n: show-ref: mark parseopt strings for translation
- i18n: show-branch: mark parseopt strings for translation
- i18n: shortlog: mark parseopt strings for translation
- i18n: rm: mark parseopt strings for translation
- i18n: revert, cherry-pick: mark parseopt strings for translation
- i18n: rev-parse: mark parseopt strings for translation
- i18n: reset: mark parseopt strings for translation
- i18n: rerere: mark parseopt strings for translation
- i18n: status: mark parseopt strings for translation
- i18n: replace: mark parseopt strings for translation
- i18n: remote: mark parseopt strings for translation
- i18n: read-tree: mark parseopt strings for translation
- i18n: push: mark parseopt strings for translation
- i18n: prune: mark parseopt strings for translation
- i18n: prune-packed: mark parseopt strings for translation
- i18n: pack-refs: mark parseopt strings for translation
- i18n: pack-objects: mark parseopt strings for translation
- i18n: notes: mark parseopt strings for translation
- i18n: name-rev: mark parseopt strings for translation
- i18n: mv: mark parseopt strings for translation
- i18n: mktree: mark parseopt strings for translation
- i18n: merge: mark parseopt strings for translation
- i18n: merge-file: mark parseopt strings for translation
- i18n: merge-base: mark parseopt strings for translation
- i18n: ls-tree: mark parseopt strings for translation
- i18n: ls-files: mark parseopt strings for translation
- i18n: log: mark parseopt strings for translation
- i18n: init-db: mark parseopt strings for translation
- i18n: help: mark parseopt strings for translation
- i18n: hash-object: mark parseopt strings for translation
- i18n: grep: mark parseopt strings for translation
- i18n: gc: mark parseopt strings for translation
- i18n: fsck: mark parseopt strings for translation
- i18n: format-patch: mark parseopt strings for translation
- i18n: for-each-ref: mark parseopt strings for translation
- i18n: fmt-merge-msg: mark parseopt strings for translation
- i18n: fetch: mark parseopt strings for translation
- i18n: fast-export: mark parseopt strings for translation
- i18n: describe: mark parseopt strings for translation
- i18n: config: mark parseopt strings for translation
- i18n: count-objects: mark parseopt strings for translation
- i18n: commit: mark parseopt strings for translation
- i18n: column: mark parseopt strings for translation
- i18n: clone: mark parseopt strings for translation
- i18n: clean: mark parseopt strings for translation
- i18n: cherry: mark parseopt strings for translation
- i18n: checkout: mark parseopt strings for translation
- i18n: checkout-index: mark parseopt strings for translation
- i18n: check-attr: mark parseopt strings for translation
- i18n: cat-file: mark parseopt strings for translation
- i18n: branch: mark parseopt strings for translation
- i18n: blame: mark parseopt strings for translation
- i18n: add: mark parseopt strings for translation
- i18n: bisect--helper: mark parseopt strings for translation
- i18n: archive: mark parseopt strings for translation
- i18n: mark "style" in OPT_COLUMN() for translation
A lot of i18n mark-up for the help text from "git <cmd> -h".
Will merge to 'next'.
* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
- gettext: do not translate empty string
A workaround to avoid doing _(""), which translates to magic string
in the .po files.
Will merge to 'next'.
* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
- warn_on_inaccessible(): a helper to warn on inaccessible paths
- attr: warn on inaccessible attribute files
- gitignore: report access errors of exclude files
- config: warn on inaccessible files
When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.
Will merge to 'next'.
* nd/i18n-poison-test-updates (2012-08-21) 6 commits
- Fix tests under GETTEXT_POISON on parseopt
- Fix tests under GETTEXT_POISON on pack-object
- Fix tests under GETTEXT_POISON on git-apply
- Fix tests under GETTEXT_POISON on diffstat
- Fix tests under GETTEXT_POISON on git-stash
- Fix tests under GETTEXT_POISON on relative dates
Updates to tests that can be broken with gettext-poison builds.
* jc/daemon-access-hook (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at c8f5b2e)
+ daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
Will merge to 'master' as part of the third batch.
* jc/send-email-reconfirm (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at dffdef6)
+ send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
Will merge to 'master' as part of the third batch.
* ef/win32-cred-helper (2012-08-16) 1 commit
(merged to 'next' on 2012-08-20 at bd5c651)
+ contrib: add win32 credential-helper
Credential helper for Win32 to allow access to the keychain of
the logged-in user.
Will merge to 'master' as part of the second batch.
* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
(merged to 'next' on 2012-08-20 at a883c2a)
+ precompose-utf8: do not call checks for non-ascii "utf8"
+ cleanup precompose_utf8
A style and code cleanup.
Will merge to 'master' as part of the second batch.
* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
(merged to 'next' on 2012-08-20 at a484625)
+ git-config doc: unconfuse an example
+ git-config.txt: fix example
A minor documentation update.
Will merge to 'master' as part of the second batch.
* ph/stash-rerere (2012-08-17) 2 commits
(merged to 'next' on 2012-08-20 at ae37111)
+ stash: invoke rerere in case of conflict
+ test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
Will merge to 'master' as part of the third batch.
* hv/submodule-path-unmatch (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at cbe6483)
+ Let submodule command exit with error status if path does not exist
As the title says.
Will merge to 'master' as part of the second batch.
* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
(merged to 'next' on 2012-08-20 at b1b0d18)
+ receive-pack: do not leak output from auto-gc to standard output
+ t/t5400: demonstrate breakage caused by informational message from prune
(Originally merged to 'next' on 2012-08-07)
When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.
Will merge to 'master' as part of the second batch.
* bc/prune-info (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 1bc9e66)
+ prune.c: only print informational message in show_only or verbose mode
Teach "git prune" without "-v" to be silent about leftover temporary files.
Will merge to 'master' as part of the second batch.
* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 0ed30dc)
+ docs: monospace listings in docbook output
(Originally merged to 'next' on 2012-08-18)
The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.
Will merge to 'master' as part of the second batch.
* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
(merged to 'next' on 2012-08-20 at 8b00562)
+ sh-setup: protect from exported IFS
When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.
Will merge to 'master' as part of the second batch.
* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
(merged to 'next' on 2012-08-20 at f671bd2)
+ rebase -i: use full onto sha1 in reflog
The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.
Will merge to 'master' as part of the second batch.
* mz/empty-rebase-test (2012-08-09) 1 commit
(merged to 'next' on 2012-08-20 at 53e2419)
+ add tests for 'git rebase --keep-empty'
Will merge to 'master' as part of the second batch.
* jc/capabilities (2012-08-13) 3 commits
(merged to 'next' on 2012-08-20 at 1976e47)
+ fetch-pack: mention server version with verbose output
+ parse_feature_request: make it easier to see feature values
+ fetch-pack: do not ask for unadvertised capabilities
(this branch uses jk/version-string.)
Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available. Fix fetch-pack not to do so.
Will merge to 'master' as part of the second batch.
* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
- git p4: make branch detection work with --use-client-spec
- git p4: do wildcard decoding in stripRepoPath
- git p4: set self.branchPrefixes in initialization
- git p4 test: add broken --use-client-spec --detect-branches tests
- git p4 test: move client_view() function to library
Will merge to 'next' and soon to 'master'.
* jc/maint-push-refs-all (2012-08-07) 2 commits
- get_fetch_map(): tighten checks on dest refs
- fetch/push: allow refs/*:refs/*
Allows pushing and fetching refs/stash.
Need to send it out to the list for review.
* jk/version-string (2012-08-10) 3 commits
(merged to 'next' on 2012-08-20 at 6d207bb)
+ do not send client agent unless server does first
+ send-pack: fix capability-sending logic
+ include agent identifier in capability string
(this branch is used by jc/capabilities.)
(Originally merged to 'next' on 2012-08-10)
Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.
Will merge to 'master' as part of the third batch.
* js/grep-patterntype-config (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 39a0431)
+ grep: add a grep.patternType configuration setting
(Originally merged to 'next' on 2012-08-09)
"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.
Will merge to 'master' as part of the second batch.
* ab/diff-write-incomplete-line (2012-08-05) 1 commit
(merged to 'next' on 2012-08-20 at e28b804)
+ Fix '\ No newline...' annotation in rewrite diffs
(Originally merged to 'next' on 2012-08-07)
The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.
Will merge to 'master' as part of the second batch.
* tg/index-v5 (2012-08-17) 13 commits
- p0002-index.sh: add perf test for the index formats
- update-index.c: rewrite index when index-version is given
- Write resolve-undo data for index-v5
- Write index-v5 cache-tree data
- Write index-v5
- Read cache-tree in index-v5
- Read resolve-undo data
- Read index-v5
- Make in-memory format aware of stat_crc
- Add documentation of the index-v5 file format
- t2104: Don't fail for index versions other than [23]
- read-cache.c: Re-read index if index file changed
- Move index v2 specific functions to their own file
A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at 0d76cf2)
+ sane_execvp(): ignore non-directory on $PATH
(Originally merged to 'next' on 2012-08-09)
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
Will merge to 'master' as part of the third batch.
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 0dc0590)
+ cherry-pick: add --allow-empty-message option
(Originally merged to 'next' on 2012-08-09)
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
Will merge to 'master' as part of the third batch.
* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at 3e2598a)
+ t7406: fix misleading "rev-parse --max-count=1 HEAD"
(Originally merged to 'next' on 2012-07-30)
Test clean-up, with no behaviour change.
Will merge to 'master' as part of the second batch.
* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
+ diff: do not use null sha1 as a sentinel value
(this branch is used by jk/maint-null-in-trees.)
"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.
* mz/cherry-code-cleanup (2012-07-29) 3 commits
(merged to 'next' on 2012-08-20 at bfb0457)
+ cherry: remove redundant check for merge commit
+ cherry: don't set ignored rev_info options
+ remove unnecessary parameter from get_patch_ids()
Minor code clean-up on the cherry-pick codepath.
Will merge to 'master' as part of the second batch.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at e18ddd8)
+ config: "git config baa" should exit with status 1
(Originally merged to 'next' on 2012-07-30)
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
Will merge to 'master' as part of the third batch.
* jk/maint-null-in-trees (2012-07-29) 2 commits
(merged to 'next' on 2012-08-20 at 5bc2c49)
+ fsck: detect null sha1 in tree entries
+ do not write null sha1s to on-disk index
(this branch uses jk/maint-diff-nul40-as-sentinel.)
(Originally merged to 'next' on 2012-07-30)
We do not want a link to 0{40} object stored anywhere in our objects.
Will merge to 'master' as part of the second batch.
* sz/submodule-force-update (2012-07-25) 1 commit
- Make 'git submodule update --force' always check out submodules.
We may want a documentation update and a few tests.
Kicked back to 'pu'.
* da/difftool-updates (2012-08-21) 13 commits
(merged to 'next' on 2012-08-21 at 332afe4)
+ difftool: silence warning
(merged to 'next' on 2012-08-20 at 2fecd90)
+ Add Code Compare v2.80.4 as a merge / diff tool for Windows
+ mergetool,difftool: Document --tool-help consistently
+ difftool: Disable --symlinks on cygwin
+ difftool: Handle compare() returning -1
+ difftool: Wrap long lines for readability
+ difftool: Check all return codes from compare()
+ difftool: Handle finding mergetools/ in a path with spaces
+ difftool: Use symlinks when diffing against the worktree
+ difftool: Call the temp directory "git-difftool"
+ difftool: Move option values into a hash
+ difftool: Eliminate global variables
+ difftool: Simplify print_tool_help()
(Originally merged to 'next' on 2012-08-10)
"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.
Will merge to 'master' as part of the second batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
(Originally merged to 'next' on 2012-07-23)
Will defer until the end of the 2012,
waiting for older "less" to go extinct.
* mm/push-default-switch-warning (2012-06-24) 1 commit
(merged to 'next' on 2012-08-20 at 553e6c0)
+ push: start warning upcoming default change for push.default
(Originally merged to 'next' on 2012-06-26)
In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).
Will merge to 'master' as part of the second batch.
--------------------------------------------------
[Discarded]
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
. macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead. It turns out that there was no noticeable
improvements.
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Aug 2012, #06; Tue, 21)
@ 2012-08-21 23:10 5% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-21 23:10 UTC (permalink / raw)
To: git
Not much has changed since the last edition, except that we will be
merging ms/git-svn-1.7 topic as part of the first batch that
otherwise consists of mostly updates to documentation and tests and
low impact cleanups.
-- >8 --
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks. http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
- for-each-ref: Fix sort with multiple keys
- t6300: test sort with multiple keys
A small and sensible fix, even though the accompanying test seems to
touch too many unrelated existing ones needlessly, which may want to
be fixed by a reroll.
* nd/i18n-parseopt-help (2012-08-20) 54 commits
- i18n: shortlog: mark parseopt strings for translation
- i18n: rm: mark parseopt strings for translation
- i18n: revert, cherry-pick: mark parseopt strings for translation
- i18n: rev-parse: mark parseopt strings for translation
- i18n: reset: mark parseopt strings for translation
- i18n: rerere: mark parseopt strings for translation
- i18n: status: mark parseopt strings for translation
- i18n: replace: mark parseopt strings for translation
- i18n: remote: mark parseopt strings for translation
- i18n: read-tree: mark parseopt strings for translation
- i18n: push: mark parseopt strings for translation
- i18n: prune: mark parseopt strings for translation
- i18n: prune-packed: mark parseopt strings for translation
- i18n: pack-refs: mark parseopt strings for translation
- i18n: pack-objects: mark parseopt strings for translation
- i18n: notes: mark parseopt strings for translation
- i18n: name-rev: mark parseopt strings for translation
- i18n: mv: mark parseopt strings for translation
- i18n: mktree: mark parseopt strings for translation
- i18n: merge: mark parseopt strings for translation
- i18n: merge-file: mark parseopt strings for translation
- i18n: merge-base: mark parseopt strings for translation
- i18n: ls-tree: mark parseopt strings for translation
- i18n: ls-files: mark parseopt strings for translation
- i18n: log: mark parseopt strings for translation
- i18n: init-db: mark parseopt strings for translation
- i18n: help: mark parseopt strings for translation
- i18n: hash-object: mark parseopt strings for translation
- i18n: grep: mark parseopt strings for translation
- i18n: gc: mark parseopt strings for translation
- i18n: fsck: mark parseopt strings for translation
- i18n: format-patch: mark parseopt strings for translation
- i18n: for-each-ref: mark parseopt strings for translation
- i18n: fmt-merge-msg: mark parseopt strings for translation
- i18n: fetch: mark parseopt strings for translation
- i18n: fast-export: mark parseopt strings for translation
- i18n: describe: mark parseopt strings for translation
- i18n: config: mark parseopt strings for translation
- i18n: count-objects: mark parseopt strings for translation
- i18n: commit: mark parseopt strings for translation
- i18n: column: mark parseopt strings for translation
- i18n: clone: mark parseopt strings for translation
- i18n: clean: mark parseopt strings for translation
- i18n: cherry: mark parseopt strings for translation
- i18n: checkout: mark parseopt strings for translation
- i18n: checkout-index: mark parseopt strings for translation
- i18n: check-attr: mark parseopt strings for translation
- i18n: cat-file: mark parseopt strings for translation
- i18n: branch: mark parseopt strings for translation
- i18n: blame: mark parseopt strings for translation
- i18n: add: mark parseopt strings for translation
- i18n: bisect--helper: mark parseopt strings for translation
- i18n: archive: mark parseopt strings for translation
- i18n: mark "style" in OPT_COLUMN() for translation
A lot of i18n mark-up for the help text from "git <cmd> -h".
* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
- gettext: do not translate empty string
A workaround to avoid doing _(""), which translates to magic string
in the .po files.
* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
- warn_on_inaccessible(): a helper to warn on inaccessible paths
- attr: warn on inaccessible attribute files
- gitignore: report access errors of exclude files
- config: warn on inaccessible files
When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.
* nd/i18n-poison-test-updates (2012-08-21) 6 commits
- Fix tests under GETTEXT_POISON on parseopt
- Fix tests under GETTEXT_POISON on pack-object
- Fix tests under GETTEXT_POISON on git-apply
- Fix tests under GETTEXT_POISON on diffstat
- Fix tests under GETTEXT_POISON on git-stash
- Fix tests under GETTEXT_POISON on relative dates
Updates to tests that can be broken with gettext-poison builds.
--------------------------------------------------
[Stalled]
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
Waiting for the dust to settle.
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* jl/submodule-rm (2012-07-05) 2 commits
- rm: remove submodules from the index and the .gitmodules file
- rm: don't fail when removing populated submodules
Expecting a reroll.
* lt/commit-tree-guess-utf-8 (2012-06-28) 1 commit
- commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
A draft from Linus received privately without a log message.
Expecting a reroll.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* hv/coding-guidelines (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at 4984865)
+ Documentation/CodingGuidelines: spell out more shell guidelines
(Originally merged to 'next' on 2012-08-18)
In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.
Will merge to 'master' as part of the first batch.
* jc/daemon-access-hook (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at c8f5b2e)
+ daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
* jc/send-email-reconfirm (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at dffdef6)
+ send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
* ef/win32-cred-helper (2012-08-16) 1 commit
(merged to 'next' on 2012-08-20 at bd5c651)
+ contrib: add win32 credential-helper
Credential helper for Win32 to allow access to the keychain of
the logged-in user.
* jc/maint-abbrev-option-cli (2012-08-16) 1 commit
(merged to 'next' on 2012-08-20 at 54d1a5a)
+ gitcli: describe abbreviation of long options
(Originally merged to 'next' on 2012-08-18)
We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.
Will merge to 'master' as part of the first batch.
* mv/pull-r-for-rebase (2012-08-17) 1 commit
(merged to 'next' on 2012-08-20 at 9743071)
+ man: git pull -r is a short for --rebase
(Originally merged to 'next' on 2012-08-18)
A minor documentation update.
Will merge to 'master' as part of the first batch.
* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
(merged to 'next' on 2012-08-20 at a883c2a)
+ precompose-utf8: do not call checks for non-ascii "utf8"
+ cleanup precompose_utf8
A style and code cleanup.
* jc/doc-git-updates (2012-08-17) 1 commit
(merged to 'next' on 2012-08-20 at ab1db71)
+ Documentation: update the introductory section
(Originally merged to 'next' on 2012-08-18)
Will merge to 'master' as part of the first batch.
* fa/remote-svn (2012-08-20) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Add git-remote-testsvn to Makefile
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
* fa/vcs-svn (2012-08-20) 4 commits
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
(this branch uses fa/remote-svn.)
Rerolled with another round of fix-up squashed in.
* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
(merged to 'next' on 2012-08-20 at a484625)
+ git-config doc: unconfuse an example
+ git-config.txt: fix example
A minor documentation update.
* ph/stash-rerere (2012-08-17) 2 commits
(merged to 'next' on 2012-08-20 at ae37111)
+ stash: invoke rerere in case of conflict
+ test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
* hv/submodule-path-unmatch (2012-08-14) 1 commit
(merged to 'next' on 2012-08-20 at cbe6483)
+ Let submodule command exit with error status if path does not exist
As the title says.
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* jc/maint-rev-list-topo-doc (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at 0f669d2)
+ rev-list docs: clarify --topo-order description
(Originally merged to 'next' on 2012-08-18)
It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".
Will merge to 'master' as part of the first batch.
* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
(merged to 'next' on 2012-08-20 at b1b0d18)
+ receive-pack: do not leak output from auto-gc to standard output
+ t/t5400: demonstrate breakage caused by informational message from prune
(Originally merged to 'next' on 2012-08-07)
When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.
Will merge to 'master' as part of the second batch.
* bc/prune-info (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 1bc9e66)
+ prune.c: only print informational message in show_only or verbose mode
Teach "git prune" without "-v" to be silent about leftover temporary files.
* jc/tag-doc (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 9eb658e)
+ Documentation: do not mention .git/refs/* directories
(Originally merged to 'next' on 2012-08-18)
Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.
Will merge to 'master' as part of the first batch.
* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
(merged to 'next' on 2012-08-20 at 0ed30dc)
+ docs: monospace listings in docbook output
(Originally merged to 'next' on 2012-08-18)
The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.
Will merge to 'master' as part of the second batch.
* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
(merged to 'next' on 2012-08-20 at 8b00562)
+ sh-setup: protect from exported IFS
When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.
* jk/check-docs-update (2012-08-08) 8 commits
(merged to 'next' on 2012-08-20 at d51021d)
+ check-docs: get documented command list from Makefile
+ check-docs: drop git-help special-case
+ check-docs: list git-gui as a command
+ check-docs: factor out command-list
+ command-list: mention git-credential-* helpers
+ command-list: add git-sh-i18n
+ check-docs: update non-command documentation list
+ check-docs: mention gitweb specially
(Originally merged to 'next' on 2012-08-18)
Simplify "make check-docs" implementation and update its coverage.
Will merge to 'master' as part of the first batch.
* js/gitweb-path-info-unquote (2012-08-15) 1 commit
(merged to 'next' on 2012-08-20 at a4aa740)
+ gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO
(Originally merged to 'next' on 2012-08-15)
Stripping of PATH_INFO in gitweb did not take url style quoting into
account, failing to notice directories with funny characters e.g. SP
in their paths.
Will merge to 'master' as part of the first batch.
* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
(merged to 'next' on 2012-08-20 at f671bd2)
+ rebase -i: use full onto sha1 in reflog
The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.
* mz/empty-rebase-test (2012-08-09) 1 commit
(merged to 'next' on 2012-08-20 at 53e2419)
+ add tests for 'git rebase --keep-empty'
* jc/capabilities (2012-08-13) 3 commits
(merged to 'next' on 2012-08-20 at 1976e47)
+ fetch-pack: mention server version with verbose output
+ parse_feature_request: make it easier to see feature values
+ fetch-pack: do not ask for unadvertised capabilities
(this branch uses jk/version-string.)
Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available. Fix fetch-pack not to do so.
* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
- git p4: make branch detection work with --use-client-spec
- git p4: do wildcard decoding in stripRepoPath
- git p4: set self.branchPrefixes in initialization
- git p4 test: add broken --use-client-spec --detect-branches tests
- git p4 test: move client_view() function to library
Will merge to 'next' and soon to 'master'.
* jc/maint-push-refs-all (2012-08-07) 2 commits
- get_fetch_map(): tighten checks on dest refs
- fetch/push: allow refs/*:refs/*
Allows pushing and fetching refs/stash.
Need to send it out to the list for review.
* jk/version-string (2012-08-10) 3 commits
(merged to 'next' on 2012-08-20 at 6d207bb)
+ do not send client agent unless server does first
+ send-pack: fix capability-sending logic
+ include agent identifier in capability string
(this branch is used by jc/capabilities.)
(Originally merged to 'next' on 2012-08-10)
Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.
Will merge to 'master' as part of the third batch.
* js/grep-patterntype-config (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 39a0431)
+ grep: add a grep.patternType configuration setting
(Originally merged to 'next' on 2012-08-09)
"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.
Will merge to 'master' as part of the second batch.
* mm/die-with-dashdash-help (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at ebe0e1a)
+ setup: clarify error messages for file/revisions ambiguity
(Originally merged to 'next' on 2012-08-09)
Reword error messages.
Will merge to 'master' as part of the first batch.
* tr/merge-recursive-flush (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 00aeb19)
+ merge-recursive: eliminate flush_buffer() in favor of write_in_full()
(Originally merged to 'next' on 2012-08-09)
Remove unnecessary code.
Will merge to 'master' as part of the first batch.
* tr/void-diff-setup-done (2012-08-03) 1 commit
(merged to 'next' on 2012-08-20 at 2f21f63)
+ diff_setup_done(): return void
(Originally merged to 'next' on 2012-08-09)
Remove unnecessary code.
Will merge to 'master' as part of the first batch.
* mk/test-seq (2012-08-04) 1 commit
(merged to 'next' on 2012-08-20 at c373e0e)
+ tests: Introduce test_seq
(this branch is used by ab/diff-write-incomplete-line.)
(Originally merged to 'next' on 2012-08-06)
Add a compatibility/utility function to the test framework.
Will merge to 'master' as part of the first batch.
* ab/diff-write-incomplete-line (2012-08-05) 1 commit
(merged to 'next' on 2012-08-20 at e28b804)
+ Fix '\ No newline...' annotation in rewrite diffs
(this branch uses mk/test-seq.)
(Originally merged to 'next' on 2012-08-07)
The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.
Will merge to 'master' as part of the second batch.
* pg/maint-apply-remove-unused-variable (2012-08-05) 1 commit
(merged to 'next' on 2012-08-20 at 260975b)
+ apply: delete unused deflate_origlen from patch struct
(Originally merged to 'next' on 2012-08-05)
Remove an unused field.
Will merge to 'master' as part of the first batch.
* tg/index-v5 (2012-08-17) 13 commits
- p0002-index.sh: add perf test for the index formats
- update-index.c: rewrite index when index-version is given
- Write resolve-undo data for index-v5
- Write index-v5 cache-tree data
- Write index-v5
- Read cache-tree in index-v5
- Read resolve-undo data
- Read index-v5
- Make in-memory format aware of stat_crc
- Add documentation of the index-v5 file format
- t2104: Don't fail for index versions other than [23]
- read-cache.c: Re-read index if index file changed
- Move index v2 specific functions to their own file
A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.
* nd/index-errno (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 34076c6)
+ read_index_from: remove bogus errno assignments
(Originally merged to 'next' on 2012-08-06)
Assignments to errno before calling system functions that used to
matter in the old code were left behind after the code structure
changed sufficiently to make them useless.
Will merge to 'master' as part of the first batch.
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at 0d76cf2)
+ sane_execvp(): ignore non-directory on $PATH
(Originally merged to 'next' on 2012-08-09)
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
Will merge to 'master' as part of the third batch.
* tr/maint-send-email-2047 (2012-07-31) 1 commit
(merged to 'next' on 2012-08-20 at cf5ee1c)
+ send-email: improve RFC2047 quote parsing
(Originally merged to 'next' on 2012-08-09)
"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.
Will merge to 'master' as part of the first batch.
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-20 at 0dc0590)
+ cherry-pick: add --allow-empty-message option
(Originally merged to 'next' on 2012-08-09)
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
Will merge to 'master' as part of the third batch.
* ms/git-svn-1.7 (2012-08-02) 20 commits
(merged to 'next' on 2012-08-21 at ae8aff9)
+ git-svn: remove ad-hoc canonicalizations
+ git-svn: canonicalize newly-minted URLs
+ git-svn: introduce add_path_to_url function
+ git-svn: canonicalize earlier
+ git-svn: replace URL escapes with canonicalization
+ git-svn: attempt to mimic SVN 1.7 URL canonicalization
+ t9107: fix typo
+ t9118: workaround inconsistency between SVN versions
+ Git::SVN{,::Ra}: canonicalize earlier
+ git-svn: path canonicalization uses SVN API
+ Git::SVN::Utils: remove irrelevant comment
+ git-svn: add join_paths() to safely concatenate paths
+ git-svn: factor out _collapse_dotdot function
+ git-svn: use SVN 1.7 to canonicalize when possible
+ git-svn: move canonicalization to Git::SVN::Utils
+ use Git::SVN{,::RA}->url accessor globally
+ use Git::SVN->path accessor globally
+ Git::SVN::Ra: use accessor for URLs
+ Git::SVN: use accessor for URLs internally
+ Git::SVN: use accessors internally for path
A series by Michael Schwern via Eric to update git-svn to revamp the
way URLs are internally passed around, to make it work with SVN 1.7.
Will merge to 'master' as part of the first batch.
* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at 3e2598a)
+ t7406: fix misleading "rev-parse --max-count=1 HEAD"
(Originally merged to 'next' on 2012-07-30)
Test clean-up, with no behaviour change.
Will merge to 'master' as part of the second batch.
* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
+ diff: do not use null sha1 as a sentinel value
(this branch is used by jk/maint-null-in-trees.)
"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.
* mz/cherry-code-cleanup (2012-07-29) 3 commits
(merged to 'next' on 2012-08-20 at bfb0457)
+ cherry: remove redundant check for merge commit
+ cherry: don't set ignored rev_info options
+ remove unnecessary parameter from get_patch_ids()
Minor code clean-up on the cherry-pick codepath.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-08-20 at e18ddd8)
+ config: "git config baa" should exit with status 1
(Originally merged to 'next' on 2012-07-30)
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
Will merge to 'master' as part of the third batch.
* jk/maint-null-in-trees (2012-07-29) 2 commits
(merged to 'next' on 2012-08-20 at 5bc2c49)
+ fsck: detect null sha1 in tree entries
+ do not write null sha1s to on-disk index
(this branch uses jk/maint-diff-nul40-as-sentinel.)
(Originally merged to 'next' on 2012-07-30)
We do not want a link to 0{40} object stored anywhere in our objects.
Will merge to 'master' as part of the second batch.
* sz/submodule-force-update (2012-07-25) 1 commit
- Make 'git submodule update --force' always check out submodules.
We may want a documentation update and a few tests.
Kicked back to 'pu'.
* jc/test-prereq (2012-08-04) 8 commits
(merged to 'next' on 2012-08-20 at dd44c4a)
+ fixup! t3910: use the UTF8_NFD_TO_NFC test prereq
+ t3910: use the UTF8_NFD_TO_NFC test prereq
+ test-lib: provide UTF8 behaviour as a prerequisite
+ t0050: use the SYMLINKS test prereq
+ t0050: use the CASE_INSENSITIVE_FS test prereq
+ test-lib: provide case insensitivity as a prerequisite
+ test: allow prerequisite to be evaluated lazily
+ test: rename $satisfied to $satisfied_prereq
(Originally merged to 'next' on 2012-08-04)
Teaches the test framework to probe rarely used prerequistes lazily,
and make use of it for detecting SYMLINKS, CASE_INSENSITIVE_FS and
NKD/NKC MacOS x gotcha.
Will merge to 'master' as part of the first batch.
* da/difftool-updates (2012-08-21) 13 commits
(merged to 'next' on 2012-08-21 at 332afe4)
+ difftool: silence warning
(merged to 'next' on 2012-08-20 at 2fecd90)
+ Add Code Compare v2.80.4 as a merge / diff tool for Windows
+ mergetool,difftool: Document --tool-help consistently
+ difftool: Disable --symlinks on cygwin
+ difftool: Handle compare() returning -1
+ difftool: Wrap long lines for readability
+ difftool: Check all return codes from compare()
+ difftool: Handle finding mergetools/ in a path with spaces
+ difftool: Use symlinks when diffing against the worktree
+ difftool: Call the temp directory "git-difftool"
+ difftool: Move option values into a hash
+ difftool: Eliminate global variables
+ difftool: Simplify print_tool_help()
(Originally merged to 'next' on 2012-08-10)
"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.
Will merge to 'master' as part of the second batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
(Originally merged to 'next' on 2012-07-23)
Will defer until the end of the 2012,
waiting for older "less" to go extinct.
* mm/push-default-switch-warning (2012-06-24) 1 commit
(merged to 'next' on 2012-08-20 at 553e6c0)
+ push: start warning upcoming default change for push.default
(Originally merged to 'next' on 2012-06-26)
In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).
Will merge to 'master' as part of the second batch.
--------------------------------------------------
[Discarded]
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
. macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead. It turns out that there was no noticeable
improvements.
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Aug 2012, #06; Sun, 19)
@ 2012-08-20 7:00 5% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-20 7:00 UTC (permalink / raw)
To: git; +Cc: Eric Wong, Pete Wyckoff, Luke Diamand, Erik Faye-Lund,
Stefan Zager
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
Now 1.7.12 is out, we will have a few days of calming down period on
the 'master' front, just in case we have to deal with brown paper
bag post-release fixes, and then start getting the topics that have
been cooking on the 'next' branch graduate to the 'master', perhaps
starting on coming Wednesday.
For this cycle, we already have fairly well cooked topics, many of
which are on 'next', and the git-svn updates for svn 1.7 by Michael
G Schwern is also a candidate for early graduation, provided if Eric
is OK with the series (I'd need to double check with him). There
also were some topics that were almost there already during their
review discussions but somehow lost momentum when we got distracted,
and I think most of them would be ready fairly quickly if the
respective owners of the topics (you know who you are) can find time
to put some work into them.
So I'm planning to keep this cycle reasonably short and aim for
tagging the result as 1.8.0 at the end of the 9th week, on October
21st, after which I'd disappear for a few weeks.
http://tinyurl.com/gitCal is where you can always find my rough
tagging schedule at.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* kk/maint-for-each-ref-multi-sort (2012-08-19) 2 commits
- for-each-ref: Fix sort with multiple keys
- t6300: test sort with multiple keys
A small and sensible fix, even though the accompanying test seems to
touch too many unrelated existing ones needlessly, which may want to
be fixed by a reroll.
--------------------------------------------------
[Stalled]
* mz/rebase-range (2012-07-18) 7 commits
. rebase (without -p): correctly calculate patches to rebase
. rebase -p: don't request --left-right only to ignore left side
. rebase -p: use --cherry-mark for todo file
. git-rebase--interactive.sh: look up subject in add_pick_line
. git-rebase--interactive: group all $preserve_merges code
. git-rebase--interactive.sh: extract function for adding "pick" line
. git-rebase--am.sh: avoid special-casing --keep-empty
Expecting a reroll.
Performance concerns from Windows folks. Also the series lacks
proper sign-offs.
* jl/submodule-rm (2012-07-05) 2 commits
- rm: remove submodules from the index and the .gitmodules file
- rm: don't fail when removing populated submodules
Expecting a reroll.
* lt/commit-tree-guess-utf-8 (2012-06-28) 1 commit
- commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
A draft from Linus received privately without a log message.
Expecting a reroll.
* mb/remote-default-nn-origin (2012-07-11) 6 commits
- Teach get_default_remote to respect remote.default.
- Test that plain "git fetch" uses remote.default when on a detached HEAD.
- Teach clone to set remote.default.
- Teach "git remote" about remote.default.
- Teach remote.c about the remote.default configuration setting.
- Rename remote.c's default_remote_name static variables.
When the user does not specify what remote to interact with, we
often attempt to use 'origin'. This can now be customized via a
configuration variable.
Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.
--------------------------------------------------
[Cooking]
* hv/coding-guidelines (2012-08-15) 1 commit
(merged to 'next' on 2012-08-18 at 5a78f2c)
+ Documentation/CodingGuidelines: spell out more shell guidelines
In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.
Will merge to 'master' as part of the first batch.
* jc/daemon-access-hook (2012-08-15) 1 commit
- daemon: --access-hook option
Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.
Will merge to 'next'.
* jc/send-email-reconfirm (2012-08-14) 1 commit
- send-email: validate & reconfirm interactive responses
Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.
Will merge to 'next'.
* pw/p4-submit-conflicts (2012-08-16) 12 commits
- git p4: add submit --prepare-p4-only option
- git p4: add submit --dry-run option
- git p4: accept -v for --verbose
- git p4: revert deleted files after submit cancel
- git p4: rearrange submit template construction
- git p4: test clean-up after failed submit, fix added files
- git p4: standardize submit cancel due to unchanged template
- git p4: move conflict prompt into run, use [c]ontinue and [q]uit
- git p4: remove submit failure options [a]pply and [w]rite
- git p4: gracefully fail if some commits could not be applied
- git p4 test: use p4d -L option to suppress log messages
- git p4 test: remove bash-ism of combined export/assignment
I saw Pete and Luke going back and forth collaborating, so I take
that this may still be rerolled---if not, please holler.
* tx/relative-in-the-future (2012-08-16) 2 commits
- date: show relative dates in the future
- date: refactor the relative date logic from presentation
Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.
* ef/win32-cred-helper (2012-08-16) 1 commit
- contrib: add win32 credential-helper
Credential helper for Win32 (is this GUI???).
Will merge to 'next'.
* jc/maint-abbrev-option-cli (2012-08-16) 1 commit
(merged to 'next' on 2012-08-18 at e002006)
+ gitcli: describe abbreviation of long options
We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.
Will merge to 'master' as part of the first batch.
* mv/pull-r-for-rebase (2012-08-17) 1 commit
(merged to 'next' on 2012-08-18 at e7d885b)
+ man: git pull -r is a short for --rebase
Minor documentation update.
Will merge to 'master' as part of the first batch.
* rr/precompose-utf8-cleanup (2012-08-17) 1 commit
- cleanup precompose_utf8
A style and code cleanup.
Will merge to 'next'.
* jc/doc-git-updates (2012-08-17) 1 commit
(merged to 'next' on 2012-08-18 at f24913b)
+ Documentation: update the introductory section
Will merge to 'master' as part of the first batch.
* fa/remote-svn (2012-08-17) 16 commits
- Add a test script for remote-svn
- remote-svn: add marks-file regeneration
- Add a svnrdump-simulator replaying a dump file for testing
- remote-svn: add incremental import
- remote-svn: Activate import/export-marks for fast-import
- Create a note for every imported commit containing svn metadata
- vcs-svn: add fast_export_note to create notes
- Allow reading svn dumps from files via file:// urls
- remote-svn, vcs-svn: Enable fetching to private refs
- When debug==1, start fast-import with "--stats" instead of "--quiet"
- Add documentation for the 'bidi-import' capability of remote-helpers
- Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
- Add argv_array_detach and argv_array_free_detached
- Add svndump_init_fd to allow reading dumps from arbitrary FDs
- Integrate remote-svn into svn-fe/Makefile
- Implement a remote helper for svn in C
(this branch is used by fa/vcs-svn.)
* fa/vcs-svn (2012-08-18) 7 commits
- fixup: add missing cast to vcs-svn/fast_export.c
- fixup - no old style defn
- vcs-svn: remove repo_tree
- vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
- vcs-svn/svndump: restructure node_ctx, rev_ctx handling
- svndump: move struct definitions to .h
- vcs-svn: Add sha1 calculation to fast_export and line_buffer
(this branch uses fa/remote-svn.)
I haven't seen many comments and reviews from people involved in the
area, other than DBarr's worries on teaching exporter (which is
supposed to be Git agnostic, as its output "fast-import" format is
meant to be usable by others) to compute object names in Git way.
It is somewhat hard for me to judge these two series.
* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
- git-config doc: unconfuse an example
- git-config.txt: fix example
Will merge to 'next'.
* ph/stash-rerere (2012-08-17) 2 commits
- stash: invoke rerere in case of conflict
- test: git-stash conflict sets up rerere
"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.
Will merge to 'next'.
* hv/submodule-path-unmatch (2012-08-14) 1 commit
- Let submodule command exit with error status if path does not exist
As the title says.
Will merge to 'next'.
* jc/add-delete-default (2012-08-13) 1 commit
- git add: notice removal of tracked paths by default
"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users. They
can of course use "git add -A dir/", but why should they?
Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.
* jc/maint-rev-list-topo-doc (2012-08-15) 1 commit
(merged to 'next' on 2012-08-18 at d1f54d9)
+ rev-list docs: clarify --topo-order description
It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".
Will merge to 'master' as part of the first batch.
* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
(merged to 'next' on 2012-08-07 at d7aa316)
+ receive-pack: do not leak output from auto-gc to standard output
+ t/t5400: demonstrate breakage caused by informational message from prune
When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.
Will merge to 'master' as part of the second batch.
* bc/prune-info (2012-08-07) 1 commit
- prune.c: only print informational message in show_only or verbose mode
Teach "git prune" without "-v" to be silent about leftover temporary files.
Will merge to 'next'.
* jc/tag-doc (2012-08-06) 1 commit
(merged to 'next' on 2012-08-18 at 9fe64b2)
+ Documentation: do not mention .git/refs/* directories
Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.
Will merge to 'master' as part of the first batch.
* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
(merged to 'next' on 2012-08-18 at 7e02bf8)
+ docs: monospace listings in docbook output
The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.
Will merge to 'master' as part of the second batch.
* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
- sh-setup: protect from exported IFS
When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail. Protect them from such a misconfiguration.
Will merge to 'next'.
* jk/check-docs-update (2012-08-08) 8 commits
(merged to 'next' on 2012-08-18 at 4409d2e)
+ check-docs: get documented command list from Makefile
+ check-docs: drop git-help special-case
+ check-docs: list git-gui as a command
+ check-docs: factor out command-list
+ command-list: mention git-credential-* helpers
+ command-list: add git-sh-i18n
+ check-docs: update non-command documentation list
+ check-docs: mention gitweb specially
Simplify "make check-docs" implementation and update its coverage.
Will merge to 'master' as part of the first batch.
* js/gitweb-path-info-unquote (2012-08-15) 1 commit
(merged to 'next' on 2012-08-15 at 844da17)
+ gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO
Stripping of PATH_INFO in gitweb did not take url style quoting into
account, failing to notice directories with funny characters e.g. SP
in their paths.
Will merge to 'master' as part of the first batch.
* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
- rebase -i: use full onto sha1 in reflog
The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.
Will merge to 'next'.
* mz/empty-rebase-test (2012-08-09) 1 commit
- add tests for 'git rebase --keep-empty'
Will merge to 'next'.
* jc/capabilities (2012-08-13) 3 commits
- fetch-pack: mention server version with verbose output
- parse_feature_request: make it easier to see feature values
- fetch-pack: do not ask for unadvertised capabilities
(this branch uses jk/version-string.)
Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available. Fix fetch-pack not to do so.
Will merge to 'next'.
* pw/p4-use-client-spec-branch-detection (2012-08-11) 5 commits
- git p4: make branch detection work with --use-client-spec
- git p4: do wildcard decoding in stripRepoPath
- git p4: set self.branchPrefixes in initialization
- git p4 test: add broken --use-client-spec --detect-branches tests
- git p4 test: move client_view() function to library
Will merge to 'next' and soon to 'master'.
* jc/maint-push-refs-all (2012-08-07) 2 commits
- get_fetch_map(): tighten checks on dest refs
- fetch/push: allow refs/*:refs/*
Allows pushing and fetching refs/stash.
Need to send it out to the list for review.
* jk/version-string (2012-08-10) 3 commits
(merged to 'next' on 2012-08-10 at d8dcb00)
+ do not send client agent unless server does first
+ send-pack: fix capability-sending logic
(merged to 'next' on 2012-08-09 at 64dc91b)
+ include agent identifier in capability string
(this branch is used by jc/capabilities.)
Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.
Will merge to 'master' as part of the third batch.
* js/grep-patterntype-config (2012-08-03) 1 commit
(merged to 'next' on 2012-08-09 at 1a08d6c)
+ grep: add a grep.patternType configuration setting
"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.
Will merge to 'master' as part of the second batch.
* mm/die-with-dashdash-help (2012-08-03) 1 commit
(merged to 'next' on 2012-08-09 at 1aae096)
+ setup: clarify error messages for file/revisions ambiguity
Reword error messages.
Will merge to 'master' as part of the first batch.
* tr/merge-recursive-flush (2012-08-03) 1 commit
(merged to 'next' on 2012-08-09 at da826ec)
+ merge-recursive: eliminate flush_buffer() in favor of write_in_full()
Remove unnecessary code.
Will merge to 'master' as part of the first batch.
* tr/void-diff-setup-done (2012-08-03) 1 commit
(merged to 'next' on 2012-08-09 at 668a46f)
+ diff_setup_done(): return void
Remove unnecessary code.
Will merge to 'master' as part of the first batch.
* mk/test-seq (2012-08-04) 1 commit
(merged to 'next' on 2012-08-06 at 3f6917c)
+ tests: Introduce test_seq
(this branch is used by ab/diff-write-incomplete-line.)
Add a compatibility/utility function to the test framework.
Will merge to 'master' as part of the first batch.
* ab/diff-write-incomplete-line (2012-08-05) 1 commit
(merged to 'next' on 2012-08-07 at dcf02ae)
+ Fix '\ No newline...' annotation in rewrite diffs
(this branch uses mk/test-seq.)
The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.
Will merge to 'master' as part of the second batch.
* pg/maint-apply-remove-unused-variable (2012-08-05) 1 commit
(merged to 'next' on 2012-08-05 at aa9f5e9)
+ apply: delete unused deflate_origlen from patch struct
Remove unused field.
Will merge to 'master' as part of the first batch.
* tg/index-v5 (2012-08-17) 13 commits
- p0002-index.sh: add perf test for the index formats
- update-index.c: rewrite index when index-version is given
- Write resolve-undo data for index-v5
- Write index-v5 cache-tree data
- Write index-v5
- Read cache-tree in index-v5
- Read resolve-undo data
- Read index-v5
- Make in-memory format aware of stat_crc
- Add documentation of the index-v5 file format
- t2104: Don't fail for index versions other than [23]
- read-cache.c: Re-read index if index file changed
- Move index v2 specific functions to their own file
A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.
* nd/index-errno (2012-08-06) 1 commit
(merged to 'next' on 2012-08-06 at a9f2101)
+ read_index_from: remove bogus errno assignments
Assignments to errno before calling system functions that used to
matter in the old code were left behind after the code structure
changed sufficiently to make them useless.
Will merge to 'master' as part of the first batch.
* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
(merged to 'next' on 2012-08-09 at 5dd4240)
+ sane_execvp(): ignore non-directory on $PATH
"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.
Will merge to 'master' as part of the third batch.
* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
(merged to 'next' on 2012-08-09 at 832c238)
+ macos: lazily initialize iconv
Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.
Needs some work to rename functions
as mentioned by Linus in the discussion.
* tr/maint-send-email-2047 (2012-07-31) 1 commit
(merged to 'next' on 2012-08-09 at 17dfe57)
+ send-email: improve RFC2047 quote parsing
"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.
Will merge to 'master' as part of the first batch.
* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
(merged to 'next' on 2012-08-09 at eab95f6)
+ cherry-pick: add --allow-empty-message option
"git cherry-pick" by default stops when it sees a commit without any
log message. The "--allow-empty-message" option can be used to
silently proceed.
Will merge to 'master' as part of the third batch.
* ms/git-svn-1.7 (2012-08-02) 20 commits
- git-svn: remove ad-hoc canonicalizations
- git-svn: canonicalize newly-minted URLs
- git-svn: introduce add_path_to_url function
- git-svn: canonicalize earlier
- git-svn: replace URL escapes with canonicalization
- git-svn: attempt to mimic SVN 1.7 URL canonicalization
- t9107: fix typo
- t9118: workaround inconsistency between SVN versions
- Git::SVN{,::Ra}: canonicalize earlier
- git-svn: path canonicalization uses SVN API
- Git::SVN::Utils: remove irrelevant comment
- git-svn: add join_paths() to safely concatenate paths
- git-svn: factor out _collapse_dotdot function
- git-svn: use SVN 1.7 to canonicalize when possible
- git-svn: move canonicalization to Git::SVN::Utils
- use Git::SVN{,::RA}->url accessor globally
- use Git::SVN->path accessor globally
- Git::SVN::Ra: use accessor for URLs
- Git::SVN: use accessor for URLs internally
- Git::SVN: use accessors internally for path
A series by Michael Schwern via Eric to update git-svn to revamp the
way URLs are internally passed around, to make it work with SVN 1.7.
Will merge to 'next' after pinging Eric to double check and then to 'master'.
* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
(merged to 'next' on 2012-07-30 at 9b27acc)
+ t7406: fix misleading "rev-parse --max-count=1 HEAD"
Test clean-up, with no behaviour change.
Will merge to 'master' as part of the second batch.
* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
+ diff: do not use null sha1 as a sentinel value
(this branch is used by jk/maint-null-in-trees.)
"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.
* mz/cherry-code-cleanup (2012-07-29) 3 commits
- cherry: remove redundant check for merge commit
- cherry: don't set ignored rev_info options
- remove unnecessary parameter from get_patch_ids()
Minor code clean-up on the cherry-pick codepath.
Will merge to 'next'.
* jc/maint-config-exit-status (2012-07-30) 1 commit
(merged to 'next' on 2012-07-30 at 8392da9)
+ config: "git config baa" should exit with status 1
The exit status code from "git config" was way overspecified while
being incorrect. Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".
Will merge to 'master' as part of the third batch.
* jk/maint-null-in-trees (2012-07-29) 2 commits
(merged to 'next' on 2012-07-30 at 771c497)
+ fsck: detect null sha1 in tree entries
+ do not write null sha1s to on-disk index
(this branch uses jk/maint-diff-nul40-as-sentinel.)
We do not want a link to 0{40} object stored anywhere in our objects.
Will merge to 'master' as part of the second batch.
* sz/submodule-force-update (2012-07-25) 1 commit
(merged to 'next' on 2012-07-26 at 3bda2be)
+ Make 'git submodule update --force' always check out submodules.
We may want a documentation update and a few tests on top.
* jc/test-prereq (2012-08-04) 8 commits
(merged to 'next' on 2012-08-04 at 6dd9156)
+ fixup! t3910: use the UTF8_NFD_TO_NFC test prereq
(merged to 'next' on 2012-07-30 at b7c6949)
+ t3910: use the UTF8_NFD_TO_NFC test prereq
(merged to 'next' on 2012-07-27 at 448cbbc)
+ test-lib: provide UTF8 behaviour as a prerequisite
+ t0050: use the SYMLINKS test prereq
+ t0050: use the CASE_INSENSITIVE_FS test prereq
+ test-lib: provide case insensitivity as a prerequisite
+ test: allow prerequisite to be evaluated lazily
+ test: rename $satisfied to $satisfied_prereq
Teaches the test framework to probe rarely used prerequistes lazily,
and make use of it for detecting SYMLINKS, CASE_INSENSITIVE_FS and
NKD/NKC MacOS x gotcha.
Will merge to 'master' as part of the first batch.
* da/difftool-updates (2012-08-10) 12 commits
(merged to 'next' on 2012-08-10 at 4accbf6)
+ Add Code Compare v2.80.4 as a merge / diff tool for Windows
+ mergetool,difftool: Document --tool-help consistently
(merged to 'next' on 2012-07-26 at 3263461)
+ difftool: Disable --symlinks on cygwin
+ difftool: Handle compare() returning -1
+ difftool: Wrap long lines for readability
+ difftool: Check all return codes from compare()
+ difftool: Handle finding mergetools/ in a path with spaces
(merged to 'next' on 2012-07-23 at 96528a7)
+ difftool: Use symlinks when diffing against the worktree
+ difftool: Call the temp directory "git-difftool"
+ difftool: Move option values into a hash
+ difftool: Eliminate global variables
+ difftool: Simplify print_tool_help()
"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.
Will merge to 'master' as part of the second batch.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
(merged to 'next' on 2012-07-23 at fe59cb6)
+ pager: drop "wait for output to run less" hack
Will defer until the end of the 2012,
waiting for older "less" to go extinct.
* mm/push-default-switch-warning (2012-06-24) 1 commit
(merged to 'next' on 2012-06-26 at fea512a)
+ push: start warning upcoming default change for push.default
Will merge to 'master' as part of the second batch.
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Jun 2012, #08; Thu, 28)
@ 2012-06-28 23:35 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-06-28 23:35 UTC (permalink / raw)
To: git; +Cc: Thomas Rast, Linus Torvalds, Jonathan Nieder, Jeff King
What's cooking in git.git (Jun 2012, #08; Thu, 28)
--------------------------------------------------
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
The third batch of topics have graduated to 'master', and a handful
of topics have entered 'next' for developer testing.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* fc/git-prompt-script (2012-06-19) 7 commits
(merged to 'next' on 2012-06-25 at e690a02)
+ completion: respect $GIT_DIR
+ completion: warn people about duplicated function
+ completion: split __git_ps1 into a separate script
+ completion: remove executable mode
+ Merge branch 'fc/git-complete-helper' into fc/git-prompt-script
+ tests: add tests for the bash prompt functions in the completion script
+ tests: move code to run tests under bash into a helper library
Split a rather heavy-ish "git completion" script out to create a
separate "git prompting" script, to help lazy-autoloading of the
completion part while making prompting part always available.
* hv/submodule-update-nuke-submodules (2012-06-11) 1 commit
(merged to 'next' on 2012-06-25 at bbfcd02)
+ update-index: allow overwriting existing submodule index entries
"git add" allows adding a regular file to the path where a submodule
used to exist, but "git update-index" does not allow an equivalent
operation to Porcelain writers.
* jc/rev-list-simplify-merges-first-parent (2012-06-13) 3 commits
(merged to 'next' on 2012-06-25 at 4c5ffbe)
+ revision: ignore side parents while running simplify-merges
+ revision: note the lack of free() in simplify_merges()
+ revision: "simplify" options imply topo-order sort
When "git log" is given "--simplify-merges/by-decoration" together
with "--first-parent", the combination of these options makes the
simplification logic to use in-core commit objects that haven't been
examined for relevance, either producing incorrect result or taking
too long to produce any output. Teach the simplification logic to
ignore commits that the first-parent traversal logic ignored when
both are in effect to work around the issue.
* jk/diff-no-index-pager (2012-06-15) 2 commits
(merged to 'next' on 2012-06-21 at e2a2562)
+ do not run pager with diff --no-index --quiet
+ fix pager.diff with diff --no-index
"git diff --no-index" did not work with pagers correctly.
* js/submodule-relative (2012-06-14) 5 commits
(merged to 'next' on 2012-06-25 at 310ed77)
+ t7400: avoid path mangling issues
+ submodule: fix handling of superproject origin URLs like foo, ./foo and ./foo/bar
+ submodule: fix sync handling of some relative superproject origin URLs
+ submodule: document failure to handle relative superproject origin URLs
+ submodule: additional regression tests for relative URLs
Teach "git submodule" deal with nested submodule structure where a
module is contained within a module whose origin is specified as a
relative URL to its superproject's origin.
* lk/more-helpful-status-hints (2012-06-14) 4 commits
(merged to 'next' on 2012-06-25 at 6502d4b)
+ status: better advices when splitting a commit (during rebase -i)
+ status: don't suggest "git rm" or "git add" if not appropriate
+ t7512-status-help.sh: better advices for git status
+ wt-status.*: better advices for git status added
Give finer classification to various states of paths in conflicted
state and offer advice messages in the "git status" output.
* lk/rebase-i-x (2012-06-13) 1 commit
(merged to 'next' on 2012-06-25 at 8252da2)
+ rebase -i: teach "--exec <cmd>"
Teach "-x <cmd>" to "rebase -i" to insert "exec <cmd>" after each
commit in the resulting history.
* mm/verify-filename-fix (2012-06-18) 2 commits
(merged to 'next' on 2012-06-21 at d03dace)
+ verify_filename(): ask the caller to chose the kind of diagnosis
+ sha1_name: do not trigger detailed diagnosis for file arguments
"git diff COPYING HEAD:COPYING" gave a nonsense error message that
claimed that the treeish HEAD did not have COPYING in it.
* nd/exclude-workaround-top-heavy (2012-06-07) 3 commits
(merged to 'next' on 2012-06-25 at 08429bb)
+ exclude: do strcmp as much as possible before fnmatch
+ dir.c: get rid of the wildcard symbol set in no_wildcard()
+ Unindent excluded_from_list()
Attempt to optimize matching with an exclude pattern with a deep
directory hierarchy by taking the part that specifies leading path
without wildcard literally.
* nd/stream-index-pack (2012-05-24) 4 commits
(merged to 'next' on 2012-06-25 at 3084674)
+ index-pack: use streaming interface for collision test on large blobs
+ index-pack: factor out unpack core from get_data_from_pack
+ index-pack: use streaming interface on large blobs (most of the time)
+ index-pack: hash non-delta objects while reading from stream
Use streaming API to read from the object store to avoid having to hold
a large blob object in-core while running index-pack.
* nd/stream-pack-objects (2012-05-29) 1 commit
(merged to 'next' on 2012-06-25 at fa91345)
+ pack-objects: use streaming interface for reading large loose blobs
"pack-objects" learned to read large loose blobs using the streaming API,
without the need to hold everything in core at once.
--------------------------------------------------
[New Topics]
* tb/sanitize-decomposed-utf-8-pathname (2012-06-25) 1 commit
- git on Mac OS and precomposed unicode
Teaches git to normalize pathnames read from readdir(3) and all
arguments from the command line into precomposed UTF-8 (assuming
that they come as decomposed UTF-8) to work around issues on Mac OS.
I think there still are other places that need conversion
(e.g. paths that are read from stdin for some commands), but this
should be a step in the right direction.
Will merge to 'next'.
* cw/no-detaching-an-unborn (2012-06-26) 1 commit
- git-checkout: disallow --detach on unborn branch
"git checkout --detach" when you are still on an unborn branch
should be forbidden, but it wasn't.
Will merge to 'next'.
* cw/rebase-i-root (2012-06-26) 2 commits
- Add tests for rebase -i --root without --onto
- rebase -i: support --root without --onto
"git rebase [-i] --root $tip" can now be used to rewrite all the
history down to the root.
Will merge to 'next'.
* js/fast-export-paths-with-spaces (2012-06-27) 1 commit
- fast-export: quote paths with spaces
"git fast-export" produced an input stream for fast-import without
properly quoting pathnames when they contain SPs in them.
Will merge to 'next'.
* mm/mediawiki-file-attachments (2012-06-27) 5 commits
- git-remote-mediawiki: import "File:" attachments
- git-remote-mediawiki: split get_mw_pages into smaller functions
- git-remote-mediawiki: send "File:" attachments to a remote wiki
- git-remote-mediawiki: don't "use encoding 'utf8';"
- git-remote-mediawiki: don't compute the diff when getting commit message
(this branch uses mm/credential-plumbing.)
"mediawiki" remote helper (in contrib/) learned to handle file
attachments.
Will merge to 'next'.
* mz/rebase-no-mbox (2012-06-26) 4 commits
- am: don't call mailinfo if $rebasing
- am --rebasing: get patch body from commit, not from mailbox
- rebase --root: print usage on too many args
- rebase: don't source git-sh-setup twice
Teach "am --rebasing" codepath to grab authorship, log message and
the patch text directly out of existing commits.
Will merge to 'next'.
* pw/git-p4-tests (2012-06-27) 10 commits
- git p4 test: fix badp4dir test
- git p4 test: split up big t9800 test
- git p4 test: cleanup_git should make a new $git
- git p4 test: copy source indeterminate
- git p4 test: check for error message in failed test
- git p4 test: rename some "git-p4 command" strings
- git p4 test: never create default test repo
- git p4 test: simplify quoting involving TRASH_DIRECTORY
- git p4 test: use real_path to resolve p4 client symlinks
- git p4 test: wait longer for p4d to start and test its pid
More "git p4" tests.
Will merge to 'next'.
* rj/platform-pread-may-be-thread-unsafe (2012-06-26) 1 commit
(merged to 'next' on 2012-06-28 at ce5f79f)
+ index-pack: Disable threading on cygwin
On Cygwin, the platform pread(3) is not thread safe, just like our
own compat/ emulation, and cannot be used in the index-pack program.
* jc/refactor-diff-stdin (2012-06-28) 3 commits
- diff-index.c: "git diff" has no need to read blob from the standard input
- diff-index.c: unify handling of command line paths
- diff-index.c: do not pretend paths are pathspecs
Due to the way "git diff --no-index" is bolted onto by touching the
low level code that is shared with the rest of the "git diff" code,
even though it has to work in a very different way, any comparison
that involves a file "-" at the root level incorrectly tried to read
from the standard input. This cleans up the no-index codepath
further to remove code that reads from the standard input from the
core side, which is never necessary when git is running its usual
diff operation.
Will merge to 'next', and later down to older maintenance releases.
* mz/empty-rebase-test (2012-06-27) 1 commit
- add test case for rebase of empty commit
We did not have test to make sure "git rebase" without extra options
filters out an empty commit in the original history.
* cw/help-over-network (2012-06-28) 2 commits
- Allow help.htmlpath to be a URL prefix
- Add config variable to set HTML path for git-help --web
"git help -w $cmd" can show HTML version of documentation for
"git-$cmd" by setting help.htmlpath to somewhere other than the
default location where the build procedure installs them locally;
the variable can even point at a http:// URL.
* lt/commit-tree-guess-utf-8 (2012-06-28) 1 commit
- commit/commit-tree: correct latin1 to utf-8
Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.
A draft from Linus received privately without a log message.
Hopefully it will be rerolled.
* jc/test-lib-source-build-options-early (2012-06-24) 1 commit
- test-lib: reorder and include GIT-BUILD-OPTIONS a lot earlier
(this branch uses vr/use-our-perl-in-tests.)
Reorders t/test-lib.sh so that we dot-source GIT-BUILD-OPTIONS that
records the shell and Perl the user told us to use with Git a lot
early, so that test-lib.sh script itself can use "$PERL_PATH" in
one of its early operations.
Needs to be eyeballed by people who run tests with exotic options
like valgrind, --root=/dev/shm/somewhere, etc.
--------------------------------------------------
[Stalled]
* db/vcs-svn (2012-06-01) 6 commits
- vcs-svn: drop no-op reset methods
- vcs-svn: fix signedness warnings
- vcs-svn: prefer strstr over memmem
- vcs-svn: prefer constcmp to prefixcmp
- vcs-svn: simplify cleanup in apply_one_window()
- vcs-svn: fix clang-analyzer error
Waiting for Jonathan's clean-up offered earlier.
* jc/apply-3way (2012-06-13) 19 commits
- apply --3way: tests
- apply: document --3way option
- apply: allow rerere() upon --3way results
- apply: register conflicted stages to the index
- apply: --3way with add/add conflict
- apply: move verify_index_match() higher
- apply: plug the three-way merge logic in
- apply: fall back on three-way merge
- apply: accept -3/--3way command line option
- apply: move "already exists" logic to check_to_create()
- apply: move check_to_create_blob() closer to its sole caller
- apply: further split load_preimage()
- apply: refactor "previous patch" logic
- apply: split load_preimage() helper function out
- apply: factor out checkout_target() helper function
- apply: refactor read_file_or_gitlink()
- apply: clear_image() clears things a bit more
- apply: a bit more comments on PATH_TO_BE_DELETED
- apply: fix an incomplete comment in check_patch()
"git apply" learns to wiggle the base version and perform three-way merge
when a patch does not exactly apply to the version you have.
Will merge to 'next' after reading it over once again.
* jc/maint-push-refs-all (2012-05-04) 2 commits
- get_fetch_map(): tighten checks on dest refs
- fetch/push: allow refs/*:refs/*
Allows pushing and fetching refs/stash.
There still seem to be other bugs hiding (e.g. try pushing twice).
Not ready.
* jc/split-blob (2012-04-03) 6 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent almost two months ago still remains here without much
comments and updates from the developer community. I even made the
interface to the logic that decides where to split chunks easily
replaceable, and I deliberately made the logic in the original patch
extremely stupid to entice others, especially the "bup" fanboys, to
come up with a better logic, thinking that giving people an easy
target to shoot for, they may be encouraged to help out. The plan is
not working :-(.
--------------------------------------------------
[Cooking]
* mm/config-xdg (2012-06-25) 4 commits
(merged to 'next' on 2012-06-28 at 57049d1)
+ config: write to $XDG_CONFIG_HOME/git/config file when appropriate
+ Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes
+ Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore
+ config: read (but not write) from $XDG_CONFIG_HOME/git/config file
Teach git to read various information from $XDG_CONFIG_HOME/git/ to allow
the user to avoid cluttering $HOME.
Will merge to 'next'.
* mm/credential-plumbing (2012-06-25) 3 commits
(merged to 'next' on 2012-06-28 at 6e6fe9f)
+ git-remote-mediawiki: add credential support
+ git credential fill: output the whole 'struct credential'
+ add 'git credential' plumbing command
(this branch is used by mm/mediawiki-file-attachments.)
Expose the credential API to scripted Porcelain writers.
Will merge to 'next'.
* th/diff-no-index-fixes (2012-06-22) 2 commits
(merged to 'next' on 2012-06-26 at 450e781)
+ diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes
+ diff: handle relative paths in no-index
"git diff --no-index" did not correctly handle relative paths and
did not correctly give exit codes when run under "--quiet" option.
Will merge to 'master'.
* nd/clone-single-fix (2012-06-22) 1 commit
(merged to 'next' on 2012-06-26 at c9fff5e)
+ clone: fix ref selection in --single-branch --branch=xxx
"git clone --single-branch" to clone a single branch did not limit
the cloning to the specified branch.
Will merge to 'master'.
* vr/use-our-perl-in-tests (2012-06-24) 4 commits
- t/README: add a bit more Don'ts
- tests: enclose $PERL_PATH in double quotes
- t/test-lib.sh: export PERL_PATH for use in scripts
- t: Replace 'perl' by $PERL_PATH
(this branch is used by jc/test-lib-source-build-options-early.)
Some implementations of Perl terminates "lines" with CRLF even when
the script is operating on just a sequence of bytes. Make sure to
use "$PERL_PATH", the version of Perl the user told Git to use, in
our tests to avoid unnecessary breakages in tests.
* jc/sha1-name-more (2012-06-23) 9 commits
- sha1_name.c: get_describe_name() by definition groks only commits
- sha1_name.c: teach get_short_sha1() a commit-only option
- sha1_name.c: allow get_short_sha1() to take other flags
- sha1_name.c: restructure disambiguation of short names
- sha1_name.c: correct misnamed "canonical" and "res"
- sha1_name.c: refactor find_short_packed_object()
- sha1_name.c: rename "now" to "current"
- sha1_name.c: clarify what "fake" is for in find_short_object_filename()
- sha1_name.c: indentation fix
Teaches the object name parser that a "git describe" output is
always a commit object, to prolong the lifetime of abbreviated
object name in it.
It has a handful of tests that expect failure and show directions
for a couple of enhancement ideas.
Will merge to 'next'.
* jk/version-string-dependency (2012-06-20) 11 commits
- Makefile: move GIT-VERSION-FILE dependencies closer to use
- Makefile: build instaweb similar to other scripts
- Makefile: update scripts when build-time parameters change
- Makefile: do not replace @@GIT_VERSION@@ in shell scripts
- Makefile: split prefix flags from GIT-CFLAGS
- Makefile: split GIT_USER_AGENT from GIT-CFLAGS
- Makefile: do not replace @@GIT_USER_AGENT@@ in scripts
- Makefile: apply dependencies consistently to sparse/asm targets
- Makefile: do not have git.o depend on common-cmds.h
- Makefile: fold MISC_H into LIB_H
- Makefile: sort LIB_H list
Will keep in 'pu' to give Peff and Jonathan to work out improvements
for a week or so.
* jn/perl-makemaker-leading-paths (2012-06-15) 1 commit
(merged to 'next' on 2012-06-28 at 286d854)
+ perl/Makefile: move "mkdir -p" to module installation loop for maintainability
Minor build tweak. People who do not use ExtUtils::MakeMaker may
want to test this before it hits the 'master' branch.
* tr/maint-show-walk (2012-06-19) 2 commits
- show: fix "range implies walking"
- Demonstrate git-show is broken with ranges
Fixes "git show"'s auto-walking behaviour, and make it behave just
like "git log" does when it walks.
Note that this is different from Thomas's patch.
Waiting for response from original author.
* hv/remote-end-hung-up (2012-06-19) 1 commit
(merged to 'next' on 2012-06-25 at d3f29e2)
+ remove the impression of unexpectedness when access is denied
When we get disconnected while expecting a response from the remote
side because authentication failed, we issued an error message "The
remote side hung up unexpectedly." Give hint that it may be a
permission problem in the message when we can reasonably suspect it.
Will merge to 'master'.
* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
- pager: drop "wait for output to run less" hack
Will defer for 6 months until ancient "less" goes extinct.
* mm/push-default-switch-warning (2012-06-24) 1 commit
(merged to 'next' on 2012-06-26 at fea512a)
+ push: start warning upcoming default change for push.default
Hopefully we can have a solidly tested series early in 1.7.12 or
1.7.13 at the latest.
--------------------------------------------------
[Discarded]
* nl/http-proxy-more (2012-05-11) 2 commits
. http: rename HTTP_REAUTH to HTTP_AUTH_RETRY
. http: Avoid limit of retrying request only twice
I queued only the later two patches from this series, even though they do
not make much sense without the first one that seems to need a bit more
work, so that we won't forget.
* jk/no-op-push-message (2012-05-30) 1 commit
. improve no-op push output
Rewords the status message of "git push" that pushed only one ref
differently from "Everything up-to-date", to give a bit more help to
people who get the message when their current branch is not pushed.
I had an impression after the discussion thread that a redesign is
coming, but it hasn't happened yet.
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Apr 2012, #08; Fri, 20)
@ 2012-04-21 0:06 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-04-21 0:06 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.
The third batch of topics in this cycle is now in 'master'.
You can find the changes described here in the integration branches of the
repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* bw/submodule-sed-solaris (2012-04-09) 1 commit
(merged to 'next' on 2012-04-12 at 3bf1d83)
+ Avoid bug in Solaris xpg4/sed as used in submodule
* ct/advise-push-default (2012-04-12) 3 commits
(merged to 'next' on 2012-04-12 at b0613cd)
+ Fix httpd tests that broke when non-ff push advice changed
+ clean up struct ref's nonfastforward field
+ push: Provide situational hints for non-fast-forward errors
(this branch is used by mm/push-default-switch-warning.)
Breaks down the cases in which "git push" fails due to non-ff into three
categories, and gives separate advise messages. This should be a good
change regardless of mm/push-default-switch-warning topic.
* jb/am-include (2012-03-28) 1 commit
(merged to 'next' on 2012-04-12 at ddbf96d)
+ am: support --include option
"git am" learned the "--include" option, which is an opposite of existing
the "--exclude" option.
* jc/am-report-3way (2012-03-28) 1 commit
(merged to 'next' on 2012-04-12 at cf5d599)
+ am -3: list the paths that needed 3-way fallback
When "git am -3" needs to fall back to an application to a synthesized
preimage followed by a 3-way merge, the paths that needed such treatment
are now reported to the end user, so that the result in them can be
eyeballed with extra care.
* jc/fmt-merge-msg-people (2012-03-13) 1 commit
(merged to 'next' on 2012-04-12 at 4c2031c)
+ fmt-merge-msg: show those involved in a merged series
The "fmt-merge-msg" command learns to list the primary contributors
involved in the side topic you are merging.
* jc/push-upstream-sanity (2012-04-05) 1 commit
(merged to 'next' on 2012-04-12 at 288e1ad)
+ push: error out when the "upstream" semantics does not make sense
(this branch is used by mm/push-default-switch-warning.)
Fix broken 'push to upstream' implementation. "git push $there" without
refspec, when the current branch is set to push to a remote different from
$there, used to push to $there using the upstream information to a remote
unreleated to $there.
* jk/run-command-eacces (2012-04-05) 2 commits
(merged to 'next' on 2012-04-12 at ef3782e)
+ run-command: treat inaccessible directories as ENOENT
+ compat/mingw.[ch]: Change return type of exec functions to int
When PATH contains an unreadable directory, alias expansion code did not
kick in, and failed with an error that said "git-subcmd" was not found.
* js/spawn-via-shell-path-fix (2012-04-17) 1 commit
(merged to 'next' on 2012-04-19 at 3e04ef6)
+ Do not use SHELL_PATH from build system in prepare_shell_cmd on Windows
Mops up an unfortunate fallout from bw/spawn-via-shell-path topic.
--------------------------------------------------
[New Topics]
* bw/test-fix-grep-gnuism (2012-04-19) 1 commit
(merged to 'next' on 2012-04-20 at ee7eec4)
+ t9400: fix gnuism in grep
Fix two places that were the only place in the test suite that gave "a\+"
to platform grep and expected it to mean one or more "a", which is a
blatant GNUism.
* rt/cherry-revert-conflict-summary (2012-04-19) 1 commit
- sequencer: remove additional blank line
In the older days, the header "Conflicts:" in "cherry-pick" and
"merge" was separated by a blank line from the list of paths that
follow for readability, but when "merge" was rewritten in C, we lost
it by mistake. Remove the newline from "cherry-pick" to make them
match again.
* js/fast-import-test-9300 (2012-04-20) 1 commit
- t9300-fast-import: avoid 'exit' in test_expect_success snippets
--------------------------------------------------
[Stalled]
* jc/split-blob (2012-04-03) 7 commits
- chunked-object: streaming checkout
- chunked-object: fallback checkout codepaths
- bulk-checkin: support chunked-object encoding
- bulk-checkin: allow the same data to be multiply hashed
- new representation types in the packstream
- packfile: use varint functions
+ varint: make it available outside the context of pack
(this branch is tangled with jc/index-v4.)
Not ready.
I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.
Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent almost two months ago still remains here without much
comments and updates from the developer community. I even made the
interface to the logic that decides where to split chunks easily
replaceable, and I deliberately made the logic in the original patch
extremely stupid to entice others, especially the "bup" fanboys, to
come up with a better logic, thinking that giving people an easy
target to shoot for, they may be encouraged to help out. The plan is
not working :-(.
--------------------------------------------------
[Cooking]
* jm/maint-strncpy-diff-no-index (2012-04-16) 1 commit
(merged to 'next' on 2012-04-20 at 638ed9f)
+ diff: avoid stack-buffer-read-overrun for very long name
* lp/diffstat-with-graph (2012-04-18) 6 commits
- Prevent graph_width of stat width from falling below min
- t4052: Test diff-stat output with minimum columns
- t4052: Adjust --graph --stat output for prefixes
- Adjust stat width calculations to take --graph output into account
- Add output_prefix_length to diff_options
- t4052: test --stat output with --graph
Looked reasonable.
Will merge to 'next'.
* jc/merge-reduce-parents-early (2012-04-18) 5 commits
- fmt-merge-msg: discard needless merge parents
- builtin/merge.c: reduce parents early
- builtin/merge.c: collect other parents early
- builtin/merge.c: remove "remoteheads" global variable
- merge tests: octopus with redundant parents
(this branch is tangled with lt/octopus-simplify.)
I based this and Linus's on top of the same test script, but it
turns out that this is more correct way to deal with the issue, so
I'll drop the other one.
* rj/mingw-isguid (2012-04-18) 1 commit
(merged to 'next' on 2012-04-20 at 9dbebca)
+ compat/mingw.h: Set S_ISUID to prevent a fast-import test failure
* rj/sh-setup-mswin-pwd (2012-04-18) 1 commit
(merged to 'next' on 2012-04-20 at 6125f8d)
+ git-sh-setup.sh: Add an pwd() function for MinGW
* rj/submodule-mswin-path (2012-04-18) 1 commit
(merged to 'next' on 2012-04-20 at fd9f8b3)
+ git-submodule.sh: Don't use $path variable in eval_gettext string
* lp/maint-diff-three-dash-with-graph (2012-03-20) 3 commits
(merged to 'next' on 2012-04-20 at b6cf0ff)
+ t4202: add test for "log --graph --stat -p" separator lines
+ log --graph: fix break in graph lines
+ log --graph --stat: three-dash separator should come after graph lines
* cb/cherry-pick-rev-path-confusion (2012-04-15) 1 commit
- cherry-pick: do not expect file arguments
The command line parser choked "git cherry-pick $name" when $name can be
both revision name and a pathname, even though $name can never be a path
in the context of the command.
The issue the patch addresses is real, but the way it is implemented felt
unnecessarily invasive a bit. It may be cleaner for this caller to add
the "--" to the end of the argv_array it passes to setup_revisions().
* cb/daemon-test-race-fix (2012-04-19) 1 commit
- git-daemon wrapper to wait until daemon is ready
Fix race condition between starting and waiting for git-daemon in the
test.
Re-queued with a fix.
* cb/maint-report-mount-point-correctly-in-setup (2012-04-15) 1 commit
- properly keep track of current working directory
The filesystem boundary was not correctly reported when .git directory
discovery stopped at a mount point.
Will merge to 'next'.
* jl/maint-submodule-recurse-fetch (2012-04-14) 1 commit
(merged to 'next' on 2012-04-20 at 2769d39)
+ submodules: recursive fetch also checks new tags for submodule commits
* jn/fast-import-doc (2012-04-15) 1 commit
(merged to 'next' on 2012-04-20 at b9a7250)
+ fast-import doc: cat-blob and ls responses need to be consumed quickly
* jn/more-i18ncmp (2012-04-14) 3 commits
(merged to 'next' on 2012-04-20 at b5548a3)
+ test: am of empty patch should not succeed
+ test: use test_i18ncmp for "Patch format detection failed" message
+ test: do not rely on US English tracking-info messages
* rl/maint-stash-i18n-save-error (2012-04-14) 1 commit
- stash: use eval_gettextln correctly
Will merge to 'next'.
* nd/columns (2012-04-15) 9 commits
- tag: add --column
- column: support piping stdout to external git-column process
- status: add --column
- branch: add --column
- help: reuse print_columns() for help -a
- column: add dense layout support
- column: add columnar layout
- Stop starting pager recursively
- Add column layout skeleton and git-column
Will merge to 'next'.
* nl/http-proxy-more (2012-04-19) 7 commits
- http: fix proxy password passing
- http: fix proxy authentication
- http: rename HTTP_REAUTH to HTTP_AUTH_RETRY
- http: Avoid limit of retrying request only twice
- http: handle proxy authentication failure (error 407)
- http: handle proxy proactive authentication
- http: try http_proxy env var when http.proxy config option is not set
The code to talk to http proxies learn to use the same credential
API used to talk to the final http destinations. This still needs
to peek into $ENV{HTTPS_PROXY}.
* mb/fetch-call-a-non-branch-a-ref (2012-04-17) 2 commits
(merged to 'next' on 2012-04-20 at df2c57e)
+ fetch: describe new refs based on where it came from
+ fetch: Give remote_ref to update_local_ref() as well
* mh/ref-api (2012-04-10) 13 commits
(merged to 'next' on 2012-04-20 at 94e9384)
+ do_for_each_ref(): only iterate over the subtree that was requested
+ refs: store references hierarchically
+ sort_ref_dir(): simplify logic
+ refs.c: rename ref_array -> ref_dir
+ struct ref_entry: nest the value part in a union
+ check_refname_component(): return 0 for zero-length components
+ free_ref_entry(): new function
+ names_conflict(): simplify implementation
+ repack_without_ref(): reimplement using do_for_each_ref_in_array()
+ do_for_each_ref_in_arrays(): new function
+ do_for_each_ref_in_array(): new function
+ refs: manage current_ref within do_one_ref()
+ refs.c: reorder definitions more logically
Allows walking only a sub-hierarchy in refs/*.
* jc/maint-blame-minimal (2012-04-11) 1 commit
(merged to 'next' on 2012-04-20 at 2213284)
+ blame: accept --need-minimal
"git blame" started missing quite a few changes from the origin since we
stopped using the diff minimalization by default in v1.7.2 era.
* jk/repack-no-explode-objects-from-old-pack (2012-04-18) 4 commits
(merged to 'next' on 2012-04-20 at 4eb2534)
+ gc: use argv-array for sub-commands
+ argv-array: add a new "pushl" method
+ argv-array: refactor empty_argv initialization
(merged to 'next' on 2012-04-15 at 7586e50)
+ gc: do not explode objects which will be immediately pruned
* ld/git-p4-tags-and-labels (2012-04-11) 2 commits
(merged to 'next' on 2012-04-15 at 1b1e9a1)
+ git p4: import/export of labels to/from p4
+ git p4: Fixing script editor checks
(this branch uses pw/git-p4.)
A review from Pete Wyckoff needs to be addressed.
Message-ID: <20120418113422.GB19994@padd.com>
* nh/empty-rebase (2012-04-20) 7 commits
- fixup! git-rebase: add keep_empty flag
- git-rebase: add keep_empty flag
- fixup! git-cherry-pick: Add test to validate new options
- git-cherry-pick: Add test to validate new options
- fixup! git-cherry-pick: Add keep-redundant-commits option
- git-cherry-pick: Add keep-redundant-commits option
- git-cherry-pick: add allow-empty option
* sl/test-wc-l-line-count (2012-04-11) 1 commit
(merged to 'next' on 2012-04-15 at 40797d9)
+ tests: modernise style: more uses of test_line_count
Will merge to 'master'.
* zj/upstream-error-message (2012-04-15) 5 commits
(merged to 'next' on 2012-04-20 at 1ed9682)
+ i18n: mark @{upstream} error messages for translation
+ Be more specific if upstream branch is not tracked
+ Provide better message for barnhc_wiht_tpyo@{u}
+ Provide branch name in error message when using @{u}
+ t1507: add tests to document @{upstream} behaviour
* fc/completion-tests (2012-04-18) 7 commits
- tests: add tests for the __gitcomp() completion helper function
- completion: fix completion after 'git --option <TAB>'
- completion: avoid trailing space for --exec-path
- completion: add missing general options
- completion: simplify by using $prev
- completion: simplify __gitcomp_1
- tests: add initial bash completion tests
Will merge to 'next'.
* jh/apply-free-patch (2012-04-11) 9 commits
(merged to 'next' on 2012-04-15 at 8cccf57)
+ apply: document buffer ownership rules across functions
+ apply: tighten constness of line buffer
+ apply: drop unused macro
+ apply: free unused fragments for submodule patch
+ apply: free patch->result
+ apply: release memory for fn_table
+ apply: free patch->{def,old,new}_name fields
+ apply: rename free_patch() to free_patch_list()
+ apply: do not leak patches and fragments
Valgrind reports quite a lot of discarded memory inside apply.
* nd/threaded-index-pack (2012-04-19) 4 commits
- index-pack: disable threading if NO_PREAD is defined
- index-pack: support multithreaded delta resolving
- index-pack: split second pass obj handling into own function
- compat/win32/pthread.h: Add an pthread_key_delete() implementation
* cb/http-multi-curl-auth (2012-04-14) 4 commits
- http: use newer curl options for setting credentials
- http: clean up leak in init_curl_http_auth
- fix http auth with multiple curl handles
- http auth fails with multiple curl handles
Fixes http authentication breakage when we keep multiple HTTP requests in
flight using curl-multi.
Will merge to 'next'.
* jk/rebase-i-submodule-conflict-only (2012-04-09) 1 commit
(merged to 'next' on 2012-04-15 at 94367a8)
+ rebase -i continue: don't skip commits that only change submodules
Giving "--continue" to a conflicted "rebase -i" session skipped a commit
that only results in changes to submodules.
Will merge to 'master'.
* ms/remote-usage-string (2012-04-09) 1 commit
(merged to 'next' on 2012-04-15 at 704be8f)
+ remote: update builtin usage
As an independent follow-up, we may want to rethink how the overall usage
string and subcommand usage strings are maintained.
Will merge to 'master'.
* pw/fast-import-dataref-parsing (2012-04-10) 1 commit
(merged to 'next' on 2012-04-20 at c299a63)
+ fast-import: tighten parsing of datarefs
* pw/git-p4 (2012-04-09) 3 commits
(merged to 'next' on 2012-04-15 at 81ea41a)
+ git p4: use "git p4" directly in tests
+ git p4: update name in script
+ git-p4: move to toplevel
(this branch is used by ld/git-p4-tags-and-labels.)
Will merge to 'master'.
* rl/show-empty-prefix (2012-04-10) 1 commit
(merged to 'next' on 2012-04-15 at b2e5938)
+ rev-parse --show-prefix: add in trailing newline
Will merge to 'master'.
* tr/xdiff-fast-hash (2012-04-09) 1 commit
- xdiff: load full words in the inner loop of xdl_hash_record
Will merge to 'next'.
* jc/index-v4 (2012-04-04) 10 commits
(merged to 'next' on 2012-04-19 at 5e4b029)
+ update-index: upgrade/downgrade on-disk index version
+ read-cache.c: write prefix-compressed names in the index
+ read-cache.c: read prefix-compressed names in index on-disk version v4
+ read-cache.c: move code to copy incore to ondisk cache to a helper function
+ read-cache.c: move code to copy ondisk to incore cache to a helper function
+ read-cache.c: report the header version we do not understand
+ read-cache.c: make create_from_disk() report number of bytes it consumed
+ read-cache.c: allow unaligned mapping of the index file
+ cache.h: hide on-disk index details
+ varint: make it available outside the context of pack
(this branch is tangled with jc/split-blob.)
Trivially shrinks the on-disk size of the index file to save both I/O and
checksum overhead. The "v4" format represented here may not be what we
eventually want to have, but the preparatory refactoring steps and the way
how backward compatibility is retained should give plenty to learn to GSoC
student-hopefuls.
The bottom one makes use of "varint" encoding from the stalled
jc/split-blob topic.
* mk/gitweb-diff-hl (2012-04-11) 8 commits
(merged to 'next' on 2012-04-20 at 54179a2)
+ gitweb: Refinement highlightning in combined diffs
+ gitweb: Highlight interesting parts of diff
+ gitweb: Push formatting diff lines to print_diff_chunk()
+ gitweb: Use print_diff_chunk() for both side-by-side and inline diffs
+ gitweb: Extract print_sidebyside_diff_lines()
+ gitweb: Pass esc_html_hl_regions() options to esc_html()
+ gitweb: esc_html_hl_regions(): Don't create empty <span> elements
+ gitweb: Use descriptive names in esc_html_hl_regions()
* it/fetch-pack-many-refs (2012-04-10) 4 commits
(merged to 'next' on 2012-04-20 at e2126d7)
+ remote-curl: main test case for the OS command line overflow
+ fetch-pack: test cases for the new --stdin option
+ remote-curl: send the refs to fetch-pack on stdin
+ fetch-pack: new --stdin option to read refs from stdin
* jn/debian-customizes-default-editor (2012-04-10) 2 commits
(merged to 'next' on 2012-04-15 at 0fc85c3)
+ var doc: advertise current DEFAULT_PAGER and DEFAULT_EDITOR settings
+ var doc: default editor and pager are configurable at build time
Will merge to 'master'.
* rs/commit-list-sort-in-batch (2012-04-17) 4 commits
(merged to 'next' on 2012-04-17 at 21208e9)
+ mergesort: rename it to llist_mergesort()
(merged to 'next' on 2012-04-15 at 39fe527)
+ revision: insert unsorted, then sort in prepare_revision_walk()
+ commit: use mergesort() in commit_list_sort_by_date()
+ add mergesort() for linked lists
* hv/submodule-recurse-push (2012-03-30) 3 commits
(merged to 'next' on 2012-04-20 at fe99e3d)
+ push: teach --recurse-submodules the on-demand option
+ Refactor submodule push check to use string list instead of integer
+ Teach revision walking machinery to walk multiple times sequencially
* th/difftool-diffall (2012-04-14) 8 commits
- difftool: print list of valid tools with '--tool-help'
- difftool: teach difftool to handle directory diffs
- difftool: eliminate setup_environment function
- difftool: stop appending '.exe' to git
- difftool: remove explicit change of PATH
- difftool: exit(0) when usage is printed
- difftool: add '--no-gui' option
- difftool: parse options using Getopt::Long
Rolls the two-directory-diff logic from diffall script (in contrib/) into
"git difftool" framework.
Still being reworked.
* jc/run-hook-env-1 (2012-03-11) 1 commit
- run_hook(): enhance the interface to pass arbitrary environment
Not urgent.
Updates run_hook() API to be much less specific to "commit". It would
only be useful if people start doing more interesting things with hooks.
* mm/push-default-switch-warning (2012-04-20) 4 commits
- push: start warning upcoming default change for push.default
- t5570: use explicit push refspec
- push: introduce new push.default mode "simple"
- Documentation: explain push.default option a bit more
This resurrects an ancient patch I wrote during a discussion we had in the
1.6.3-1.6.4 era. This should probably come after ct/advise-push-default
topic and at that point the advise messages need to be rephrased, taking
the future default change into account.
--------------------------------------------------
[Discarded]
* cn/apply-fix-ws-can-lengthen-lines (2012-03-11) 1 commit
. apply: reallocate the postimage buffer when needed
Attempts to address an ancient bug that dates back to the addition
of an oddball "tab-in-indent" whitespace breakage class that wants
to have longer lines than the original when fixing things up; broken
and results in double-frees.
* ss/git-svn-prompt-sans-terminal (2012-01-04) 3 commits
. fixup! 15eaaf4
. git-svn, perl/Git.pm: extend Git::prompt helper for querying users
. perl/Git.pm: "prompt" helper to honor GIT_ASKPASS and SSH_ASKPASS
Has been stalled for too long.
* lt/octopus-simplify (2012-04-17) 3 commits
. git-merge: Reduce heads before trying to merge them
. Make 'git merge' simplify parents earlier
- merge tests: octopus with redundant parents
(this branch is tangled with jc/merge-reduce-parents-early.)
Octopus merge strategy did not reduce heads that are recorded in the final
commit, but follow-up broke badly.
^ permalink raw reply [relevance 1%]
Results 1-162 of 162 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2012-04-21 0:06 1% What's cooking in git.git (Apr 2012, #08; Fri, 20) Junio C Hamano
2012-06-28 23:35 1% What's cooking in git.git (Jun 2012, #08; Thu, 28) Junio C Hamano
2012-08-20 7:00 5% What's cooking in git.git (Aug 2012, #06; Sun, 19) Junio C Hamano
2012-08-21 23:10 5% What's cooking in git.git (Aug 2012, #06; Tue, 21) Junio C Hamano
2012-08-22 21:03 5% What's cooking in git.git (Aug 2012, #07; Wed, 22) Junio C Hamano
2012-08-28 2:43 5% What's cooking in git.git (Aug 2012, #08; Mon, 27) Junio C Hamano
2012-08-29 23:09 6% What's cooking in git.git (Aug 2012, #09; Wed, 29) Junio C Hamano
2012-08-31 21:32 6% What's cooking in git.git (Aug 2012, #10; Fri, 31) Junio C Hamano
2012-09-04 23:21 4% What's cooking in git.git (Sep 2012, #01; Tue, 4) Junio C Hamano
2012-10-29 10:21 6% What's cooking in git.git (Oct 2012, #09; Mon, 29) Jeff King
2012-11-04 14:56 6% What's cooking in git.git (Nov 2012, #01; Sun, 4) Jeff King
2013-09-09 22:53 4% What's cooking in git.git (Sep 2013, #02; Mon, 9) Junio C Hamano
2013-09-11 23:32 6% What's cooking in git.git (Sep 2013, #03; Wed, 11) Junio C Hamano
2013-09-13 22:18 4% What's cooking in git.git (Sep 2013, #04; Fri, 13) Junio C Hamano
2014-01-17 9:47 [PATCH/WIP v2 00/14] inotify support Nguyễn Thái Ngọc Duy
2014-02-03 4:28 ` [PATCH v3 00/26] " Nguyễn Thái Ngọc Duy
2014-02-03 4:29 4% ` [PATCH v3 23/26] file-watcher: tests for the daemon Nguyễn Thái Ngọc Duy
2014-09-11 22:52 1% What's cooking in git.git (Sep 2014, #03; Thu, 11) Junio C Hamano
2014-12-22 23:17 1% What's cooking in git.git (Dec 2014, #04; Mon, 22) Junio C Hamano
2015-04-30 19:51 4% What's cooking in git.git (Apr 2015, #05; Thu, 30) Junio C Hamano
2015-05-04 22:25 4% What's cooking in git.git (May 2015, #01; Mon, 4) Junio C Hamano
2015-05-06 19:59 5% What's cooking in git.git (May 2015, #02; Wed, 6) Junio C Hamano
2015-05-08 22:26 6% What's cooking in git.git (May 2015, #03; Fri, 8) Junio C Hamano
2015-05-11 22:46 4% What's cooking in git.git (May 2015, #04; Mon, 11) Junio C Hamano
2015-07-27 11:48 [PATCH] clone: fix repo name when cloning a server's root Patrick Steinhardt
2015-08-05 10:06 ` [PATCH v4 0/3] " Patrick Steinhardt
2015-08-05 10:06 ` [PATCH v4 1/3] clone: do not include authentication data in guessed dir Patrick Steinhardt
2015-08-05 17:43 ` Junio C Hamano
2015-08-05 19:36 5% ` Junio C Hamano
2015-08-17 22:34 1% What's cooking in git.git (Aug 2015, #03; Mon, 17) Junio C Hamano
2016-04-12 23:08 1% What's cooking in git.git (Apr 2016, #04; Tue, 12) Junio C Hamano
2016-06-19 22:52 5% Short-term plans for the post 2.9 cycle Junio C Hamano
2017-10-05 5:55 2% [ANNOUNCE] Git v2.15.0-rc0 Junio C Hamano
2017-10-11 6:35 2% [ANNOUNCE] Git v2.15.0-rc1 Junio C Hamano
2017-10-20 6:49 2% [ANNOUNCE] Git v2.15.0-rc2 Junio C Hamano
2017-12-29 4:30 2% [ANNOUNCE] Git v2.16.0-rc0 Junio C Hamano
2018-01-05 23:30 2% [ANNOUNCE] Git v2.16.0-rc1 Junio C Hamano
2018-01-18 5:54 2% [ANNOUNCE] Git v2.16.0 Junio C Hamano
2018-05-30 22:47 1% [ANNOUNCE] Git v2.18.0-rc0 Junio C Hamano
2018-06-04 13:53 1% [ANNOUNCE] Git v2.18.0-rc1 Junio C Hamano
2018-06-21 19:27 1% [ANNOUNCE] Git v2.18.0 Junio C Hamano
2019-01-18 23:20 1% What's cooking in git.git (Jan 2019, #03; Fri, 18) Junio C Hamano
2019-03-21 6:53 [PATCH v9 00/11] Fix scissors bug during conflict Denton Liu
2019-04-17 10:23 ` [PATCH v10 00/10] " Phillip Wood
2019-04-18 5:19 ` Junio C Hamano
2019-04-18 9:14 5% ` Phillip Wood
[not found] <7e4a2f1d-2b3a-eb83-d3f1-9ac63d68991b@gmx.de>
[not found] ` <20190322005107.GL9937@linaro.org>
2019-03-22 6:02 ` [BUG] Cloning with git HEAD fails for some repositories Heinrich Schuchardt
2019-03-22 7:12 ` Jeff King
2019-03-22 8:21 ` Wolfgang Denk
2019-03-22 9:31 ` Jeff King
2019-03-22 16:50 5% ` Eric Wong
2019-03-22 17:42 0% ` Heinrich Schuchardt
2019-03-22 18:09 0% ` Eric Wong
2019-03-22 18:41 0% ` Heinrich Schuchardt
2019-03-23 8:53 0% ` Jeff King
2019-03-24 12:07 0% ` [PATCH 0/3] fix dumb-http fetch with alternates Jeff King
2019-03-28 22:17 [PATCH v2] rebase: teach rebase --keep-base Denton Liu
2019-04-01 20:51 ` [PATCH v3 0/4] " Denton Liu
2019-04-06 19:44 ` Ævar Arnfjörð Bjarmason
2019-04-06 20:38 ` Denton Liu
2019-04-13 21:10 7% ` Ævar Arnfjörð Bjarmason
2019-05-19 9:04 2% [ANNOUNCE] Git v2.22.0-rc1 Junio C Hamano
2019-05-19 20:30 0% ` Johannes Schindelin
2019-06-03 20:23 2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
2019-06-04 1:32 0% ` Ben Humphreys
2019-06-04 1:47 0% ` Bhaskar Chowdhury
2019-06-04 14:45 0% ` Git for Windows v2.22.0-rc3, was " Johannes Schindelin
2019-06-07 21:31 2% [ANNOUNCE] Git v2.22.0 Junio C Hamano
2019-06-07 22:48 0% ` Bhaskar Chowdhury
2019-06-25 13:40 3% [PATCH v6 00/15] Many promisor remotes Christian Couder
2019-06-26 22:29 1% What's cooking in git.git (Jun 2019, #06; Wed, 26) Junio C Hamano
2019-06-28 22:17 1% What's cooking in git.git (Jun 2019, #07; Fri, 28) Junio C Hamano
2019-07-03 22:28 1% What's cooking in git.git (Jul 2019, #01; Wed, 3) Junio C Hamano
2019-07-04 9:56 0% ` Phillip Wood
2019-07-26 0:19 1% What's cooking in git.git (Jul 2019, #06; Thu, 25) Junio C Hamano
2019-07-26 14:33 0% ` Johannes Schindelin
2019-07-26 20:23 0% ` Junio C Hamano
2019-08-09 0:13 0% ` Taylor Blau
2019-08-09 1:34 0% ` Ariadne Conill
2019-08-09 2:07 0% ` Taylor Blau
2019-08-09 3:04 0% ` Ariadne Conill
2019-07-29 21:49 2% [ANNOUNCE] Git v2.23.0-rc0 Junio C Hamano
2019-08-02 22:06 2% [ANNOUNCE] Git v2.23.0-rc1 Junio C Hamano
2019-08-09 19:29 2% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
2019-08-09 21:20 0% ` Bhaskar Chowdhury
2019-08-09 21:31 0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
2019-08-12 19:40 1% [ANNOUNCE] Git v2.22.1 Junio C Hamano
2019-08-12 22:49 0% ` Bhaskar Chowdhury
2019-08-16 21:00 2% [ANNOUNCE] Git v2.23.0 Junio C Hamano
2019-08-16 21:30 0% ` Bhaskar Chowdhury
2019-09-17 20:13 [GIT PULL] git-gui pull request Pratyush Yadav
2019-09-17 20:50 ` Denton Liu
2019-09-18 19:23 4% ` Junio C Hamano
2019-12-05 22:36 1% What's cooking in git.git (Dec 2019, #02; Thu, 5) Junio C Hamano
2019-12-25 21:44 2% [ANNOUNCE] Git v2.25.0-rc0 Junio C Hamano
2019-12-26 0:33 0% ` Denton Liu
2020-01-02 23:33 2% [ANNOUNCE] Git v2.25.0-rc1 Junio C Hamano
2020-01-08 22:27 2% [ANNOUNCE] Git v2.25.0-rc2 Junio C Hamano
2020-01-13 19:28 2% [ANNOUNCE] Git v2.25.0 Junio C Hamano
2020-02-08 9:06 4% [Outreachy] [PATCH v3 00/13] Finish converting git bisect to C part 1 Miriam Rubio
2020-03-05 22:02 2% [ANNOUNCE] Git v2.26.0-rc0 Junio C Hamano
2020-03-10 14:57 2% [ANNOUNCE] Git v2.26.0-rc1 Junio C Hamano
2020-03-16 23:25 2% [ANNOUNCE] Git v2.26.0-rc2 Junio C Hamano
2020-03-23 1:10 2% [ANNOUNCE] Git v2.26.0 Junio C Hamano
2020-04-27 5:07 0% [PATCH] Teach git-rev-list --simplify-forks Antonio Russo
2020-05-14 23:27 2% [ANNOUNCE] Git v2.27.0-rc0 Junio C Hamano
2020-05-14 23:28 2% Junio C Hamano
2020-05-20 19:17 2% [ANNOUNCE] Git v2.27.0-rc1 Junio C Hamano
2020-05-26 18:47 2% [ANNOUNCE] Git v2.27.0-rc2 Junio C Hamano
2020-06-01 16:34 2% [ANNOUNCE] Git v2.27.0 Junio C Hamano
2020-06-18 6:35 1% What's cooking in git.git (Jun 2020, #03; Wed, 17) Junio C Hamano
2020-06-19 15:21 3% [PATCH 0/3] update delete_ref(), update_ref() and ref_exists() to take a struct repository Phillip Wood via GitGitGadget
2020-07-09 21:40 2% [ANNOUNCE] Git v2.28.0-rc0 Junio C Hamano
2020-07-17 20:24 2% [ANNOUNCE] Git v2.28.0-rc1 Junio C Hamano
2020-07-22 17:30 2% [ANNOUNCE] Git v2.28.0-rc2 Junio C Hamano
2020-07-27 16:49 2% [ANNOUNCE] Git v2.28.0 Junio C Hamano
2020-11-02 22:27 1% What's cooking in git.git (Nov 2020, #01; Mon, 2) Junio C Hamano
2021-01-04 16:21 [PATCH 0/7] teach `worktree list` verbose mode and prunable annotations Rafael Silva
2021-01-17 23:42 2% ` [PATCH v2 0/6] " Rafael Silva
2021-01-19 21:27 2% ` [PATCH v3 0/7] " Rafael Silva
2021-01-27 8:03 2% ` Rafael Silva
2021-01-16 21:59 1% What's cooking in git.git (Jan 2021, #04; Sat, 16) Junio C Hamano
2021-01-18 3:23 5% [PATCH 0/2] Two cleanups around 'prefetch' refs Derrick Stolee via GitGitGadget
2021-01-19 12:52 4% ` [PATCH v2 " Derrick Stolee via GitGitGadget
2021-02-26 2:03 2% [ANNOUNCE] Git v2.31.0-rc0 Junio C Hamano
2021-03-03 10:14 2% [ANNOUNCE] Git v2.31.0-rc1 Junio C Hamano
2021-03-09 18:05 2% [ANNOUNCE] Git v2.31.0-rc2 Junio C Hamano
2021-03-15 19:30 2% [ANNOUNCE] Git v2.31.0 Junio C Hamano
2021-04-22 15:17 [PATCH 0/7] Parallel Checkout (part 3) Matheus Tavares
2021-04-30 21:40 ` [PATCH v2 0/8] " Matheus Tavares
2021-05-02 10:12 5% ` Torsten Bögershausen
2021-05-03 15:01 0% ` Matheus Tavares Bernardino
2021-07-12 11:46 [PATCH 00/19] [GSOC] cat-file: reuse ref-filter logic ZheNing Hu via GitGitGadget
2021-07-12 11:46 ` [PATCH 14/19] " ZheNing Hu via GitGitGadget
2021-07-12 13:17 ` Christian Couder
2021-07-12 20:38 ` Junio C Hamano
2021-07-14 16:24 6% ` ZheNing Hu
2021-07-15 1:53 0% ` ZheNing Hu
2021-07-15 9:45 0% ` Christian Couder
2021-07-15 13:53 0% ` ZheNing Hu
2021-08-02 23:45 3% [ANNOUNCE] Git v2.33.0-rc0 Junio C Hamano
2021-08-07 0:07 3% [ANNOUNCE] Git v2.33.0-rc1 Junio C Hamano
2021-08-11 23:22 3% [ANNOUNCE] Git v2.33.0-rc2 Junio C Hamano
2021-08-16 23:06 3% [ANNOUNCE] Git v2.33.0 Junio C Hamano
2021-09-05 11:04 3% [PATCH RESEND v3] make: add INSTALL_STRIP option variable Bagas Sanjaya
2021-10-30 0:17 3% [ANNOUNCE] Git v2.34.0-rc0 Junio C Hamano
2021-11-03 23:17 3% [ANNOUNCE] Git v2.34.0-rc1 Junio C Hamano
2022-01-11 0:51 2% [ANNOUNCE] Git v2.35.0-rc0 Junio C Hamano
2022-01-15 2:18 2% [ANNOUNCE] Git v2.35.0-rc1 Junio C Hamano
2022-01-20 18:44 2% [ANNOUNCE] Git v2.35.0-rc2 Junio C Hamano
2022-01-24 19:25 2% [ANNOUNCE] Git v2.35.0 Junio C Hamano
2022-02-13 9:24 2% What's cooking in git.git (Feb 2022, #03; Sat, 12) Junio C Hamano
2022-04-04 20:43 3% [ANNOUNCE] Git v2.36.0-rc0 Junio C Hamano
2022-04-08 23:30 3% [ANNOUNCE] Git v2.36.0-rc1 Junio C Hamano
2022-04-12 17:03 3% [ANNOUNCE] Git v2.36.0-rc2 Junio C Hamano
2022-04-18 16:27 3% [ANNOUNCE] Git v2.36.0 Junio C Hamano
2022-09-16 2:37 3% [ANNOUNCE] Git v2.38.0-rc0 Junio C Hamano
2022-09-22 0:11 3% [ANNOUNCE] Git v2.38.0-rc1 Junio C Hamano
2022-09-27 21:10 3% [ANNOUNCE] Git v2.38.0-rc2 Junio C Hamano
2022-10-03 17:26 3% [ANNOUNCE] Git v2.38.0 Junio C Hamano
2022-11-23 7:25 3% [ANNOUNCE] Git v2.39.0-rc0 Junio C Hamano
2022-11-30 6:12 3% [ANNOUNCE] Git v2.39.0-rc1 Junio C Hamano
2022-12-06 4:00 3% [ANNOUNCE] Git v2.39.0-rc2 Junio C Hamano
2022-12-12 13:43 3% [ANNOUNCE] Git v2.39.0 Junio C Hamano
2023-02-24 20:24 3% [ANNOUNCE] Git v2.40.0-rc0 Junio C Hamano
2023-03-01 17:40 3% [ANNOUNCE] Git v2.40.0-rc1 Junio C Hamano
2023-03-07 19:47 3% [ANNOUNCE] Git v2.40.0-rc2 Junio C Hamano
2023-03-13 17:48 3% [ANNOUNCE] Git v2.40.0 Junio C Hamano
2023-05-16 3:42 3% [ANNOUNCE] Git v2.41.0-rc0 Junio C Hamano
2023-05-19 17:39 3% [ANNOUNCE] Git v2.41.0-rc1 Junio C Hamano
2023-05-24 21:41 3% [ANNOUNCE] Git v2.41.0-rc2 Junio C Hamano
2023-06-01 10:11 3% [ANNOUNCE] Git v2.41.0 Junio C Hamano
2023-08-04 19:30 3% [ANNOUNCE] Git v2.42.0-rc0 Junio C Hamano
2023-08-10 16:45 3% [ANNOUNCE] Git v2.42.0-rc1 Junio C Hamano
2023-08-15 21:22 3% [ANNOUNCE] Git v2.42.0-rc2 Junio C Hamano
2023-08-21 18:12 3% [ANNOUNCE] Git v2.42.0 Junio C Hamano
2023-11-02 17:36 3% [ANNOUNCE] Git v2.43.0-rc0 Junio C Hamano
2023-11-08 17:33 3% [ANNOUNCE] Git v2.43.0-rc1 Junio C Hamano
2023-11-14 17:25 3% [ANNOUNCE] Git v2.43.0-rc2 Junio C Hamano
2023-11-20 17:01 3% [ANNOUNCE] Git v2.43.0 Junio C Hamano
2024-02-09 17:24 3% [ANNOUNCE] Git v2.44.0-rc0 Junio C Hamano
2024-02-14 17:04 3% [ANNOUNCE] Git v2.44.0-rc1 Junio C Hamano
2024-02-20 17:09 3% [ANNOUNCE] Git v2.44.0-rc2 Junio C Hamano
2024-02-23 17:17 3% [ANNOUNCE] Git v2.44.0 Junio C Hamano
2024-03-05 12:10 4% [PATCH 0/7] reftable: memory optimizations for reflog iteration Patrick Steinhardt
2024-03-11 19:41 0% ` Josh Steadmon
2024-03-11 23:25 0% ` Patrick Steinhardt
2024-04-19 17:14 3% [ANNOUNCE] Git v2.45.0-rc0 Junio C Hamano
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).